Metropoli BBS
VIEWER: atanx.c MODE: TEXT (ASCII)
/*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 */
}
[ RETURN TO DIRECTORY ]