# compute arctangent table for CORDIC computations in fttrigon.c
import sys, math

#units  = 64*65536.0   # don't change !!
units  = 180 * 2**16
scale  = units/math.pi
shrink = 1.0
comma  = ""

print ""
print "table of arctan( 1/2^n ) for PI = " + repr(units/65536.0) + " units"

for n in range(1,32):

    x = 0.5**n                      # tangent value

    angle  = math.atan(x)           # arctangent
    angle2 = round(angle*scale)     # arctangent in FT_Angle units

    if angle2 <= 0:
        break

    sys.stdout.write( comma + repr( int(angle2) ) )
    comma = ", "

    shrink /= math.sqrt( 1 + x*x )

print
print "shrink factor    = " + repr( shrink )
print "shrink factor 2  = " + repr( int( shrink * (2**32) ) )
print "expansion factor = " + repr( 1/shrink )
print ""

