mirror of https://github.com/yaz0r/FITD.git
1030 lines
12 KiB
C++
1030 lines
12 KiB
C++
#include "common.h"
|
|
|
|
const s16 cosTable[]={
|
|
4,
|
|
201,
|
|
402,
|
|
603,
|
|
804,
|
|
1005,
|
|
1206,
|
|
1406,
|
|
1607,
|
|
1808,
|
|
2009,
|
|
2209,
|
|
2410,
|
|
2610,
|
|
2811,
|
|
3011,
|
|
3211,
|
|
3411,
|
|
3611,
|
|
3811,
|
|
4011,
|
|
4210,
|
|
4409,
|
|
4608,
|
|
4807,
|
|
5006,
|
|
5205,
|
|
5403,
|
|
5601,
|
|
5799,
|
|
5997,
|
|
6195,
|
|
6392,
|
|
6589,
|
|
6786,
|
|
6982,
|
|
7179,
|
|
7375,
|
|
7571,
|
|
7766,
|
|
7961,
|
|
8156,
|
|
8351,
|
|
8545,
|
|
8739,
|
|
8932,
|
|
9126,
|
|
9319,
|
|
9511,
|
|
9703,
|
|
9895,
|
|
10087,
|
|
10278,
|
|
10469,
|
|
10659,
|
|
10849,
|
|
11038,
|
|
11227,
|
|
11416,
|
|
11604,
|
|
11792,
|
|
11980,
|
|
12166,
|
|
12353,
|
|
12539,
|
|
12724,
|
|
12909,
|
|
13094,
|
|
13278,
|
|
13462,
|
|
13645,
|
|
13827,
|
|
14009,
|
|
14191,
|
|
14372,
|
|
14552,
|
|
14732,
|
|
14911,
|
|
15090,
|
|
15268,
|
|
15446,
|
|
15623,
|
|
15799,
|
|
15975,
|
|
16150,
|
|
16325,
|
|
16499,
|
|
16672,
|
|
16845,
|
|
17017,
|
|
17189,
|
|
17360,
|
|
17530,
|
|
17699,
|
|
17868,
|
|
18036,
|
|
18204,
|
|
18371,
|
|
18537,
|
|
18702,
|
|
18867,
|
|
19031,
|
|
19194,
|
|
19357,
|
|
19519,
|
|
19680,
|
|
19840,
|
|
20000,
|
|
20159,
|
|
20317,
|
|
20474,
|
|
20631,
|
|
20787,
|
|
20942,
|
|
21096,
|
|
21249,
|
|
21402,
|
|
21554,
|
|
21705,
|
|
21855,
|
|
22004,
|
|
22153,
|
|
22301,
|
|
22448,
|
|
22594,
|
|
22739,
|
|
22883,
|
|
23027,
|
|
23169,
|
|
23311,
|
|
23452,
|
|
23592,
|
|
23731,
|
|
23869,
|
|
24006,
|
|
24143,
|
|
24278,
|
|
24413,
|
|
24546,
|
|
24679,
|
|
24811,
|
|
24942,
|
|
25072,
|
|
25201,
|
|
25329,
|
|
25456,
|
|
25582,
|
|
25707,
|
|
25831,
|
|
25954,
|
|
26077,
|
|
26198,
|
|
26318,
|
|
26437,
|
|
26556,
|
|
26673,
|
|
26789,
|
|
26905,
|
|
27019,
|
|
27132,
|
|
27244,
|
|
27355,
|
|
27466,
|
|
27575,
|
|
27683,
|
|
27790,
|
|
27896,
|
|
28001,
|
|
28105,
|
|
28208,
|
|
28309,
|
|
28410,
|
|
28510,
|
|
28608,
|
|
28706,
|
|
28802,
|
|
28897,
|
|
28992,
|
|
29085,
|
|
29177,
|
|
29268,
|
|
29358,
|
|
29446,
|
|
29534,
|
|
29621,
|
|
29706,
|
|
29790,
|
|
29873,
|
|
29955,
|
|
30036,
|
|
30116,
|
|
30195,
|
|
30272,
|
|
30349,
|
|
30424,
|
|
30498,
|
|
30571,
|
|
30643,
|
|
30713,
|
|
30783,
|
|
30851,
|
|
30918,
|
|
30984,
|
|
31049,
|
|
31113,
|
|
31175,
|
|
31236,
|
|
31297,
|
|
31356,
|
|
31413,
|
|
31470,
|
|
31525,
|
|
31580,
|
|
31633,
|
|
31684,
|
|
31735,
|
|
31785,
|
|
31833,
|
|
31880,
|
|
31926,
|
|
31970,
|
|
32014,
|
|
32056,
|
|
32097,
|
|
32137,
|
|
32176,
|
|
32213,
|
|
32249,
|
|
32284,
|
|
32318,
|
|
32350,
|
|
32382,
|
|
32412,
|
|
32441,
|
|
32468,
|
|
32495,
|
|
32520,
|
|
32544,
|
|
32567,
|
|
32588,
|
|
32609,
|
|
32628,
|
|
32646,
|
|
32662,
|
|
32678,
|
|
32692,
|
|
32705,
|
|
32717,
|
|
32727,
|
|
32736,
|
|
32744,
|
|
32751,
|
|
32757,
|
|
32761,
|
|
32764,
|
|
32766,
|
|
32767,
|
|
32766,
|
|
32764,
|
|
32761,
|
|
32757,
|
|
32751,
|
|
32744,
|
|
32736,
|
|
32727,
|
|
32717,
|
|
32705,
|
|
32692,
|
|
32678,
|
|
32662,
|
|
32646,
|
|
32628,
|
|
32609,
|
|
32588,
|
|
32567,
|
|
32544,
|
|
32520,
|
|
32495,
|
|
32468,
|
|
32441,
|
|
32412,
|
|
32382,
|
|
32350,
|
|
32318,
|
|
32284,
|
|
32249,
|
|
32213,
|
|
32176,
|
|
32137,
|
|
32097,
|
|
32056,
|
|
32014,
|
|
31970,
|
|
31926,
|
|
31880,
|
|
31833,
|
|
31785,
|
|
31735,
|
|
31684,
|
|
31633,
|
|
31580,
|
|
31525,
|
|
31470,
|
|
31413,
|
|
31356,
|
|
31297,
|
|
31236,
|
|
31175,
|
|
31113,
|
|
31049,
|
|
30984,
|
|
30918,
|
|
30851,
|
|
30783,
|
|
30713,
|
|
30643,
|
|
30571,
|
|
30498,
|
|
30424,
|
|
30349,
|
|
30272,
|
|
30195,
|
|
30116,
|
|
30036,
|
|
29955,
|
|
29873,
|
|
29790,
|
|
29706,
|
|
29621,
|
|
29534,
|
|
29446,
|
|
29358,
|
|
29268,
|
|
29177,
|
|
29085,
|
|
28992,
|
|
28897,
|
|
28802,
|
|
28706,
|
|
28608,
|
|
28510,
|
|
28410,
|
|
28309,
|
|
28208,
|
|
28105,
|
|
28001,
|
|
27896,
|
|
27790,
|
|
27683,
|
|
27575,
|
|
27466,
|
|
27355,
|
|
27244,
|
|
27132,
|
|
27019,
|
|
26905,
|
|
26789,
|
|
26673,
|
|
26556,
|
|
26437,
|
|
26318,
|
|
26198,
|
|
26077,
|
|
25954,
|
|
25831,
|
|
25707,
|
|
25582,
|
|
25456,
|
|
25329,
|
|
25201,
|
|
25072,
|
|
24942,
|
|
24811,
|
|
24679,
|
|
24546,
|
|
24413,
|
|
24278,
|
|
24143,
|
|
24006,
|
|
23869,
|
|
23731,
|
|
23592,
|
|
23452,
|
|
23311,
|
|
23169,
|
|
23027,
|
|
22883,
|
|
22739,
|
|
22594,
|
|
22448,
|
|
22301,
|
|
22153,
|
|
22004,
|
|
21855,
|
|
21705,
|
|
21554,
|
|
21402,
|
|
21249,
|
|
21096,
|
|
20942,
|
|
20787,
|
|
20631,
|
|
20474,
|
|
20317,
|
|
20159,
|
|
20000,
|
|
19840,
|
|
19680,
|
|
19519,
|
|
19357,
|
|
19194,
|
|
19031,
|
|
18867,
|
|
18702,
|
|
18537,
|
|
18371,
|
|
18204,
|
|
18036,
|
|
17868,
|
|
17699,
|
|
17530,
|
|
17360,
|
|
17189,
|
|
17017,
|
|
16845,
|
|
16672,
|
|
16499,
|
|
16325,
|
|
16150,
|
|
15975,
|
|
15799,
|
|
15623,
|
|
15446,
|
|
15268,
|
|
15090,
|
|
14911,
|
|
14732,
|
|
14552,
|
|
14372,
|
|
14191,
|
|
14009,
|
|
13827,
|
|
13645,
|
|
13462,
|
|
13278,
|
|
13094,
|
|
12909,
|
|
12724,
|
|
12539,
|
|
12353,
|
|
12166,
|
|
11980,
|
|
11792,
|
|
11604,
|
|
11416,
|
|
11227,
|
|
11038,
|
|
10849,
|
|
10659,
|
|
10469,
|
|
10278,
|
|
10087,
|
|
9895,
|
|
9703,
|
|
9511,
|
|
9319,
|
|
9126,
|
|
8932,
|
|
8739,
|
|
8545,
|
|
8351,
|
|
8156,
|
|
7961,
|
|
7766,
|
|
7571,
|
|
7375,
|
|
7179,
|
|
6982,
|
|
6786,
|
|
6589,
|
|
6392,
|
|
6195,
|
|
5997,
|
|
5799,
|
|
5601,
|
|
5403,
|
|
5205,
|
|
5006,
|
|
4807,
|
|
4608,
|
|
4409,
|
|
4210,
|
|
4011,
|
|
3811,
|
|
3611,
|
|
3411,
|
|
3211,
|
|
3011,
|
|
2811,
|
|
2610,
|
|
2410,
|
|
2209,
|
|
2009,
|
|
1808,
|
|
1607,
|
|
1406,
|
|
1206,
|
|
1005,
|
|
804,
|
|
603,
|
|
402,
|
|
201,
|
|
0,
|
|
-201,
|
|
-402,
|
|
-603,
|
|
-804,
|
|
-1005,
|
|
-1206,
|
|
-1406,
|
|
-1607,
|
|
-1808,
|
|
-2009,
|
|
-2209,
|
|
-2410,
|
|
-2610,
|
|
-2811,
|
|
-3011,
|
|
-3211,
|
|
-3411,
|
|
-3611,
|
|
-3811,
|
|
-4011,
|
|
-4210,
|
|
-4409,
|
|
-4608,
|
|
-4807,
|
|
-5006,
|
|
-5205,
|
|
-5403,
|
|
-5601,
|
|
-5799,
|
|
-5997,
|
|
-6195,
|
|
-6392,
|
|
-6589,
|
|
-6786,
|
|
-6982,
|
|
-7179,
|
|
-7375,
|
|
-7571,
|
|
-7766,
|
|
-7961,
|
|
-8156,
|
|
-8351,
|
|
-8545,
|
|
-8739,
|
|
-8932,
|
|
-9126,
|
|
-9319,
|
|
-9511,
|
|
-9703,
|
|
-9895,
|
|
-10087,
|
|
-10278,
|
|
-10469,
|
|
-10659,
|
|
-10849,
|
|
-11038,
|
|
-11227,
|
|
-11416,
|
|
-11604,
|
|
-11792,
|
|
-11980,
|
|
-12166,
|
|
-12353,
|
|
-12539,
|
|
-12724,
|
|
-12909,
|
|
-13094,
|
|
-13278,
|
|
-13462,
|
|
-13645,
|
|
-13827,
|
|
-14009,
|
|
-14191,
|
|
-14372,
|
|
-14552,
|
|
-14732,
|
|
-14911,
|
|
-15090,
|
|
-15268,
|
|
-15446,
|
|
-15623,
|
|
-15799,
|
|
-15975,
|
|
-16150,
|
|
-16325,
|
|
-16499,
|
|
-16672,
|
|
-16845,
|
|
-17017,
|
|
-17189,
|
|
-17360,
|
|
-17530,
|
|
-17699,
|
|
-17868,
|
|
-18036,
|
|
-18204,
|
|
-18371,
|
|
-18537,
|
|
-18702,
|
|
-18867,
|
|
-19031,
|
|
-19194,
|
|
-19357,
|
|
-19519,
|
|
-19680,
|
|
-19840,
|
|
-20000,
|
|
-20159,
|
|
-20317,
|
|
-20474,
|
|
-20631,
|
|
-20787,
|
|
-20942,
|
|
-21096,
|
|
-21249,
|
|
-21402,
|
|
-21554,
|
|
-21705,
|
|
-21855,
|
|
-22004,
|
|
-22153,
|
|
-22301,
|
|
-22448,
|
|
-22594,
|
|
-22739,
|
|
-22883,
|
|
-23027,
|
|
-23169,
|
|
-23311,
|
|
-23452,
|
|
-23592,
|
|
-23731,
|
|
-23869,
|
|
-24006,
|
|
-24143,
|
|
-24278,
|
|
-24413,
|
|
-24546,
|
|
-24679,
|
|
-24811,
|
|
-24942,
|
|
-25072,
|
|
-25201,
|
|
-25329,
|
|
-25456,
|
|
-25582,
|
|
-25707,
|
|
-25831,
|
|
-25954,
|
|
-26077,
|
|
-26198,
|
|
-26318,
|
|
-26437,
|
|
-26556,
|
|
-26673,
|
|
-26789,
|
|
-26905,
|
|
-27019,
|
|
-27132,
|
|
-27244,
|
|
-27355,
|
|
-27466,
|
|
-27575,
|
|
-27683,
|
|
-27790,
|
|
-27896,
|
|
-28001,
|
|
-28105,
|
|
-28208,
|
|
-28309,
|
|
-28410,
|
|
-28510,
|
|
-28608,
|
|
-28706,
|
|
-28802,
|
|
-28897,
|
|
-28992,
|
|
-29085,
|
|
-29177,
|
|
-29268,
|
|
-29358,
|
|
-29446,
|
|
-29534,
|
|
-29621,
|
|
-29706,
|
|
-29790,
|
|
-29873,
|
|
-29955,
|
|
-30036,
|
|
-30116,
|
|
-30195,
|
|
-30272,
|
|
-30349,
|
|
-30424,
|
|
-30498,
|
|
-30571,
|
|
-30643,
|
|
-30713,
|
|
-30783,
|
|
-30851,
|
|
-30918,
|
|
-30984,
|
|
-31049,
|
|
-31113,
|
|
-31175,
|
|
-31236,
|
|
-31297,
|
|
-31356,
|
|
-31413,
|
|
-31470,
|
|
-31525,
|
|
-31580,
|
|
-31633,
|
|
-31684,
|
|
-31735,
|
|
-31785,
|
|
-31833,
|
|
-31880,
|
|
-31926,
|
|
-31970,
|
|
-32014,
|
|
-32056,
|
|
-32097,
|
|
-32137,
|
|
-32176,
|
|
-32213,
|
|
-32249,
|
|
-32284,
|
|
-32318,
|
|
-32350,
|
|
-32382,
|
|
-32412,
|
|
-32441,
|
|
-32468,
|
|
-32495,
|
|
-32520,
|
|
-32544,
|
|
-32567,
|
|
-32588,
|
|
-32609,
|
|
-32628,
|
|
-32646,
|
|
-32662,
|
|
-32678,
|
|
-32692,
|
|
-32705,
|
|
-32717,
|
|
-32727,
|
|
-32736,
|
|
-32744,
|
|
-32751,
|
|
-32757,
|
|
-32761,
|
|
-32764,
|
|
-32766,
|
|
-32767,
|
|
-32766,
|
|
-32764,
|
|
-32761,
|
|
-32757,
|
|
-32751,
|
|
-32744,
|
|
-32736,
|
|
-32727,
|
|
-32717,
|
|
-32705,
|
|
-32692,
|
|
-32678,
|
|
-32662,
|
|
-32646,
|
|
-32628,
|
|
-32609,
|
|
-32588,
|
|
-32567,
|
|
-32544,
|
|
-32520,
|
|
-32495,
|
|
-32468,
|
|
-32441,
|
|
-32412,
|
|
-32382,
|
|
-32350,
|
|
-32318,
|
|
-32284,
|
|
-32249,
|
|
-32213,
|
|
-32176,
|
|
-32137,
|
|
-32097,
|
|
-32056,
|
|
-32014,
|
|
-31970,
|
|
-31926,
|
|
-31880,
|
|
-31833,
|
|
-31785,
|
|
-31735,
|
|
-31684,
|
|
-31633,
|
|
-31580,
|
|
-31525,
|
|
-31470,
|
|
-31413,
|
|
-31356,
|
|
-31297,
|
|
-31236,
|
|
-31175,
|
|
-31113,
|
|
-31049,
|
|
-30984,
|
|
-30918,
|
|
-30851,
|
|
-30783,
|
|
-30713,
|
|
-30643,
|
|
-30571,
|
|
-30498,
|
|
-30424,
|
|
-30349,
|
|
-30272,
|
|
-30195,
|
|
-30116,
|
|
-30036,
|
|
-29955,
|
|
-29873,
|
|
-29790,
|
|
-29706,
|
|
-29621,
|
|
-29534,
|
|
-29446,
|
|
-29358,
|
|
-29268,
|
|
-29177,
|
|
-29085,
|
|
-28992,
|
|
-28897,
|
|
-28802,
|
|
-28706,
|
|
-28608,
|
|
-28510,
|
|
-28410,
|
|
-28309,
|
|
-28208,
|
|
-28105,
|
|
-28001,
|
|
-27896,
|
|
-27790,
|
|
-27683,
|
|
-27575,
|
|
-27466,
|
|
-27355,
|
|
-27244,
|
|
-27132,
|
|
-27019,
|
|
-26905,
|
|
-26789,
|
|
-26673,
|
|
-26556,
|
|
-26437,
|
|
-26318,
|
|
-26198,
|
|
-26077,
|
|
-25954,
|
|
-25831,
|
|
-25707,
|
|
-25582,
|
|
-25456,
|
|
-25329,
|
|
-25201,
|
|
-25072,
|
|
-24942,
|
|
-24811,
|
|
-24679,
|
|
-24546,
|
|
-24413,
|
|
-24278,
|
|
-24143,
|
|
-24006,
|
|
-23869,
|
|
-23731,
|
|
-23592,
|
|
-23452,
|
|
-23311,
|
|
-23169,
|
|
-23027,
|
|
-22883,
|
|
-22739,
|
|
-22594,
|
|
-22448,
|
|
-22301,
|
|
-22153,
|
|
-22004,
|
|
-21855,
|
|
-21705,
|
|
-21554,
|
|
-21402,
|
|
-21249,
|
|
-21096,
|
|
-20942,
|
|
-20787,
|
|
-20631,
|
|
-20474,
|
|
-20317,
|
|
-20159,
|
|
-20000,
|
|
-19840,
|
|
-19680,
|
|
-19519,
|
|
-19357,
|
|
-19194,
|
|
-19031,
|
|
-18867,
|
|
-18702,
|
|
-18537,
|
|
-18371,
|
|
-18204,
|
|
-18036,
|
|
-17868,
|
|
-17699,
|
|
-17530,
|
|
-17360,
|
|
-17189,
|
|
-17017,
|
|
-16845,
|
|
-16672,
|
|
-16499,
|
|
-16325,
|
|
-16150,
|
|
-15975,
|
|
-15799,
|
|
-15623,
|
|
-15446,
|
|
-15268,
|
|
-15090,
|
|
-14911,
|
|
-14732,
|
|
-14552,
|
|
-14372,
|
|
-14191,
|
|
-14009,
|
|
-13827,
|
|
-13645,
|
|
-13462,
|
|
-13278,
|
|
-13094,
|
|
-12909,
|
|
-12724,
|
|
-12539,
|
|
-12353,
|
|
-12166,
|
|
-11980,
|
|
-11792,
|
|
-11604,
|
|
-11416,
|
|
-11227,
|
|
-11038,
|
|
-10849,
|
|
-10659,
|
|
-10469,
|
|
-10278,
|
|
-10087,
|
|
-9895,
|
|
-9703,
|
|
-9511,
|
|
-9319,
|
|
-9126,
|
|
-8932,
|
|
-8739,
|
|
-8545,
|
|
-8351,
|
|
-8156,
|
|
-7961,
|
|
-7766,
|
|
-7571,
|
|
-7375,
|
|
-7179,
|
|
-6982,
|
|
-6786,
|
|
-6589,
|
|
-6392,
|
|
-6195,
|
|
-5997,
|
|
-5799,
|
|
-5601,
|
|
-5403,
|
|
-5205,
|
|
-5006,
|
|
-4807,
|
|
-4608,
|
|
-4409,
|
|
-4210,
|
|
-4011,
|
|
-3811,
|
|
-3611,
|
|
-3411,
|
|
-3211,
|
|
-3011,
|
|
-2811,
|
|
-2610,
|
|
-2410,
|
|
-2209,
|
|
-2009,
|
|
-1808,
|
|
-1607,
|
|
-1406,
|
|
-1206,
|
|
-1005,
|
|
-804,
|
|
-603,
|
|
-402,
|
|
-201,
|
|
};
|
|
|