/* Cordic by J. LAPORTE */
/* Sept 80 */

#include "stdio.h"
#include "math.h"


main()
{

double a[] = {
0.78539816339744828000,
0.09966865249116203800,
0.00999966668666523760,
0.00099999966666686679,
0.00009999999966666667,
0.00000999999999966667,
0.00000099999999999967,
0.00000010000000000000,
0.00000001000000000000,
0.00000000100000000000,
0.00000000010000000000,
0.00000000001000000000,
0.00000000000100000000,
0.00000000000010000000,
0.00000000000001000000,
0.00000000000000100000,
0.00000000000000010000,
0.00000000000000001000,
0.00000000000000000100,
0.00000000000000000010,
0.00000000000000000001,
};

double ki[] = {
1.00000000000000000000,
0.10000000000000000000,
0.01000000000000000000,
0.00100000000000000000,
0.00010000000000000000,
0.00001000000000000000,
0.00000100000000000000,
0.00000010000000000000,
0.00000001000000000000,
0.00000000100000000000,
0.00000000010000000000,
0.00000000001000000000,
0.00000000000100000000,
0.00000000000010000000,
0.00000000000001000000,
0.00000000000000100000,
0.00000000000000010000,
0.00000000000000001000,
0.00000000000000000100,
0.00000000000000000010,
0.00000000000000000001,
};

double angle, k, Y, X, tp;
int i=0;
int n=20;

angle = 1.5;
Y=0;
X=1;

label_1:

k = ki[i]; 
angle = angle - a[i];
tp = X - (k * Y);
Y = Y + (k * X);
X = tp;

printf("%4.20f %4.20f %4.20f\n",X,Y,angle);

label_2:

if (angle > a[i]) goto label_1;
else 	if (i==n) goto fin;
	else {
	i=i+1;
	goto label_2; }
fin:
printf("res = %4.20f \n",Y/X);

}

