You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

670 lines
50KB

  1. #include "AsymWaveShaper.h"
  2. extern float symmetry_table_0[];
  3. extern float symmetry_table_1[];
  4. extern float symmetry_table_2[];
  5. extern float symmetry_table_3[];
  6. extern float symmetry_table_4[];
  7. extern float symmetry_table_5[];
  8. extern float symmetry_table_6[];
  9. extern float symmetry_table_7[];
  10. extern float symmetry_table_8[];
  11. extern float symmetry_table_9[];
  12. extern float symmetry_table_10[];
  13. extern float symmetry_table_11[];
  14. extern float symmetry_table_12[];
  15. extern float symmetry_table_13[];
  16. extern float symmetry_table_14[];
  17. extern float symmetry_table_15[];
  18. float * lookup_tables[16] = {
  19. symmetry_table_0,
  20. symmetry_table_1,
  21. symmetry_table_2,
  22. symmetry_table_3,
  23. symmetry_table_4,
  24. symmetry_table_5,
  25. symmetry_table_6,
  26. symmetry_table_7,
  27. symmetry_table_8,
  28. symmetry_table_9,
  29. symmetry_table_10,
  30. symmetry_table_11,
  31. symmetry_table_12,
  32. symmetry_table_13,
  33. symmetry_table_14,
  34. symmetry_table_15,
  35. };
  36. AsymWaveShaper::AsymWaveShaper()
  37. {
  38. for (int i = 0; i < iSymmetryTables; ++i) {
  39. const float* entries = lookup_tables[i];
  40. LookupTable<float>::initDiscrete(tables[i], iNumPoints, entries);
  41. }
  42. }
  43. void AsymWaveShaper::genTableValues(const Spline& spline, int numPoints)
  44. {
  45. const double x0 = spline[0].first;
  46. // first build non-uniform lookup
  47. NonUniformLookup nu;
  48. const double delta = 1.0 / (numPoints * 8); // let's oversample in t space
  49. for (double t = 0; t <= 1; t += delta) {
  50. auto pt = calcPoint(spline, t);
  51. //printf("adding point to table:%f, %f\n", pt.first, pt.second);
  52. nu.add(pt.first, pt.second);
  53. }
  54. // next output uniform
  55. for (int i = 0; i < numPoints; ++i) {
  56. double x = x0 + (double(i) / numPoints);
  57. double y = nu.lookup(x);
  58. printf("%ff", y);
  59. if (i != numPoints - 1) {
  60. printf(", ");
  61. if ((i % 8) == 7) {
  62. printf("\n");
  63. }
  64. }
  65. }
  66. }
  67. void AsymWaveShaper::genTable(int index, double symmetry)
  68. {
  69. printf("float symmetry_table_%d[%d] = {\n", index, iNumPoints);
  70. genTableValues(makeSplineLeft(symmetry), iNumPoints / 2);
  71. printf(",\n");
  72. genTableValues(makeSplineRight(symmetry), iNumPoints / 2);
  73. printf("\n};\n");
  74. fflush(stdout);
  75. }
  76. Spline AsymWaveShaper::makeSplineRight(double symmetry)
  77. {
  78. Spline ret;
  79. ret.push_back(std::pair<double, double>(0.0, 0.0));
  80. ret.push_back(std::pair<double, double>(0.5, 1.0));
  81. ret.push_back(std::pair<double, double>(0.5, 1.0));
  82. ret.push_back(std::pair<double, double>(1.0, 1.0));
  83. return ret;
  84. }
  85. Spline AsymWaveShaper::makeSplineLeft(double symmetry)
  86. {
  87. // symmetry from 0..1
  88. Spline ret;
  89. ret.push_back(std::pair<double, double>(-1, -symmetry));
  90. ret.push_back(std::pair<double, double>(-symmetry/2.f, -symmetry));
  91. ret.push_back(std::pair<double, double>(-symmetry/2.f, -symmetry));
  92. ret.push_back(std::pair<double, double>(0, 0));
  93. return ret;
  94. }
  95. std::pair<double, double> AsymWaveShaper::calcPoint(const Spline& spline, double t)
  96. {
  97. std::pair<double, double> ret;
  98. ret.first = pow(1 - t, 3) * spline[0].first +
  99. 3 * t * pow(1 - t, 2) * spline[1].first +
  100. 3 * pow(t, 2) * (1 - t) * spline[2].first
  101. + pow(t, 3) * spline[3].first;
  102. ret.second = pow(1 - t, 3) * spline[0].second +
  103. 3 * t * pow(1 - t, 2) * spline[1].second +
  104. 3 * pow(t, 2) * (1 - t) * spline[2].second
  105. + pow(t, 3) * spline[3].second;
  106. return ret;
  107. }
  108. float symmetry_table_0[256] = {
  109. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  110. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  111. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  112. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  113. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  114. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  115. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  116. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  117. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  118. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  119. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  120. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  121. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  122. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  123. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  124. 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f,
  125. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  126. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  127. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  128. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  129. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  130. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  131. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  132. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  133. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  134. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  135. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  136. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  137. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  138. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  139. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  140. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  141. };
  142. float symmetry_table_1[256] = {
  143. -0.066667f, -0.066667f, -0.066667f, -0.066667f, -0.066667f, -0.066667f, -0.066666f, -0.066666f,
  144. -0.066666f, -0.066666f, -0.066665f, -0.066665f, -0.066664f, -0.066663f, -0.066663f, -0.066662f,
  145. -0.066661f, -0.066659f, -0.066658f, -0.066656f, -0.066654f, -0.066652f, -0.066650f, -0.066647f,
  146. -0.066644f, -0.066641f, -0.066638f, -0.066634f, -0.066630f, -0.066625f, -0.066621f, -0.066615f,
  147. -0.066610f, -0.066603f, -0.066597f, -0.066590f, -0.066582f, -0.066574f, -0.066565f, -0.066556f,
  148. -0.066546f, -0.066535f, -0.066523f, -0.066511f, -0.066498f, -0.066484f, -0.066470f, -0.066454f,
  149. -0.066438f, -0.066420f, -0.066402f, -0.066382f, -0.066361f, -0.066339f, -0.066316f, -0.066292f,
  150. -0.066266f, -0.066238f, -0.066210f, -0.066179f, -0.066147f, -0.066113f, -0.066078f, -0.066040f,
  151. -0.066001f, -0.065959f, -0.065916f, -0.065870f, -0.065821f, -0.065770f, -0.065717f, -0.065660f,
  152. -0.065601f, -0.065538f, -0.065473f, -0.065404f, -0.065331f, -0.065255f, -0.065174f, -0.065089f,
  153. -0.065000f, -0.064906f, -0.064808f, -0.064703f, -0.064594f, -0.064478f, -0.064356f, -0.064228f,
  154. -0.064092f, -0.063949f, -0.063798f, -0.063639f, -0.063470f, -0.063292f, -0.063103f, -0.062903f,
  155. -0.062691f, -0.062465f, -0.062226f, -0.061972f, -0.061702f, -0.061413f, -0.061106f, -0.060777f,
  156. -0.060425f, -0.060048f, -0.059643f, -0.059207f, -0.058737f, -0.058228f, -0.057677f, -0.057076f,
  157. -0.056421f, -0.055703f, -0.054911f, -0.054035f, -0.053059f, -0.051965f, -0.050726f, -0.049311f,
  158. -0.047673f, -0.045747f, -0.043439f, -0.040598f, -0.036977f, -0.032128f, -0.025192f, -0.014656f,
  159. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  160. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  161. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  162. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  163. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  164. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  165. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  166. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  167. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  168. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  169. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  170. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  171. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  172. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  173. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  174. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  175. };
  176. float symmetry_table_2[256] = {
  177. -0.133333f, -0.133333f, -0.133333f, -0.133333f, -0.133333f, -0.133333f, -0.133333f, -0.133332f,
  178. -0.133332f, -0.133331f, -0.133330f, -0.133329f, -0.133328f, -0.133326f, -0.133324f, -0.133322f,
  179. -0.133320f, -0.133317f, -0.133314f, -0.133310f, -0.133306f, -0.133301f, -0.133296f, -0.133290f,
  180. -0.133284f, -0.133276f, -0.133269f, -0.133260f, -0.133251f, -0.133241f, -0.133230f, -0.133218f,
  181. -0.133205f, -0.133191f, -0.133176f, -0.133160f, -0.133143f, -0.133124f, -0.133104f, -0.133083f,
  182. -0.133060f, -0.133036f, -0.133010f, -0.132982f, -0.132953f, -0.132921f, -0.132888f, -0.132852f,
  183. -0.132815f, -0.132775f, -0.132732f, -0.132688f, -0.132640f, -0.132590f, -0.132537f, -0.132480f,
  184. -0.132421f, -0.132358f, -0.132292f, -0.132222f, -0.132148f, -0.132070f, -0.131988f, -0.131902f,
  185. -0.131810f, -0.131714f, -0.131613f, -0.131506f, -0.131393f, -0.131274f, -0.131149f, -0.131018f,
  186. -0.130879f, -0.130733f, -0.130579f, -0.130417f, -0.130246f, -0.130066f, -0.129876f, -0.129676f,
  187. -0.129465f, -0.129243f, -0.129008f, -0.128761f, -0.128500f, -0.128224f, -0.127932f, -0.127624f,
  188. -0.127299f, -0.126954f, -0.126590f, -0.126203f, -0.125794f, -0.125360f, -0.124899f, -0.124410f,
  189. -0.123889f, -0.123335f, -0.122745f, -0.122115f, -0.121442f, -0.120723f, -0.119952f, -0.119125f,
  190. -0.118235f, -0.117277f, -0.116243f, -0.115125f, -0.113911f, -0.112591f, -0.111150f, -0.109572f,
  191. -0.107837f, -0.105920f, -0.103793f, -0.101419f, -0.098751f, -0.095733f, -0.092290f, -0.088326f,
  192. -0.083713f, -0.078285f, -0.071824f, -0.064055f, -0.054668f, -0.043400f, -0.030217f, -0.015502f,
  193. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  194. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  195. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  196. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  197. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  198. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  199. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  200. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  201. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  202. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  203. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  204. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  205. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  206. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  207. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  208. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  209. };
  210. float symmetry_table_3[256] = {
  211. -0.200000f, -0.200000f, -0.200000f, -0.200000f, -0.200000f, -0.199999f, -0.199999f, -0.199998f,
  212. -0.199997f, -0.199996f, -0.199995f, -0.199993f, -0.199991f, -0.199988f, -0.199985f, -0.199981f,
  213. -0.199977f, -0.199972f, -0.199967f, -0.199960f, -0.199953f, -0.199945f, -0.199937f, -0.199927f,
  214. -0.199916f, -0.199904f, -0.199891f, -0.199877f, -0.199861f, -0.199844f, -0.199825f, -0.199805f,
  215. -0.199783f, -0.199759f, -0.199734f, -0.199706f, -0.199677f, -0.199645f, -0.199611f, -0.199575f,
  216. -0.199536f, -0.199494f, -0.199449f, -0.199402f, -0.199351f, -0.199297f, -0.199240f, -0.199179f,
  217. -0.199114f, -0.199046f, -0.198973f, -0.198895f, -0.198813f, -0.198726f, -0.198634f, -0.198537f,
  218. -0.198434f, -0.198325f, -0.198210f, -0.198089f, -0.197960f, -0.197825f, -0.197681f, -0.197530f,
  219. -0.197370f, -0.197202f, -0.197024f, -0.196837f, -0.196639f, -0.196430f, -0.196210f, -0.195978f,
  220. -0.195733f, -0.195474f, -0.195201f, -0.194914f, -0.194610f, -0.194289f, -0.193951f, -0.193594f,
  221. -0.193216f, -0.192818f, -0.192396f, -0.191951f, -0.191479f, -0.190981f, -0.190453f, -0.189894f,
  222. -0.189302f, -0.188674f, -0.188007f, -0.187300f, -0.186548f, -0.185748f, -0.184897f, -0.183990f,
  223. -0.183023f, -0.181990f, -0.180886f, -0.179704f, -0.178437f, -0.177078f, -0.175616f, -0.174041f,
  224. -0.172341f, -0.170504f, -0.168512f, -0.166349f, -0.163992f, -0.161418f, -0.158598f, -0.155499f,
  225. -0.152081f, -0.148298f, -0.144093f, -0.139402f, -0.134148f, -0.128240f, -0.121576f, -0.114043f,
  226. -0.105522f, -0.095903f, -0.085107f, -0.073109f, -0.059969f, -0.045841f, -0.030958f, -0.015591f,
  227. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  228. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  229. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  230. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  231. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  232. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  233. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  234. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  235. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  236. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  237. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  238. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  239. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  240. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  241. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  242. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  243. };
  244. float symmetry_table_4[256] = {
  245. -0.266667f, -0.266667f, -0.266667f, -0.266666f, -0.266666f, -0.266666f, -0.266665f, -0.266664f,
  246. -0.266663f, -0.266661f, -0.266659f, -0.266656f, -0.266653f, -0.266649f, -0.266644f, -0.266639f,
  247. -0.266632f, -0.266625f, -0.266617f, -0.266607f, -0.266596f, -0.266584f, -0.266571f, -0.266556f,
  248. -0.266540f, -0.266522f, -0.266502f, -0.266480f, -0.266457f, -0.266431f, -0.266402f, -0.266372f,
  249. -0.266338f, -0.266303f, -0.266264f, -0.266222f, -0.266177f, -0.266128f, -0.266077f, -0.266021f,
  250. -0.265961f, -0.265897f, -0.265829f, -0.265756f, -0.265679f, -0.265596f, -0.265508f, -0.265414f,
  251. -0.265315f, -0.265209f, -0.265096f, -0.264977f, -0.264850f, -0.264716f, -0.264573f, -0.264423f,
  252. -0.264263f, -0.264094f, -0.263915f, -0.263726f, -0.263526f, -0.263314f, -0.263090f, -0.262854f,
  253. -0.262604f, -0.262340f, -0.262061f, -0.261766f, -0.261455f, -0.261126f, -0.260778f, -0.260411f,
  254. -0.260023f, -0.259613f, -0.259180f, -0.258722f, -0.258238f, -0.257726f, -0.257185f, -0.256613f,
  255. -0.256007f, -0.255366f, -0.254687f, -0.253968f, -0.253206f, -0.252398f, -0.251540f, -0.250630f,
  256. -0.249664f, -0.248637f, -0.247544f, -0.246381f, -0.245143f, -0.243822f, -0.242413f, -0.240908f,
  257. -0.239298f, -0.237575f, -0.235729f, -0.233747f, -0.231617f, -0.229325f, -0.226855f, -0.224189f,
  258. -0.221306f, -0.218183f, -0.214794f, -0.211110f, -0.207097f, -0.202719f, -0.197933f, -0.192692f,
  259. -0.186945f, -0.180635f, -0.173704f, -0.166089f, -0.157731f, -0.148574f, -0.138577f, -0.127713f,
  260. -0.115983f, -0.103419f, -0.090082f, -0.076066f, -0.061485f, -0.046465f, -0.031134f, -0.015611f,
  261. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  262. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  263. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  264. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  265. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  266. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  267. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  268. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  269. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  270. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  271. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  272. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  273. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  274. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  275. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  276. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  277. };
  278. float symmetry_table_5[256] = {
  279. -0.333333f, -0.333333f, -0.333333f, -0.333333f, -0.333333f, -0.333332f, -0.333331f, -0.333330f,
  280. -0.333328f, -0.333325f, -0.333322f, -0.333318f, -0.333314f, -0.333308f, -0.333301f, -0.333294f,
  281. -0.333284f, -0.333274f, -0.333262f, -0.333249f, -0.333234f, -0.333217f, -0.333198f, -0.333177f,
  282. -0.333153f, -0.333128f, -0.333099f, -0.333068f, -0.333034f, -0.332997f, -0.332957f, -0.332913f,
  283. -0.332865f, -0.332814f, -0.332758f, -0.332698f, -0.332633f, -0.332564f, -0.332489f, -0.332409f,
  284. -0.332323f, -0.332231f, -0.332132f, -0.332027f, -0.331915f, -0.331795f, -0.331667f, -0.331531f,
  285. -0.331386f, -0.331232f, -0.331068f, -0.330894f, -0.330710f, -0.330513f, -0.330305f, -0.330085f,
  286. -0.329851f, -0.329603f, -0.329340f, -0.329062f, -0.328767f, -0.328455f, -0.328125f, -0.327775f,
  287. -0.327406f, -0.327014f, -0.326600f, -0.326162f, -0.325699f, -0.325209f, -0.324690f, -0.324141f,
  288. -0.323560f, -0.322946f, -0.322295f, -0.321606f, -0.320877f, -0.320104f, -0.319286f, -0.318419f,
  289. -0.317500f, -0.316525f, -0.315491f, -0.314393f, -0.313228f, -0.311990f, -0.310674f, -0.309274f,
  290. -0.307785f, -0.306199f, -0.304509f, -0.302706f, -0.300783f, -0.298728f, -0.296532f, -0.294183f,
  291. -0.291667f, -0.288969f, -0.286075f, -0.282967f, -0.279625f, -0.276029f, -0.272155f, -0.267977f,
  292. -0.263468f, -0.258598f, -0.253334f, -0.247642f, -0.241485f, -0.234825f, -0.227623f, -0.219844f,
  293. -0.211450f, -0.202413f, -0.192708f, -0.182321f, -0.171248f, -0.159501f, -0.147103f, -0.134096f,
  294. -0.120530f, -0.106468f, -0.091979f, -0.077137f, -0.062014f, -0.046678f, -0.031194f, -0.015618f,
  295. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  296. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  297. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  298. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  299. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  300. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  301. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  302. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  303. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  304. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  305. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  306. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  307. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  308. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  309. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  310. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  311. };
  312. float symmetry_table_6[256] = {
  313. -0.400000f, -0.400000f, -0.400000f, -0.400000f, -0.399999f, -0.399998f, -0.399997f, -0.399995f,
  314. -0.399992f, -0.399989f, -0.399985f, -0.399979f, -0.399973f, -0.399965f, -0.399956f, -0.399946f,
  315. -0.399933f, -0.399919f, -0.399903f, -0.399885f, -0.399864f, -0.399840f, -0.399814f, -0.399785f,
  316. -0.399753f, -0.399718f, -0.399679f, -0.399636f, -0.399589f, -0.399538f, -0.399482f, -0.399421f,
  317. -0.399355f, -0.399284f, -0.399207f, -0.399123f, -0.399034f, -0.398937f, -0.398833f, -0.398721f,
  318. -0.398601f, -0.398473f, -0.398335f, -0.398188f, -0.398031f, -0.397863f, -0.397684f, -0.397493f,
  319. -0.397289f, -0.397073f, -0.396842f, -0.396597f, -0.396336f, -0.396059f, -0.395765f, -0.395452f,
  320. -0.395120f, -0.394768f, -0.394395f, -0.393999f, -0.393579f, -0.393134f, -0.392662f, -0.392162f,
  321. -0.391632f, -0.391071f, -0.390476f, -0.389846f, -0.389178f, -0.388471f, -0.387721f, -0.386926f,
  322. -0.386084f, -0.385192f, -0.384246f, -0.383243f, -0.382179f, -0.381050f, -0.379852f, -0.378581f,
  323. -0.377232f, -0.375798f, -0.374275f, -0.372655f, -0.370933f, -0.369102f, -0.367152f, -0.365075f,
  324. -0.362862f, -0.360503f, -0.357987f, -0.355302f, -0.352434f, -0.349371f, -0.346095f, -0.342592f,
  325. -0.338842f, -0.334828f, -0.330528f, -0.325920f, -0.320981f, -0.315687f, -0.310013f, -0.303931f,
  326. -0.297415f, -0.290439f, -0.282976f, -0.275004f, -0.266499f, -0.257444f, -0.247826f, -0.237638f,
  327. -0.226877f, -0.215553f, -0.203678f, -0.191275f, -0.178375f, -0.165012f, -0.151228f, -0.137068f,
  328. -0.122577f, -0.107804f, -0.092794f, -0.077591f, -0.062236f, -0.046768f, -0.031219f, -0.015621f,
  329. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  330. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  331. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  332. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  333. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  334. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  335. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  336. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  337. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  338. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  339. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  340. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  341. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  342. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  343. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  344. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  345. };
  346. float symmetry_table_7[256] = {
  347. -0.466667f, -0.466667f, -0.466667f, -0.466666f, -0.466665f, -0.466664f, -0.466662f, -0.466660f,
  348. -0.466657f, -0.466652f, -0.466646f, -0.466639f, -0.466631f, -0.466621f, -0.466608f, -0.466594f,
  349. -0.466578f, -0.466559f, -0.466537f, -0.466512f, -0.466484f, -0.466453f, -0.466418f, -0.466379f,
  350. -0.466336f, -0.466288f, -0.466235f, -0.466178f, -0.466114f, -0.466045f, -0.465969f, -0.465887f,
  351. -0.465798f, -0.465701f, -0.465596f, -0.465483f, -0.465361f, -0.465229f, -0.465087f, -0.464934f,
  352. -0.464771f, -0.464595f, -0.464407f, -0.464205f, -0.463990f, -0.463759f, -0.463513f, -0.463251f,
  353. -0.462971f, -0.462672f, -0.462354f, -0.462015f, -0.461654f, -0.461270f, -0.460862f, -0.460428f,
  354. -0.459967f, -0.459477f, -0.458956f, -0.458403f, -0.457817f, -0.457194f, -0.456532f, -0.455831f,
  355. -0.455086f, -0.454296f, -0.453458f, -0.452569f, -0.451625f, -0.450624f, -0.449562f, -0.448434f,
  356. -0.447238f, -0.445968f, -0.444620f, -0.443189f, -0.441669f, -0.440054f, -0.438338f, -0.436516f,
  357. -0.434578f, -0.432518f, -0.430327f, -0.427996f, -0.425515f, -0.422875f, -0.420063f, -0.417069f,
  358. -0.413879f, -0.410479f, -0.406856f, -0.402994f, -0.398875f, -0.394484f, -0.389802f, -0.384810f,
  359. -0.379489f, -0.373819f, -0.367779f, -0.361349f, -0.354510f, -0.347243f, -0.339529f, -0.331352f,
  360. -0.322701f, -0.313562f, -0.303931f, -0.293803f, -0.283181f, -0.272071f, -0.260484f, -0.248436f,
  361. -0.235946f, -0.223041f, -0.209746f, -0.196093f, -0.182113f, -0.167839f, -0.153304f, -0.138541f,
  362. -0.123580f, -0.108453f, -0.093188f, -0.077810f, -0.062344f, -0.046811f, -0.031232f, -0.015623f,
  363. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  364. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  365. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  366. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  367. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  368. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  369. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  370. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  371. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  372. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  373. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  374. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  375. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  376. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  377. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  378. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  379. };
  380. float symmetry_table_8[256] = {
  381. -0.533333f, -0.533333f, -0.533333f, -0.533333f, -0.533332f, -0.533330f, -0.533328f, -0.533325f,
  382. -0.533320f, -0.533314f, -0.533307f, -0.533297f, -0.533286f, -0.533273f, -0.533257f, -0.533238f,
  383. -0.533216f, -0.533191f, -0.533162f, -0.533130f, -0.533093f, -0.533051f, -0.533005f, -0.532953f,
  384. -0.532896f, -0.532832f, -0.532762f, -0.532685f, -0.532601f, -0.532508f, -0.532407f, -0.532297f,
  385. -0.532178f, -0.532048f, -0.531908f, -0.531756f, -0.531591f, -0.531414f, -0.531223f, -0.531018f,
  386. -0.530797f, -0.530560f, -0.530306f, -0.530033f, -0.529741f, -0.529428f, -0.529094f, -0.528737f,
  387. -0.528356f, -0.527949f, -0.527515f, -0.527052f, -0.526559f, -0.526033f, -0.525474f, -0.524878f,
  388. -0.524244f, -0.523570f, -0.522852f, -0.522090f, -0.521279f, -0.520418f, -0.519502f, -0.518529f,
  389. -0.517495f, -0.516397f, -0.515230f, -0.513991f, -0.512674f, -0.511276f, -0.509790f, -0.508211f,
  390. -0.506534f, -0.504753f, -0.502859f, -0.500848f, -0.498710f, -0.496437f, -0.494022f, -0.491454f,
  391. -0.488725f, -0.485822f, -0.482737f, -0.479456f, -0.475967f, -0.472257f, -0.468313f, -0.464120f,
  392. -0.459664f, -0.454928f, -0.449897f, -0.444556f, -0.438887f, -0.432874f, -0.426502f, -0.419754f,
  393. -0.412616f, -0.405075f, -0.397117f, -0.388734f, -0.379917f, -0.370659f, -0.360958f, -0.350815f,
  394. -0.340232f, -0.329217f, -0.317779f, -0.305932f, -0.293690f, -0.281074f, -0.268103f, -0.254800f,
  395. -0.241189f, -0.227294f, -0.213139f, -0.198750f, -0.184152f, -0.169367f, -0.154418f, -0.139327f,
  396. -0.124115f, -0.108799f, -0.093398f, -0.077927f, -0.062402f, -0.046835f, -0.031238f, -0.015624f,
  397. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  398. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  399. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  400. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  401. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  402. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  403. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  404. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  405. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  406. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  407. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  408. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  409. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  410. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  411. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  412. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  413. };
  414. float symmetry_table_9[256] = {
  415. -0.600000f, -0.600000f, -0.600000f, -0.599999f, -0.599998f, -0.599996f, -0.599993f, -0.599989f,
  416. -0.599983f, -0.599975f, -0.599965f, -0.599953f, -0.599939f, -0.599921f, -0.599900f, -0.599875f,
  417. -0.599847f, -0.599814f, -0.599776f, -0.599734f, -0.599685f, -0.599631f, -0.599570f, -0.599502f,
  418. -0.599426f, -0.599342f, -0.599250f, -0.599148f, -0.599036f, -0.598914f, -0.598780f, -0.598634f,
  419. -0.598475f, -0.598303f, -0.598116f, -0.597913f, -0.597694f, -0.597458f, -0.597203f, -0.596928f,
  420. -0.596632f, -0.596314f, -0.595972f, -0.595606f, -0.595213f, -0.594792f, -0.594341f, -0.593859f,
  421. -0.593343f, -0.592792f, -0.592204f, -0.591576f, -0.590905f, -0.590191f, -0.589428f, -0.588616f,
  422. -0.587750f, -0.586829f, -0.585847f, -0.584802f, -0.583690f, -0.582507f, -0.581248f, -0.579909f,
  423. -0.578484f, -0.576969f, -0.575359f, -0.573646f, -0.571826f, -0.569890f, -0.567833f, -0.565647f,
  424. -0.563323f, -0.560853f, -0.558229f, -0.555441f, -0.552478f, -0.549332f, -0.545990f, -0.542441f,
  425. -0.538673f, -0.534675f, -0.530432f, -0.525932f, -0.521161f, -0.516106f, -0.510752f, -0.505087f,
  426. -0.499096f, -0.492766f, -0.486085f, -0.479041f, -0.471622f, -0.463820f, -0.455626f, -0.447034f,
  427. -0.438039f, -0.428640f, -0.418836f, -0.408630f, -0.398026f, -0.387032f, -0.375656f, -0.363911f,
  428. -0.351811f, -0.339370f, -0.326606f, -0.313536f, -0.300179f, -0.286555f, -0.272683f, -0.258583f,
  429. -0.244274f, -0.229776f, -0.215106f, -0.200282f, -0.185322f, -0.170242f, -0.155055f, -0.139777f,
  430. -0.124420f, -0.108997f, -0.093518f, -0.077994f, -0.062435f, -0.046848f, -0.031242f, -0.015624f,
  431. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  432. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  433. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  434. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  435. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  436. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  437. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  438. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  439. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  440. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  441. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  442. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  443. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  444. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  445. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  446. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  447. };
  448. float symmetry_table_10[256] = {
  449. -0.666667f, -0.666667f, -0.666666f, -0.666666f, -0.666664f, -0.666661f, -0.666657f, -0.666652f,
  450. -0.666644f, -0.666634f, -0.666622f, -0.666606f, -0.666587f, -0.666564f, -0.666537f, -0.666505f,
  451. -0.666468f, -0.666425f, -0.666376f, -0.666320f, -0.666257f, -0.666185f, -0.666105f, -0.666016f,
  452. -0.665917f, -0.665807f, -0.665685f, -0.665551f, -0.665404f, -0.665242f, -0.665065f, -0.664872f,
  453. -0.664662f, -0.664434f, -0.664186f, -0.663917f, -0.663625f, -0.663310f, -0.662970f, -0.662604f,
  454. -0.662208f, -0.661783f, -0.661326f, -0.660834f, -0.660307f, -0.659741f, -0.659135f, -0.658485f,
  455. -0.657789f, -0.657045f, -0.656250f, -0.655400f, -0.654491f, -0.653522f, -0.652486f, -0.651382f,
  456. -0.650204f, -0.648948f, -0.647610f, -0.646184f, -0.644665f, -0.643047f, -0.641325f, -0.639491f,
  457. -0.637540f, -0.635465f, -0.633257f, -0.630910f, -0.628414f, -0.625761f, -0.622943f, -0.619948f,
  458. -0.616769f, -0.613393f, -0.609811f, -0.606010f, -0.601981f, -0.597711f, -0.593187f, -0.588399f,
  459. -0.583333f, -0.577978f, -0.572322f, -0.566353f, -0.560059f, -0.553431f, -0.546459f, -0.539134f,
  460. -0.531447f, -0.523393f, -0.514967f, -0.506166f, -0.496987f, -0.487431f, -0.477501f, -0.467200f,
  461. -0.456535f, -0.445512f, -0.434141f, -0.422433f, -0.410401f, -0.398057f, -0.385417f, -0.372494f,
  462. -0.359306f, -0.345868f, -0.332196f, -0.318307f, -0.304217f, -0.289941f, -0.275495f, -0.260893f,
  463. -0.246151f, -0.231281f, -0.216296f, -0.201208f, -0.186029f, -0.170770f, -0.155440f, -0.140049f,
  464. -0.124605f, -0.109117f, -0.093591f, -0.078035f, -0.062455f, -0.046857f, -0.031245f, -0.015624f,
  465. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  466. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  467. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  468. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  469. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  470. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  471. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  472. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  473. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  474. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  475. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  476. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  477. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  478. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  479. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  480. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  481. };
  482. float symmetry_table_11[256] = {
  483. -0.733333f, -0.733333f, -0.733333f, -0.733332f, -0.733330f, -0.733327f, -0.733321f, -0.733314f,
  484. -0.733304f, -0.733292f, -0.733275f, -0.733255f, -0.733230f, -0.733201f, -0.733165f, -0.733124f,
  485. -0.733075f, -0.733020f, -0.732955f, -0.732882f, -0.732800f, -0.732706f, -0.732602f, -0.732485f,
  486. -0.732354f, -0.732210f, -0.732050f, -0.731873f, -0.731679f, -0.731466f, -0.731233f, -0.730978f,
  487. -0.730700f, -0.730397f, -0.730067f, -0.729710f, -0.729322f, -0.728903f, -0.728449f, -0.727960f,
  488. -0.727432f, -0.726862f, -0.726250f, -0.725591f, -0.724882f, -0.724122f, -0.723305f, -0.722430f,
  489. -0.721492f, -0.720487f, -0.719412f, -0.718261f, -0.717032f, -0.715717f, -0.714313f, -0.712813f,
  490. -0.711213f, -0.709506f, -0.707686f, -0.705745f, -0.703678f, -0.701476f, -0.699131f, -0.696636f,
  491. -0.693982f, -0.691160f, -0.688161f, -0.684974f, -0.681591f, -0.678000f, -0.674191f, -0.670154f,
  492. -0.665877f, -0.661350f, -0.656561f, -0.651499f, -0.646154f, -0.640515f, -0.634571f, -0.628313f,
  493. -0.621732f, -0.614820f, -0.607570f, -0.599974f, -0.592029f, -0.583730f, -0.575074f, -0.566062f,
  494. -0.556694f, -0.546972f, -0.536899f, -0.526482f, -0.515726f, -0.504639f, -0.493233f, -0.481515f,
  495. -0.469498f, -0.457195f, -0.444618f, -0.431780f, -0.418696f, -0.405378f, -0.391842f, -0.378100f,
  496. -0.364167f, -0.350056f, -0.335780f, -0.321352f, -0.306784f, -0.292087f, -0.277273f, -0.262352f,
  497. -0.247335f, -0.232229f, -0.217046f, -0.201792f, -0.186475f, -0.171104f, -0.155684f, -0.140221f,
  498. -0.124723f, -0.109194f, -0.093638f, -0.078062f, -0.062468f, -0.046862f, -0.031246f, -0.015625f,
  499. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  500. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  501. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  502. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  503. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  504. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  505. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  506. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  507. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  508. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  509. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  510. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  511. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  512. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  513. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  514. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  515. };
  516. float symmetry_table_12[256] = {
  517. -0.800000f, -0.800000f, -0.800000f, -0.799998f, -0.799996f, -0.799991f, -0.799985f, -0.799975f,
  518. -0.799963f, -0.799946f, -0.799925f, -0.799899f, -0.799867f, -0.799828f, -0.799782f, -0.799728f,
  519. -0.799665f, -0.799592f, -0.799509f, -0.799413f, -0.799305f, -0.799183f, -0.799045f, -0.798892f,
  520. -0.798720f, -0.798530f, -0.798319f, -0.798086f, -0.797830f, -0.797548f, -0.797238f, -0.796900f,
  521. -0.796531f, -0.796128f, -0.795690f, -0.795213f, -0.794696f, -0.794136f, -0.793530f, -0.792874f,
  522. -0.792166f, -0.791402f, -0.790579f, -0.789693f, -0.788739f, -0.787714f, -0.786613f, -0.785431f,
  523. -0.784164f, -0.782805f, -0.781350f, -0.779792f, -0.778126f, -0.776344f, -0.774441f, -0.772407f,
  524. -0.770238f, -0.767923f, -0.765456f, -0.762828f, -0.760029f, -0.757050f, -0.753883f, -0.750518f,
  525. -0.746943f, -0.743150f, -0.739128f, -0.734866f, -0.730354f, -0.725583f, -0.720540f, -0.715218f,
  526. -0.709606f, -0.703694f, -0.697475f, -0.690940f, -0.684083f, -0.676897f, -0.669377f, -0.661520f,
  527. -0.653321f, -0.644781f, -0.635898f, -0.626674f, -0.617111f, -0.607214f, -0.596986f, -0.586434f,
  528. -0.575567f, -0.564391f, -0.552918f, -0.541156f, -0.529117f, -0.516812f, -0.504253f, -0.491452f,
  529. -0.478422f, -0.465174f, -0.451722f, -0.438077f, -0.424251f, -0.410255f, -0.396103f, -0.381803f,
  530. -0.367368f, -0.352806f, -0.338128f, -0.323344f, -0.308461f, -0.293488f, -0.278434f, -0.263304f,
  531. -0.248107f, -0.232849f, -0.217536f, -0.202174f, -0.186768f, -0.171323f, -0.155844f, -0.140335f,
  532. -0.124801f, -0.109244f, -0.093669f, -0.078079f, -0.062477f, -0.046865f, -0.031247f, -0.015625f,
  533. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  534. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  535. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  536. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  537. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  538. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  539. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  540. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  541. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  542. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  543. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  544. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  545. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  546. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  547. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  548. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  549. };
  550. float symmetry_table_13[256] = {
  551. -0.866667f, -0.866667f, -0.866666f, -0.866664f, -0.866661f, -0.866655f, -0.866647f, -0.866635f,
  552. -0.866618f, -0.866597f, -0.866570f, -0.866535f, -0.866494f, -0.866443f, -0.866383f, -0.866313f,
  553. -0.866230f, -0.866135f, -0.866025f, -0.865900f, -0.865757f, -0.865596f, -0.865415f, -0.865212f,
  554. -0.864986f, -0.864734f, -0.864455f, -0.864146f, -0.863805f, -0.863430f, -0.863019f, -0.862568f,
  555. -0.862075f, -0.861536f, -0.860950f, -0.860312f, -0.859619f, -0.858866f, -0.858051f, -0.857169f,
  556. -0.856216f, -0.855186f, -0.854075f, -0.852878f, -0.851590f, -0.850204f, -0.848714f, -0.847114f,
  557. -0.845398f, -0.843558f, -0.841586f, -0.839477f, -0.837220f, -0.834808f, -0.832233f, -0.829485f,
  558. -0.826556f, -0.823435f, -0.820114f, -0.816581f, -0.812828f, -0.808845f, -0.804621f, -0.800146f,
  559. -0.795410f, -0.790404f, -0.785119f, -0.779546f, -0.773676f, -0.767502f, -0.761016f, -0.754213f,
  560. -0.747087f, -0.739635f, -0.731852f, -0.723737f, -0.715290f, -0.706510f, -0.697400f, -0.687961f,
  561. -0.678199f, -0.668118f, -0.657724f, -0.647026f, -0.636029f, -0.624744f, -0.613180f, -0.601348f,
  562. -0.589256f, -0.576917f, -0.564342f, -0.551541f, -0.538527f, -0.525309f, -0.511900f, -0.498310f,
  563. -0.484549f, -0.470629f, -0.456560f, -0.442350f, -0.428010f, -0.413549f, -0.398974f, -0.384295f,
  564. -0.369519f, -0.354653f, -0.339705f, -0.324681f, -0.309587f, -0.294429f, -0.279214f, -0.263945f,
  565. -0.248628f, -0.233267f, -0.217867f, -0.202433f, -0.186966f, -0.171472f, -0.155953f, -0.140413f,
  566. -0.124854f, -0.109279f, -0.093691f, -0.078091f, -0.062483f, -0.046868f, -0.031248f, -0.015625f,
  567. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  568. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  569. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  570. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  571. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  572. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  573. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  574. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  575. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  576. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  577. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  578. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  579. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  580. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  581. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  582. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  583. };
  584. float symmetry_table_14[256] = {
  585. -0.933333f, -0.933333f, -0.933332f, -0.933330f, -0.933326f, -0.933319f, -0.933308f, -0.933292f,
  586. -0.933271f, -0.933243f, -0.933207f, -0.933162f, -0.933107f, -0.933041f, -0.932963f, -0.932870f,
  587. -0.932761f, -0.932635f, -0.932490f, -0.932324f, -0.932136f, -0.931922f, -0.931682f, -0.931413f,
  588. -0.931111f, -0.930775f, -0.930403f, -0.929990f, -0.929534f, -0.929032f, -0.928480f, -0.927874f,
  589. -0.927211f, -0.926487f, -0.925697f, -0.924836f, -0.923900f, -0.922883f, -0.921781f, -0.920587f,
  590. -0.919295f, -0.917900f, -0.916394f, -0.914770f, -0.913022f, -0.911142f, -0.909121f, -0.906952f,
  591. -0.904625f, -0.902133f, -0.899466f, -0.896614f, -0.893569f, -0.890320f, -0.886857f, -0.883171f,
  592. -0.879252f, -0.875090f, -0.870674f, -0.865996f, -0.861046f, -0.855816f, -0.850296f, -0.844480f,
  593. -0.838360f, -0.831930f, -0.825184f, -0.818118f, -0.810729f, -0.803014f, -0.794973f, -0.786603f,
  594. -0.777908f, -0.768889f, -0.759549f, -0.749893f, -0.739926f, -0.729655f, -0.719086f, -0.708227f,
  595. -0.697088f, -0.685677f, -0.674004f, -0.662078f, -0.649911f, -0.637512f, -0.624893f, -0.612063f,
  596. -0.599033f, -0.585813f, -0.572414f, -0.558845f, -0.545117f, -0.531238f, -0.517218f, -0.503066f,
  597. -0.488789f, -0.474396f, -0.459895f, -0.445293f, -0.430597f, -0.415813f, -0.400948f, -0.386007f,
  598. -0.370997f, -0.355923f, -0.340789f, -0.325601f, -0.310363f, -0.295078f, -0.279752f, -0.264387f,
  599. -0.248988f, -0.233557f, -0.218097f, -0.202612f, -0.187104f, -0.171576f, -0.156029f, -0.140467f,
  600. -0.124891f, -0.109303f, -0.093706f, -0.078100f, -0.062487f, -0.046870f, -0.031248f, -0.015625f,
  601. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  602. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  603. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  604. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  605. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  606. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  607. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  608. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  609. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  610. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  611. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  612. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  613. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  614. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  615. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  616. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  617. };
  618. float symmetry_table_15[256] = {
  619. -1.000000f, -1.000000f, -0.999999f, -0.999996f, -0.999990f, -0.999981f, -0.999966f, -0.999946f,
  620. -0.999918f, -0.999881f, -0.999834f, -0.999775f, -0.999702f, -0.999615f, -0.999511f, -0.999387f,
  621. -0.999243f, -0.999076f, -0.998882f, -0.998661f, -0.998409f, -0.998124f, -0.997802f, -0.997440f,
  622. -0.997035f, -0.996583f, -0.996081f, -0.995524f, -0.994908f, -0.994229f, -0.993482f, -0.992661f,
  623. -0.991762f, -0.990778f, -0.989704f, -0.988534f, -0.987260f, -0.985876f, -0.984375f, -0.982748f,
  624. -0.980989f, -0.979089f, -0.977038f, -0.974829f, -0.972452f, -0.969898f, -0.967157f, -0.964218f,
  625. -0.961074f, -0.957712f, -0.954123f, -0.950296f, -0.946223f, -0.941893f, -0.937297f, -0.932426f,
  626. -0.927270f, -0.921822f, -0.916075f, -0.910022f, -0.903657f, -0.896976f, -0.889974f, -0.882649f,
  627. -0.875000f, -0.867024f, -0.858724f, -0.850101f, -0.841157f, -0.831897f, -0.822325f, -0.812447f,
  628. -0.802270f, -0.791801f, -0.781047f, -0.770018f, -0.758723f, -0.747171f, -0.735373f, -0.723337f,
  629. -0.711074f, -0.698593f, -0.685907f, -0.673023f, -0.659952f, -0.646704f, -0.633288f, -0.619714f,
  630. -0.605989f, -0.592123f, -0.578125f, -0.564001f, -0.549760f, -0.535409f, -0.520954f, -0.506403f,
  631. -0.491762f, -0.477036f, -0.462232f, -0.447354f, -0.432408f, -0.417399f, -0.402331f, -0.387208f,
  632. -0.372035f, -0.356815f, -0.341552f, -0.326249f, -0.310909f, -0.295536f, -0.280132f, -0.264701f,
  633. -0.249243f, -0.233762f, -0.218261f, -0.202740f, -0.187202f, -0.171650f, -0.156084f, -0.140506f,
  634. -0.124918f, -0.109321f, -0.093716f, -0.078106f, -0.062490f, -0.046871f, -0.031249f, -0.015625f,
  635. 0.000000f, 0.015625f, 0.031249f, 0.046871f, 0.062490f, 0.078106f, 0.093716f, 0.109321f,
  636. 0.124918f, 0.140506f, 0.156084f, 0.171650f, 0.187202f, 0.202740f, 0.218261f, 0.233762f,
  637. 0.249243f, 0.264701f, 0.280132f, 0.295536f, 0.310909f, 0.326249f, 0.341552f, 0.356815f,
  638. 0.372035f, 0.387208f, 0.402331f, 0.417399f, 0.432408f, 0.447354f, 0.462232f, 0.477036f,
  639. 0.491762f, 0.506403f, 0.520954f, 0.535409f, 0.549760f, 0.564001f, 0.578125f, 0.592123f,
  640. 0.605989f, 0.619714f, 0.633288f, 0.646704f, 0.659952f, 0.673023f, 0.685907f, 0.698593f,
  641. 0.711074f, 0.723337f, 0.735373f, 0.747171f, 0.758723f, 0.770018f, 0.781047f, 0.791801f,
  642. 0.802270f, 0.812447f, 0.822325f, 0.831897f, 0.841157f, 0.850101f, 0.858724f, 0.867024f,
  643. 0.875000f, 0.882649f, 0.889974f, 0.896976f, 0.903657f, 0.910022f, 0.916075f, 0.921822f,
  644. 0.927270f, 0.932426f, 0.937297f, 0.941893f, 0.946223f, 0.950296f, 0.954123f, 0.957712f,
  645. 0.961074f, 0.964218f, 0.967157f, 0.969898f, 0.972452f, 0.974829f, 0.977038f, 0.979089f,
  646. 0.980989f, 0.982748f, 0.984375f, 0.985876f, 0.987260f, 0.988534f, 0.989704f, 0.990778f,
  647. 0.991762f, 0.992661f, 0.993482f, 0.994229f, 0.994908f, 0.995524f, 0.996081f, 0.996583f,
  648. 0.997035f, 0.997440f, 0.997802f, 0.998124f, 0.998409f, 0.998661f, 0.998882f, 0.999076f,
  649. 0.999243f, 0.999387f, 0.999511f, 0.999615f, 0.999702f, 0.999775f, 0.999834f, 0.999881f,
  650. 0.999918f, 0.999946f, 0.999966f, 0.999981f, 0.999990f, 0.999996f, 0.999999f, 1.000000f
  651. };