0001:
0002:
0003:
0004:
0005:
0006:
0007:
0008:
0009:
0010:
0011:
0012:
0013:
0014:
0015:
0016:
0017:
0018:
0019:
0020:
0021:
0022:
0023:
0024:
0025:
0026:
0027:
0028:
0029:
0030:
0031:
0032:
0033:
0034:
0035:
0036:
0037:
0038:
0039:
0040:
0041:
0042:
0043:
0044:
0045:
0046:
0047:
0048:
0049:
0050:
0051:
0052:
0053:
0054:
0055:
0056:
0057:
0058:
0059:
0060:
0061:
0062:
0063:
0064:
0065:
0066:
0067:
0068:
0069:
0070:
0071:
0072:
0073:
0074:
0075:
0076:
0077:
0078:
0079:
0080:
0081:
0082:
0083:
0084:
0085:
0086:
0087:
0088:
0089:
0090:
0091:
0092:
0093:
0094:
0095:
0096:
0097:
0098:
0099:
0100:
0101:
0102:
0103:
0104:
0105:
0106:
0107:
0108:
0109:
0110:
0111:
0112:
0113:
0114:
0115:
0116:
0117:
0118:
0119:
0120:
0121:
0122:
0123:
0124:
0125:
0126:
0127:
0128:
0129:
0130:
0131:
0132:
0133:
0134:
0135:
0136:
0137:
0138:
0139:
0140:
0141:
0142:
0143:
0144:
0145:
0146:
0147:
0148:
0149:
0150:
0151:
0152:
0153:
0154:
0155:
0156:
0157:
0158:
0159:
0160:
0161:
0162:
0163:
0164:
0165:
0166:
0167:
0168:
0169:
0170:
0171:
0172:
0173:
0174:
0175:
0176:
0177:
0178:
0179:
0180:
0181:
0182:
0183:
0184:
0185:
0186:
0187:
0188:
0189:
0190:
0191:
0192:
0193:
0194:
0195:
0196:
0197:
0198:
0199:
0200:
0201:
0202:
0203:
0204:
0205:
0206:
0207:
0208:
0209:
0210:
0211:
0212:
0213:
0214:
0215:
0216:
0217:
0218:
0219:
0220:
0221:
0222:
0223:
0224:
0225:
0226:
0227:
0228:
0229:
0230:
0231:
0232:
0233:
0234:
0235:
0236:
0237:
0238:
0239:
0240:
0241:
0242:
0243:
0244:
0245:
0246:
0247:
0248:
0249:
0250:
0251:
0252:
0253:
0254:
0255:
0256:
0257:
0258:
0259:
0260:
0261:
0262:
0263:
0264:
0265:
0266:
0267:
0268:
0269:
0270:
0271:
0272:
0273:
0274:
0275:
0276:
0277:
0278:
0279:
0280:
0281:
0282:
0283:
0284:
0285:
0286:
0287:
0288:
0289:
0290:
0291:
0292:
0293:
0294:
0295:
0296:
0297:
0298:
0299:
0300:
0301:
0302:
0303:
0304:
0305:
0306:
0307:
0308:
0309:
0310:
0311:
0312:
0313:
0314:
0315:
0316:
0317:
0318:
0319:
0320:
0321:
0322:
0323:
0324:
0325:
0326:
0327:
0328:
0329:
0330:
0331:
0332:
0333:
0334:
0335:
0336:
0337:
0338:
0339:
0340:
0341:
0342:
0343:
0344:
0345:
0346:
0347:
0348:
0349:
0350:
0351:
0352:
0353:
0354:
0355:
0356:
0357:
0358:
0359:
0360:
0361:
0362:
0363:
0364:
0365:
0366:
0367:
0368:
0369:
0370:
0371:
0372:
0373:
0374:
0375:
0376:
0377:
0378:
0379:
0380:
0381:
0382:
0383:
0384:
0385:
0386:
0387:
0388:
0389:
0390:
0391:
0392:
0393:
0394:
0395:
0396:
0397:
0398:
0399:
0400:
0401:
0402:
0403:
0404:
0405:
0406:
0407:
0408:
0409:
0410:
0411:
0412:
0413:
0414:
0415:
0416:
0417:
0418:
0419:
0420:
0421:
0422:
0423:
0424:
0425:
0426:
0427:
0428:
0429:
0430:
0431:
0432:
0433:
0434:
0435:
0436:
0437:
0438:
0439:
0440:
0441:
0442:
0443:
0444:
0445:
0446:
0447:
0448:
0449:
0450:
0451:
0452:
0453:
0454:
0455:
0456:
0457:
0458:
0459:
0460:
0461:
0462:
0463:
0464:
0465:
0466:
0467:
0468:
0469:
0470:
0471:
0472:
0473:
0474:
0475:
0476:
0477:
0478:
0479:
0480:
0481:
0482:
0483:
0484:
0485:
0486:
0487:
0488:
0489:
0490:
0491:
0492:
0493:
0494:
0495:
0496:
0497:
0498:
0499:
0500:
0501:
0502:
0503:
0504:
0505:
0506:
0507:
0508:
0509:
0510:
0511:
0512:
0513:
0514:
0515:
0516:
0517:
0518:
0519:
0520:
0521:
0522:
0523:
0524:
0525:
0526:
0527:
0528:
0529:
0530:
0531:
0532:
0533:
0534:
0535:
0536:
0537:
0538:
0539:
0540:
0541:
0542:
0543:
0544:
0545:
0546:
0547:
0548:
0549:
0550:
0551:
0552:
0553:
0554:
0555:
0556:
0557:
0558:
0559:
0560:
0561:
0562:
0563:
0564:
0565:
0566:
0567:
0568:
0569:
0570:
0571:
0572:
0573:
0574:
0575:
0576:
0577:
0578:
0579:
0580:
0581:
0582:
0583:
0584:
0585:
0586:
0587:
0588:
0589:
0590:
0591:
0592:
0593:
0594:
0595:
0596:
0597:
0598:
0599:
0600:
0601:
0602:
0603:
0604:
0605:
0606:
0607:
0608:
0609:
0610:
0611:
0612:
0613:
0614:
0615:
0616:
0617:
0618:
0619:
0620:
0621:
0622:
0623:
0624:
0625:
0626:
0627:
0628:
0629:
0630:
0631:
0632:
0633:
0634:
0635:
0636:
0637:
0638:
0639:
0640:
0641:
0642:
0643:
0644:
0645:
0646:
0647:
0648:
0649:
0650:
0651:
0652:
0653:
0654:
0655:
0656:
0657:
0658:
0659:
0660:
0661:
0662:
0663:
0664:
0665:
0666:
0667:
0668:
0669:
0670:
0671:
0672:
0673:
0674:
0675:
0676:
0677:
0678:
0679:
0680:
0681:
0682:
0683:
0684:
0685:
0686:
0687:
0688:
0689:
0690:
0691:
0692:
0693:
0694:
0695:
0696:
0697:
0698:
0699:
0700:
0701:
0702:
0703:
0704:
0705:
0706:
0707:
0708:
0709:
0710:
0711:
0712:
0713:
0714:
0715:
0716:
0717:
0718:
0719:
0720:
0721:
0722:
0723:
0724:
0725:
0726:
0727:
0728:
0729:
0730:
0731:
0732:
0733:
0734:
0735:
0736:
0737:
0738:
0739:
0740:
0741:
0742:
0743:
0744:
0745:
0746:
0747:
0748:
0749:
0750:
0751:
0752:
0753:
0754:
0755:
0756:
0757:
0758:
0759:
0760:
0761:
0762:
0763:
0764:
0765:
0766:
0767:
0768:
0769:
0770:
0771:
0772:
0773:
0774:
0775:
0776:
0777:
0778:
0779:
0780:
0781:
0782:
0783:
0784:
0785:
0786:
0787:
0788:
0789:
0790:
0791:
0792:
0793:
0794:
0795:
0796:
0797:
0798:
0799:
0800:
0801:
0802:
0803:
0804:
0805:
0806:
0807:
0808:
0809:
0810:
0811:
0812:
0813:
0814:
0815:
0816:
0817:
0818:
0819:
0820:
0821:
0822:
0823:
0824:
0825:
0826:
0827:
0828:
0829:
0830:
0831:
0832:
0833:
0834:
0835:
0836:
0837:
0838:
0839:
0840:
0841:
0842:
0843:
0844:
0845:
0846:
0847:
0848:
0849:
0850:
0851:
0852:
0853:
0854:
0855:
0856:
0857:
0858:
0859:
0860:
0861:
0862:
0863:
0864:
0865:
0866:
0867:
0868:
0869:
0870:
0871:
0872:
0873:
0874:
0875:
0876:
0877:
0878:
0879:
0880:
0881:
0882:
0883:
0884:
0885:
0886:
0887:
0888:
0889:
0890:
0891:
0892:
0893:
0894:
0895:
0896:
0897:
0898:
0899:
0900:
0901:
0902:
0903:
0904:
0905:
0906:
0907:
0908:
0909:
0910:
0911:
0912:
0913:
0914:
0915:
0916:
0917:
0918:
0919:
0920:
0921:
0922:
0923:
0924:
0925:
0926:
0927:
0928:
0929:
0930:
0931:
0932:
0933:
0934:
0935:
0936:
0937:
0938:
0939:
0940:
0941:
0942:
0943:
0944:
0945:
0946:
0947:
0948:
0949:
0950:
0951:
0952:
0953:
0954:
0955:
0956:
0957:
0958:
0959:
0960:
0961:
0962:
0963:
0964:
0965:
0966:
0967:
0968:
0969:
0970:
0971:
0972:
0973:
0974:
0975:
0976:
0977:
0978:
0979:
0980:
0981:
0982:
0983:
0984:
0985:
0986:
0987:
0988:
0989:
0990:
0991:
0992:
0993:
0994:
0995:
0996:
0997:
0998:
0999:
1000:
1001:
1002:
1003:
1004:
1005:
1006:
1007:
1008:
1009:
1010:
1011:
1012:
1013:
1014:
1015:
1016:
1017:
1018:
1019:
1020:
1021:
1022:
1023:
1024:
1025:
1026:
1027:
1028:
1029:
1030:
1031:
1032:
1033:
1034:
1035:
1036:
1037:
1038:
1039:
1040:
1041:
1042:
1043:
1044:
1045:
1046:
1047:
1048:
1049:
1050:
1051:
1052:
1053:
1054:
1055:
1056:
1057:
1058:
1059:
1060:
1061:
1062:
1063:
1064:
1065:
1066:
1067:
1068:
1069:
1070:
1071:
1072:
1073:
1074:
1075:
1076:
1077:
1078:
1079:
1080:
1081:
1082:
1083:
1084:
1085:
1086:
1087:
1088:
1089:
1090:
1091:
1092:
1093:
1094:
1095:
1096:
1097:
1098:
1099:
1100:
1101:
1102:
1103:
1104:
1105:
1106:
1107:
1108:
1109:
1110:
1111:
1112:
1113:
1114:
1115:
1116:
1117:
1118:
1119:
1120:
1121:
1122:
1123:
1124:
1125:
1126:
1127:
1128:
1129:
1130:
1131:
1132:
1133:
1134:
1135:
1136:
1137:
1138:
1139:
1140:
1141:
1142:
1143:
1144:
1145:
1146:
1147:
1148:
1149:
1150:
1151:
1152:
1153:
1154:
1155:
1156:
1157:
1158:
1159:
1160:
1161:
1162:
1163:
1164:
1165:
1166:
1167:
1168:
1169:
1170:
1171:
1172:
1173:
1174:
1175:
1176:
1177:
1178:
1179:
1180:
1181:
1182:
1183:
1184:
1185:
1186:
1187:
1188:
1189:
1190:
1191:
1192:
1193:
1194:
1195:
1196:
1197:
1198:
1199:
1200:
1201:
1202:
1203:
1204:
1205:
1206:
1207:
1208:
1209:
1210:
1211:
1212:
1213:
1214:
1215:
1216:
1217:
1218:
1219:
1220:
1221:
1222:
1223:
1224:
1225:
1226:
1227:
1228:
1229:
1230:














































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































/*
* Copyright (c), Zeriph Enterprises
* All rights reserved.
*
* Contributor(s):
* Zechariah Perez, omni (at) zeriph (dot) com
*
* THIS SOFTWARE IS PROVIDED BY ZERIPH AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ZERIPH AND CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <omni/chrono/tick.hpp>
OMNI_CLOCK_FREQ_T omni::chrono::monotonic::m_freq;

#if defined(OMNI_THROW)
    #include <omni/types/thread_t.hpp>
    omni::action omni::sync::unhandled_thread_exception;
    omni::event1<void, const omni::exception&> omni::sync::user_thread_exception;
#endif

// default of having the constants be externally linked
#if !defined(OMNI_NO_EXTERN_CONSTS)
    // DEV_NOTE: These values are to keep in line with the .NET framework
    #include <omni/types/date_t.hpp>
    const int64_t omni::chrono::DAYS_PER_YEAR = 365; // non-leap
    const int64_t omni::chrono::DAYS_PER_4_YEARS = 1461; // 365 * 4 + 1 leap day
    const int64_t omni::chrono::DAYS_PER_100_YEARS = 36524; // DAYS_PER_4_YEARS * 25 - 1
    const int64_t omni::chrono::DAYS_PER_400_YEARS = 146097; // DAYS_PER_100_YEARS * 4 + 1
    const int64_t omni::chrono::DAYS_TO_1601AD = 584388; // Number of days from 1/1/0001 to 12/31/1600 -> DAYS_PER_400_YEARS * 4
    const int64_t omni::chrono::DAYS_TO_1899AD = 693593; // Number of days from 1/1/0001 to 12/30/1899 -> DAYS_PER_400_YEARS * 4 + DAYS_PER_100_YEARS * 3 - 367;
    const int64_t omni::chrono::DAYS_TO_10000AD = 3652059; // Number of days from 1/1/0001 to 12/31/9999 -> DAYS_PER_400_YEARS * 25 - 366
    const int64_t omni::chrono::TICKS_TO_10000AD = 3155378975999999999; // DAYS_TO_10000AD * TICKS_PER_DAY - 1;
    const int64_t omni::chrono::MILLISECONDS_TO_10000AD = 315537897600000; // DAYS_TO_10000AD * MILLISECONDS_PER_DAY;
    const int64_t omni::chrono::FILE_TIME_OFFSET = 504911232000000000; // DAYS_TO_1601AD * TICKS_PER_DAY;
    const int64_t omni::chrono::DOUBLE_DATE_OFFSET = 599264352000000000; // DAYS_TO_1899AD * TICKS_PER_DAY;
    // The minimum OA date is 0100/01/01 (Note it's year 100).
    // The maximum OA date is 9999/12/31
    const int64_t omni::chrono::OA_DATE_MIN_AS_TICKS = 31241376000000000; // (DAYS_PER_100_YEARS - DAYS_PER_YEAR) * TICKS_PER_DAY;
    const double omni::chrono::OA_DATE_MIN_AS_DOUBLE = -657435.0; // All OA dates must be greater than (not >=) OA_DATE_MIN_AS_DOUBLE
    const double omni::chrono::OA_DATE_MAX_AS_DOUBLE = 2958466.0; // All OA dates must be less than (not <=) OA_DATE_MAX_AS_DOUBLE
    const int32_t omni::chrono::DAYS_TO_MONTH_365[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
    const int32_t omni::chrono::DAYS_TO_MONTH_366[] = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 };

    #include <omni/types/tick_t.hpp>
    const double omni::chrono::TICKS_PER_NANOSECOND = 0.01;
    const int64_t omni::chrono::TICKS_PER_MICROSECOND = 10;
    const int64_t omni::chrono::TICKS_PER_MILLISECOND = 10000;
    const int64_t omni::chrono::TICKS_PER_TENTH_SECOND = 1000000; // TICKS_PER_MILLISECOND * 100;
    const int64_t omni::chrono::TICKS_PER_SECOND = 10000000;
    const int64_t omni::chrono::TICKS_PER_MINUTE = 600000000;
    const int64_t omni::chrono::TICKS_PER_HOUR = 36000000000;
    const int64_t omni::chrono::TICKS_PER_DAY = 864000000000;
    const int64_t omni::chrono::NANOSECONDS_PER_MICROSECOND = 1000;
    const int64_t omni::chrono::NANOSECONDS_PER_MILLISECOND = 1000000;
    const int64_t omni::chrono::NANOSECONDS_PER_SECOND = 1000000000;
    const int64_t omni::chrono::NANOSECONDS_PER_MINUTE = 60000000000;
    const int64_t omni::chrono::NANOSECONDS_PER_HOUR = 3600000000000;
    const int64_t omni::chrono::NANOSECONDS_PER_DAY = 86400000000000;
    const double omni::chrono::MICROSECONDS_PER_NANOSECOND = 0.001;
    const int64_t omni::chrono::MICROSECONDS_PER_MILLISECOND = 1000;
    const int64_t omni::chrono::MICROSECONDS_PER_SECOND = 1000000;
    const int64_t omni::chrono::MICROSECONDS_PER_MINUTE = 60000000;
    const int64_t omni::chrono::MICROSECONDS_PER_HOUR = 3600000000;
    const int64_t omni::chrono::MICROSECONDS_PER_DAY = 86400000000;
    const double omni::chrono::MILLISECONDS_PER_NANOSECOND = 0.0001;
    const double omni::chrono::MILLISECONDS_PER_MICROSECOND = 0.001;
    const int64_t omni::chrono::MILLISECONDS_PER_SECOND = 1000;
    const int64_t omni::chrono::MILLISECONDS_PER_MINUTE = 60000;
    const int64_t omni::chrono::MILLISECONDS_PER_HOUR = 3600000;
    const int64_t omni::chrono::MILLISECONDS_PER_DAY = 86400000;
    const double omni::chrono::SECONDS_PER_NANOSECOND = 0.000000001;
    const double omni::chrono::SECONDS_PER_MICROSECOND = 0.000001;
    const double omni::chrono::SECONDS_PER_MILLISECOND = 0.001;
    const int64_t omni::chrono::SECONDS_PER_MINUTE = 60;
    const int64_t omni::chrono::SECONDS_PER_HOUR = 3600;
    const int64_t omni::chrono::SECONDS_PER_DAY = 86400;
    const double omni::chrono::MINUTES_PER_NANOSECOND = 0.000000000016667;
    const double omni::chrono::MINUTES_PER_MICROSECOND = 0.000000016667;
    const double omni::chrono::MINUTES_PER_MILLISECOND = 0.000016667;
    const double omni::chrono::MINUTES_PER_SECOND = 0.016667;
    const int64_t omni::chrono::MINUTES_PER_HOUR = 60;
    const int64_t omni::chrono::MINUTES_PER_DAY = 1440;
    const int64_t omni::chrono::NANOSECONDS_PER_TICK = 100;
    const double omni::chrono::MICROSECONDS_PER_TICK = 0.1;
    const double omni::chrono::MILLISECONDS_PER_TICK = 0.0001;
    const double omni::chrono::SECONDS_PER_TICK = 0.0000001;
    const double omni::chrono::MINUTES_PER_TICK = 0.000000001666666666667;
    const double omni::chrono::HOURS_PER_TICK = 0.000000000027777777778;
    const double omni::chrono::DAYS_PER_TICK = 0.000000000001157407407;

    #include <omni/constants.hpp>
    const uint32_t omni::consts::size::binary::KB = OMNI_KIB_IVAL;
    const uint32_t omni::consts::size::binary::MB = OMNI_MIB_IVAL;
    const uint32_t omni::consts::size::binary::GB = OMNI_GIB_IVAL;
    const uint32_t omni::consts::size::decimal::KB = OMNI_KB_IVAL;
    const uint32_t omni::consts::size::decimal::MB = OMNI_MB_IVAL;
    const uint32_t omni::consts::size::decimal::GB = OMNI_GB_IVAL;
    
    // #include <omni/consts/cconsts.hpp>
    #define OMNI_MISC_T_FW 1
    #define OMNI_CHAR_T_FW const char
    #define OMNI_STRW_FW(v) v
    #define OMNI_EXT_NS_FW omni::cconsts
    #include <omni/xx/ext_const.hxx>
    #undef OMNI_MISC_T_FW
    #undef OMNI_CHAR_T_FW
    #undef OMNI_STRW_FW
    #undef OMNI_EXT_NS_FW
    
    // #include <omni/consts/wconsts.hpp>
    #define OMNI_MISC_T_FW 2
    #define OMNI_CHAR_T_FW const wchar_t
    //#define OMNI_STRW_FW(v) L#v
    #define OMNI_STRW_FW(v) OMNI_DWSTR(v)
    #define OMNI_EXT_NS_FW omni::wconsts
    #include <omni/xx/ext_const.hxx>
    #undef OMNI_CHAR_T_FW
    #undef OMNI_STRW_FW
    #undef OMNI_EXT_NS_FW
    #undef OMNI_MISC_T_FW

    #include <omni/environment.hpp>
    const omni::char_t omni::environment::NEW_LINE[] = OMNI_STRW(OMNI_NEW_LINE);

    #include <omni/math.hpp>
    const double omni::math::PI = OMNI_PI;
    const long double omni::math::PI_L = OMNI_PI_L;
    const float omni::math::PI_F = OMNI_PI_F;
    const double omni::math::PI_180 = OMNI_PI_180;
    const long double omni::math::PI_L_180 = OMNI_PI_L_180;
    const float omni::math::PI_F_180 = OMNI_PI_F_180;
    const double omni::math::RADS[] = {
        0.0, // 0 degs
        0.0174532925199433, // 1 degs
        0.0349065850398866, // 2 degs
        0.0523598775598299, // 3 degs
        0.0698131700797732, // 4 degs
        0.0872664625997165, // 5 degs
        0.10471975511966, // 6 degs
        0.122173047639603, // 7 degs
        0.139626340159546, // 8 degs
        0.15707963267949, // 9 degs
        0.174532925199433, // 10 degs
        0.191986217719376, // 11 degs
        0.20943951023932, // 12 degs
        0.226892802759263, // 13 degs
        0.244346095279206, // 14 degs
        0.261799387799149, // 15 degs
        0.279252680319093, // 16 degs
        0.296705972839036, // 17 degs
        0.314159265358979, // 18 degs
        0.331612557878923, // 19 degs
        0.349065850398866, // 20 degs
        0.366519142918809, // 21 degs
        0.383972435438752, // 22 degs
        0.401425727958696, // 23 degs
        0.418879020478639, // 24 degs
        0.436332312998582, // 25 degs
        0.453785605518526, // 26 degs
        0.471238898038469, // 27 degs
        0.488692190558412, // 28 degs
        0.506145483078356, // 29 degs
        0.523598775598299, // 30 degs
        0.541052068118242, // 31 degs
        0.558505360638185, // 32 degs
        0.575958653158129, // 33 degs
        0.593411945678072, // 34 degs
        0.610865238198015, // 35 degs
        0.628318530717959, // 36 degs
        0.645771823237902, // 37 degs
        0.663225115757845, // 38 degs
        0.680678408277788, // 39 degs
        0.698131700797732, // 40 degs
        0.715584993317675, // 41 degs
        0.733038285837618, // 42 degs
        0.750491578357562, // 43 degs
        0.767944870877505, // 44 degs
        0.785398163397448, // 45 degs
        0.802851455917392, // 46 degs
        0.820304748437335, // 47 degs
        0.837758040957278, // 48 degs
        0.855211333477221, // 49 degs
        0.872664625997165, // 50 degs
        0.890117918517108, // 51 degs
        0.907571211037051, // 52 degs
        0.925024503556995, // 53 degs
        0.942477796076938, // 54 degs
        0.959931088596881, // 55 degs
        0.977384381116825, // 56 degs
        0.994837673636768, // 57 degs
        1.01229096615671, // 58 degs
        1.02974425867665, // 59 degs
        1.0471975511966, // 60 degs
        1.06465084371654, // 61 degs
        1.08210413623648, // 62 degs
        1.09955742875643, // 63 degs
        1.11701072127637, // 64 degs
        1.13446401379631, // 65 degs
        1.15191730631626, // 66 degs
        1.1693705988362, // 67 degs
        1.18682389135614, // 68 degs
        1.20427718387609, // 69 degs
        1.22173047639603, // 70 degs
        1.23918376891597, // 71 degs
        1.25663706143592, // 72 degs
        1.27409035395586, // 73 degs
        1.2915436464758, // 74 degs
        1.30899693899575, // 75 degs
        1.32645023151569, // 76 degs
        1.34390352403563, // 77 degs
        1.36135681655558, // 78 degs
        1.37881010907552, // 79 degs
        1.39626340159546, // 80 degs
        1.41371669411541, // 81 degs
        1.43116998663535, // 82 degs
        1.44862327915529, // 83 degs
        1.46607657167524, // 84 degs
        1.48352986419518, // 85 degs
        1.50098315671512, // 86 degs
        1.51843644923507, // 87 degs
        1.53588974175501, // 88 degs
        1.55334303427495, // 89 degs
        1.5707963267949, // 90 degs
        1.58824961931484, // 91 degs
        1.60570291183478, // 92 degs
        1.62315620435473, // 93 degs
        1.64060949687467, // 94 degs
        1.65806278939461, // 95 degs
        1.67551608191456, // 96 degs
        1.6929693744345, // 97 degs
        1.71042266695444, // 98 degs
        1.72787595947439, // 99 degs
        1.74532925199433, // 100 degs
        1.76278254451427, // 101 degs
        1.78023583703422, // 102 degs
        1.79768912955416, // 103 degs
        1.8151424220741, // 104 degs
        1.83259571459405, // 105 degs
        1.85004900711399, // 106 degs
        1.86750229963393, // 107 degs
        1.88495559215388, // 108 degs
        1.90240888467382, // 109 degs
        1.91986217719376, // 110 degs
        1.93731546971371, // 111 degs
        1.95476876223365, // 112 degs
        1.97222205475359, // 113 degs
        1.98967534727354, // 114 degs
        2.00712863979348, // 115 degs
        2.02458193231342, // 116 degs
        2.04203522483337, // 117 degs
        2.05948851735331, // 118 degs
        2.07694180987325, // 119 degs
        2.0943951023932, // 120 degs
        2.11184839491314, // 121 degs
        2.12930168743308, // 122 degs
        2.14675497995303, // 123 degs
        2.16420827247297, // 124 degs
        2.18166156499291, // 125 degs
        2.19911485751286, // 126 degs
        2.2165681500328, // 127 degs
        2.23402144255274, // 128 degs
        2.25147473507268, // 129 degs
        2.26892802759263, // 130 degs
        2.28638132011257, // 131 degs
        2.30383461263252, // 132 degs
        2.32128790515246, // 133 degs
        2.3387411976724, // 134 degs
        2.35619449019234, // 135 degs
        2.37364778271229, // 136 degs
        2.39110107523223, // 137 degs
        2.40855436775217, // 138 degs
        2.42600766027212, // 139 degs
        2.44346095279206, // 140 degs
        2.460914245312, // 141 degs
        2.47836753783195, // 142 degs
        2.49582083035189, // 143 degs
        2.51327412287183, // 144 degs
        2.53072741539178, // 145 degs
        2.54818070791172, // 146 degs
        2.56563400043166, // 147 degs
        2.58308729295161, // 148 degs
        2.60054058547155, // 149 degs
        2.61799387799149, // 150 degs
        2.63544717051144, // 151 degs
        2.65290046303138, // 152 degs
        2.67035375555132, // 153 degs
        2.68780704807127, // 154 degs
        2.70526034059121, // 155 degs
        2.72271363311115, // 156 degs
        2.7401669256311, // 157 degs
        2.75762021815104, // 158 degs
        2.77507351067098, // 159 degs
        2.79252680319093, // 160 degs
        2.80998009571087, // 161 degs
        2.82743338823081, // 162 degs
        2.84488668075076, // 163 degs
        2.8623399732707, // 164 degs
        2.87979326579064, // 165 degs
        2.89724655831059, // 166 degs
        2.91469985083053, // 167 degs
        2.93215314335047, // 168 degs
        2.94960643587042, // 169 degs
        2.96705972839036, // 170 degs
        2.9845130209103, // 171 degs
        3.00196631343025, // 172 degs
        3.01941960595019, // 173 degs
        3.03687289847013, // 174 degs
        3.05432619099008, // 175 degs
        3.07177948351002, // 176 degs
        3.08923277602996, // 177 degs
        3.10668606854991, // 178 degs
        3.12413936106985, // 179 degs
        3.14159265358979, // 180 degs
        3.15904594610974, // 181 degs
        3.17649923862968, // 182 degs
        3.19395253114962, // 183 degs
        3.21140582366957, // 184 degs
        3.22885911618951, // 185 degs
        3.24631240870945, // 186 degs
        3.2637657012294, // 187 degs
        3.28121899374934, // 188 degs
        3.29867228626928, // 189 degs
        3.31612557878923, // 190 degs
        3.33357887130917, // 191 degs
        3.35103216382911, // 192 degs
        3.36848545634906, // 193 degs
        3.385938748869, // 194 degs
        3.40339204138894, // 195 degs
        3.42084533390889, // 196 degs
        3.43829862642883, // 197 degs
        3.45575191894877, // 198 degs
        3.47320521146872, // 199 degs
        3.49065850398866, // 200 degs
        3.5081117965086, // 201 degs
        3.52556508902855, // 202 degs
        3.54301838154849, // 203 degs
        3.56047167406843, // 204 degs
        3.57792496658838, // 205 degs
        3.59537825910832, // 206 degs
        3.61283155162826, // 207 degs
        3.63028484414821, // 208 degs
        3.64773813666815, // 209 degs
        3.66519142918809, // 210 degs
        3.68264472170804, // 211 degs
        3.70009801422798, // 212 degs
        3.71755130674792, // 213 degs
        3.73500459926787, // 214 degs
        3.75245789178781, // 215 degs
        3.76991118430775, // 216 degs
        3.7873644768277, // 217 degs
        3.80481776934764, // 218 degs
        3.82227106186758, // 219 degs
        3.83972435438753, // 220 degs
        3.85717764690747, // 221 degs
        3.87463093942741, // 222 degs
        3.89208423194735, // 223 degs
        3.9095375244673, // 224 degs
        3.92699081698724, // 225 degs
        3.94444410950718, // 226 degs
        3.96189740202713, // 227 degs
        3.97935069454707, // 228 degs
        3.99680398706701, // 229 degs
        4.01425727958696, // 230 degs
        4.0317105721069, // 231 degs
        4.04916386462684, // 232 degs
        4.06661715714679, // 233 degs
        4.08407044966673, // 234 degs
        4.10152374218667, // 235 degs
        4.11897703470662, // 236 degs
        4.13643032722656, // 237 degs
        4.1538836197465, // 238 degs
        4.17133691226645, // 239 degs
        4.18879020478639, // 240 degs
        4.20624349730633, // 241 degs
        4.22369678982628, // 242 degs
        4.24115008234622, // 243 degs
        4.25860337486616, // 244 degs
        4.27605666738611, // 245 degs
        4.29350995990605, // 246 degs
        4.31096325242599, // 247 degs
        4.32841654494594, // 248 degs
        4.34586983746588, // 249 degs
        4.36332312998582, // 250 degs
        4.38077642250577, // 251 degs
        4.39822971502571, // 252 degs
        4.41568300754565, // 253 degs
        4.4331363000656, // 254 degs
        4.45058959258554, // 255 degs
        4.46804288510548, // 256 degs
        4.48549617762543, // 257 degs
        4.50294947014537, // 258 degs
        4.52040276266531, // 259 degs
        4.53785605518526, // 260 degs
        4.5553093477052, // 261 degs
        4.57276264022514, // 262 degs
        4.59021593274509, // 263 degs
        4.60766922526503, // 264 degs
        4.62512251778497, // 265 degs
        4.64257581030492, // 266 degs
        4.66002910282486, // 267 degs
        4.6774823953448, // 268 degs
        4.69493568786475, // 269 degs
        4.71238898038469, // 270 degs
        4.72984227290463, // 271 degs
        4.74729556542458, // 272 degs
        4.76474885794452, // 273 degs
        4.78220215046446, // 274 degs
        4.79965544298441, // 275 degs
        4.81710873550435, // 276 degs
        4.83456202802429, // 277 degs
        4.85201532054424, // 278 degs
        4.86946861306418, // 279 degs
        4.88692190558412, // 280 degs
        4.90437519810407, // 281 degs
        4.92182849062401, // 282 degs
        4.93928178314395, // 283 degs
        4.9567350756639, // 284 degs
        4.97418836818384, // 285 degs
        4.99164166070378, // 286 degs
        5.00909495322373, // 287 degs
        5.02654824574367, // 288 degs
        5.04400153826361, // 289 degs
        5.06145483078356, // 290 degs
        5.0789081233035, // 291 degs
        5.09636141582344, // 292 degs
        5.11381470834339, // 293 degs
        5.13126800086333, // 294 degs
        5.14872129338327, // 295 degs
        5.16617458590322, // 296 degs
        5.18362787842316, // 297 degs
        5.2010811709431, // 298 degs
        5.21853446346305, // 299 degs
        5.23598775598299, // 300 degs
        5.25344104850293, // 301 degs
        5.27089434102288, // 302 degs
        5.28834763354282, // 303 degs
        5.30580092606276, // 304 degs
        5.32325421858271, // 305 degs
        5.34070751110265, // 306 degs
        5.35816080362259, // 307 degs
        5.37561409614254, // 308 degs
        5.39306738866248, // 309 degs
        5.41052068118242, // 310 degs
        5.42797397370236, // 311 degs
        5.44542726622231, // 312 degs
        5.46288055874225, // 313 degs
        5.48033385126219, // 314 degs
        5.49778714378214, // 315 degs
        5.51524043630208, // 316 degs
        5.53269372882203, // 317 degs
        5.55014702134197, // 318 degs
        5.56760031386191, // 319 degs
        5.58505360638185, // 320 degs
        5.6025068989018, // 321 degs
        5.61996019142174, // 322 degs
        5.63741348394168, // 323 degs
        5.65486677646163, // 324 degs
        5.67232006898157, // 325 degs
        5.68977336150151, // 326 degs
        5.70722665402146, // 327 degs
        5.7246799465414, // 328 degs
        5.74213323906134, // 329 degs
        5.75958653158129, // 330 degs
        5.77703982410123, // 331 degs
        5.79449311662117, // 332 degs
        5.81194640914112, // 333 degs
        5.82939970166106, // 334 degs
        5.846852994181, // 335 degs
        5.86430628670095, // 336 degs
        5.88175957922089, // 337 degs
        5.89921287174083, // 338 degs
        5.91666616426078, // 339 degs
        5.93411945678072, // 340 degs
        5.95157274930066, // 341 degs
        5.96902604182061, // 342 degs
        5.98647933434055, // 343 degs
        6.00393262686049, // 344 degs
        6.02138591938044, // 345 degs
        6.03883921190038, // 346 degs
        6.05629250442032, // 347 degs
        6.07374579694027, // 348 degs
        6.09119908946021, // 349 degs
        6.10865238198015, // 350 degs
        6.1261056745001, // 351 degs
        6.14355896702004, // 352 degs
        6.16101225953998, // 353 degs
        6.17846555205993, // 354 degs
        6.19591884457987, // 355 degs
        6.21337213709981, // 356 degs
        6.23082542961976, // 357 degs
        6.2482787221397, // 358 degs
        6.26573201465964, // 359 degs
        6.28318530717959, // 360 degs
    };
    const double omni::math::RADS_SIN[] = {
        0, // sin(0 - 0 degs)
        0.0174524064372835, // sin(0.0174532925199433 - 1 degs)
        0.034899496702501, // sin(0.0349065850398866 - 2 degs)
        0.0523359562429438, // sin(0.0523598775598299 - 3 degs)
        0.0697564737441253, // sin(0.0698131700797732 - 4 degs)
        0.0871557427476582, // sin(0.0872664625997165 - 5 degs)
        0.104528463267654, // sin(0.10471975511966 - 6 degs)
        0.121869343405147, // sin(0.122173047639603 - 7 degs)
        0.139173100960065, // sin(0.139626340159546 - 8 degs)
        0.156434465040231, // sin(0.15707963267949 - 9 degs)
        0.17364817766693, // sin(0.174532925199433 - 10 degs)
        0.190808995376545, // sin(0.191986217719376 - 11 degs)
        0.20791169081776, // sin(0.20943951023932 - 12 degs)
        0.224951054343865, // sin(0.226892802759263 - 13 degs)
        0.241921895599668, // sin(0.244346095279206 - 14 degs)
        0.25881904510252, // sin(0.261799387799149 - 15 degs)
        0.275637355816999, // sin(0.279252680319093 - 16 degs)
        0.292371704722737, // sin(0.296705972839036 - 17 degs)
        0.309016994374947, // sin(0.314159265358979 - 18 degs)
        0.325568154457157, // sin(0.331612557878923 - 19 degs)
        0.342020143325669, // sin(0.349065850398866 - 20 degs)
        0.3583679495453, // sin(0.366519142918809 - 21 degs)
        0.374606593415912, // sin(0.383972435438752 - 22 degs)
        0.390731128489274, // sin(0.401425727958696 - 23 degs)
        0.4067366430758, // sin(0.418879020478639 - 24 degs)
        0.422618261740699, // sin(0.436332312998582 - 25 degs)
        0.438371146789078, // sin(0.453785605518526 - 26 degs)
        0.453990499739547, // sin(0.471238898038469 - 27 degs)
        0.469471562785891, // sin(0.488692190558412 - 28 degs)
        0.484809620246337, // sin(0.506145483078356 - 29 degs)
        0.5, // sin(0.523598775598299 - 30 degs)
        0.515038074910054, // sin(0.541052068118242 - 31 degs)
        0.529919264233205, // sin(0.558505360638185 - 32 degs)
        0.544639035015027, // sin(0.575958653158129 - 33 degs)
        0.559192903470747, // sin(0.593411945678072 - 34 degs)
        0.573576436351046, // sin(0.610865238198015 - 35 degs)
        0.587785252292473, // sin(0.628318530717959 - 36 degs)
        0.601815023152048, // sin(0.645771823237902 - 37 degs)
        0.615661475325658, // sin(0.663225115757845 - 38 degs)
        0.629320391049837, // sin(0.680678408277788 - 39 degs)
        0.642787609686539, // sin(0.698131700797732 - 40 degs)
        0.656059028990507, // sin(0.715584993317675 - 41 degs)
        0.669130606358858, // sin(0.733038285837618 - 42 degs)
        0.681998360062499, // sin(0.750491578357562 - 43 degs)
        0.694658370458997, // sin(0.767944870877505 - 44 degs)
        0.707106781186547, // sin(0.785398163397448 - 45 degs)
        0.719339800338651, // sin(0.802851455917392 - 46 degs)
        0.731353701619171, // sin(0.820304748437335 - 47 degs)
        0.743144825477394, // sin(0.837758040957278 - 48 degs)
        0.754709580222772, // sin(0.855211333477221 - 49 degs)
        0.766044443118978, // sin(0.872664625997165 - 50 degs)
        0.777145961456971, // sin(0.890117918517108 - 51 degs)
        0.788010753606722, // sin(0.907571211037051 - 52 degs)
        0.798635510047293, // sin(0.925024503556995 - 53 degs)
        0.809016994374947, // sin(0.942477796076938 - 54 degs)
        0.819152044288992, // sin(0.959931088596881 - 55 degs)
        0.829037572555042, // sin(0.977384381116825 - 56 degs)
        0.838670567945424, // sin(0.994837673636768 - 57 degs)
        0.848048096156425, // sin(1.01229096615671 - 58 degs)
        0.85716730070211, // sin(1.02974425867665 - 59 degs)
        0.86602540378444, // sin(1.0471975511966 - 60 degs)
        0.874619707139395, // sin(1.06465084371654 - 61 degs)
        0.882947592858925, // sin(1.08210413623648 - 62 degs)
        0.891006524188369, // sin(1.09955742875643 - 63 degs)
        0.898794046299167, // sin(1.11701072127637 - 64 degs)
        0.906307787036648, // sin(1.13446401379631 - 65 degs)
        0.913545457642602, // sin(1.15191730631626 - 66 degs)
        0.92050485345244, // sin(1.1693705988362 - 67 degs)
        0.927183854566786, // sin(1.18682389135614 - 68 degs)
        0.933580426497203, // sin(1.20427718387609 - 69 degs)
        0.939692620785908, // sin(1.22173047639603 - 70 degs)
        0.945518575599316, // sin(1.23918376891597 - 71 degs)
        0.951056516295154, // sin(1.25663706143592 - 72 degs)
        0.956304755963035, // sin(1.27409035395586 - 73 degs)
        0.961261695938318, // sin(1.2915436464758 - 74 degs)
        0.965925826289069, // sin(1.30899693899575 - 75 degs)
        0.970295726275996, // sin(1.32645023151569 - 76 degs)
        0.974370064785234, // sin(1.34390352403563 - 77 degs)
        0.978147600733806, // sin(1.36135681655558 - 78 degs)
        0.981627183447664, // sin(1.37881010907552 - 79 degs)
        0.984807753012207, // sin(1.39626340159546 - 80 degs)
        0.987688340595138, // sin(1.41371669411541 - 81 degs)
        0.99026806874157, // sin(1.43116998663535 - 82 degs)
        0.992546151641322, // sin(1.44862327915529 - 83 degs)
        0.994521895368274, // sin(1.46607657167524 - 84 degs)
        0.996194698091746, // sin(1.48352986419518 - 85 degs)
        0.997564050259824, // sin(1.50098315671512 - 86 degs)
        0.998629534754574, // sin(1.51843644923507 - 87 degs)
        0.999390827019096, // sin(1.53588974175501 - 88 degs)
        0.999847695156391, // sin(1.55334303427495 - 89 degs)
        1, // sin(1.5707963267949 - 90 degs)
        0.999847695156391, // sin(1.58824961931484 - 91 degs)
        0.999390827019096, // sin(1.60570291183478 - 92 degs)
        0.998629534754574, // sin(1.62315620435473 - 93 degs)
        0.997564050259824, // sin(1.64060949687467 - 94 degs)
        0.996194698091746, // sin(1.65806278939461 - 95 degs)
        0.994521895368273, // sin(1.67551608191456 - 96 degs)
        0.992546151641322, // sin(1.6929693744345 - 97 degs)
        0.990268068741571, // sin(1.71042266695444 - 98 degs)
        0.987688340595137, // sin(1.72787595947439 - 99 degs)
        0.984807753012208, // sin(1.74532925199433 - 100 degs)
        0.981627183447665, // sin(1.76278254451427 - 101 degs)
        0.978147600733805, // sin(1.78023583703422 - 102 degs)
        0.974370064785235, // sin(1.79768912955416 - 103 degs)
        0.970295726275997, // sin(1.8151424220741 - 104 degs)
        0.965925826289067, // sin(1.83259571459405 - 105 degs)
        0.961261695938319, // sin(1.85004900711399 - 106 degs)
        0.956304755963036, // sin(1.86750229963393 - 107 degs)
        0.951056516295152, // sin(1.88495559215388 - 108 degs)
        0.945518575599317, // sin(1.90240888467382 - 109 degs)
        0.939692620785909, // sin(1.91986217719376 - 110 degs)
        0.9335804264972, // sin(1.93731546971371 - 111 degs)
        0.927183854566787, // sin(1.95476876223365 - 112 degs)
        0.920504853452441, // sin(1.97222205475359 - 113 degs)
        0.913545457642599, // sin(1.98967534727354 - 114 degs)
        0.906307787036649, // sin(2.00712863979348 - 115 degs)
        0.898794046299168, // sin(2.02458193231342 - 116 degs)
        0.891006524188366, // sin(2.04203522483337 - 117 degs)
        0.882947592858926, // sin(2.05948851735331 - 118 degs)
        0.874619707139397, // sin(2.07694180987325 - 119 degs)
        0.866025403784436, // sin(2.0943951023932 - 120 degs)
        0.857167300702112, // sin(2.11184839491314 - 121 degs)
        0.848048096156427, // sin(2.12930168743308 - 122 degs)
        0.838670567945422, // sin(2.14675497995303 - 123 degs)
        0.829037572555041, // sin(2.16420827247297 - 124 degs)
        0.819152044288993, // sin(2.18166156499291 - 125 degs)
        0.809016994374945, // sin(2.19911485751286 - 126 degs)
        0.798635510047292, // sin(2.2165681500328 - 127 degs)
        0.788010753606723, // sin(2.23402144255274 - 128 degs)
        0.777145961456974, // sin(2.25147473507268 - 129 degs)
        0.766044443118977, // sin(2.26892802759263 - 130 degs)
        0.754709580222773, // sin(2.28638132011257 - 131 degs)
        0.743144825477391, // sin(2.30383461263252 - 132 degs)
        0.731353701619169, // sin(2.32128790515246 - 133 degs)
        0.719339800338652, // sin(2.3387411976724 - 134 degs)
        0.707106781186551, // sin(2.35619449019234 - 135 degs)
        0.694658370458996, // sin(2.37364778271229 - 136 degs)
        0.681998360062499, // sin(2.39110107523223 - 137 degs)
        0.669130606358862, // sin(2.40855436775217 - 138 degs)
        0.656059028990506, // sin(2.42600766027212 - 139 degs)
        0.64278760968654, // sin(2.44346095279206 - 140 degs)
        0.629320391049841, // sin(2.460914245312 - 141 degs)
        0.615661475325657, // sin(2.47836753783195 - 142 degs)
        0.601815023152049, // sin(2.49582083035189 - 143 degs)
        0.587785252292477, // sin(2.51327412287183 - 144 degs)
        0.573576436351044, // sin(2.53072741539178 - 145 degs)
        0.559192903470748, // sin(2.54818070791172 - 146 degs)
        0.544639035015031, // sin(2.56563400043166 - 147 degs)
        0.529919264233203, // sin(2.58308729295161 - 148 degs)
        0.515038074910055, // sin(2.60054058547155 - 149 degs)
        0.500000000000004, // sin(2.61799387799149 - 150 degs)
        0.484809620246335, // sin(2.63544717051144 - 151 degs)
        0.469471562785891, // sin(2.65290046303138 - 152 degs)
        0.45399049973955, // sin(2.67035375555132 - 153 degs)
        0.438371146789075, // sin(2.68780704807127 - 154 degs)
        0.4226182617407, // sin(2.70526034059121 - 155 degs)
        0.406736643075804, // sin(2.72271363311115 - 156 degs)
        0.390731128489271, // sin(2.7401669256311 - 157 degs)
        0.374606593415913, // sin(2.75762021815104 - 158 degs)
        0.358367949545304, // sin(2.77507351067098 - 159 degs)
        0.342020143325666, // sin(2.79252680319093 - 160 degs)
        0.325568154457157, // sin(2.80998009571087 - 161 degs)
        0.309016994374951, // sin(2.82743338823081 - 162 degs)
        0.292371704722734, // sin(2.84488668075076 - 163 degs)
        0.275637355817, // sin(2.8623399732707 - 164 degs)
        0.258819045102524, // sin(2.87979326579064 - 165 degs)
        0.241921895599665, // sin(2.89724655831059 - 166 degs)
        0.224951054343865, // sin(2.91469985083053 - 167 degs)
        0.207911690817763, // sin(2.93215314335047 - 168 degs)
        0.190808995376542, // sin(2.94960643587042 - 169 degs)
        0.173648177666931, // sin(2.96705972839036 - 170 degs)
        0.156434465040234, // sin(2.9845130209103 - 171 degs)
        0.139173100960062, // sin(3.00196631343025 - 172 degs)
        0.121869343405148, // sin(3.01941960595019 - 173 degs)
        0.104528463267657, // sin(3.03687289847013 - 174 degs)
        0.0871557427476551, // sin(3.05432619099008 - 175 degs)
        0.0697564737441255, // sin(3.07177948351002 - 176 degs)
        0.0523359562429474, // sin(3.08923277602996 - 177 degs)
        0.0348994967024976, // sin(3.10668606854991 - 178 degs)
        0.0174524064372834, // sin(3.12413936106985 - 179 degs)
        3.23108914886517e-15, // sin(3.14159265358979 - 180 degs)
        -0.0174524064372872, // sin(3.15904594610974 - 181 degs)
        -0.0348994967025013, // sin(3.17649923862968 - 182 degs)
        -0.0523359562429409, // sin(3.19395253114962 - 183 degs)
        -0.0697564737441288, // sin(3.21140582366957 - 184 degs)
        -0.0871557427476584, // sin(3.22885911618951 - 185 degs)
        -0.10452846326765, // sin(3.24631240870945 - 186 degs)
        -0.121869343405151, // sin(3.2637657012294 - 187 degs)
        -0.139173100960066, // sin(3.28121899374934 - 188 degs)
        -0.156434465040228, // sin(3.29867228626928 - 189 degs)
        -0.173648177666934, // sin(3.31612557878923 - 190 degs)
        -0.190808995376545, // sin(3.33357887130917 - 191 degs)
        -0.207911690817756, // sin(3.35103216382911 - 192 degs)
        -0.224951054343869, // sin(3.36848545634906 - 193 degs)
        -0.241921895599668, // sin(3.385938748869 - 194 degs)
        -0.258819045102518, // sin(3.40339204138894 - 195 degs)
        -0.275637355817003, // sin(3.42084533390889 - 196 degs)
        -0.292371704722738, // sin(3.43829862642883 - 197 degs)
        -0.309016994374945, // sin(3.45575191894877 - 198 degs)
        -0.325568154457161, // sin(3.47320521146872 - 199 degs)
        -0.342020143325669, // sin(3.49065850398866 - 200 degs)
        -0.358367949545298, // sin(3.5081117965086 - 201 degs)
        -0.374606593415916, // sin(3.52556508902855 - 202 degs)
        -0.390731128489275, // sin(3.54301838154849 - 203 degs)
        -0.406736643075798, // sin(3.56047167406843 - 204 degs)
        -0.422618261740703, // sin(3.57792496658838 - 205 degs)
        -0.438371146789078, // sin(3.59537825910832 - 206 degs)
        -0.453990499739545, // sin(3.61283155162826 - 207 degs)
        -0.469471562785895, // sin(3.63028484414821 - 208 degs)
        -0.484809620246338, // sin(3.64773813666815 - 209 degs)
        -0.499999999999998, // sin(3.66519142918809 - 210 degs)
        -0.515038074910058, // sin(3.68264472170804 - 211 degs)
        -0.529919264233206, // sin(3.70009801422798 - 212 degs)
        -0.544639035015025, // sin(3.71755130674792 - 213 degs)
        -0.559192903470751, // sin(3.73500459926787 - 214 degs)
        -0.573576436351047, // sin(3.75245789178781 - 215 degs)
        -0.587785252292472, // sin(3.76991118430775 - 216 degs)
        -0.601815023152052, // sin(3.7873644768277 - 217 degs)
        -0.61566147532566, // sin(3.80481776934764 - 218 degs)
        -0.629320391049836, // sin(3.82227106186758 - 219 degs)
        -0.642787609686543, // sin(3.83972435438753 - 220 degs)
        -0.656059028990508, // sin(3.85717764690747 - 221 degs)
        -0.669130606358857, // sin(3.87463093942741 - 222 degs)
        -0.681998360062495, // sin(3.89208423194735 - 223 degs)
        -0.694658370458999, // sin(3.9095375244673 - 224 degs)
        -0.707106781186546, // sin(3.92699081698724 - 225 degs)
        -0.719339800338648, // sin(3.94444410950718 - 226 degs)
        -0.731353701619172, // sin(3.96189740202713 - 227 degs)
        -0.743144825477393, // sin(3.97935069454707 - 228 degs)
        -0.754709580222769, // sin(3.99680398706701 - 229 degs)
        -0.76604444311898, // sin(4.01425727958696 - 230 degs)
        -0.77714596145697, // sin(4.0317105721069 - 231 degs)
        -0.788010753606719, // sin(4.04916386462684 - 232 degs)
        -0.798635510047294, // sin(4.06661715714679 - 233 degs)
        -0.809016994374947, // sin(4.08407044966673 - 234 degs)
        -0.819152044288989, // sin(4.10152374218667 - 235 degs)
        -0.829037572555043, // sin(4.11897703470662 - 236 degs)
        -0.838670567945424, // sin(4.13643032722656 - 237 degs)
        -0.848048096156424, // sin(4.1538836197465 - 238 degs)
        -0.857167300702113, // sin(4.17133691226645 - 239 degs)
        -0.866025403784438, // sin(4.18879020478639 - 240 degs)
        -0.874619707139394, // sin(4.20624349730633 - 241 degs)
        -0.882947592858928, // sin(4.22369678982628 - 242 degs)
        -0.891006524188367, // sin(4.24115008234622 - 243 degs)
        -0.898794046299165, // sin(4.25860337486616 - 244 degs)
        -0.906307787036651, // sin(4.27605666738611 - 245 degs)
        -0.913545457642601, // sin(4.29350995990605 - 246 degs)
        -0.920504853452439, // sin(4.31096325242599 - 247 degs)
        -0.927183854566788, // sin(4.32841654494594 - 248 degs)
        -0.933580426497202, // sin(4.34586983746588 - 249 degs)
        -0.939692620785907, // sin(4.36332312998582 - 250 degs)
        -0.945518575599318, // sin(4.38077642250577 - 251 degs)
        -0.951056516295154, // sin(4.39822971502571 - 252 degs)
        -0.956304755963034, // sin(4.41568300754565 - 253 degs)
        -0.96126169593832, // sin(4.4331363000656 - 254 degs)
        -0.965925826289068, // sin(4.45058959258554 - 255 degs)
        -0.970295726275996, // sin(4.46804288510548 - 256 degs)
        -0.974370064785236, // sin(4.48549617762543 - 257 degs)
        -0.978147600733806, // sin(4.50294947014537 - 258 degs)
        -0.981627183447663, // sin(4.52040276266531 - 259 degs)
        -0.984807753012209, // sin(4.53785605518526 - 260 degs)
        -0.987688340595138, // sin(4.5553093477052 - 261 degs)
        -0.99026806874157, // sin(4.57276264022514 - 262 degs)
        -0.992546151641322, // sin(4.59021593274509 - 263 degs)
        -0.994521895368273, // sin(4.60766922526503 - 264 degs)
        -0.996194698091745, // sin(4.62512251778497 - 265 degs)
        -0.997564050259825, // sin(4.64257581030492 - 266 degs)
        -0.998629534754574, // sin(4.66002910282486 - 267 degs)
        -0.999390827019096, // sin(4.6774823953448 - 268 degs)
        -0.999847695156391, // sin(4.69493568786475 - 269 degs)
        -1, // sin(4.71238898038469 - 270 degs)
        -0.999847695156391, // sin(4.72984227290463 - 271 degs)
        -0.999390827019096, // sin(4.74729556542458 - 272 degs)
        -0.998629534754574, // sin(4.76474885794452 - 273 degs)
        -0.997564050259824, // sin(4.78220215046446 - 274 degs)
        -0.996194698091745, // sin(4.79965544298441 - 275 degs)
        -0.994521895368273, // sin(4.81710873550435 - 276 degs)
        -0.992546151641322, // sin(4.83456202802429 - 277 degs)
        -0.99026806874157, // sin(4.85201532054424 - 278 degs)
        -0.987688340595138, // sin(4.86946861306418 - 279 degs)
        -0.984807753012209, // sin(4.88692190558412 - 280 degs)
        -0.981627183447663, // sin(4.90437519810407 - 281 degs)
        -0.978147600733805, // sin(4.92182849062401 - 282 degs)
        -0.974370064785236, // sin(4.93928178314395 - 283 degs)
        -0.970295726275995, // sin(4.9567350756639 - 284 degs)
        -0.965925826289068, // sin(4.97418836818384 - 285 degs)
        -0.96126169593832, // sin(4.99164166070378 - 286 degs)
        -0.956304755963034, // sin(5.00909495322373 - 287 degs)
        -0.951056516295153, // sin(5.02654824574367 - 288 degs)
        -0.945518575599318, // sin(5.04400153826361 - 289 degs)
        -0.939692620785907, // sin(5.06145483078356 - 290 degs)
        -0.933580426497201, // sin(5.0789081233035 - 291 degs)
        -0.927183854566788, // sin(5.09636141582344 - 292 degs)
        -0.920504853452439, // sin(5.11381470834339 - 293 degs)
        -0.9135454576426, // sin(5.13126800086333 - 294 degs)
        -0.906307787036651, // sin(5.14872129338327 - 295 degs)
        -0.898794046299165, // sin(5.16617458590322 - 296 degs)
        -0.891006524188367, // sin(5.18362787842316 - 297 degs)
        -0.882947592858928, // sin(5.2010811709431 - 298 degs)
        -0.874619707139394, // sin(5.21853446346305 - 299 degs)
        -0.866025403784438, // sin(5.23598775598299 - 300 degs)
        -0.857167300702113, // sin(5.25344104850293 - 301 degs)
        -0.848048096156423, // sin(5.27089434102288 - 302 degs)
        -0.838670567945423, // sin(5.28834763354282 - 303 degs)
        -0.829037572555043, // sin(5.30580092606276 - 304 degs)
        -0.819152044288989, // sin(5.32325421858271 - 305 degs)
        -0.809016994374947, // sin(5.34070751110265 - 306 degs)
        -0.798635510047294, // sin(5.35816080362259 - 307 degs)
        -0.788010753606719, // sin(5.37561409614254 - 308 degs)
        -0.77714596145697, // sin(5.39306738866248 - 309 degs)
        -0.766044443118979, // sin(5.41052068118242 - 310 degs)
        -0.754709580222775, // sin(5.42797397370236 - 311 degs)
        -0.743144825477393, // sin(5.44542726622231 - 312 degs)
        -0.731353701619172, // sin(5.46288055874225 - 313 degs)
        -0.719339800338654, // sin(5.48033385126219 - 314 degs)
        -0.707106781186546, // sin(5.49778714378214 - 315 degs)
        -0.694658370458998, // sin(5.51524043630208 - 316 degs)
        -0.681998360062494, // sin(5.53269372882203 - 317 degs)
        -0.669130606358857, // sin(5.55014702134197 - 318 degs)
        -0.656059028990508, // sin(5.56760031386191 - 319 degs)
        -0.642787609686543, // sin(5.58505360638185 - 320 degs)
        -0.629320391049836, // sin(5.6025068989018 - 321 degs)
        -0.61566147532566, // sin(5.61996019142174 - 322 degs)
        -0.601815023152052, // sin(5.63741348394168 - 323 degs)
        -0.587785252292471, // sin(5.65486677646163 - 324 degs)
        -0.573576436351047, // sin(5.67232006898157 - 325 degs)
        -0.55919290347075, // sin(5.68977336150151 - 326 degs)
        -0.544639035015026, // sin(5.70722665402146 - 327 degs)
        -0.529919264233206, // sin(5.7246799465414 - 328 degs)
        -0.515038074910057, // sin(5.74213323906134 - 329 degs)
        -0.499999999999998, // sin(5.75958653158129 - 330 degs)
        -0.484809620246338, // sin(5.77703982410123 - 331 degs)
        -0.469471562785895, // sin(5.79449311662117 - 332 degs)
        -0.453990499739545, // sin(5.81194640914112 - 333 degs)
        -0.438371146789078, // sin(5.82939970166106 - 334 degs)
        -0.422618261740703, // sin(5.846852994181 - 335 degs)
        -0.406736643075798, // sin(5.86430628670095 - 336 degs)
        -0.390731128489275, // sin(5.88175957922089 - 337 degs)
        -0.374606593415916, // sin(5.89921287174083 - 338 degs)
        -0.358367949545297, // sin(5.91666616426078 - 339 degs)
        -0.342020143325669, // sin(5.93411945678072 - 340 degs)
        -0.32556815445716, // sin(5.95157274930066 - 341 degs)
        -0.309016994374945, // sin(5.96902604182061 - 342 degs)
        -0.292371704722737, // sin(5.98647933434055 - 343 degs)
        -0.275637355817003, // sin(6.00393262686049 - 344 degs)
        -0.258819045102518, // sin(6.02138591938044 - 345 degs)
        -0.241921895599668, // sin(6.03883921190038 - 346 degs)
        -0.224951054343869, // sin(6.05629250442032 - 347 degs)
        -0.207911690817756, // sin(6.07374579694027 - 348 degs)
        -0.190808995376545, // sin(6.09119908946021 - 349 degs)
        -0.173648177666934, // sin(6.10865238198015 - 350 degs)
        -0.156434465040228, // sin(6.1261056745001 - 351 degs)
        -0.139173100960066, // sin(6.14355896702004 - 352 degs)
        -0.121869343405151, // sin(6.16101225953998 - 353 degs)
        -0.10452846326765, // sin(6.17846555205993 - 354 degs)
        -0.0871557427476583, // sin(6.19591884457987 - 355 degs)
        -0.0697564737441283, // sin(6.21337213709981 - 356 degs)
        -0.0523359562429408, // sin(6.23082542961976 - 357 degs)
        -0.0348994967025008, // sin(6.2482787221397 - 358 degs)
        -0.0174524064372871, // sin(6.26573201465964 - 359 degs)
        3.30778431897103e-15, // sin(6.28318530717959 - 360 degs)
    };
    const double omni::math::RADS_COS[] = {
        1, // cos(0 - 0 degs)
        0.999847695156391, // cos(0.0174532925199433 - 1 degs)
        0.999390827019096, // cos(0.0349065850398866 - 2 degs)
        0.998629534754574, // cos(0.0523598775598299 - 3 degs)
        0.997564050259824, // cos(0.0698131700797732 - 4 degs)
        0.996194698091746, // cos(0.0872664625997165 - 5 degs)
        0.994521895368273, // cos(0.10471975511966 - 6 degs)
        0.992546151641322, // cos(0.122173047639603 - 7 degs)
        0.99026806874157, // cos(0.139626340159546 - 8 degs)
        0.987688340595138, // cos(0.15707963267949 - 9 degs)
        0.984807753012208, // cos(0.174532925199433 - 10 degs)
        0.981627183447664, // cos(0.191986217719376 - 11 degs)
        0.978147600733806, // cos(0.20943951023932 - 12 degs)
        0.974370064785235, // cos(0.226892802759263 - 13 degs)
        0.970295726275996, // cos(0.244346095279206 - 14 degs)
        0.965925826289068, // cos(0.261799387799149 - 15 degs)
        0.961261695938319, // cos(0.279252680319093 - 16 degs)
        0.956304755963036, // cos(0.296705972839036 - 17 degs)
        0.951056516295154, // cos(0.314159265358979 - 18 degs)
        0.945518575599317, // cos(0.331612557878923 - 19 degs)
        0.939692620785908, // cos(0.349065850398866 - 20 degs)
        0.933580426497202, // cos(0.366519142918809 - 21 degs)
        0.927183854566788, // cos(0.383972435438752 - 22 degs)
        0.92050485345244, // cos(0.401425727958696 - 23 degs)
        0.913545457642601, // cos(0.418879020478639 - 24 degs)
        0.90630778703665, // cos(0.436332312998582 - 25 degs)
        0.898794046299167, // cos(0.453785605518526 - 26 degs)
        0.891006524188368, // cos(0.471238898038469 - 27 degs)
        0.882947592858927, // cos(0.488692190558412 - 28 degs)
        0.874619707139396, // cos(0.506145483078356 - 29 degs)
        0.866025403784439, // cos(0.523598775598299 - 30 degs)
        0.857167300702112, // cos(0.541052068118242 - 31 degs)
        0.848048096156426, // cos(0.558505360638185 - 32 degs)
        0.838670567945424, // cos(0.575958653158129 - 33 degs)
        0.829037572555042, // cos(0.593411945678072 - 34 degs)
        0.819152044288992, // cos(0.610865238198015 - 35 degs)
        0.809016994374947, // cos(0.628318530717959 - 36 degs)
        0.798635510047293, // cos(0.645771823237902 - 37 degs)
        0.788010753606722, // cos(0.663225115757845 - 38 degs)
        0.777145961456971, // cos(0.680678408277788 - 39 degs)
        0.766044443118978, // cos(0.698131700797732 - 40 degs)
        0.754709580222772, // cos(0.715584993317675 - 41 degs)
        0.743144825477394, // cos(0.733038285837618 - 42 degs)
        0.73135370161917, // cos(0.750491578357562 - 43 degs)
        0.719339800338651, // cos(0.767944870877505 - 44 degs)
        0.707106781186548, // cos(0.785398163397448 - 45 degs)
        0.694658370458997, // cos(0.802851455917392 - 46 degs)
        0.681998360062498, // cos(0.820304748437335 - 47 degs)
        0.669130606358858, // cos(0.837758040957278 - 48 degs)
        0.656059028990508, // cos(0.855211333477221 - 49 degs)
        0.642787609686539, // cos(0.872664625997165 - 50 degs)
        0.629320391049838, // cos(0.890117918517108 - 51 degs)
        0.615661475325659, // cos(0.907571211037051 - 52 degs)
        0.601815023152048, // cos(0.925024503556995 - 53 degs)
        0.587785252292473, // cos(0.942477796076938 - 54 degs)
        0.573576436351046, // cos(0.959931088596881 - 55 degs)
        0.559192903470746, // cos(0.977384381116825 - 56 degs)
        0.544639035015027, // cos(0.994837673636768 - 57 degs)
        0.529919264233206, // cos(1.01229096615671 - 58 degs)
        0.515038074910058, // cos(1.02974425867665 - 59 degs)
        0.499999999999998, // cos(1.0471975511966 - 60 degs)
        0.484809620246338, // cos(1.06465084371654 - 61 degs)
        0.469471562785895, // cos(1.08210413623648 - 62 degs)
        0.453990499739545, // cos(1.09955742875643 - 63 degs)
        0.438371146789078, // cos(1.11701072127637 - 64 degs)
        0.422618261740703, // cos(1.13446401379631 - 65 degs)
        0.406736643075798, // cos(1.15191730631626 - 66 degs)
        0.390731128489274, // cos(1.1693705988362 - 67 degs)
        0.374606593415916, // cos(1.18682389135614 - 68 degs)
        0.358367949545298, // cos(1.20427718387609 - 69 degs)
        0.342020143325669, // cos(1.22173047639603 - 70 degs)
        0.325568154457161, // cos(1.23918376891597 - 71 degs)
        0.309016994374945, // cos(1.25663706143592 - 72 degs)
        0.292371704722737, // cos(1.27409035395586 - 73 degs)
        0.275637355817003, // cos(1.2915436464758 - 74 degs)
        0.258819045102518, // cos(1.30899693899575 - 75 degs)
        0.241921895599668, // cos(1.32645023151569 - 76 degs)
        0.224951054343869, // cos(1.34390352403563 - 77 degs)
        0.207911690817756, // cos(1.36135681655558 - 78 degs)
        0.190808995376545, // cos(1.37881010907552 - 79 degs)
        0.173648177666934, // cos(1.39626340159546 - 80 degs)
        0.156434465040228, // cos(1.41371669411541 - 81 degs)
        0.139173100960066, // cos(1.43116998663535 - 82 degs)
        0.121869343405151, // cos(1.44862327915529 - 83 degs)
        0.10452846326765, // cos(1.46607657167524 - 84 degs)
        0.0871557427476583, // cos(1.48352986419518 - 85 degs)
        0.0697564737441288, // cos(1.50098315671512 - 86 degs)
        0.0523359562429406, // cos(1.51843644923507 - 87 degs)
        0.0348994967025011, // cos(1.53588974175501 - 88 degs)
        0.0174524064372869, // cos(1.55334303427495 - 89 degs)
        -3.49148133884313e-15, // cos(1.5707963267949 - 90 degs)
        -0.0174524064372837, // cos(1.58824961931484 - 91 degs)
        -0.0348994967024979, // cos(1.60570291183478 - 92 degs)
        -0.0523359562429474, // cos(1.62315620435473 - 93 degs)
        -0.0697564737441256, // cos(1.64060949687467 - 94 degs)
        -0.0871557427476551, // cos(1.65806278939461 - 95 degs)
        -0.104528463267657, // cos(1.67551608191456 - 96 degs)
        -0.121869343405148, // cos(1.6929693744345 - 97 degs)
        -0.139173100960062, // cos(1.71042266695444 - 98 degs)
        -0.156434465040235, // cos(1.72787595947439 - 99 degs)
        -0.173648177666931, // cos(1.74532925199433 - 100 degs)
        -0.190808995376542, // cos(1.76278254451427 - 101 degs)
        -0.207911690817763, // cos(1.78023583703422 - 102 degs)
        -0.224951054343865, // cos(1.79768912955416 - 103 degs)
        -0.241921895599665, // cos(1.8151424220741 - 104 degs)
        -0.258819045102525, // cos(1.83259571459405 - 105 degs)
        -0.275637355817, // cos(1.85004900711399 - 106 degs)
        -0.292371704722734, // cos(1.86750229963393 - 107 degs)
        -0.309016994374951, // cos(1.88495559215388 - 108 degs)
        -0.325568154457157, // cos(1.90240888467382 - 109 degs)
        -0.342020143325666, // cos(1.91986217719376 - 110 degs)
        -0.358367949545304, // cos(1.93731546971371 - 111 degs)
        -0.374606593415913, // cos(1.95476876223365 - 112 degs)
        -0.390731128489272, // cos(1.97222205475359 - 113 degs)
        -0.406736643075804, // cos(1.98967534727354 - 114 degs)
        -0.422618261740701, // cos(2.00712863979348 - 115 degs)
        -0.438371146789076, // cos(2.02458193231342 - 116 degs)
        -0.453990499739551, // cos(2.04203522483337 - 117 degs)
        -0.469471562785892, // cos(2.05948851735331 - 118 degs)
        -0.484809620246335, // cos(2.07694180987325 - 119 degs)
        -0.500000000000004, // cos(2.0943951023932 - 120 degs)
        -0.515038074910055, // cos(2.11184839491314 - 121 degs)
        -0.529919264233203, // cos(2.12930168743308 - 122 degs)
        -0.544639035015031, // cos(2.14675497995303 - 123 degs)
        -0.559192903470748, // cos(2.16420827247297 - 124 degs)
        -0.573576436351044, // cos(2.18166156499291 - 125 degs)
        -0.587785252292477, // cos(2.19911485751286 - 126 degs)
        -0.601815023152049, // cos(2.2165681500328 - 127 degs)
        -0.615661475325657, // cos(2.23402144255274 - 128 degs)
        -0.629320391049833, // cos(2.25147473507268 - 129 degs)
        -0.64278760968654, // cos(2.26892802759263 - 130 degs)
        -0.656059028990506, // cos(2.28638132011257 - 131 degs)
        -0.669130606358862, // cos(2.30383461263252 - 132 degs)
        -0.6819983600625, // cos(2.32128790515246 - 133 degs)
        -0.694658370458996, // cos(2.3387411976724 - 134 degs)
        -0.707106781186544, // cos(2.35619449019234 - 135 degs)
        -0.719339800338652, // cos(2.37364778271229 - 136 degs)
        -0.73135370161917, // cos(2.39110107523223 - 137 degs)
        -0.743144825477391, // cos(2.40855436775217 - 138 degs)
        -0.754709580222773, // cos(2.42600766027212 - 139 degs)
        -0.766044443118977, // cos(2.44346095279206 - 140 degs)
        -0.777145961456968, // cos(2.460914245312 - 141 degs)
        -0.788010753606723, // cos(2.47836753783195 - 142 degs)
        -0.798635510047292, // cos(2.49582083035189 - 143 degs)
        -0.809016994374945, // cos(2.51327412287183 - 144 degs)
        -0.819152044288993, // cos(2.53072741539178 - 145 degs)
        -0.829037572555041, // cos(2.54818070791172 - 146 degs)
        -0.838670567945421, // cos(2.56563400043166 - 147 degs)
        -0.848048096156427, // cos(2.58308729295161 - 148 degs)
        -0.857167300702112, // cos(2.60054058547155 - 149 degs)
        -0.866025403784436, // cos(2.61799387799149 - 150 degs)
        -0.874619707139397, // cos(2.63544717051144 - 151 degs)
        -0.882947592858927, // cos(2.65290046303138 - 152 degs)
        -0.891006524188366, // cos(2.67035375555132 - 153 degs)
        -0.898794046299168, // cos(2.68780704807127 - 154 degs)
        -0.90630778703665, // cos(2.70526034059121 - 155 degs)
        -0.913545457642599, // cos(2.72271363311115 - 156 degs)
        -0.920504853452441, // cos(2.7401669256311 - 157 degs)
        -0.927183854566787, // cos(2.75762021815104 - 158 degs)
        -0.9335804264972, // cos(2.77507351067098 - 159 degs)
        -0.939692620785909, // cos(2.79252680319093 - 160 degs)
        -0.945518575599317, // cos(2.80998009571087 - 161 degs)
        -0.951056516295152, // cos(2.82743338823081 - 162 degs)
        -0.956304755963036, // cos(2.84488668075076 - 163 degs)
        -0.961261695938319, // cos(2.8623399732707 - 164 degs)
        -0.965925826289067, // cos(2.87979326579064 - 165 degs)
        -0.970295726275997, // cos(2.89724655831059 - 166 degs)
        -0.974370064785235, // cos(2.91469985083053 - 167 degs)
        -0.978147600733805, // cos(2.93215314335047 - 168 degs)
        -0.981627183447665, // cos(2.94960643587042 - 169 degs)
        -0.984807753012208, // cos(2.96705972839036 - 170 degs)
        -0.987688340595137, // cos(2.9845130209103 - 171 degs)
        -0.990268068741571, // cos(3.00196631343025 - 172 degs)
        -0.992546151641322, // cos(3.01941960595019 - 173 degs)
        -0.994521895368273, // cos(3.03687289847013 - 174 degs)
        -0.996194698091746, // cos(3.05432619099008 - 175 degs)
        -0.997564050259824, // cos(3.07177948351002 - 176 degs)
        -0.998629534754574, // cos(3.08923277602996 - 177 degs)
        -0.999390827019096, // cos(3.10668606854991 - 178 degs)
        -0.999847695156391, // cos(3.12413936106985 - 179 degs)
        -1, // cos(3.14159265358979 - 180 degs)
        -0.999847695156391, // cos(3.15904594610974 - 181 degs)
        -0.999390827019096, // cos(3.17649923862968 - 182 degs)
        -0.998629534754574, // cos(3.19395253114962 - 183 degs)
        -0.997564050259824, // cos(3.21140582366957 - 184 degs)
        -0.996194698091746, // cos(3.22885911618951 - 185 degs)
        -0.994521895368274, // cos(3.24631240870945 - 186 degs)
        -0.992546151641322, // cos(3.2637657012294 - 187 degs)
        -0.99026806874157, // cos(3.28121899374934 - 188 degs)
        -0.987688340595138, // cos(3.29867228626928 - 189 degs)
        -0.984807753012207, // cos(3.31612557878923 - 190 degs)
        -0.981627183447664, // cos(3.33357887130917 - 191 degs)
        -0.978147600733806, // cos(3.35103216382911 - 192 degs)
        -0.974370064785234, // cos(3.36848545634906 - 193 degs)
        -0.970295726275996, // cos(3.385938748869 - 194 degs)
        -0.965925826289069, // cos(3.40339204138894 - 195 degs)
        -0.961261695938318, // cos(3.42084533390889 - 196 degs)
        -0.956304755963035, // cos(3.43829862642883 - 197 degs)
        -0.951056516295154, // cos(3.45575191894877 - 198 degs)
        -0.945518575599316, // cos(3.47320521146872 - 199 degs)
        -0.939692620785908, // cos(3.49065850398866 - 200 degs)
        -0.933580426497203, // cos(3.5081117965086 - 201 degs)
        -0.927183854566786, // cos(3.52556508902855 - 202 degs)
        -0.92050485345244, // cos(3.54301838154849 - 203 degs)
        -0.913545457642602, // cos(3.56047167406843 - 204 degs)
        -0.906307787036648, // cos(3.57792496658838 - 205 degs)
        -0.898794046299167, // cos(3.59537825910832 - 206 degs)
        -0.891006524188369, // cos(3.61283155162826 - 207 degs)
        -0.882947592858925, // cos(3.63028484414821 - 208 degs)
        -0.874619707139395, // cos(3.64773813666815 - 209 degs)
        -0.86602540378444, // cos(3.66519142918809 - 210 degs)
        -0.85716730070211, // cos(3.68264472170804 - 211 degs)
        -0.848048096156425, // cos(3.70009801422798 - 212 degs)
        -0.838670567945425, // cos(3.71755130674792 - 213 degs)
        -0.829037572555039, // cos(3.73500459926787 - 214 degs)
        -0.819152044288991, // cos(3.75245789178781 - 215 degs)
        -0.809016994374949, // cos(3.76991118430775 - 216 degs)
        -0.79863551004729, // cos(3.7873644768277 - 217 degs)
        -0.788010753606721, // cos(3.80481776934764 - 218 degs)
        -0.777145961456972, // cos(3.82227106186758 - 219 degs)
        -0.766044443118975, // cos(3.83972435438753 - 220 degs)
        -0.754709580222771, // cos(3.85717764690747 - 221 degs)
        -0.743144825477395, // cos(3.87463093942741 - 222 degs)
        -0.731353701619174, // cos(3.89208423194735 - 223 degs)
        -0.71933980033865, // cos(3.9095375244673 - 224 degs)
        -0.707106781186549, // cos(3.92699081698724 - 225 degs)
        -0.694658370459001, // cos(3.94444410950718 - 226 degs)
        -0.681998360062497, // cos(3.96189740202713 - 227 degs)
        -0.669130606358859, // cos(3.97935069454707 - 228 degs)
        -0.656059028990511, // cos(3.99680398706701 - 229 degs)
        -0.642787609686537, // cos(4.01425727958696 - 230 degs)
        -0.629320391049839, // cos(4.0317105721069 - 231 degs)
        -0.615661475325662, // cos(4.04916386462684 - 232 degs)
        -0.601815023152047, // cos(4.06661715714679 - 233 degs)
        -0.587785252292474, // cos(4.08407044966673 - 234 degs)
        -0.57357643635105, // cos(4.10152374218667 - 235 degs)
        -0.559192903470745, // cos(4.11897703470662 - 236 degs)
        -0.544639035015028, // cos(4.13643032722656 - 237 degs)
        -0.529919264233209, // cos(4.1538836197465 - 238 degs)
        -0.515038074910052, // cos(4.17133691226645 - 239 degs)
        -0.500000000000001, // cos(4.18879020478639 - 240 degs)
        -0.484809620246341, // cos(4.20624349730633 - 241 degs)
        -0.469471562785888, // cos(4.22369678982628 - 242 degs)
        -0.453990499739548, // cos(4.24115008234622 - 243 degs)
        -0.438371146789081, // cos(4.25860337486616 - 244 degs)
        -0.422618261740697, // cos(4.27605666738611 - 245 degs)
        -0.406736643075801, // cos(4.29350995990605 - 246 degs)
        -0.390731128489277, // cos(4.31096325242599 - 247 degs)
        -0.37460659341591, // cos(4.32841654494594 - 248 degs)
        -0.358367949545301, // cos(4.34586983746588 - 249 degs)
        -0.342020143325673, // cos(4.36332312998582 - 250 degs)
        -0.325568154457154, // cos(4.38077642250577 - 251 degs)
        -0.309016994374948, // cos(4.39822971502571 - 252 degs)
        -0.29237170472274, // cos(4.41568300754565 - 253 degs)
        -0.275637355816996, // cos(4.4331363000656 - 254 degs)
        -0.258819045102521, // cos(4.45058959258554 - 255 degs)
        -0.241921895599671, // cos(4.46804288510548 - 256 degs)
        -0.224951054343862, // cos(4.48549617762543 - 257 degs)
        -0.20791169081776, // cos(4.50294947014537 - 258 degs)
        -0.190808995376548, // cos(4.52040276266531 - 259 degs)
        -0.173648177666928, // cos(4.53785605518526 - 260 degs)
        -0.156434465040231, // cos(4.5553093477052 - 261 degs)
        -0.139173100960069, // cos(4.57276264022514 - 262 degs)
        -0.121869343405145, // cos(4.59021593274509 - 263 degs)
        -0.104528463267653, // cos(4.60766922526503 - 264 degs)
        -0.0871557427476618, // cos(4.62512251778497 - 265 degs)
        -0.069756473744122, // cos(4.64257581030492 - 266 degs)
        -0.0523359562429434, // cos(4.66002910282486 - 267 degs)
        -0.0348994967025043, // cos(4.6774823953448 - 268 degs)
        -0.0174524064372799, // cos(4.69493568786475 - 269 degs)
        -1.83697019872103e-16, // cos(4.71238898038469 - 270 degs)
        0.0174524064372805, // cos(4.72984227290463 - 271 degs)
        0.0348994967025048, // cos(4.74729556542458 - 272 degs)
        0.0523359562429439, // cos(4.76474885794452 - 273 degs)
        0.0697564737441226, // cos(4.78220215046446 - 274 degs)
        0.0871557427476614, // cos(4.79965544298441 - 275 degs)
        0.104528463267654, // cos(4.81710873550435 - 276 degs)
        0.121869343405144, // cos(4.83456202802429 - 277 degs)
        0.139173100960069, // cos(4.85201532054424 - 278 degs)
        0.156434465040232, // cos(4.86946861306418 - 279 degs)
        0.173648177666927, // cos(4.88692190558412 - 280 degs)
        0.190808995376549, // cos(4.90437519810407 - 281 degs)
        0.20791169081776, // cos(4.92182849062401 - 282 degs)
        0.224951054343862, // cos(4.93928178314395 - 283 degs)
        0.241921895599672, // cos(4.9567350756639 - 284 degs)
        0.258819045102521, // cos(4.97418836818384 - 285 degs)
        0.275637355816997, // cos(4.99164166070378 - 286 degs)
        0.292371704722741, // cos(5.00909495322373 - 287 degs)
        0.309016994374948, // cos(5.02654824574367 - 288 degs)
        0.325568154457155, // cos(5.04400153826361 - 289 degs)
        0.342020143325672, // cos(5.06145483078356 - 290 degs)
        0.358367949545301, // cos(5.0789081233035 - 291 degs)
        0.37460659341591, // cos(5.09636141582344 - 292 degs)
        0.390731128489278, // cos(5.11381470834339 - 293 degs)
        0.406736643075801, // cos(5.13126800086333 - 294 degs)
        0.422618261740697, // cos(5.14872129338327 - 295 degs)
        0.438371146789081, // cos(5.16617458590322 - 296 degs)
        0.453990499739548, // cos(5.18362787842316 - 297 degs)
        0.469471562785889, // cos(5.2010811709431 - 298 degs)
        0.484809620246341, // cos(5.21853446346305 - 299 degs)
        0.500000000000001, // cos(5.23598775598299 - 300 degs)
        0.515038074910053, // cos(5.25344104850293 - 301 degs)
        0.529919264233209, // cos(5.27089434102288 - 302 degs)
        0.544639035015028, // cos(5.28834763354282 - 303 degs)
        0.559192903470745, // cos(5.30580092606276 - 304 degs)
        0.57357643635105, // cos(5.32325421858271 - 305 degs)
        0.587785252292474, // cos(5.34070751110265 - 306 degs)
        0.601815023152046, // cos(5.35816080362259 - 307 degs)
        0.615661475325662, // cos(5.37561409614254 - 308 degs)
        0.629320391049839, // cos(5.39306738866248 - 309 degs)
        0.642787609686538, // cos(5.41052068118242 - 310 degs)
        0.656059028990504, // cos(5.42797397370236 - 311 degs)
        0.66913060635886, // cos(5.44542726622231 - 312 degs)
        0.681998360062497, // cos(5.46288055874225 - 313 degs)
        0.694658370458994, // cos(5.48033385126219 - 314 degs)
        0.707106781186549, // cos(5.49778714378214 - 315 degs)
        0.71933980033865, // cos(5.51524043630208 - 316 degs)
        0.731353701619174, // cos(5.53269372882203 - 317 degs)
        0.743144825477395, // cos(5.55014702134197 - 318 degs)
        0.754709580222771, // cos(5.56760031386191 - 319 degs)
        0.766044443118975, // cos(5.58505360638185 - 320 degs)
        0.777145961456972, // cos(5.6025068989018 - 321 degs)
        0.788010753606721, // cos(5.61996019142174 - 322 degs)
        0.79863551004729, // cos(5.63741348394168 - 323 degs)
        0.809016994374949, // cos(5.65486677646163 - 324 degs)
        0.819152044288991, // cos(5.67232006898157 - 325 degs)
        0.829037572555039, // cos(5.68977336150151 - 326 degs)
        0.838670567945425, // cos(5.70722665402146 - 327 degs)
        0.848048096156425, // cos(5.7246799465414 - 328 degs)
        0.85716730070211, // cos(5.74213323906134 - 329 degs)
        0.86602540378444, // cos(5.75958653158129 - 330 degs)
        0.874619707139396, // cos(5.77703982410123 - 331 degs)
        0.882947592858925, // cos(5.79449311662117 - 332 degs)
        0.891006524188369, // cos(5.81194640914112 - 333 degs)
        0.898794046299167, // cos(5.82939970166106 - 334 degs)
        0.906307787036648, // cos(5.846852994181 - 335 degs)
        0.913545457642602, // cos(5.86430628670095 - 336 degs)
        0.92050485345244, // cos(5.88175957922089 - 337 degs)
        0.927183854566786, // cos(5.89921287174083 - 338 degs)
        0.933580426497203, // cos(5.91666616426078 - 339 degs)
        0.939692620785908, // cos(5.93411945678072 - 340 degs)
        0.945518575599316, // cos(5.95157274930066 - 341 degs)
        0.951056516295154, // cos(5.96902604182061 - 342 degs)
        0.956304755963035, // cos(5.98647933434055 - 343 degs)
        0.961261695938318, // cos(6.00393262686049 - 344 degs)
        0.965925826289069, // cos(6.02138591938044 - 345 degs)
        0.970295726275996, // cos(6.03883921190038 - 346 degs)
        0.974370064785234, // cos(6.05629250442032 - 347 degs)
        0.978147600733806, // cos(6.07374579694027 - 348 degs)
        0.981627183447664, // cos(6.09119908946021 - 349 degs)
        0.984807753012207, // cos(6.10865238198015 - 350 degs)
        0.987688340595138, // cos(6.1261056745001 - 351 degs)
        0.99026806874157, // cos(6.14355896702004 - 352 degs)
        0.992546151641322, // cos(6.16101225953998 - 353 degs)
        0.994521895368274, // cos(6.17846555205993 - 354 degs)
        0.996194698091746, // cos(6.19591884457987 - 355 degs)
        0.997564050259824, // cos(6.21337213709981 - 356 degs)
        0.998629534754574, // cos(6.23082542961976 - 357 degs)
        0.999390827019096, // cos(6.2482787221397 - 358 degs)
        0.999847695156391, // cos(6.26573201465964 - 359 degs)
        1, // cos(6.28318530717959 - 360 degs)
    };
    
#endif