/*Copyright (C) 1997 by Thomas Glen Smith. All Rights Reserved.*/ /* atanx APL2 V1.0.0 *************************************************** * Arc-tangent for complex numbers. * ***********************************************************************/ #define INCLUDES MATH+TRIGKEYS #include "includes.h" void atanx(rrr,ret) double *rrr,*ret; { Dividex; Logx; Minusx; Plusx; Timesx; double ixr[2],wa[2],wb[2],wc[2]; static double iii[2]={0.0,1.0}, one[2]={1.0,0.0}, two[2]={2.0,0.0}; IXR /* build ixr */ minusx(one,ixr,wa); /* wa = 1_iXr */ plusx(one,ixr,wb); /* wb = 1+iXr */ dividex(wa,wb,wc); /* wc = (1_iXr)%1+iXr */ logx(wc,wa); /* wa = @(1_iXr)%1+iXr */ timesx(iii,wa,wb); /* wb = iX@(1_iXr)%1+iXr */ dividex(wb,two,ret); /* ret= (iX@(1_iXr)%1+iXr)%2 */ }