tizen 2.3.1 release
[framework/graphics/freetype.git] / src / tools / cordic.py
index 3f80c5f..6742c90 100644 (file)
@@ -2,65 +2,20 @@
 import sys, math
 
 #units  = 64*65536.0   # don't change !!
-units  = 256
+units  = 180 * 2**16
 scale  = units/math.pi
 shrink = 1.0
 comma  = ""
 
-def calc_val( x ):
-    global units, shrink
-    angle  = math.atan(x)
-    shrink = shrink * math.cos(angle)
-    return angle/math.pi * units
-
-def  print_val( n, x ):
-    global comma
-
-    lo  = int(x)
-    hi  = lo + 1
-    alo = math.atan(lo)
-    ahi = math.atan(hi)
-    ax  = math.atan(2.0**n)
-
-    errlo = abs( alo - ax )
-    errhi = abs( ahi - ax )
-
-    if ( errlo < errhi ):
-      hi = lo
-
-    sys.stdout.write( comma + repr( int(hi) ) )
-    comma = ", "
-
-
 print ""
 print "table of arctan( 1/2^n ) for PI = " + repr(units/65536.0) + " units"
 
-# compute range of "i"
-r = [-1]
-r = r + range(32)
-
-for n in r:
-
-    if n >= 0:
-        x = 1.0/(2.0**n)    # tangent value
-    else:
-        x = 2.0**(-n)
+for n in range(1,32):
 
-    angle  = math.atan(x)    # arctangent
-    angle2 = angle*scale     # arctangent in FT_Angle units
+    x = 0.5**n                      # tangent value
 
-    # determine which integer value for angle gives the best tangent
-    lo  = int(angle2)
-    hi  = lo + 1
-    tlo = math.tan(lo/scale)
-    thi = math.tan(hi/scale)
-
-    errlo = abs( tlo - x )
-    errhi = abs( thi - x )
-
-    angle2 = hi
-    if errlo < errhi:
-        angle2 = lo
+    angle  = math.atan(x)           # arctangent
+    angle2 = round(angle*scale)     # arctangent in FT_Angle units
 
     if angle2 <= 0:
         break
@@ -68,12 +23,11 @@ for n in r:
     sys.stdout.write( comma + repr( int(angle2) ) )
     comma = ", "
 
-    shrink = shrink * math.cos( angle2/scale)
-
+    shrink /= math.sqrt( 1 + x*x )
 
 print
 print "shrink factor    = " + repr( shrink )
-print "shrink factor 2  = " + repr( shrink * (2.0**32) )
-print "expansion factor = " + repr(1/shrink)
+print "shrink factor 2  = " + repr( int( shrink * (2**32) ) )
+print "expansion factor = " + repr( 1/shrink )
 print ""