あらきけいすけのメモ帳

あらきけいすけの雑記帳2

C言語の atan2(y,x) を arccos と sgn を使って書いてみた

授業用の覚書:関数電卓もそうだが、座標(a,b)偏角を求めるときに、\theta(b,a)=\arctan\frac{b}{a}では第3象限-\pi\lt\theta\leq-\frac\pi2, 第4象限\frac\pi2\leq\theta\leq\piの値を返さないので、C言語atan2(y,x) と同じ動作の関数を標準的な数学関数arccos, sgnの組み合わせで作ってみた。定義域は(a,b)\in\mathbb{R}^2\backslash\{(0,0)\}.

\displaystyle\theta(b,a):= \underbrace{{\rm{sgn}}(b)}_{(-\pi,0)に拡張}\overbrace{\arccos\frac{a}{\sqrt{a^2+b^2}}}^{[0,\pi]に値を持つ}+\overbrace{R(b,a)}^{0,\pi を担う}

\displaystyle R(b,a):=\frac{\pi}{2}(1-{\rm{sgn}}(a))\underbrace{|{\rm{sgn}}(a)|(1-|{\rm{sgn}}(b)|)}_{a\ne0,\ b=0\ を取り出す係数}

なぜ初等関数にないのだろう?