#define MUL_FFT_MODF_THRESHOLD 300 #define SQR_FFT_MODF_THRESHOLD 568 #define MUL_FFT_TABLE2 {{1, 4 /*66*/}, {401, 5 /*96*/}, {417, 4 /*98*/}, {433, 5 /*96*/}, {865, 6 /*96*/}, {897, 5 /*98*/}, {929, 6 /*96*/}, {2113, 7 /*97*/}, {2177, 6 /*98*/}, {2241, 7 /*97*/}, {2305, 6 /*98*/}, {2369, 7 /*97*/}, {3713, 8 /*93*/}, {3841, 7 /*98*/}, {4225, 8 /*94*/}, {4353, 7 /*98*/}, {4481, 8 /*94*/}, {4865, 7 /*98*/}, {4993, 8 /*95*/}, {6913, 9 /*87*/}, {7169, 8 /*96*/}, {7425, 9 /*93*/}, {7681, 8 /*96*/}, {8449, 9 /*94*/}, {8705, 8 /*97*/}, {8961, 9 /*90*/}, {9729, 8 /*97*/}, {9985, 9 /*90*/}, {11777, 8 /*97*/}, {12033, 9 /*92*/}, {13825, 10 /*87*/}, {14337, 9 /*96*/}, {17921, 10 /*90*/}, {19457, 9 /*97*/}, {20993, 10 /*87*/}, {21505, 9 /*97*/}, {22017, 10 /*91*/}, {23553, 9 /*97*/}, {26113, 10 /*92*/}, {31745, 9 /*98*/}, {32257, 10 /*88*/}, {44033, 11 /*91*/}, {47105, 10 /*97*/}, {56321, 11 /*87*/}, {63489, 10 /*98*/}, {70657, 11 /*87*/}, {71681, 10 /*98*/}, {72705, 11 /*90*/}, {79873, 10 /*98*/}, {80897, 11 /*83*/}, {81921, 10 /*96*/}, {82945, 11 /*85*/}, {96257, 10 /*98*/}, {97281, 12 /*75*/}, {98305, 10 /*97*/}, {101377, 12 /*78*/}, {102401, 11 /*91*/}, {110593, 12 /*87*/}, {126977, 11 /*98*/}, {161793, 12 /*83*/}, {192513, 11 /*98*/}, {194561, 13 /*75*/}, {253953, 12 /*98*/}, {258049, 11 /*99*/}, {276481, 12 /*85*/}, {282625, 11 /*96*/}, {284673, 12 /*87*/}, {389121, 11 /*99*/}, {391169, 13 /*75*/}, {434177, 12 /*95*/}, {438273, 13 /*84*/}, {516097, 12 /*99*/}, {585729, 11 /*99*/}, {620545, 13 /*79*/}, {630785, 12 /*96*/}, {651265, 13 /*83*/}, {778241, 12 /*99*/}, {782337, 11 /*99*/}, {817153, 12 /*96*/}, {819201, 14 /*79*/}, {1032193, 13 /*99*/}, {1040385, 11 /*99*/}, {1046529, 12 /*94*/}, {LONG_MAX, 0}} #define MUL_FFTM_TABLE2 {{1, 4 /*66*/}, {337, 5 /*95*/}, {353, 4 /*97*/}, {369, 5 /*96*/}, {385, 4 /*98*/}, {401, 5 /*96*/}, {801, 6 /*96*/}, {833, 5 /*98*/}, {865, 6 /*96*/}, {1729, 7 /*96*/}, {1793, 6 /*98*/}, {1857, 7 /*96*/}, {2049, 6 /*98*/}, {2113, 7 /*97*/}, {3841, 8 /*96*/}, {4097, 7 /*98*/}, {4225, 8 /*97*/}, {4609, 7 /*98*/}, {4737, 8 /*97*/}, {7169, 9 /*93*/}, {7681, 8 /*98*/}, {8449, 9 /*94*/}, {8705, 8 /*98*/}, {8961, 9 /*94*/}, {9217, 8 /*98*/}, {9473, 9 /*95*/}, {14849, 10 /*93*/}, {15361, 9 /*96*/}, {17921, 10 /*90*/}, {19457, 9 /*97*/}, {20481, 10 /*95*/}, {21505, 9 /*97*/}, {22017, 10 /*91*/}, {23553, 9 /*97*/}, {24065, 10 /*92*/}, {29697, 11 /*93*/}, {30721, 10 /*96*/}, {37889, 11 /*95*/}, {38913, 10 /*97*/}, {44033, 11 /*91*/}, {47105, 10 /*97*/}, {52225, 11 /*92*/}, {55297, 10 /*98*/}, {56321, 11 /*87*/}, {63489, 10 /*98*/}, {64513, 11 /*88*/}, {79873, 12 /*83*/}, {81921, 11 /*93*/}, {88065, 12 /*91*/}, {94209, 11 /*97*/}, {104449, 12 /*81*/}, {110593, 11 /*98*/}, {112641, 12 /*87*/}, {126977, 11 /*98*/}, {137217, 12 /*85*/}, {159745, 11 /*98*/}, {161793, 12 /*83*/}, {167937, 11 /*98*/}, {169985, 12 /*87*/}, {192513, 11 /*98*/}, {194561, 12 /*85*/}, {196609, 11 /*97*/}, {202753, 12 /*89*/}, {217089, 13 /*84*/}, {221185, 12 /*98*/}, {225281, 13 /*87*/}, {253953, 12 /*98*/}, {323585, 13 /*83*/}, {385025, 12 /*98*/}, {389121, 14 /*75*/}, {393217, 12 /*93*/}, {405505, 14 /*78*/}, {507905, 13 /*98*/}, {516097, 12 /*99*/}, {552961, 13 /*85*/}, {573441, 12 /*97*/}, {577537, 13 /*88*/}, {778241, 12 /*99*/}, {782337, 13 /*85*/}, {851969, 14 /*82*/}, {868353, 13 /*95*/}, {909313, 14 /*87*/}, {1032193, 13 /*99*/}, {LONG_MAX, 0}} #define MUL_FFT_FULL_TABLE2 {{16, 1}, {4224, 2}, {4416, 6}, {4480, 2}, {4608, 4}, {4640, 2}, {4800, 1}, {5120, 2}, {5184, 1}, {5632, 2}, {5760, 1}, {6656, 4}, {6720, 1}, {7168, 4}, {7360, 1}, {7936, 4}, {8000, 2}, {8064, 1}, {8704, 2}, {8832, 6}, {8960, 3}, {9216, 1}, {13312, 6}, {14336, 3}, {15360, 5}, {16896, 6}, {17920, 1}, {19968, 2}, {20736, 1}, {21504, 2}, {23808, 1}, {28672, 4}, {29440, 2}, {29952, 1}, {33792, 2}, {35328, 1}, {36864, 4}, {37120, 1}, {49152, 4}, {49920, 1}, {50176, 3}, {53248, 1}, {55296, 2}, {59904, 3}, {61440, 1}, {65536, 2}, {70656, 6}, {71680, 2}, {72192, 5}, {73728, 4}, {79360, 1}, {81920, 2}, {82944, 1}, {86016, 2}, {89088, 1}, {90112, 2}, {95232, 1}, {100352, 5}, {110592, 1}, {114688, 4}, {117760, 1}, {131072, 2}, {144384, 5}, {147456, 4}, {158720, 1}, {161792, 3}, {163840, 2}, {190464, 1}, {196608, 4}, {199680, 3}, {212992, 1}, {262144, 6}, {272384, 7}, {294912, 6}, {301056, 4}, {322560, 1}, {327680, 3}, {344064, 2}, {380928, 1}, {385024, 2}, {387072, 1}, {393216, 7}, {425984, 6}, {444416, 5}, {466944, 1}, {520192, 2}, {577536, 7}, {589824, 6}, {602112, 4}, {645120, 3}, {688128, 2}, {774144, 1}, {786432, 6}, {788480, 4}, {808960, 5}, {811008, 2}, {817152, 3}, {819200, 5}, {823296, 2}, {829440, 1}, {1048576, 2}, {1069056, 1}, {1073152, 5}, {1081344, 3}, {1089536, 2}, {LONG_MAX, 1}}