cordic algorithmen
Peter Verkaik
Posts: 3,956
I have uploaded the class cordic.java that calculates sin,cos,tan,len and atan2
using cordic algorithmen.
http://groups.yahoo.com/group/JavelinCode/files/Javelin%20Stamp%20IDE/lib/stamp/math/
Results of the test program:
x=cos(· 0.0) =· 0.9999·· y=sin(· 0.0) =· 0.0000·· tan(· 0.0) =··· 0.00·· atan2(y,x) =··· 0.0
x=cos(· 0.1) =· 0.9999·· y=sin(· 0.1) =· 0.0017·· tan(· 0.1) =··· 0.00·· atan2(y,x) =··· 0.1
x=cos(· 0.4) =· 0.9999·· y=sin(· 0.4) =· 0.0069·· tan(· 0.4) =··· 0.01·· atan2(y,x) =··· 0.4
x=cos(· 0.5) =· 0.9999·· y=sin(· 0.5) =· 0.0087·· tan(· 0.5) =··· 0.01·· atan2(y,x) =··· 0.5
x=cos(· 1.0) =· 0.9997·· y=sin(· 1.0) =· 0.0176·· tan(· 1.0) =··· 0.02·· atan2(y,x) =··· 1.0
x=cos( 15.0) =· 0.9660·· y=sin( 15.0) =· 0.2588·· tan( 15.0) =··· 0.27·· atan2(y,x) =·· 15.0
x=cos( 30.0) =· 0.8660·· y=sin( 30.0) =· 0.5000·· tan( 30.0) =··· 0.58·· atan2(y,x) =·· 30.0
x=cos( 45.0) =· 0.7072·· y=sin( 45.0) =· 0.7072·· tan( 45.0) =··· 1.00·· atan2(y,x) =·· 45.0
x=cos( 60.0) =· 0.5000·· y=sin( 60.0) =· 0.8660·· tan( 60.0) =··· 1.73·· atan2(y,x) =·· 60.0
x=cos( 75.0) =· 0.2588·· y=sin( 75.0) =· 0.9660·· tan( 75.0) =··· 3.73·· atan2(y,x) =·· 75.0
x=cos( 89.0) =· 0.0176·· y=sin( 89.0) =· 0.9997·· tan( 89.0) =·· 56.80·· atan2(y,x) =·· 89.0
x=cos( 89.4) =· 0.0104·· y=sin( 89.4) =· 0.9999·· tan( 89.4) =·· 96.14·· atan2(y,x) =·· 89.4
x=cos( 89.5) =· 0.0086·· y=sin( 89.5) =· 0.9999·· tan( 89.5) =· 114.93·· atan2(y,x) =·· 89.5
x=cos( 89.8) =· 0.0034·· y=sin( 89.8) =· 0.9999·· tan( 89.8) =· 294.09·· atan2(y,x) =·· 89.8
x=cos( 89.9) =· 0.0017·· y=sin( 89.9) =· 0.9999·· tan( 89.9) =· 327.67·· atan2(y,x) =·· 89.9
x=cos( 90.0) =· 0.0000·· y=sin( 90.0) =· 0.9999·· tan( 90.0) =· 327.67·· atan2(y,x) =·· 90.0
x=cos( 90.1) = -0.0017·· y=sin( 90.1) =· 0.9999·· tan( 90.1) = -327.67·· atan2(y,x) =·· 90.1
x=cos( 90.2) = -0.0034·· y=sin( 90.2) =· 0.9999·· tan( 90.2) = -294.08·· atan2(y,x) =·· 90.2
x=cos(- 0.1) =· 0.9999·· y=sin(- 0.1) = -0.0017·· tan(- 0.1) =··· 0.00·· atan2(y,x) = -· 0.1
x=cos(- 0.4) =· 0.9999·· y=sin(- 0.4) = -0.0069·· tan(- 0.4) = -· 0.01·· atan2(y,x) = -· 0.4
x=cos(- 0.5) =· 0.9999·· y=sin(- 0.5) = -0.0086·· tan(- 0.5) = -· 0.01·· atan2(y,x) = -· 0.5
x=cos(- 1.0) =· 0.9997·· y=sin(- 1.0) = -0.0176·· tan(- 1.0) = -· 0.02·· atan2(y,x) = -· 1.0
x=cos(-15.0) =· 0.9660·· y=sin(-15.0) = -0.2588·· tan(-15.0) = -· 0.27·· atan2(y,x) = - 15.0
x=cos(-30.0) =· 0.8660·· y=sin(-30.0) = -0.5000·· tan(-30.0) = -· 0.58·· atan2(y,x) = - 30.0
x=cos(-45.0) =· 0.7072·· y=sin(-45.0) = -0.7072·· tan(-45.0) = -· 1.00·· atan2(y,x) = - 45.0
x=cos(-60.0) =· 0.5000·· y=sin(-60.0) = -0.8660·· tan(-60.0) = -· 1.73·· atan2(y,x) = - 60.0
x=cos(-75.0) =· 0.2588·· y=sin(-75.0) = -0.9660·· tan(-75.0) = -· 3.73·· atan2(y,x) = - 75.0
x=cos(-89.0) =· 0.0176·· y=sin(-89.0) = -0.9997·· tan(-89.0) = - 57.13·· atan2(y,x) = - 89.0
x=cos(-89.4) =· 0.0104·· y=sin(-89.4) = -0.9999·· tan(-89.4) = - 96.14·· atan2(y,x) = - 89.4
x=cos(-89.5) =· 0.0087·· y=sin(-89.5) = -0.9999·· tan(-89.5) = -114.93·· atan2(y,x) = - 89.5
x=cos(-89.8) =· 0.0034·· y=sin(-89.8) = -0.9999·· tan(-89.8) = -294.08·· atan2(y,x) = - 89.8
x=cos(-89.9) =· 0.0017·· y=sin(-89.9) = -0.9999·· tan(-89.9) = -327.67·· atan2(y,x) = - 89.9
x=cos(-90.0) =· 0.0000·· y=sin(-90.0) = -0.9999·· tan(-90.0) = -327.67·· atan2(y,x) = - 90.0
x=cos(-90.1) = -0.0017·· y=sin(-90.1) = -0.9999·· tan(-90.1) =· 327.67·· atan2(y,x) = - 90.1
x=cos(-90.2) = -0.0034·· y=sin(-90.2) = -0.9999·· tan(-90.2) =· 294.08·· atan2(y,x) = - 90.2
These cordic algorithmen also can calculate log and exp functions.
Have yet to find out how.
regards peter
·
using cordic algorithmen.
http://groups.yahoo.com/group/JavelinCode/files/Javelin%20Stamp%20IDE/lib/stamp/math/
Results of the test program:
x=cos(· 0.0) =· 0.9999·· y=sin(· 0.0) =· 0.0000·· tan(· 0.0) =··· 0.00·· atan2(y,x) =··· 0.0
x=cos(· 0.1) =· 0.9999·· y=sin(· 0.1) =· 0.0017·· tan(· 0.1) =··· 0.00·· atan2(y,x) =··· 0.1
x=cos(· 0.4) =· 0.9999·· y=sin(· 0.4) =· 0.0069·· tan(· 0.4) =··· 0.01·· atan2(y,x) =··· 0.4
x=cos(· 0.5) =· 0.9999·· y=sin(· 0.5) =· 0.0087·· tan(· 0.5) =··· 0.01·· atan2(y,x) =··· 0.5
x=cos(· 1.0) =· 0.9997·· y=sin(· 1.0) =· 0.0176·· tan(· 1.0) =··· 0.02·· atan2(y,x) =··· 1.0
x=cos( 15.0) =· 0.9660·· y=sin( 15.0) =· 0.2588·· tan( 15.0) =··· 0.27·· atan2(y,x) =·· 15.0
x=cos( 30.0) =· 0.8660·· y=sin( 30.0) =· 0.5000·· tan( 30.0) =··· 0.58·· atan2(y,x) =·· 30.0
x=cos( 45.0) =· 0.7072·· y=sin( 45.0) =· 0.7072·· tan( 45.0) =··· 1.00·· atan2(y,x) =·· 45.0
x=cos( 60.0) =· 0.5000·· y=sin( 60.0) =· 0.8660·· tan( 60.0) =··· 1.73·· atan2(y,x) =·· 60.0
x=cos( 75.0) =· 0.2588·· y=sin( 75.0) =· 0.9660·· tan( 75.0) =··· 3.73·· atan2(y,x) =·· 75.0
x=cos( 89.0) =· 0.0176·· y=sin( 89.0) =· 0.9997·· tan( 89.0) =·· 56.80·· atan2(y,x) =·· 89.0
x=cos( 89.4) =· 0.0104·· y=sin( 89.4) =· 0.9999·· tan( 89.4) =·· 96.14·· atan2(y,x) =·· 89.4
x=cos( 89.5) =· 0.0086·· y=sin( 89.5) =· 0.9999·· tan( 89.5) =· 114.93·· atan2(y,x) =·· 89.5
x=cos( 89.8) =· 0.0034·· y=sin( 89.8) =· 0.9999·· tan( 89.8) =· 294.09·· atan2(y,x) =·· 89.8
x=cos( 89.9) =· 0.0017·· y=sin( 89.9) =· 0.9999·· tan( 89.9) =· 327.67·· atan2(y,x) =·· 89.9
x=cos( 90.0) =· 0.0000·· y=sin( 90.0) =· 0.9999·· tan( 90.0) =· 327.67·· atan2(y,x) =·· 90.0
x=cos( 90.1) = -0.0017·· y=sin( 90.1) =· 0.9999·· tan( 90.1) = -327.67·· atan2(y,x) =·· 90.1
x=cos( 90.2) = -0.0034·· y=sin( 90.2) =· 0.9999·· tan( 90.2) = -294.08·· atan2(y,x) =·· 90.2
x=cos(- 0.1) =· 0.9999·· y=sin(- 0.1) = -0.0017·· tan(- 0.1) =··· 0.00·· atan2(y,x) = -· 0.1
x=cos(- 0.4) =· 0.9999·· y=sin(- 0.4) = -0.0069·· tan(- 0.4) = -· 0.01·· atan2(y,x) = -· 0.4
x=cos(- 0.5) =· 0.9999·· y=sin(- 0.5) = -0.0086·· tan(- 0.5) = -· 0.01·· atan2(y,x) = -· 0.5
x=cos(- 1.0) =· 0.9997·· y=sin(- 1.0) = -0.0176·· tan(- 1.0) = -· 0.02·· atan2(y,x) = -· 1.0
x=cos(-15.0) =· 0.9660·· y=sin(-15.0) = -0.2588·· tan(-15.0) = -· 0.27·· atan2(y,x) = - 15.0
x=cos(-30.0) =· 0.8660·· y=sin(-30.0) = -0.5000·· tan(-30.0) = -· 0.58·· atan2(y,x) = - 30.0
x=cos(-45.0) =· 0.7072·· y=sin(-45.0) = -0.7072·· tan(-45.0) = -· 1.00·· atan2(y,x) = - 45.0
x=cos(-60.0) =· 0.5000·· y=sin(-60.0) = -0.8660·· tan(-60.0) = -· 1.73·· atan2(y,x) = - 60.0
x=cos(-75.0) =· 0.2588·· y=sin(-75.0) = -0.9660·· tan(-75.0) = -· 3.73·· atan2(y,x) = - 75.0
x=cos(-89.0) =· 0.0176·· y=sin(-89.0) = -0.9997·· tan(-89.0) = - 57.13·· atan2(y,x) = - 89.0
x=cos(-89.4) =· 0.0104·· y=sin(-89.4) = -0.9999·· tan(-89.4) = - 96.14·· atan2(y,x) = - 89.4
x=cos(-89.5) =· 0.0087·· y=sin(-89.5) = -0.9999·· tan(-89.5) = -114.93·· atan2(y,x) = - 89.5
x=cos(-89.8) =· 0.0034·· y=sin(-89.8) = -0.9999·· tan(-89.8) = -294.08·· atan2(y,x) = - 89.8
x=cos(-89.9) =· 0.0017·· y=sin(-89.9) = -0.9999·· tan(-89.9) = -327.67·· atan2(y,x) = - 89.9
x=cos(-90.0) =· 0.0000·· y=sin(-90.0) = -0.9999·· tan(-90.0) = -327.67·· atan2(y,x) = - 90.0
x=cos(-90.1) = -0.0017·· y=sin(-90.1) = -0.9999·· tan(-90.1) =· 327.67·· atan2(y,x) = - 90.1
x=cos(-90.2) = -0.0034·· y=sin(-90.2) = -0.9999·· tan(-90.2) =· 294.08·· atan2(y,x) = - 90.2
These cordic algorithmen also can calculate log and exp functions.
Have yet to find out how.
regards peter
·