2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
16 * C version of fixed point library
26 ubyte guess_table[] = {
32 5,5,5,5,5,5,5,5,5,5,5,
33 6,6,6,6,6,6,6,6,6,6,6,6,6,
34 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
35 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
36 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
37 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
38 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
39 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
40 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
41 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
42 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
45 short sincos_table[] = {
370 ushort asin_table[] = {
628 16384 // extra for when exactly 1
631 ushort acos_table[] = {
889 0 // extra for when exactly 1
892 fix isqrt_guess_table[] = {
895 16777216,11863283,9686330,8388608,7502999,6849269,6341191,
896 5931641,5592405,5305421,5058520,4843165,4653162,4483899,4331858,
897 4194304,4069072,3954427,3848957,3751499,3661088,3576914,3498291,
898 3424634,3355443,3290282,3228776,3170595,3115450,3063086,3013276,
899 2965820,2920538,2877268,2835867,2796202,2758157,2721623,2686504,
900 2652710,2620160,2588780,2558501,2529260,2500999,2473665,2447208,
901 2421582,2396745,2372656,2349280,2326581,2304527,2283089,2262239,
902 2241949,2222196,2202956,2184207,2165929,2148102,2130708,2113730,
903 2097152,2080957,2065132,2049663,2034536,2019739,2005260,1991089,
904 1977213,1963624,1950311,1937266,1924478,1911941,1899645,1887584,
905 1875749,1864135,1852733,1841538,1830544,1819744,1809133,1798706,
906 1788457,1778381,1768473,1758730,1749145,1739716,1730437,1721306,
907 1712317,1703468,1694754,1686173,1677721,1669395,1661191,1653108,
908 1645141,1637288,1629547,1621914,1614388,1606965,1599644,1592422,
909 1585297,1578267,1571330,1564483,1557725,1551054,1544467,1537964,
910 1531543,1525201,1518937,1512750,1506638,1500599,1494633,1488737,
911 1482910,1477151,1471459,1465832,1460269,1454769,1449330,1443952,
912 1438634,1433374,1428171,1423024,1417933,1412896,1407912,1402981,
913 1398101,1393271,1388492,1383761,1379078,1374443,1369853,1365310,
914 1360811,1356357,1351946,1347578,1343252,1338967,1334723,1330519,
915 1326355,1322229,1318142,1314092,1310080,1306104,1302164,1298259,
916 1294390,1290555,1286753,1282985,1279250,1275548,1271877,1268238,
917 1264630,1261052,1257505,1253987,1250499,1247040,1243609,1240207,
918 1236832,1233485,1230165,1226871,1223604,1220362,1217147,1213956,
919 1210791,1207650,1204533,1201441,1198372,1195327,1192304,1189305,
920 1186328,1183373,1180440,1177529,1174640,1171771,1168924,1166097,
921 1163290,1160504,1157737,1154991,1152263,1149555,1146866,1144196,
922 1141544,1138911,1136296,1133699,1131119,1128557,1126013,1123485,
923 1120974,1118481,1116003,1113542,1111098,1108669,1106256,1103859,
924 1101478,1099111,1096760,1094424,1092103,1089797,1087505,1085227,
925 1082964,1080715,1078480,1076258,1074051,1071857,1069676,1067508,
926 1065354,1063212,1061084,1058968,1056865,1054774,1052696,1050630,
927 1048576,1046533,1044503,1042485,1040478,1038483,1036499,1034527,
928 1032566,1030616,1028677,1026748,1024831,1022924,1021028,1019143,
929 1017268,1015403,1013548,1011704,1009869,1008045,1006230,1004425,
930 1002630,1000844,999068,997301,995544,993796,992057,990327,
931 988606,986895,985192,983497,981812,980135,978467,976807,
932 975155,973512,971878,970251,968633,967022,965420,963825,
933 962239,960660,959089,957526,955970,954422,952881,951348,
934 949822,948304,946793,945289,943792,942302,940819,939343,
935 937874,936412,934957,933509,932067,930632,929204,927782,
936 926366,924957,923555,922159,920769,919385,918008,916637,
937 915272,913913,912560,911213,909872,908537,907207,905884,
938 904566,903254,901948,900648,899353,898063,896779,895501,
939 894228,892961,891698,890442,889190,887944,886703,885467,
940 884236,883011,881790,880575,879365,878159,876959,875763,
941 874572,873386,872205,871029,869858,868691,867529,866371,
942 865218,864070,862926,861787,860653,859522,858397,857275,
943 856158,855046,853937,852833,851734,850638,849547,848460,
944 847377,846298,845223,844153,843086,842024,840965,839911,
945 838860,837814,836771,835732,834697,833666,832639,831615,
946 830595,829579,828567,827559,826554,825552,824555,823561,
947 822570,821583,820600,819620,818644,817671,816702,815736,
948 814773,813814,812858,811906,810957,810011,809069,808130,
949 807194,806261,805332,804405,803482,802563,801646,800732,
950 799822,798915,798010,797109,796211,795316,794424,793535,
951 792648,791765,790885,790008,789133,788262,787393,786528,
952 785665,784805,783947,783093,782241,781392,780546,779703,
953 778862,778024,777189,776356,775527,774699,773875,773053,
954 772233,771417,770603,769791,768982,768175,767371,766570,
955 765771,764975,764181,763389,762600,761814,761029,760248,
956 759468,758691,757917,757145,756375,755607,754842,754079,
957 753319,752560,751805,751051,750299,749550,748803,748059,
958 747316,746576,745838,745102,744368,743637,742907,742180,
959 741455,740732,740011,739292,738575,737861,737148,736438,
960 735729,735023,734318,733616,732916,732217,731521,730827,
961 730134,729444,728755,728069,727384,726701,726021,725342,
962 724665,723990,723317,722645,721976,721308,720643,719979,
963 719317,718656,717998,717341,716687,716034,715382,714733,
964 714085,713439,712795,712153,711512,710873,710236,709600,
965 708966,708334,707704,707075,706448,705822,705198,704576,
966 703956,703337,702720,702104,701490,700878,700267,699658,
967 699050,698444,697840,697237,696635,696036,695437,694841,
968 694246,693652,693060,692469,691880,691293,690707,690122,
969 689539,688957,688377,687798,687221,686645,686071,685498,
970 684926,684356,683788,683221,682655,682090,681527,680966,
971 680405,679847,679289,678733,678178,677625,677073,676522,
972 675973,675425,674878,674333,673789,673246,672705,672164,
973 671626,671088,670552,670017,669483,668951,668420,667890,
974 667361,666834,666308,665783,665259,664737,664216,663696,
975 663177,662660,662143,661628,661114,660602,660090,659580,
976 659071,658563,658056,657550,657046,656543,656041,655540,
977 655040,654541,654043,653547,653052,652558,652065,651573,
978 651082,650592,650103,649616,649129,648644,648160,647677,
979 647195,646714,646234,645755,645277,644800,644325,643850,
980 643376,642904,642432,641962,641492,641024,640557,640090,
981 639625,639161,638697,638235,637774,637313,636854,636396,
982 635938,635482,635026,634572,634119,633666,633215,632764,
983 632315,631866,631418,630972,630526,630081,629637,629194,
984 628752,628311,627871,627432,626993,626556,626120,625684,
985 625249,624816,624383,623951,623520,623090,622660,622232,
986 621804,621378,620952,620527,620103,619680,619258,618836,
987 618416,617996,617577,617159,616742,616326,615910,615496,
988 615082,614669,614257,613846,613435,613026,612617,612209,
989 611802,611395,610990,610585,610181,609778,609375,608974,
990 608573,608173,607774,607375,606978,606581,606185,605790,
991 605395,605001,604608,604216,603825,603434,603044,602655,
992 602266,601879,601492,601106,600720,600335,599952,599568,
993 599186,598804,598423,598043,597663,597284,596906,596529,
994 596152,595776,595401,595026,594652,594279,593907,593535,
995 593164,592793,592424,592055,591686,591319,590952,590585,
996 590220,589855,589491,589127,588764,588402,588041,587680,
997 587320,586960,586601,586243,585885,585528,585172,584816,
998 584462,584107,583754,583400,583048,582696,582345,581995,
999 581645,581296,580947,580599,580252,579905,579559,579213,
1000 578868,578524,578181,577838,577495,577153,576812,576471,
1001 576131,575792,575453,575115,574777,574440,574104,573768,
1002 573433,573098,572764,572431,572098,571765,571434,571103,
1003 570772,570442,570113,569784,569455,569128,568800,568474,
1004 568148,567822,567497,567173,566849,566526,566203,565881,
1005 565559,565238,564918,564598,564278,563959,563641,563323,
1006 563006,562689,562373,562057,561742,561428,561114,560800,
1007 560487,560174,559862,559551,559240,558930,558620,558310,
1008 558001,557693,557385,557078,556771,556465,556159,555853,
1009 555549,555244,554940,554637,554334,554032,553730,553429,
1010 553128,552828,552528,552228,551929,551631,551333,551036,
1011 550739,550442,550146,549851,549555,549261,548967,548673,
1012 548380,548087,547795,547503,547212,546921,546631,546341,
1013 546051,545762,545474,545186,544898,544611,544324,544038,
1014 543752,543467,543182,542897,542613,542330,542047,541764,
1015 541482,541200,540919,540638,540357,540077,539798,539518,
1016 539240,538961,538683,538406,538129,537852,537576,537300,
1017 537025,536750,536476,536202,535928,535655,535382,535110,
1018 534838,534566,534295,534024,533754,533484,533214,532945,
1019 532677,532408,532140,531873,531606,531339,531073,530807,
1020 530542,530277,530012,529748,529484,529220,528957,528694,
1021 528432,528170,527909,527648,527387,527126,526866,526607,
1022 526348,526089,525830,525572,525315,525057,524800,524544