diff --git a/.gitignore b/.gitignore index 475b6f9b..df75c497 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +workspace +.vs-build + # Prerequisites *.d diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..6a801ce5 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.8.13 diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fe177ce..44112d2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,47 +4,54 @@ project(utensor VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_CXX_STANDARD 11) + # TODO be smarter about code coverage bits # https://github.com/codecov/example-cpp11-cmake set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-rtti") option(ENABLE_COVERAGE "Enable code coverage" OFF) + if(ENABLE_COVERAGE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -ggdb -fPIC") endif() option(ENABLE_PRINTING "Enable debug printing" OFF) + if(ENABLE_PRINTING) add_definitions(-DENABLE_PRINTING) endif() -### Require out-of-source builds +# Require out-of-source builds file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH) + if(EXISTS "${LOC_PATH}") - message(FATAL_ERROR "You cannot build in a source directory (or any directory with a CMakeLists.txt file). Please make a build subdirectory. Feel free to remove CMakeCache.txt and CMakeFiles.") + message(FATAL_ERROR "You cannot build in a source directory (or any directory with a CMakeLists.txt file). Please make a build subdirectory. Feel free to remove CMakeCache.txt and CMakeFiles.") endif() if(ARM_PROJECT) -include_directories(extern/CMSIS_5) + include_directories(extern/CMSIS_5) endif() include_directories(src) add_subdirectory(src) + # Testing only available if this is the main app # Emergency override MODERN_CMAKE_BUILD_TESTING provided as well i option(PACKAGE_TESTS "Build the tests" OFF) option(PACKAGE_TUTORIALS "Build the tutorials" OFF) -#if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR MODERN_CMAKE_BUILD_TESTING) AND BUILD_TESTING) -# #add_subdirectory(TESTS) -# set(PACKAGE_TESTS ON) -#endif() + +# if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR MODERN_CMAKE_BUILD_TESTING) AND BUILD_TESTING) +# #add_subdirectory(TESTS) +# set(PACKAGE_TESTS ON) +# endif() if(PACKAGE_TESTS) - enable_testing() - include(GoogleTest) - add_subdirectory(TESTS) + enable_testing() + include(GoogleTest) + add_subdirectory(TESTS) endif() + if(PACKAGE_TUTORIALS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") add_subdirectory(tutorials/error_handling) add_subdirectory(tutorials/custom_operator) endif() -add_subdirectory(tanh_model) +add_subdirectory(tanh_model) \ No newline at end of file diff --git a/TESTS/CMakeLists.txt b/TESTS/CMakeLists.txt index 150d1b80..a8720c6b 100644 --- a/TESTS/CMakeLists.txt +++ b/TESTS/CMakeLists.txt @@ -28,54 +28,56 @@ endmacro() # Core package_add_test_with_libraries(test_types core/test_types.cpp utensor_core core "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_alloc allocators/test_arenaAllocator utensor allocators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_context core/test_context utensor core "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_quantparams core/test_quantization_params utensor core "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_alloc allocators/test_arenaAllocator.cpp utensor allocators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_context core/test_context.cpp utensor core "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_quantparams core/test_quantization_params.cpp utensor core "${PROJECT_DIR}/test-data/") # Tensors -package_add_test_with_libraries(test_ramtensor tensors/test_ramtensor utensor tensors "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_buffertensor tensors/test_buffertensor utensor tensors "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_romtensor tensors/test_romtensor utensor tensors "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_ramtensor tensors/test_ramtensor.cpp utensor tensors "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_buffertensor tensors/test_buffertensor.cpp utensor tensors "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_romtensor tensors/test_romtensor.cpp utensor tensors "${PROJECT_DIR}/test-data/") # Operators -package_add_test_with_libraries(test_arith operators/test_arithmetic utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_matrix_ops operators/test_matrix utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_convolution_no_bias operators/test_convolution_nobias utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_convolution_bias operators/test_convolution_bias utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_dws_convolution operators/test_dws_convolution utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_relu operators/test_relu utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_maxpool operators/test_maxpool utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_avgpool operators/test_avgpool utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_squeeze operators/test_squeeze utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_argmax operators/test_argmax utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_argmin operators/test_argmin utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_reshape operators/test_reshape utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_arith operators/test_arithmetic.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_matrix_ops operators/test_matrix.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_convolution_no_bias operators/test_convolution_nobias.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_convolution_bias operators/test_convolution_bias.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_dws_convolution operators/test_dws_convolution.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_relu operators/test_relu.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_maxpool operators/test_maxpool.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_avgpool operators/test_avgpool.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_squeeze operators/test_squeeze.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_argmax operators/test_argmax.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_argmin operators/test_argmin.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_reshape operators/test_reshape.cpp utensor operators "${PROJECT_DIR}/test-data/") package_add_test_with_libraries(test_dequantize operators/test_dequantize.cpp utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_quantize operators/test_quantize utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_quant_dws_conv operators/test_quantized_dws_conv utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_quant_fully_connect_2 operators/test_quant_fully_connect_2 utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_fully_connect operators/test_fully_connected utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_sq_conv2d operators/test_sq_conv2d utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_sq_softmax operators/test_sq_softmax utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_sq_logistic operators/test_sq_logistic utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_quantize operators/test_quantize.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_quant_dws_conv operators/test_quantized_dws_conv.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_quant_fully_connect_2 operators/test_quant_fully_connect_2.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_fully_connect operators/test_fully_connected.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_sq_conv2d operators/test_sq_conv2d.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_sq_softmax operators/test_sq_softmax.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_sq_logistic operators/test_sq_logistic.cpp utensor operators "${PROJECT_DIR}/test-data/") package_add_test_with_libraries(test_sq_tanh operators/test_sq_tanh.cpp utensor operators "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_transpose operators/test_transpose utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_transpose operators/test_transpose.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_sum operators/test_sum.cpp utensor operators "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_rsqrt operators/test_rsqrt.cpp utensor operators "${PROJECT_DIR}/test-data/") # Includes -package_add_test_with_libraries(test_top_include library/test_top_include utensor library "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_top_include library/test_top_include.cpp utensor library "${PROJECT_DIR}/test-data/") # Models -package_add_test_with_libraries(test_model1 model/test_model1 utensor model "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_model2 model/test_model2 utensor model "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_model1 model/test_model1.cpp utensor model "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_model2 model/test_model2.cpp utensor model "${PROJECT_DIR}/test-data/") # TODO Figure out why these tests have accuracy issues. Might just be a copy paste issue # package_add_test_with_libraries(test_layer_1_quantize model/test_layer_1_quantize utensor model "${PROJECT_DIR}/test-data/") #package_add_test_with_libraries(test_layer_2_dws_conv2d model/test_layer_2_dws_conv2d utensor model "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_layer_3_dws_conv2d model/test_layer_3_dws_conv2d utensor model "${PROJECT_DIR}/test-data/") -package_add_test_with_libraries(test_layer_4_maxpool model/test_layer_4_maxpool utensor model "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_layer_3_dws_conv2d model/test_layer_3_dws_conv2d.cpp utensor model "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_layer_4_maxpool model/test_layer_4_maxpool.cpp utensor model "${PROJECT_DIR}/test-data/") # package_add_test_with_libraries(test_layer_5_qFC model/test_layer_5_qFC utensor model "${PROJECT_DIR}/test-data/") # using integration test instead of layer-by-layer tests above -package_add_test_with_libraries(integration_test model/integration_test utensor model "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(integration_test model/integration_test.cpp utensor model "${PROJECT_DIR}/test-data/") #Error Handlers -package_add_test_with_libraries(test_simple_error_handler error_handlers/test_errorhandler utensor error_handlers "${PROJECT_DIR}/test-data/") +package_add_test_with_libraries(test_simple_error_handler error_handlers/test_errorhandler.cpp utensor error_handlers "${PROJECT_DIR}/test-data/") diff --git a/TESTS/operators/constants_rsqrt.hpp b/TESTS/operators/constants_rsqrt.hpp new file mode 100644 index 00000000..ce28ea76 --- /dev/null +++ b/TESTS/operators/constants_rsqrt.hpp @@ -0,0 +1,1052 @@ +#ifndef constants_rsqrt_hpp +#define constants_rsqrt_hpp + +static const float s_ref_out_0[4032] = { + 2.6154723, 1.8674766, 1.026633, 1.0673095, 2.0313673, 1.0274915, 1.3785888, 1.178071, 4.1243744, 1.4203848, + 2.8844483, 1.2538745, 1.0683347, 1.0738071, 2.4626853, 1.4289689, 1.3627982, 1.7100172, 2.0252109, 1.0499591, + 2.0802183, 1.3981457, 1.2074412, 4.131493, 1.3092914, 1.4288423, 1.1260158, 1.1094493, 1.9524782, 1.8023204, + 1.2328861, 1.8562901, 2.3602726, 2.8071365, 4.4801455, 1.410781, 1.0297937, 1.3193313, 1.1214782, 1.048038, + 2.1946921, 1.9920124, 1.2528112, 1.137734, 1.2911931, 1.4088776, 1.0695944, 1.1165328, 1.2167261, 1.4320979, + 1.9407467, 1.5858473, 1.1708902, 2.9373746, 1.3791493, 2.419772, 1.5890125, 1.2061579, 2.4307823, 1.734795, + 1.3023238, 1.3859777, 2.5694478, 1.498915, 1.0274484, 2.2303216, 1.181618, 1.0804945, 1.6532419, 2.7454548, + 1.3882337, 8.2694, 4.063604, 1.3829381, 1.9386765, 1.2825704, 1.0930458, 1.4884856, 1.5402132, 1.2541816, + 1.072291, 17.23841, 1.4634625, 2.7176986, 1.7471385, 1.2209904, 2.50029, 1.1139818, 1.8242311, 5.860945, + 7.6213655, 2.2325923, 1.2451738, 2.7704122, 1.0778612, 1.1061031, 1.1063666, 2.5418918, 1.5060589, 1.119048, + 1.0338349, 1.1788838, 1.2659066, 1.2767044, 1.0112141, 1.0292531, 1.5199907, 1.3332427, 1.0915022, 1.0003233, + 2.0553288, 1.2873222, 1.1153083, 2.2525768, 1.3115076, 1.1799505, 1.7892394, 1.4375596, 1.0220898, 2.32846, + 2.1460218, 1.0526569, 4.271596, 3.7057235, 1.7693871, 1.5561984, 1.1034003, 1.3110205, 2.3059678, 1.2333282, + 1.667741, 1.0778729, 1.552742, 5.344108, 1.1427317, 1.1822625, 1.3318729, 1.2600136, 2.6176846, 1.163559, + 1.2886683, 1.2321827, 3.4828923, 1.4474206, 1.618134, 2.8184605, 1.4296005, 4.1338825, 1.8169296, 1.5410008, + 1.5176868, 1.8861154, 1.9592514, 2.835093, 1.4797587, 1.0234472, 2.5903316, 1.0667657, 1.0523406, 1.7516161, + 1.4759488, 1.9831076, 1.9397097, 1.5562822, 1.0499284, 2.434435, 1.7830974, 1.5442672, 1.2547255, 1.4711, + 3.6902518, 1.0980203, 6.769646, 1.502283, 6.2672772, 1.1339366, 1.041302, 1.4261917, 3.781666, 1.0226959, + 1.2745043, 1.7482631, 1.0913097, 3.213228, 1.0068223, 1.0395823, 1.1004437, 1.0877765, 1.2566632, 1.0186824, + 2.5278528, 1.1168329, 1.1913314, 1.1402862, 1.4353012, 1.0007734, 1.0127133, 1.5814078, 1.5215691, 4.659446, + 1.8712972, 1.0115315, 3.6757681, 1.5526472, 3.4196675, 1.3936856, 2.7635975, 1.0089473, 1.0477974, 2.5533748, + 1.1596924, 1.829876, 1.3274906, 1.0723834, 2.674085, 2.6163075, 1.9958048, 1.7483597, 2.7990615, 1.7361119, + 1.3662066, 1.4304432, 1.6984257, 1.0961883, 1.0319365, 1.5593495, 1.3710448, 1.2392794, 1.3756509, 1.3316736, + 1.241987, 1.2042485, 2.2797062, 4.3216176, 1.5924441, 5.1876206, 1.142484, 1.0366236, 1.2900016, 1.2692126, + 1.5748384, 1.9382184, 1.2649199, 1.1577487, 2.5789483, 1.4248987, 4.128206, 1.5485739, 1.1576617, 6.6778855, + 1.2118356, 1.048079, 1.185569, 1.8344432, 1.0023054, 1.0942373, 1.1287376, 3.8347855, 3.5039864, 1.6012596, + 1.6303244, 1.2876493, 8.647163, 1.5236311, 1.0585127, 1.4844608, 1.1615635, 2.978278, 1.8516308, 1.015599, + 1.5304047, 1.3986503, 1.036162, 1.2552096, 2.6804895, 1.0813069, 1.2331119, 1.4676768, 7.0475655, 1.2472317, + 1.1157519, 1.1476486, 1.9877613, 1.1576109, 1.4760803, 1.0304528, 1.296532, 1.3435416, 5.128308, 1.8977885, + 1.042675, 55.260605, 1.0742371, 1.7956178, 1.319041, 2.0631604, 1.9577543, 3.7422922, 1.6561307, 1.1369066, + 2.7984526, 2.3353071, 2.4297802, 1.7559073, 1.4144914, 1.8039422, 1.1551933, 1.7078316, 1.3404759, 1.0241457, + 1.0463544, 1.8094879, 1.4268821, 1.446554, 2.0824647, 1.0217744, 1.0354066, 1.8463583, 1.7283168, 2.4996052, + 1.2649366, 1.1703669, 1.1945162, 1.2373993, 2.508433, 1.4911554, 1.2316368, 1.8595657, 1.5082786, 1.7277488, + 2.8081377, 1.4334248, 1.0299987, 1.5443575, 1.3137194, 1.4783318, 1.1945086, 1.8894086, 1.18296, 1.4714903, + 1.6441172, 1.4097893, 2.989061, 1.1013477, 1.0393465, 1.2972476, 1.1168637, 1.865946, 2.4467587, 1.0318962, + 1.0820909, 2.6012394, 2.0322127, 1.4770479, 1.3712438, 5.719979, 1.7692013, 1.1113708, 1.1035147, 1.7945342, + 1.859565, 1.3404781, 2.1126401, 1.014644, 1.4260213, 1.1394508, 1.2714857, 1.0742588, 1.0039839, 1.4551208, + 1.4910305, 2.0142343, 2.2054071, 1.0027046, 1.3689927, 2.0229983, 1.4993553, 1.454383, 1.2070302, 1.6473224, + 1.7793602, 1.2409185, 1.0897148, 1.9865254, 2.6218848, 11.749564, 3.913292, 1.4345684, 1.3328041, 1.0970249, + 1.0776634, 1.4722359, 2.0349112, 1.2339289, 5.5267544, 8.142191, 2.4356687, 2.8170152, 1.3041539, 1.1059798, + 1.3644525, 2.119397, 1.0506518, 1.1035503, 1.2311236, 1.0659463, 1.1373605, 1.132705, 1.6023396, 2.1359394, + 1.6801863, 2.5420094, 3.161369, 1.2183231, 1.6164784, 1.1930764, 1.1110604, 1.0464163, 1.064413, 1.0274141, + 1.0187522, 1.9599193, 2.408252, 3.1151776, 1.4125097, 1.4512291, 1.1984532, 1.0788319, 1.0342455, 1.00626, + 1.6238362, 1.1701471, 1.5277534, 3.64431, 1.49912, 1.8077933, 2.3686788, 3.1933277, 1.3122833, 1.0297879, + 1.4182978, 1.6099712, 2.2507513, 1.3748648, 5.382824, 3.3439755, 1.3043128, 1.4422635, 1.4299288, 1.0572269, + 1.3232101, 1.1606201, 4.848556, 1.0059621, 3.953598, 1.2961594, 1.0148593, 1.3051884, 3.7828462, 1.359512, + 1.3602835, 1.1829487, 1.1984056, 1.1234442, 1.8906131, 1.7837951, 1.0026492, 1.025059, 1.6788973, 1.0354552, + 1.6616235, 1.3669173, 1.0027056, 1.6619723, 1.1482593, 1.1938015, 1.4513274, 2.4260182, 2.313899, 1.1013073, + 1.469922, 3.4186888, 5.4685225, 2.398535, 1.0044702, 1.7495358, 1.0859259, 1.386519, 1.7124182, 1.3102971, + 1.0868715, 4.8682346, 1.0980455, 1.6916307, 1.0834, 1.777831, 2.1924155, 2.521378, 1.2942729, 1.7682718, + 1.264476, 1.3001939, 1.3965417, 1.921652, 1.0513829, 1.1623305, 6.286306, 1.2794931, 1.119356, 2.0059886, + 3.8405194, 1.0754346, 1.8343064, 1.9657568, 1.4677242, 1.1683471, 1.3912487, 1.1194897, 1.0540115, 2.5921538, + 1.9490272, 1.3942292, 1.028221, 1.2951853, 1.9734954, 1.083261, 1.3671995, 1.4799572, 2.4638069, 2.4153605, + 1.2153817, 1.9492447, 1.876682, 1.831237, 1.5604155, 1.3663477, 1.1805944, 1.6736981, 4.411028, 2.7595904, + 1.1067046, 1.2782636, 2.1129904, 1.3832679, 4.1309843, 3.9402618, 1.029794, 6.7299814, 2.3689833, 2.0433357, + 1.0824848, 1.2113751, 1.032332, 1.247933, 6.6698422, 1.7142775, 1.0481641, 1.1342405, 1.053037, 1.3980733, + 2.6062095, 1.1087664, 1.6456715, 1.6634147, 1.719805, 1.2473989, 1.098716, 1.221079, 1.6630689, 1.1004398, + 1.0968362, 2.2154586, 1.8568382, 2.0240304, 2.0994976, 1.0310433, 1.0876865, 1.7092941, 1.2699784, 1.6898056, + 2.1751163, 4.1629887, 1.0764141, 3.427345, 1.0388218, 1.1515787, 1.2102801, 1.0103341, 1.5576674, 1.1480736, + 1.23304, 1.0430256, 1.0513746, 2.3897235, 1.299589, 4.732108, 1.2556822, 1.2414382, 1.046096, 1.5243056, + 1.7587416, 1.978603, 2.0616574, 1.0940173, 1.4376985, 1.648489, 2.8094585, 1.567446, 4.801331, 1.1782337, + 1.1577928, 1.0209694, 1.1261731, 1.3599489, 1.1456261, 1.8061734, 1.6163782, 2.5457282, 1.2676458, 1.1477406, + 1.5474964, 1.3233787, 3.986919, 2.4288137, 1.2557663, 1.9612724, 1.2443708, 1.1122271, 2.3948352, 1.3769269, + 1.0229864, 1.3955818, 1.2610755, 1.1169567, 1.3198817, 1.3635157, 1.8774067, 3.3453357, 1.5689127, 1.0496128, + 1.2676706, 1.0033475, 2.0783274, 1.5076094, 1.0854665, 1.5004919, 1.4349554, 1.2514646, 1.1041294, 1.2549307, + 1.3558472, 1.8577712, 2.8558445, 1.0373844, 2.593025, 2.8405266, 1.0339869, 1.0082061, 1.4332293, 1.2304132, + 1.8424016, 1.3205361, 1.275834, 1.9619634, 1.6586797, 1.1333331, 1.7469714, 1.2757728, 1.0182856, 2.9251995, + 4.4020925, 1.0219288, 1.4654728, 1.500668, 2.3712218, 1.3677306, 1.5878503, 2.1905677, 2.3387058, 2.823646, + 1.2917702, 1.4974033, 1.3474859, 2.7648222, 2.010204, 1.1937973, 1.7429641, 1.1150244, 2.2821844, 3.690908, + 1.1591904, 1.0621825, 3.066047, 1.6060433, 1.336384, 6.051007, 1.0584222, 1.5567954, 1.5160307, 1.2164805, + 1.1201086, 1.5924217, 3.7449846, 1.0230082, 1.2267725, 2.12978, 1.1521957, 1.4716136, 2.5379794, 1.0057479, + 1.2051895, 1.0791572, 1.0949341, 2.411916, 1.0946227, 2.1685894, 1.0940834, 2.3001366, 1.2798104, 1.1546241, + 1.516256, 1.6029766, 1.2266943, 3.7296424, 7.4936166, 1.2501464, 1.1727258, 1.0381263, 7.3042073, 1.2008171, + 1.4438939, 13.062616, 1.1439719, 1.651097, 1.9014103, 4.2603197, 1.5010448, 1.082987, 1.967942, 1.1047432, + 1.4503804, 1.4694185, 1.3024267, 1.2071419, 1.416596, 5.7160788, 1.8540428, 1.957467, 1.2742275, 1.4176726, + 1.2112529, 1.6759562, 1.2965981, 1.297279, 8.418188, 1.1933252, 1.3710837, 8.024527, 1.1403124, 1.211447, + 1.0769576, 1.121873, 1.1158617, 1.2001461, 2.7741241, 1.2574258, 1.1891528, 2.02583, 1.498529, 2.0810869, + 1.1167593, 1.025413, 2.2829988, 1.4051183, 1.8836446, 1.1503948, 1.0903097, 6.078838, 1.6468421, 1.7886674, + 3.760236, 1.450364, 1.3908054, 1.3054239, 1.9084846, 1.5014458, 1.0083772, 3.4418247, 1.0280874, 1.0524802, + 1.3346558, 2.274181, 2.9993076, 1.4317741, 1.0944407, 1.1824058, 1.1642983, 2.1248002, 1.5989145, 1.0363853, + 1.9061831, 1.2447257, 1.2067422, 1.6504972, 1.1973137, 1.0087523, 1.2317045, 2.495778, 1.1444628, 1.0968766, + 1.4885911, 4.5956264, 4.688549, 3.0112617, 1.1617588, 1.1780751, 2.1870184, 1.5084224, 1.4551315, 1.5717633, + 1.1288514, 1.5029176, 1.8949134, 1.1901315, 2.816975, 1.1445965, 1.1215708, 2.8786526, 1.3212131, 1.8861401, + 1.2165471, 1.1820588, 2.6018243, 3.5420148, 2.0695431, 1.4980109, 1.2424986, 1.5055244, 1.19336, 1.1822138, + 1.7381213, 3.4162195, 1.4045619, 1.5716256, 9.148967, 2.2433488, 1.2386004, 1.7136359, 8.171108, 1.6490712, + 1.0433515, 1.3495805, 2.0457544, 2.999634, 1.1438745, 1.2495922, 1.9794439, 1.0638423, 1.592289, 2.9125602, + 2.027351, 2.5602028, 1.0195796, 1.3853658, 2.5390637, 2.6171076, 1.4860501, 15.433435, 1.3757952, 2.0638356, + 1.2299414, 1.417893, 1.4938211, 1.0297151, 1.2653183, 1.838292, 1.0973773, 1.4471697, 1.03049, 1.1706982, + 1.7441492, 2.150496, 1.7692473, 5.6134977, 1.9763304, 1.4253098, 3.0085797, 1.0973194, 1.2164212, 2.3484762, + 1.1974375, 1.06719, 1.7694297, 2.5186052, 3.1791854, 10.121512, 1.3926163, 2.1836965, 1.6784867, 3.254319, + 1.4258028, 1.7447726, 1.2319891, 1.6351402, 1.5726647, 5.3735976, 1.1542825, 2.150531, 4.225277, 1.1574857, + 1.0009906, 1.4150671, 1.2285541, 7.8012958, 2.7485623, 1.1681527, 1.3264805, 1.6862048, 1.2301394, 1.0680747, + 1.5355196, 1.5291519, 1.1767466, 1.1516411, 4.020109, 1.3207556, 3.341889, 2.273443, 1.056225, 2.955213, + 1.8543898, 2.9673803, 1.20901, 1.0301968, 1.27402, 1.7042022, 1.0649265, 1.3016266, 1.0062976, 1.102278, + 2.100117, 7.0835156, 1.724282, 1.3048158, 1.456292, 1.4575474, 1.1796753, 1.9766655, 1.2043409, 1.2938845, + 1.0861413, 1.7241329, 1.8923454, 1.5705146, 1.0799935, 2.529251, 2.5140903, 1.2605233, 1.2365222, 1.2608397, + 1.0853026, 2.5417314, 1.0621198, 1.0249041, 1.8426695, 1.2153914, 2.805578, 1.7721853, 1.0377696, 1.4973239, + 2.4759085, 1.0730804, 1.7968917, 1.1471123, 2.2885017, 8.864679, 1.6795245, 1.1060216, 1.4179881, 6.2336116, + 2.7894762, 3.2673411, 1.2494578, 2.322251, 1.3046865, 1.1854628, 2.4096158, 4.519826, 3.4288557, 1.0899925, + 1.7402385, 3.1685023, 1.9682643, 1.718825, 1.3124763, 3.7236638, 1.6178468, 1.8010795, 1.897626, 1.0828713, + 1.3432173, 1.1262788, 1.3194468, 2.5719147, 1.6409372, 2.0394697, 1.8918606, 1.0146928, 2.9563475, 1.0381048, + 1.7638438, 1.2583629, 1.1152141, 1.118948, 1.0780278, 1.5132113, 1.6644276, 1.6379393, 1.1100718, 1.7477802, + 1.0948337, 1.1256009, 1.1635133, 2.171338, 1.2833333, 3.6692522, 2.1214945, 1.1756661, 1.2191534, 1.6445905, + 4.9249554, 1.0389025, 1.365499, 1.0336899, 1.3187354, 2.0057318, 1.8814565, 1.1913368, 1.7038774, 1.1913292, + 1.0415238, 1.0232272, 1.3194764, 1.1450253, 1.2774308, 3.120909, 1.2797194, 4.6678615, 1.1774597, 1.0577825, + 1.0213858, 1.5830988, 1.1752515, 2.5174623, 1.5110769, 1.0848176, 2.173854, 1.0156379, 2.7366974, 1.4593077, + 1.4460245, 7.9837837, 1.2847604, 1.0142423, 1.3814644, 1.2566677, 1.4009255, 2.4588764, 1.1030935, 7.9833593, + 1.7878361, 1.202219, 5.5031495, 1.8781837, 1.0227432, 1.8366417, 2.311759, 1.0410893, 3.2973957, 2.6750588, + 1.1970329, 5.832332, 1.0076859, 2.2458913, 1.8472855, 1.6125138, 1.3228589, 1.2042712, 1.1495246, 1.4017079, + 2.2359412, 1.39078, 1.1171111, 1.3738351, 1.7774162, 1.8608853, 1.0378684, 1.6738415, 1.3757378, 2.2038124, + 1.1857468, 1.8904635, 1.3989936, 1.679041, 1.2636272, 1.4363272, 1.5323834, 1.0063996, 1.088107, 2.1701925, + 1.3627781, 1.2173363, 1.2870085, 1.3643302, 1.2974046, 1.4984502, 3.352587, 1.2734232, 2.1042037, 1.2702028, + 1.4457897, 1.0944115, 1.2814596, 1.2411413, 1.6857748, 1.1789719, 1.511964, 1.8972661, 2.0419571, 1.3610556, + 1.1726203, 1.1207387, 1.3273224, 1.8513638, 2.668905, 1.0934415, 1.3961433, 1.1555289, 1.4926068, 6.340527, + 1.1162174, 1.2348144, 1.1133596, 1.2455572, 1.7334183, 2.043109, 1.3451211, 1.0199306, 1.8988942, 1.4477521, + 2.0097213, 1.1660641, 1.0911239, 1.3777648, 5.963816, 4.5159183, 1.3179779, 1.2297543, 1.2773643, 1.5724722, + 1.8325258, 1.0834723, 1.2853435, 1.612861, 1.3287973, 1.1638843, 1.1522726, 1.0508076, 1.0427313, 1.2566229, + 3.5013025, 1.9464189, 2.1266074, 2.9180272, 1.7148672, 1.0440962, 1.1240002, 2.097048, 1.0573716, 1.3856286, + 1.845261, 1.253288, 1.0650002, 5.6873856, 1.4789172, 1.0771699, 1.33989, 1.6944216, 1.1631763, 1.1455607, + 1.5230008, 1.6627157, 1.3996619, 1.5009389, 7.9696555, 1.0027643, 1.044222, 2.0275578, 1.2068998, 1.0729991, + 1.1942042, 1.340388, 1.5595751, 1.2092994, 1.373862, 1.363606, 2.3145795, 1.3203212, 1.1456362, 1.1537818, + 1.6886085, 1.2206523, 1.1074423, 1.128402, 1.0819434, 1.089463, 3.3889756, 1.4636397, 1.4488348, 1.1470938, + 1.1816714, 1.0531573, 1.1280944, 1.0163658, 1.1843425, 1.3375703, 2.3006394, 2.3604238, 2.9396553, 1.0427134, + 3.4630334, 1.273311, 1.1145695, 1.3473904, 5.0333467, 1.3464634, 2.7164392, 1.081064, 1.0577681, 1.199199, + 3.4946773, 1.2676263, 1.0812883, 1.036828, 1.3623209, 3.0652845, 1.0826176, 1.1608534, 3.0425465, 1.0168546, + 1.1797639, 1.0698866, 1.1408292, 1.101182, 1.3048449, 1.2240971, 5.127922, 1.8572273, 1.0193697, 1.4108068, + 1.3520558, 1.8115293, 1.6270069, 1.9354619, 1.1965173, 2.09436, 1.0148041, 1.7266291, 2.0171452, 4.5799766, + 1.3746305, 1.1099232, 1.005419, 1.1657381, 1.6308485, 1.594141, 1.1048689, 1.0006762, 1.2483089, 1.0598001, + 1.4640853, 2.059122, 1.732419, 1.1185707, 1.0927322, 1.3680557, 1.1591103, 1.1275349, 1.1637375, 1.6432823, + 18.024998, 1.6371126, 1.4389255, 1.3503414, 2.0142827, 2.9034796, 1.3016726, 2.500559, 1.3546894, 1.7987514, + 1.4222801, 1.3530235, 2.3772588, 1.1427132, 2.114345, 1.0809859, 1.0623403, 1.5409439, 3.3074164, 1.3804839, + 1.0836587, 1.0885661, 1.2213303, 2.00241, 1.0298234, 3.5313544, 1.7732223, 1.1040585, 1.005839, 1.1477699, + 7.959988, 2.247842, 1.2576551, 1.7903159, 1.2617183, 1.2138946, 1.3182333, 3.6777678, 1.2779981, 2.51089, + 1.3754083, 1.3089032, 3.9332318, 1.0388979, 2.3452911, 1.2970991, 1.3964978, 4.8663306, 3.3349273, 2.3236208, + 1.1723589, 1.4122165, 1.0800649, 1.3239145, 1.1554488, 2.39961, 1.6513065, 1.2721735, 2.1863608, 1.0283544, + 1.1460329, 1.6883256, 2.285756, 3.9049072, 1.6270272, 2.124348, 1.1353052, 1.8383919, 2.7154257, 2.0117285, + 5.267985, 1.1718223, 1.8498385, 5.331526, 1.598927, 1.4167966, 6.4020476, 1.6659245, 3.1240988, 1.9694592, + 1.5216868, 4.972778, 1.1558254, 1.0139712, 1.263968, 1.3306582, 4.2559566, 1.0402952, 1.5468774, 2.290524, + 4.8482914, 4.0952015, 1.1972836, 1.1486591, 1.1456821, 2.883668, 1.7266768, 30.494226, 2.0446398, 1.0540696, + 1.3741065, 18.672272, 1.1289836, 2.063502, 1.1894528, 6.2903967, 1.5336043, 4.443933, 6.7192154, 1.1540191, + 1.0485379, 1.0269383, 1.685206, 1.7269366, 1.9137809, 1.1288677, 1.2920642, 1.0386648, 2.9574027, 1.1950486, + 1.5246702, 1.623208, 1.4351295, 3.5176308, 1.760032, 9.461829, 1.4165782, 2.1582294, 1.4692751, 1.1724061, + 1.0367123, 1.007222, 2.8475606, 1.0576466, 1.0055897, 1.1377023, 1.6179694, 3.3226118, 1.0656978, 2.2776315, + 1.1722834, 1.3793464, 1.0680665, 10.482734, 1.0787458, 1.3150308, 1.1756951, 5.9180617, 1.0450125, 1.3443156, + 1.6401815, 1.2416066, 1.3505677, 1.3299793, 1.795246, 1.8802234, 1.1241713, 1.3432049, 1.4461391, 1.5223446, + 1.3263695, 1.4280684, 1.0789125, 1.113804, 1.2129029, 1.4218969, 1.1505536, 2.656504, 1.405131, 4.14233, + 1.4191256, 1.06803, 1.2760453, 1.4899579, 1.7686161, 1.185282, 1.071541, 1.2021137, 6.2272115, 1.1312917, + 1.0572544, 2.735926, 1.3628691, 1.4156693, 1.109009, 2.481848, 1.9107591, 1.3812231, 2.1286786, 1.19708, + 1.3014268, 1.6084706, 3.071459, 2.7952747, 2.5007362, 1.0627043, 1.0357394, 1.2096751, 1.073847, 1.1823822, + 1.2042371, 2.671147, 1.7335674, 1.0512898, 1.103858, 1.0037212, 2.2688677, 1.2188692, 1.2864935, 4.7116265, + 1.0250036, 1.0343827, 3.471054, 2.5906518, 1.5350893, 1.224627, 1.3954195, 1.5365415, 1.5931885, 1.2760211, + 1.6282526, 2.5437167, 1.4205872, 1.7029693, 1.1971322, 9.379212, 1.2793143, 1.3984452, 1.1179106, 1.0655028, + 2.8573244, 1.8509294, 2.3664587, 1.0051457, 2.6374173, 1.1666043, 1.272807, 3.9589167, 1.0450709, 1.0109664, + 1.1526428, 1.1286131, 1.556051, 1.6769577, 1.1007361, 1.3295301, 1.7404704, 1.0906777, 4.941795, 1.3808465, + 1.2763062, 2.2382166, 1.052962, 2.0627127, 1.7435658, 1.3172462, 1.357721, 2.628363, 1.4177879, 3.5424519, + 3.3715258, 1.5031309, 2.1930933, 1.5179967, 1.2278699, 1.2100391, 1.0313292, 4.88563, 1.0970669, 1.2353405, + 5.9983516, 1.1287444, 1.0146782, 2.2069087, 1.057107, 1.0367103, 1.1933737, 1.0711987, 3.5610902, 2.0696812, + 1.5228096, 2.4061391, 1.1582911, 2.688003, 1.6132798, 1.1125461, 1.4058068, 1.7056898, 1.0530914, 1.0852902, + 1.2572138, 1.9683052, 4.4803495, 1.0996555, 1.2040188, 3.7457237, 2.6063647, 1.6701277, 1.3215505, 3.9654675, + 2.0243778, 1.155107, 1.0118285, 5.7073817, 1.4444149, 1.0167497, 1.024077, 1.3331552, 1.5053209, 1.7259231, + 1.0242114, 1.7727866, 1.7249573, 1.513591, 1.0134785, 1.3946835, 1.1171854, 1.8125743, 1.1096935, 1.4526315, + 1.2222292, 1.8391259, 8.12884, 2.4205198, 1.221407, 1.9260981, 1.2580031, 1.3756669, 2.6961396, 1.8994074, + 1.6290109, 1.0545969, 2.2244422, 1.3214948, 3.7581046, 1.11942, 2.256694, 1.6887494, 1.0451707, 1.4694338, + 1.7383285, 1.4488566, 1.4722992, 7.3035107, 1.4873155, 1.1523656, 4.3082147, 1.1174331, 1.1315484, 1.4181919, + 1.4242576, 1.8622745, 1.8058286, 4.5009303, 1.0597409, 1.0056993, 2.284725, 1.975885, 1.8358953, 1.1225045, + 3.269424, 1.2866468, 1.1231067, 1.0345602, 1.3681034, 1.9742355, 2.7653437, 1.0297494, 1.7519398, 1.0420771, + 1.6669289, 1.8897297, 3.6653013, 1.2167295, 1.642268, 1.4211837, 1.4352089, 1.6528742, 1.0064778, 2.3626194, + 1.3823258, 6.2962203, 1.1381329, 2.895263, 1.0162152, 2.367119, 1.1915771, 12.332652, 3.9543345, 1.4173846, + 7.316035, 1.5180001, 2.6870174, 1.5590757, 2.7447264, 1.8395292, 1.9669335, 2.7558153, 2.5133016, 1.0795243, + 1.9747026, 2.9518068, 1.4599524, 1.1909282, 4.177339, 1.2496924, 2.8352258, 1.055999, 4.0146136, 1.7460182, + 1.464149, 3.9350753, 1.8957795, 1.3833208, 1.1237668, 1.2656381, 1.9410688, 4.9399834, 1.1285176, 4.612823, + 1.3623464, 1.0122423, 1.3592061, 1.4850236, 1.254885, 1.0841303, 3.710586, 2.387265, 1.1922516, 1.047005, + 2.3894136, 1.8067979, 1.6979333, 1.8146514, 1.33653, 2.2740986, 1.1541251, 1.370709, 1.022705, 1.0654639, + 1.0709009, 1.9117875, 1.0636234, 1.4929932, 1.0121514, 1.3059609, 1.1625136, 2.0769494, 5.728386, 3.0768096, + 1.0822347, 1.021315, 1.3070142, 1.048144, 1.100581, 1.6085757, 1.3147936, 1.0271605, 1.440778, 1.8176578, + 1.5157802, 1.3903973, 1.8815166, 1.2633022, 13.515722, 1.5476238, 1.6272042, 3.9578924, 4.777119, 11.351271, + 1.2413594, 1.2084485, 1.1556518, 1.2866124, 1.7047118, 1.2348679, 1.5656668, 1.0238146, 1.0062243, 1.3583804, + 1.1087224, 1.0563872, 1.4564581, 2.4054947, 6.5687604, 1.2948552, 1.45131, 1.0557729, 1.7891608, 12.103837, + 1.1031213, 2.6843662, 9.777355, 7.388064, 1.1743636, 1.5408365, 2.521921, 1.6648799, 1.7792175, 2.5685253, + 1.049087, 1.2261589, 1.1849574, 1.1001054, 1.0438311, 1.6279883, 1.249026, 1.0475577, 1.1391453, 1.5761342, + 1.6726763, 1.2877998, 2.0880632, 1.7364271, 1.2565397, 1.1009873, 5.7067833, 1.2511835, 1.7865846, 1.3019109, + 1.1862872, 1.026229, 4.651021, 1.0333253, 1.2090861, 1.8696516, 1.4906919, 1.2067612, 1.3008436, 2.986729, + 3.0105915, 1.5419588, 2.0549622, 10.745438, 1.0596455, 2.1436255, 1.1663066, 1.0003248, 1.0020118, 3.0665743, + 3.2691321, 1.2286156, 2.3375294, 1.1984653, 1.1909387, 1.0165049, 1.5536705, 2.1215546, 2.5160959, 3.8028896, + 1.2028913, 3.4677489, 1.1580901, 1.0411538, 4.922693, 3.1986241, 3.0079422, 1.5706432, 1.0911499, 1.2913284, + 1.059637, 1.0811342, 1.1261656, 1.8655761, 1.1565114, 5.7295732, 1.1145988, 1.18628, 1.0027168, 2.8817773, + 1.2710348, 1.1686207, 1.910478, 1.5721823, 1.3729035, 1.7814958, 1.3944689, 2.3107502, 2.056855, 3.3463604, + 1.3799512, 1.6878622, 2.6085784, 2.0891237, 1.0518823, 2.7858377, 2.832096, 1.3123591, 1.5003457, 1.1122782, + 1.2421261, 1.3720865, 1.0386089, 1.5682229, 3.0189123, 1.1731443, 2.0659995, 1.2576813, 5.3147135, 1.1291908, + 1.1881349, 2.5009809, 5.472054, 1.2290499, 1.4690491, 2.3790033, 1.4079461, 3.028762, 1.2446879, 2.351104, + 2.051603, 1.1599874, 1.255616, 1.0072793, 3.762056, 1.6002213, 1.0134331, 1.6121265, 1.7571485, 2.6338193, + 1.1761761, 1.2271167, 2.1657906, 1.679177, 4.93494, 1.2012423, 1.617664, 2.3399374, 2.876128, 1.0446905, + 1.4354901, 1.1659555, 1.4945943, 1.1558231, 1.1930258, 2.5059755, 1.7038667, 1.1493232, 1.33105, 1.3441951, + 1.1403763, 1.6684769, 1.8147397, 1.2502385, 1.3307756, 1.287046, 1.6277125, 1.0768516, 1.7038122, 1.3420463, + 1.4994221, 1.1160555, 2.6188807, 4.22051, 1.077821, 1.3384218, 1.76133, 1.0895877, 1.1528214, 1.4376384, + 1.025595, 1.1862776, 16.394497, 4.931162, 1.2909049, 3.2323613, 1.0553709, 1.2240556, 1.2567611, 1.5612228, + 1.8648179, 1.2606846, 2.7465286, 1.4857665, 1.0191557, 1.082078, 1.0729855, 1.1102504, 1.935252, 1.3486962, + 1.6177486, 2.611253, 1.7544445, 1.3928112, 1.7193516, 1.7944446, 1.6995336, 1.3436714, 1.8231932, 1.2136488, + 2.4743528, 1.337306, 1.1136022, 2.5497568, 1.2509563, 1.0318874, 7.6951437, 1.0927036, 1.2850335, 1.270566, + 1.3398137, 2.4650612, 1.3103254, 1.6162835, 3.7931616, 1.0479753, 1.3386116, 1.0057701, 1.2760438, 3.7049384, + 1.2250712, 1.0407513, 2.259706, 1.6575469, 1.509709, 1.016408, 1.257894, 1.1039903, 1.3059725, 1.0319986, + 1.605308, 1.7688693, 1.1850297, 1.6397725, 1.7021778, 1.0429562, 1.6982504, 1.7374123, 2.3882258, 1.6298198, + 1.282283, 1.5698811, 1.0970746, 1.0809835, 2.671006, 1.272345, 1.1480345, 2.028694, 1.1561152, 1.5125107, + 1.6887358, 1.1105348, 1.2664111, 1.6343735, 1.1389916, 1.1288743, 1.5205795, 1.022907, 1.5396686, 1.041826, + 1.3446938, 1.1795422, 1.0736072, 1.323997, 1.6106175, 1.1330776, 1.1834757, 1.0080936, 1.3531761, 1.4444926, + 1.5519131, 1.5547487, 1.1715683, 1.2210844, 5.2462316, 1.298081, 1.076173, 1.2231638, 2.0999274, 4.63524, + 1.0483725, 1.0216205, 2.1100588, 1.3177888, 1.4827392, 1.554883, 1.1219226, 1.9783833, 5.3662233, 1.677567, + 1.3168689, 2.7960484, 1.2442408, 1.4590521, 1.177317, 1.5886602, 1.3721598, 1.2318319, 1.11291, 2.321031, + 1.0053344, 1.0438246, 10.224036, 1.4080789, 1.0158638, 1.9898537, 1.960251, 1.087716, 3.4485714, 1.5959823, + 1.8693509, 1.3012913, 1.6202736, 1.8129516, 1.0760252, 1.1666783, 1.967412, 10.7668, 1.1568472, 1.7532743, + 1.9888604, 3.29861, 2.0777524, 1.5492941, 1.7749326, 1.0639898, 1.8066839, 1.5077779, 4.240497, 2.0196252, + 1.3536739, 7.6458635, 1.7370856, 1.5757202, 1.0709741, 1.3771383, 4.8564773, 1.4126434, 3.9100564, 1.3731385, + 1.3046668, 4.382586, 1.5815289, 2.8958967, 2.031051, 1.2436426, 1.6167151, 1.7833014, 1.9295509, 2.1799963, + 1.3134851, 1.0974265, 1.5740643, 1.897287, 1.2765125, 2.8214262, 1.7670773, 1.169407, 1.0300072, 1.2197574, + 1.0999975, 1.0754803, 1.0824292, 1.0700406, 1.2694082, 1.2009784, 1.420677, 8.145637, 1.3505045, 1.5104556, + 1.051998, 1.3178777, 1.1741875, 1.4308268, 2.6770878, 1.4791012, 1.557815, 1.6075863, 1.5501251, 1.7882707, + 2.1984253, 2.2595334, 1.1787609, 1.0744016, 1.0594608, 1.3007146, 1.315131, 3.4337678, 1.4288554, 1.588427, + 1.6639647, 1.8603508, 1.2986546, 1.0613, 1.5611861, 1.2572274, 2.779858, 2.5286174, 1.5927392, 1.5269601, + 1.3566803, 1.586024, 1.4693136, 2.0383952, 1.5284096, 5.293801, 1.0563601, 1.1581838, 1.1868972, 1.6929308, + 1.0070134, 1.4134771, 1.5339795, 2.9630327, 2.9549134, 1.6329466, 2.8601468, 1.2294545, 1.6171315, 1.8006736, + 1.6809932, 2.3412082, 2.0558689, 1.1379318, 1.7466012, 1.0679923, 2.0974762, 1.1565894, 1.3332181, 1.5330787, + 1.064724, 1.4453462, 1.0400276, 1.170764, 1.371662, 1.6696854, 1.0307895, 1.4120371, 1.3374509, 1.370735, + 1.121896, 2.5352263, 2.4477916, 1.106944, 1.9963564, 2.134275, 1.2655094, 2.822029, 1.0468392, 2.0604877, + 1.0972157, 1.0915712, 1.2610496, 1.9750048, 1.0181254, 1.42753, 1.1992716, 1.1474767, 1.8200771, 1.2438354, + 1.4025711, 1.7533087, 3.557878, 1.2163225, 2.2535517, 1.3020233, 2.5811777, 1.1770204, 1.2448132, 1.4339536, + 1.2577772, 1.05158, 1.0221368, 3.7796497, 1.2496017, 1.2453928, 1.141104, 1.6052743, 1.1001487, 1.3300704, + 1.0587256, 1.0272188, 3.4514277, 1.1602428, 1.1340954, 2.3164864, 1.7596719, 1.0775872, 1.6780246, 1.6165407, + 2.0356581, 1.0059055, 1.1718316, 1.4192408, 1.0436592, 1.2727438, 1.2527155, 5.3701143, 1.0946519, 2.0214014, + 1.4515737, 1.8825552, 2.7954805, 1.2285637, 1.0313749, 1.4178013, 4.1057997, 1.1668513, 1.7719, 1.2578837, + 2.344521, 5.671488, 2.058728, 1.3830806, 2.8156955, 2.4599276, 1.0943489, 1.2500376, 1.265366, 1.0132756, + 1.4354898, 1.243602, 1.001971, 1.327361, 1.4581394, 2.8387988, 1.0261786, 1.3964915, 1.0664188, 1.6027149, + 3.932496, 1.0954237, 1.2706895, 1.2725917, 1.2258685, 1.0858841, 1.082435, 1.0850314, 1.2915335, 5.803097, + 1.3376106, 1.4693652, 2.3105245, 1.3998169, 1.602032, 1.0960141, 2.3304408, 1.0753888, 1.181926, 1.7289834, + 5.8667135, 1.4943302, 1.7534266, 2.1911106, 1.8202012, 1.7639095, 1.2725627, 1.7182885, 1.9169204, 1.1672782, + 1.1674217, 1.1716659, 1.0346094, 1.6234665, 2.617397, 1.6824425, 1.5105125, 2.1616895, 2.000081, 1.1806885, + 1.9469819, 1.0313773, 3.976309, 1.5428652, 1.1526736, 1.0226822, 3.7476203, 1.2389803, 1.8239089, 1.1970963, + 2.536801, 1.6431577, 1.1825173, 1.0469347, 2.337477, 1.0726879, 1.6127007, 2.0651426, 1.2579874, 1.6145731, + 1.7904195, 1.0588589, 1.1818212, 1.0784991, 5.9699574, 1.3206278, 2.2136939, 1.061481, 2.3679392, 1.8463159, + 1.7805696, 1.0601453, 2.1219027, 1.5395445, 2.0635376, 1.1034315, 1.2597396, 1.0439533, 1.2966177, 1.3204397, + 23.965103, 3.9196835, 1.0456069, 1.1292411, 1.4914, 2.1801655, 5.561092, 1.2441676, 2.0749507, 1.0107076, + 1.5802895, 1.0536276, 2.912117, 1.3716697, 1.0011611, 1.3547087, 1.4139276, 1.0017704, 5.1108007, 1.0929284, + 1.0036085, 1.2007269, 1.2317001, 1.5428798, 1.4176067, 1.208639, 1.0585897, 1.3257791, 2.3785555, 1.6128964, + 21.154472, 1.4576645, 1.7717357, 1.0656439, 9.340843, 1.04328, 1.3523315, 1.3161787, 1.4428302, 1.1000493, + 1.3397865, 2.208512, 1.479631, 1.3101939, 1.9954503, 1.954582, 1.2477227, 1.2632128, 1.4262041, 1.3917347, + 4.636624, 3.3849134, 4.1412163, 2.3073094, 1.2171272, 1.4036759, 2.1930852, 1.1705803, 1.4132339, 1.0734718, + 1.2145257, 1.7805821, 2.1015072, 1.0820956, 1.0970179, 10.706969, 2.0825636, 1.4103827, 3.9513896, 2.96473, + 1.5509255, 1.2003661, 2.5585582, 1.2282898, 1.4374797, 1.0237443, 1.2111932, 1.3244491, 1.0465132, 2.109055, + 1.5945894, 1.2584165, 2.1717854, 2.58038, 1.0029696, 2.7099752, 6.8589406, 3.9543788, 1.0708231, 1.1593682, + 1.3614149, 1.8373126, 1.2859658, 1.5461079, 1.3493654, 2.5057015, 1.056646, 1.2848248, 3.6205704, 1.2569859, + 1.1383189, 2.1097941, 2.8935978, 6.517139, 1.0097961, 1.0272343, 1.1652956, 1.6089995, 1.6762321, 2.7367404, + 1.2889467, 1.3532212, 1.3337432, 1.2671251, 1.2835675, 1.00117, 1.5539695, 1.4749111, 1.4357967, 1.023037, + 1.0355153, 1.2468523, 4.0248184, 1.9586114, 1.3446178, 3.1115296, 1.1876338, 2.022912, 1.8779114, 1.7720069, + 1.6800694, 1.6087433, 1.6389, 2.3499556, 1.1493303, 1.0072244, 1.319525, 1.531113, 2.231077, 1.8875924, + 2.120097, 1.0176663, 1.0465051, 2.0159688, 1.0543864, 1.0020744, 1.8985353, 1.2497917, 1.0783625, 6.0459027, + 1.6585705, 1.2458522, 1.3636162, 1.505882, 2.377312, 1.9062908, 2.8873107, 1.8306696, 3.0453422, 1.2856548, + 2.218331, 1.0952394, 1.12667, 4.2078233, 1.9137408, 2.4457388, 1.130854, 1.5974785, 1.0778769, 1.1533157, + 1.6792933, 1.1035478, 1.3539705, 1.0850619, 1.2415377, 1.2128333, 1.0261889, 1.1373377, 1.7738514, 1.1753784, + 1.3915652, 1.359246, 1.971326, 5.688637, 1.7538927, 1.4905224, 1.3060141, 1.2836055, 1.585638, 1.1606773, + 1.4690063, 1.0432466, 1.899463, 2.6852071, 1.9718752, 1.4643002, 1.0156524, 1.4299408, 1.4679313, 6.478515, + 1.3756905, 3.3661406, 1.0222529, 1.2674727, 1.3263502, 1.5191417, 1.0155662, 1.0311216, 2.842326, 1.5176495, + 3.6134233, 1.3195931, 1.0268581, 2.0330746, 1.1994456, 1.0085313, 2.62964, 1.5778093, 1.1432728, 1.6245676, + 1.8624963, 4.07629, 1.4349072, 1.3905756, 1.1883576, 1.7368126, 1.5796398, 1.0721031, 1.1647583, 4.1217422, + 1.0265328, 1.1146144, 2.4189572, 2.675495, 1.0204103, 1.040722, 1.0464872, 1.1567446, 2.570154, 4.574695, + 2.177227, 1.7808787, 1.0492004, 1.2573748, 1.4957658, 1.5161674, 3.7934318, 2.4721951, 1.0314827, 1.5971475, + 1.5557586, 1.700155, 1.2149373, 1.3466127, 1.3120321, 1.8214579, 2.9088914, 1.0744864, 1.168782, 5.257213, + 1.0126647, 1.384412, 1.7223078, 1.3538843, 1.1584996, 1.4197272, 2.4226458, 1.2263533, 1.0001248, 2.662267, + 1.5581273, 1.7253492, 2.5451796, 3.4499803, 1.3363045, 1.2344545, 1.860184, 1.138557, 1.2841445, 1.4912264, + 4.0422635, 1.3222803, 1.020629, 2.1212025, 2.1186743, 1.152603, 1.2067187, 2.81527, 1.1871767, 1.829262, + 2.6716743, 1.3779675, 1.2726432, 6.989496, 2.9535518, 1.2055433, 1.1984465, 1.3474556, 1.8922489, 1.2123096, + 1.1943009, 7.0478573, 1.0549524, 1.3727573, 1.0122824, 1.5075052, 2.1858354, 1.4483951, 2.8196664, 1.6678375, + 1.9341869, 1.3677593, 1.1210182, 1.1001732, 1.2264849, 1.0403479, 1.7918649, 1.0611535, 1.1537379, 1.2454277, + 2.554449, 1.2770809, 1.0070779, 1.4397378, 1.5622692, 1.0115582, 1.8857403, 2.13331, 2.5445805, 2.194837, + 1.1603321, 1.128326, 2.1520395, 2.2120023, 1.3701632, 1.4897165, 1.0065012, 1.6715281, 1.8999869, 1.0678278, + 2.3468275, 1.0396351, 2.552991, 1.9422092, 1.9427837, 2.6184077, 2.106052, 6.6118026, 1.1891186, 3.5448232, + 2.1768074, 2.6017056, 1.3604302, 1.0046628, 1.9435998, 1.717189, 1.0655179, 2.9800844, 1.295272, 1.0270443, + 1.3842216, 1.4712791, 1.2026126, 1.0665305, 2.9702675, 1.0379577, 1.077319, 1.0613047, 2.1950848, 1.874752, + 1.0342512, 1.8291694, 1.690949, 1.6830375, 2.3284163, 1.7721902, 1.8686132, 1.014107, 1.166137, 1.2323309, + 1.4038281, 2.868513, 3.5312338, 2.6480243, 1.1373298, 1.0191597, 1.2719983, 1.3010001, 1.2451007, 1.3289686, + 1.5522228, 2.0205705, 1.274008, 1.2046154, 2.3278122, 2.4416726, 1.3874238, 1.951852, 1.0077997, 1.2067896, + 1.648891, 2.962848, 1.5383165, 1.6563765, 2.672542, 1.0536246, 1.4907651, 2.3776379, 1.1487297, 1.0684246, + 2.97469, 1.1758926, 1.3468921, 1.1634583, 1.2746935, 3.147231, 1.1471983, 1.3059, 1.2106239, 1.077931, + 1.0969679, 2.0679564, 1.3389622, 1.2028373, 1.0162475, 1.4003547, 1.1595937, 1.2541629, 1.6559883, 1.6126435, + 1.0228636, 1.1259348, 1.0003357, 1.2076402, 1.167755, 1.9490862, 1.8510835, 1.0892757, 1.1046338, 1.0250456, + 1.2031687, 2.3130548, 1.0753624, 2.3241558, 4.5318384, 1.8197647, 1.0318199, 1.6428455, 1.6779457, 1.2033182, + 2.1556873, 2.3657541, 1.0463172, 1.2850744, 7.07662, 1.0674775, 1.067033, 2.3193545, 1.214821, 1.3480518, + 1.5957115, 2.3182976, 1.1274375, 1.4501939, 1.750439, 1.107058, 1.4559556, 2.1441486, 1.0133806, 1.8082829, + 4.5943656, 1.3378062, 1.2630545, 1.2401725, 1.4222807, 2.6472929, 2.439488, 1.8109515, 1.029616, 1.6918538, + 2.6291642, 2.4767945, 1.0089067, 1.0449075, 1.4660319, 2.088774, 1.4170684, 1.592792, 1.1421525, 1.8137412, + 1.0285754, 1.2807548, 1.0002899, 1.4562856, 1.3858258, 1.1223147, 1.245448, 1.4143143, 1.9234426, 3.2900817, + 1.129079, 1.5030773, 1.0254228, 1.1242031, 1.3714827, 1.0112734, 1.0816144, 1.6640891, 2.0156496, 2.107836, + 1.7979559, 1.0305419, 1.0980704, 5.3485894, 1.3641331, 1.7752397, 1.048051, 1.2986503, 3.7451694, 1.0059519, + 1.0914367, 1.0936023, 1.1652089, 1.5568279, 1.9228839, 1.1886128, 1.3750024, 2.3353794, 1.0213507, 1.6152624, + 1.1749059, 1.640381, 1.0054641, 1.9187973, 1.0903333, 1.1787008, 1.2260774, 2.1476805, 4.5181594, 1.0524464, + 1.9046844, 2.3088713, 2.2641716, 1.0029995, 1.130042, 1.5879799, 1.9127824, 1.1398021, 1.0447881, 1.466865, + 1.494042, 2.4079223, 1.1846433, 1.0402339, 1.2931203, 1.6921778, 1.0947334, 1.3605477, 3.197269, 1.0669044, + 2.274652, 1.5471228, 4.1544404, 1.1468536, 1.1027744, 1.4917718, 1.0912064, 2.0196416, 1.95119, 5.3044357, + 4.3880553, 1.0276423, 3.7604134, 1.2567713, 1.2321677, 3.263725, 3.412433, 5.355946, 1.2003642, 1.0074965, + 1.2284832, 1.6705216, 1.4017099, 1.1939721, 2.9221637, 1.2922939, 2.1576438, 3.1417122, 4.8978677, 2.3177166, + 3.4452493, 1.0114727, 2.6736162, 1.0201393, 1.3091252, 1.0050397, 1.0874045, 1.3600454, 1.2320893, 1.0771384, + 1.112577, 1.848918, 1.2402989, 1.1288288, 1.263237, 2.0455825, 1.0403706, 1.2887644, 1.6345727, 2.2551107, + 4.835443, 1.1049912, 2.8172934, 1.5349398, 1.1672869, 1.24694, 4.7771907, 1.6096786, 1.0066684, 1.1487242, + 1.0070338, 1.0549319, 1.6472967, 1.3734297, 2.664623, 1.5251409, 3.5916448, 1.2666496, 1.1042491, 1.3416009, + 2.9068234, 1.2961104, 1.175173, 1.2797483, 1.2238015, 1.4210353, 3.4614327, 1.431807, 1.3769513, 4.3322115, + 1.364058, 1.2668711, 1.0798441, 1.2493192, 1.4168515, 1.6268122, 1.0878457, 1.1257393, 1.5287098, 1.0693222, + 1.148164, 1.3751048, 1.5355166, 2.8189197, 1.1488175, 1.239355, 1.1759783, 1.0335861, 1.4148308, 1.4329782, + 5.632903, 1.571836, 1.0754786, 1.2126073, 3.1313355, 1.1571989, 1.5416204, 1.581723, 1.5206282, 1.0712439, + 1.0769446, 2.0687692, 1.2322574, 1.9281582, 1.7669457, 1.0528352, 1.1432271, 1.5257351, 1.6503359, 4.282556, + 1.4297532, 1.0984201, 1.041197, 2.692528, 1.2171974, 4.35721, 1.5432981, 1.0070214, 1.6568323, 1.4148271, + 2.9870684, 1.3316278, 1.0300128, 1.7530472, 1.3456377, 1.8499719, 1.2124527, 1.1284968, 1.086718, 1.3393027, + 1.2112098, 3.6276264, 1.3749553, 1.2776892, 1.5054343, 1.2155801, 5.32399, 1.0715439, 1.2818217, 1.1973518, + 1.0898097, 2.0137484, 1.185806, 1.5680693, 1.660519, 1.6863625, 1.37898, 1.2171888, 1.1046678, 2.1032674, + 1.0257757, 1.2093953, 1.0745846, 1.0479035, 1.9748092, 1.6042638, 3.9639187, 2.192239, 2.7474492, 2.3067064, + 1.1283172, 2.1741943, 2.2680395, 1.0414019, 1.1383113, 2.5264397, 1.6264037, 1.0619403, 8.048378, 3.9602745, + 2.7466524, 1.1291056, 3.477774, 1.6617566, 2.3759594, 4.4391804, 1.0605752, 1.6215695, 1.0429882, 1.2443224, + 3.563666, 1.9433321, 4.874119, 1.0655289, 9.618204, 1.7728924, 19.442696, 1.0018549, 1.0445429, 1.6370903, + 3.0423687, 1.4378232, 1.0702782, 1.5510261, 1.1819526, 1.2203984, 1.2668817, 1.4738302, 1.969256, 1.9333901, + 1.2223417, 1.571809, 1.79563, 1.3804599, 1.0965388, 2.3691795, 1.4794543, 1.6110578, 1.2015454, 1.6097776, + 2.3833523, 1.2546426, 1.2872732, 1.3341818, 1.3317472, 1.1804135, 1.012014, 1.0489167, 1.338747, 1.0176045, + 1.7433487, 2.4396846, 1.4299431, 1.6031121, 1.2632507, 1.6113639, 1.1091634, 1.3143615, 1.3921126, 2.33254, + 2.4097552, 1.8090831, 1.973658, 1.3023646, 1.8297747, 2.0187836, 1.3121507, 1.0586342, 1.5662166, 2.99746, + 1.0970803, 1.0722593, 3.1083832, 2.6038356, 1.1638949, 1.3624774, 2.471961, 2.1110125, 1.2821091, 1.2573785, + 1.0919231, 1.5360379, 1.2061807, 1.1234607, 1.0053388, 1.0644828, 1.136766, 2.128217, 2.0251293, 1.4036801, + 1.287891, 1.4170933, 1.1230917, 1.1378338, 3.163007, 1.3928764, 1.1809022, 1.3577764, 1.3306419, 1.511064, + 2.7662985, 9.352769, 1.2553328, 1.6265908, 12.452897, 1.2903296, 1.0961516, 2.7883062, 7.491786, 1.1578047, + 1.6134176, 1.3323236, 2.0240939, 1.0356874, 1.185918, 1.1535674, 1.4546602, 2.2731035, 1.2638189, 1.2446742, + 1.6010474, 1.3954879, 4.9993086, 1.0574493, 1.0945836, 3.746034, 2.0017235, 1.5740215, 1.1407485, 2.4679356, + 2.041387, 1.0692896, 1.6147841, 2.5624747, 1.7702694, 1.134223, 2.2839944, 2.4100416, 1.4471043, 1.0547295, + 1.1680971, 2.3719542, 1.1080183, 1.0854387, 2.1030657, 1.2842859, 1.1133851, 1.3104347, 1.2570173, 1.3360851, + 1.8756589, 1.8814085, 1.9176697, 1.7134377, 2.3248975, 1.5617145, 1.2386049, 1.4401188, 2.1457121, 1.3835007, + 2.1885402, 1.9365817, 1.7400581, 1.0833131, 1.2789804, 1.170094, 1.9785969, 1.0368677, 1.0638582, 1.30948, + 1.181725, 1.4345925, 8.141516, 1.0810713, 1.4048448, 2.7570949, 1.8737698, 1.5518068, 1.2227284, 1.436413, + 7.0251813, 1.040842, 1.8194826, 1.4562873, 1.0373056, 1.0235971, 2.26682, 1.7716298, 6.467845, 1.3348472, + 1.6278772, 1.4594009, 2.111835, 1.2672403, 1.1225746, 1.6152087, 1.5077895, 1.394769, 1.1084646, 1.4653736, + 1.7135507, 1.6693362, 2.2909317, 3.9258068, 1.0738901, 1.440855, 1.0648605, 1.5212666, 1.0180203, 1.9999641, + 1.0846846, 1.4235551, 4.1078806, 1.1146737, 1.6510713, 1.1833428, 3.7478745, 1.0964006, 1.1479368, 1.2556362, + 1.986863, 1.7721174, 2.1979418, 1.1016328, 1.4762194, 1.4507518, 1.670348, 5.075538, 1.5402694, 2.6685643, + 1.6333333, 1.1305361, 1.1770755, 1.1300373, 1.6601475, 1.4526759, 1.7857171, 1.2969307, 1.1133062, 1.1940681, + 1.1961241, 1.654482, 1.1264385, 1.1542574, 1.0045544, 1.1742691, 1.9493939, 1.2511127, 1.6705828, 3.9572127, + 1.1710906, 2.1673734, 1.0172176, 1.0099401, 1.1916887, 1.0828826, 1.1107002, 2.6424365, 1.4223485, 1.5393021, + 1.9933585, 1.5551302, 7.6065793, 1.4115852, 2.2590604, 1.8772026, 1.4421811, 1.1480572, 1.3225433, 1.0372689, + 1.0575186, 1.0957822, 2.0812497, 1.0333472, 1.17058, 2.1427596, 1.1439546, 2.8570464, 2.735169, 2.721541, + 1.216289, 1.0074131, 2.583215, 1.4474099, 3.2120302, 1.1497687, 30.923998, 2.220717, 1.0655713, 1.7772623, + 1.1392169, 1.1981916, 2.6544693, 5.2911153, 1.0637193, 1.2864114, 1.7814051, 1.2031735, 1.8693271, 1.5583217, + 1.9060229, 1.046146, 1.0927535, 1.267883, 1.2394806, 1.0341035, 1.2200819, 1.192788, 1.8538617, 2.8538835, + 1.0653071, 1.3802016, 2.2654955, 3.2108123, 1.3528405, 1.0834949, 5.441135, 5.9139276, 1.3289309, 2.2800624, + 1.4285728, 2.4990342, 1.981239, 8.557621, 1.460905, 1.1398282, 1.4430561, 1.1939296, 1.1381735, 1.6635091, + 1.6490394, 1.6500182, 1.3902475, 1.008461, 1.9365242, 2.2876377, 3.089638, 1.1397241, 1.4681413, 3.3965871, + 1.5260849, 1.049542, 1.5935006, 1.1174852, 1.0481784, 5.2985387, 1.0985225, 1.0598978, 1.0189661, 1.2935869, + 1.4722555, 1.2826989, 14.635293, 1.5838847, 1.0025667, 2.3498478, 1.299639, 1.5969574, 1.2975997, 1.8381778, + 2.225568, 1.3796017, 3.1218204, 1.1985259, 1.062268, 1.232086, 3.33148, 2.698554, 1.75201, 1.8022146, + 3.6252897, 1.555088, 2.9819634, 1.538595, 1.8745652, 2.2774959, 1.6797694, 3.285168, 1.7653251, 1.3326149, + 1.0421344, 2.1322103, 1.233007, 1.4419147, 1.830513, 2.4949594, 1.0608509, 1.5150113, 1.5959245, 1.5956188, + 1.0292267, 1.3140852, 1.9100422, 1.0028436, 1.0774403, 1.1151873, 3.0904734, 4.5474296, 1.2786152, 1.6690866, + 1.0220606, 4.535087, 1.0311446, 8.735879, 1.0244095, 1.2286763, 1.478632, 1.5755198, 1.0409536, 1.6235974, + 1.265021, 1.6181871, 1.3189417, 1.2804178, 1.0311304, 3.856672, 1.0116677, 1.4993623, 1.1592077, 2.351572, + 1.3590121, 3.2425852, 1.0693108, 1.0800452, 1.2970095, 1.7219952, 2.8042562, 2.4262295, 2.8338387, 1.1255085, + 1.1039813, 1.4060657, 1.9917006, 6.2740817, 3.4194438, 1.1583927, 5.4480124, 1.2032032, 1.5821041, 1.5764638, + 1.1962651, 1.1431328, 1.3477181, 1.2460603, 1.2549458, 1.0254912, 1.1202456, 1.1543705, 1.610861, 1.3153828, + 1.0802497, 1.2716275, 1.3452094, 3.3707037, 1.9843364, 1.0950323, 1.7915487, 1.0634785, 1.4080492, 1.0101941, + 1.2229196, 2.1236513, 1.2607071, 1.042675, 1.3490655, 1.1390712, 2.7973208, 1.1595898, 1.280305, 1.063449, + 1.2867571, 1.4145741, 1.8307613, 1.6477393, 1.8258283, 2.095605, 1.3786575, 1.2481759, 1.6145102, 1.2113106, + 3.2047076, 4.3113403, 1.7379376, 1.2299643, 1.0816432, 1.209291, 2.8207, 1.0557576, 1.2016557, 3.529495, + 1.5477203, 1.3191997, 3.4944863, 1.1685989, 1.434942, 3.5126603, 1.8122158, 3.340213, 5.6825895, 1.9519073, + 1.2609317, 2.4831924, 1.8927119, 6.112344, 1.4449657, 1.9117937, 1.4560969, 2.0415506, 1.3418432, 1.1156868, + 1.0470351, 2.142871, 1.2388346, 5.7468834, 1.445124, 3.5611172, 1.2169867, 1.1757392, 1.2371756, 1.410559, + 1.1206452, 3.5683503, 1.1265857, 1.0463002, 3.1673274, 2.0833313, 2.050845, 1.5429077, 1.5044786, 1.5392263, + 1.363263, 1.9692754, 2.2277496, 1.6173217, 2.5101044, 2.858326, 1.2254723, 2.3678184, 1.1815209, 1.0636415, + 1.6159158, 2.9052567, 1.4335803, 1.5625749, 3.8561795, 1.492623, 2.3061552, 1.2361494, 1.1781121, 1.676977, + 1.3648036, 1.149123, 1.0841854, 6.5463223, 2.6348033, 2.9643672, 1.0700364, 1.1452295, 1.891729, 1.5184994, + 1.052948, 1.4312478, 1.9280924, 1.2061955, 1.2969648, 1.6330626, 1.6077267, 1.0777256, 2.2470112, 1.0111618, + 7.9570127, 1.4408616, 1.7676815, 2.5022795, 1.1218908, 1.411382, 1.0013584, 1.6750052, 1.4535964, 2.1453426, + 1.3883002, 1.1564697, 1.7663026, 2.0479877, 1.6096337, 2.0966337, 1.0448049, 1.0405794, 2.4770708, 1.0449466, + 1.0079206, 1.1845361, 1.8006258, 6.4899225, 1.466217, 5.9511876, 1.9825312, 1.3426195, 4.1411357, 1.10988, + 1.6538581, 1.8192937, 1.0301098, 1.2401788, 2.3573508, 1.0376064, 1.2081897, 1.349493, 4.7187815, 1.4934176, + 1.0738198, 1.8974822, 1.5246674, 1.0304073, 2.2239099, 1.4762789, 5.2588334, 1.0094804, 1.5305506, 1.3125674, + 1.0601609, 1.3260825, 1.2184374, 1.3384945, 1.3794023, 1.2842343, 1.6205562, 1.1783227, 1.8784461, 7.044792, + 1.147203, 2.8018527, 8.651484, 1.701272, 1.4036112, 1.2032762, 15.606328, 1.4246153, 1.1033818, 1.9652922, + 1.3798854, 1.0885019, 2.623303, 1.2717961, 1.2585891, 1.2491969, 1.2129335, 3.5062659, 2.0723038, 1.025046, + 1.0297325, 1.1343406, 1.230634, 11.538348, 2.7084153, 1.5997908, 1.9358754, 2.6299598, 1.6894996, 2.0928538, + 1.0614158, 1.2649497, 2.2715538, 1.0437564, 4.378673, 1.1963537, 3.3216608, 2.4399796, 3.2643638, 1.019386, + 1.1030326, 2.440287, 1.2040377, 1.465539, 1.1466724, 1.23625, 1.025039, 1.1334429, 1.2962674, 1.0160799, + 1.0260187, 1.3998106, 1.8336923, 2.496935, 1.0268831, 1.9066058, 1.3436843, 2.409701, 2.3649251, 1.0945803, + 2.3113947, 1.8842138, 1.1469865, 1.4204135, 1.5373335, 1.0120773, 1.0007294, 1.1080137, 2.6412387, 1.1200613, + 1.0666404, 1.7312175, 1.3324492, 1.1583722, 2.1911502, 1.3767779, 1.1383393, 1.0232879, 1.108565, 2.1510794, + 3.1314306, 1.0464265, 1.2709162, 1.0645729, 1.5227332, 1.4165069, 1.1873496, 1.2101185, 2.592321, 1.0823869, + 1.1138709, 1.662803, 1.1120676, 1.3381414, 3.4591386, 3.2087011, 7.5621133, 1.6906779, 1.3260413, 1.5424409, + 1.080458, 1.0493588, 13.372915, 5.7406483, 1.43819, 1.0545444, 1.1447785, 1.4517193, 1.5938518, 1.0738907, + 1.4954064, 1.1600846, 1.0183429, 1.1102921, 1.3087242, 1.0437984, 2.6376863, 1.0964385, 2.3703077, 1.3817655, + 2.463904, 1.4865454, 1.0131879, 1.0934275, 1.0109037, 1.5556259, 4.932284, 2.2834036, 2.13472, 1.2747829, + 1.3591629, 1.2710228, 1.1892785, 1.2652526, 1.5493689, 1.7920588, 1.7171586, 1.7451843, 1.2250627, 1.2985725, + 1.1265002, 1.9431348, 1.5639647, 1.3114859, 2.0580611, 1.0458012, 8.679875, 1.052975, 7.7058396, 2.1394007, + 1.9267383, 2.5251806, 1.0602367, 1.2142512, 4.0718765, 1.0296791, 1.0694641, 1.6544152, 1.0555353, 1.1022673, + 1.1238624, 1.4975891, 1.360345, 1.946154, 1.1914523, 2.8442073, 1.1309273, 1.3646202, 1.0097046, 1.9232479, + 1.4124821, 2.8230648, 1.0690129, 1.0964175, 1.1216284, 1.1700155, 1.7266308, 1.2081257, 1.3215622, 2.7799578, + 1.354491, 1.4508772, 1.38787, 1.136249, 1.6166995, 1.0731878, 1.1354407, 1.9153483, 1.1877631, 5.129723, + 1.4402089, 1.3740011, 1.0785251, 1.3433695, 3.184171, 2.2259936, 2.1731458, 1.3236732, 1.9115276, 1.4698606, + 1.7407284, 1.4935143, 1.0831035, 1.53221, 1.1870555, 4.5793757, 1.1710228, 1.3261391, 1.7842731, 1.4781446, + 1.0256082, 2.1267269, 1.2367013, 1.0376652, 1.8538822, 1.2253274, 1.1220074, 1.0871813, 1.0854336, 1.0338845, + 1.0106416, 1.1135662, 1.2680652, 1.2848178, 5.2989373, 7.149812, 1.4292521, 1.1643043, 1.1189762, 2.7674034, + 1.4375502, 1.6797514, 1.1195164, 9.813601, 2.2462554, 2.5669067, 4.183121, 1.3082682, 1.2363808, 1.4108802, + 1.2486367, 6.0103245, 1.0744752, 2.956876, 8.572339, 1.0991303, 1.7924088, 1.410575, 1.3510141, 3.072228, + 1.1708659, 1.0062462, 1.1452183, 2.237072, 3.510853, 1.1011289, 1.3245777, 1.7480283, 1.0790907, 3.335536, + 1.3010768, 1.4218552, 1.3359499, 39.87803, 4.1562276, 1.2451257, 1.515071, 1.1710352, 1.3147447, 1.0843279, + 1.5225531, 1.6185967 +}; + +static const float s_ref_in_0[4032] = { + 0.14618397, 0.2867409, 0.94878876, 0.8778479, 0.2423389, 0.9472041, 0.5261754, 0.72053826, 0.058787346, 0.49566472, + 0.12019169, 0.6360508, 0.87616384, 0.8672563, 0.1648854, 0.48972738, 0.5384394, 0.34197867, 0.24381447, 0.9071003, + 0.23109055, 0.5115583, 0.6859114, 0.05858493, 0.58334756, 0.48981428, 0.78869855, 0.81242836, 0.26231766, 0.30784774, + 0.6578913, 0.29020727, 0.17950463, 0.1269033, 0.049821377, 0.5024359, 0.9429736, 0.57450294, 0.79509366, 0.91042876, + 0.20761216, 0.25200891, 0.637131, 0.77253544, 0.59981537, 0.50379455, 0.8741013, 0.80215263, 0.67548287, 0.48758972, + 0.26549864, 0.3976283, 0.72940314, 0.11589944, 0.52574766, 0.17078555, 0.3960458, 0.6873716, 0.1692419, 0.33227956, + 0.58960617, 0.52057993, 0.1514678, 0.44508815, 0.9472834, 0.20103192, 0.71621895, 0.85655403, 0.36587036, 0.13266957, + 0.5188894, 0.014623523, 0.060558796, 0.5228709, 0.26606596, 0.60790765, 0.8369957, 0.45134723, 0.42153955, 0.6357393, + 0.8697103, 0.003365159, 0.46691394, 0.13539338, 0.32760108, 0.6707729, 0.15996289, 0.8058306, 0.30049706, 0.029111505, + 0.017216086, 0.20062315, 0.6449708, 0.13029003, 0.8607447, 0.81735134, 0.8169619, 0.15476966, 0.44087553, 0.79855084, + 0.9356158, 0.719545, 0.62401736, 0.61350656, 0.9779434, 0.94396436, 0.4328307, 0.5625764, 0.83936477, 0.9993535, + 0.23672128, 0.603428, 0.8039149, 0.19707918, 0.58137774, 0.7182447, 0.31236553, 0.48389184, 0.95724225, 0.18444312, + 0.2171359, 0.90245664, 0.05480492, 0.072820544, 0.31941426, 0.41292393, 0.82136035, 0.58180976, 0.18805873, 0.65741956, + 0.3595364, 0.860726, 0.41476429, 0.03501463, 0.7657932, 0.71543825, 0.5637342, 0.62986803, 0.14593697, 0.7386236, + 0.6021682, 0.65864253, 0.08243656, 0.47732103, 0.3819188, 0.1258856, 0.4892949, 0.058517218, 0.30291712, 0.42110872, + 0.4341458, 0.2811017, 0.2605071, 0.124412894, 0.4566865, 0.954705, 0.14903533, 0.8787432, 0.90299904, 0.32592833, + 0.4590472, 0.25427723, 0.2657826, 0.41287947, 0.9071531, 0.16873443, 0.3145212, 0.41932917, 0.63518834, 0.46207833, + 0.073432446, 0.8294289, 0.021820664, 0.4430946, 0.025459051, 0.7777184, 0.9222456, 0.49163663, 0.06992519, 0.956108, + 0.6156266, 0.32717967, 0.839661, 0.09685385, 0.9864936, 0.9252995, 0.8257799, 0.84512436, 0.63323104, 0.9636568, + 0.15649354, 0.8017216, 0.7045872, 0.7690811, 0.48541582, 0.9984547, 0.9750502, 0.39986396, 0.43193328, 0.0460608, + 0.28557122, 0.97732973, 0.07401228, 0.41481495, 0.085512996, 0.51483774, 0.1309334, 0.98234296, 0.9108467, 0.15338075, + 0.7435571, 0.29864597, 0.56746244, 0.8695605, 0.13984585, 0.14609063, 0.25105214, 0.32714355, 0.12763655, 0.33177567, + 0.5357561, 0.4887185, 0.34666252, 0.83220375, 0.9390613, 0.4112568, 0.5319817, 0.6511208, 0.5284251, 0.563903, + 0.6482848, 0.689553, 0.19241643, 0.053543568, 0.39434075, 0.037158966, 0.7661253, 0.93058896, 0.6009239, 0.6207708, + 0.40320694, 0.26619172, 0.6249912, 0.74605584, 0.15035391, 0.49252915, 0.05867827, 0.41700006, 0.74616814, 0.02242446, + 0.6809459, 0.9103576, 0.71145296, 0.29716074, 0.9954051, 0.83517396, 0.7848995, 0.06800139, 0.081447005, 0.3900107, + 0.3762287, 0.60312164, 0.013373733, 0.4307649, 0.8924992, 0.45379794, 0.7411636, 0.112737775, 0.2916696, 0.969517, + 0.42696023, 0.5111892, 0.9314183, 0.6346985, 0.1391784, 0.8552675, 0.65765023, 0.46423638, 0.020133615, 0.6428442, + 0.80327594, 0.7592454, 0.253088, 0.7462336, 0.45896542, 0.9417676, 0.5948856, 0.55398476, 0.03802347, 0.2776543, + 0.9198183, 0.00032746792, 0.86656225, 0.31015027, 0.5747558, 0.23492754, 0.26090574, 0.07140434, 0.36459506, 0.7736604, + 0.1276921, 0.18336308, 0.1693815, 0.32433724, 0.49980354, 0.3072945, 0.7493602, 0.3428545, 0.55652153, 0.9534029, + 0.91336083, 0.30541372, 0.49116087, 0.4778931, 0.23059225, 0.9578333, 0.9327779, 0.29333782, 0.3347752, 0.16005051, + 0.6249747, 0.73005545, 0.7008352, 0.6531007, 0.15892601, 0.44973242, 0.65922654, 0.28918576, 0.4395789, 0.3349954, + 0.12681282, 0.48668742, 0.94259834, 0.41928017, 0.57942164, 0.45756853, 0.70084417, 0.28012264, 0.7145947, 0.46183324, + 0.36994267, 0.5031431, 0.11192584, 0.824425, 0.92571914, 0.59422934, 0.80167735, 0.28721154, 0.16703892, 0.93913484, + 0.8540288, 0.14778805, 0.24213731, 0.45836437, 0.53182733, 0.03056407, 0.31948137, 0.8096216, 0.82119024, 0.31052494, + 0.289186, 0.55651975, 0.22405207, 0.9713429, 0.49175406, 0.77020943, 0.61855316, 0.8665271, 0.9920796, 0.47228253, + 0.44980776, 0.24647903, 0.20559967, 0.99461234, 0.5335778, 0.24434805, 0.44482672, 0.47276187, 0.6863786, 0.36850452, + 0.3158437, 0.64940166, 0.8421205, 0.25340295, 0.14546978, 0.0072436333, 0.065300345, 0.48591185, 0.5629468, 0.8309349, + 0.8610606, 0.46136558, 0.24149549, 0.6567795, 0.032738566, 0.015084028, 0.16856349, 0.12601483, 0.5879525, 0.8175335, + 0.53713465, 0.22262573, 0.9059044, 0.8211371, 0.6597762, 0.8800945, 0.77304316, 0.7794106, 0.38948512, 0.21919072, + 0.3542298, 0.15475535, 0.10005748, 0.6737132, 0.38270152, 0.70252776, 0.810074, 0.91325283, 0.882632, 0.9473468, + 0.9635247, 0.2603296, 0.17242336, 0.103046775, 0.501207, 0.47481894, 0.69623816, 0.8591964, 0.9348732, 0.9875964, + 0.37924123, 0.7303299, 0.42844343, 0.07529557, 0.44496644, 0.30598664, 0.17823279, 0.09806478, 0.5806906, 0.9429842, + 0.49712443, 0.38580143, 0.19739902, 0.5290296, 0.03451276, 0.08942807, 0.5878093, 0.48074055, 0.48907018, 0.89467144, + 0.5711397, 0.74236894, 0.04253781, 0.9881815, 0.06397569, 0.5952277, 0.9709308, 0.5870209, 0.06988156, 0.54104555, + 0.5404321, 0.71460843, 0.6962935, 0.79231334, 0.27976584, 0.31427515, 0.9947226, 0.95170486, 0.354774, 0.93269014, + 0.36218858, 0.5351994, 0.99461067, 0.3620366, 0.758438, 0.70167446, 0.47475457, 0.16990721, 0.18677175, 0.8244853, + 0.46281934, 0.08556199, 0.033439517, 0.17382324, 0.991119, 0.3267039, 0.8480073, 0.5201738, 0.34102035, 0.5824523, + 0.84653246, 0.042194605, 0.8293911, 0.3494531, 0.851966, 0.3163873, 0.20804358, 0.15729833, 0.5969641, 0.3198173, + 0.6254301, 0.5915395, 0.51273406, 0.2708012, 0.90464497, 0.7401856, 0.025305152, 0.6108351, 0.79811144, 0.24850953, + 0.067798495, 0.86463344, 0.2972051, 0.25878572, 0.46420634, 0.732582, 0.5166428, 0.7979208, 0.9001385, 0.14882588, + 0.2632475, 0.51443636, 0.9458604, 0.59612334, 0.25676024, 0.8521848, 0.5349784, 0.45656395, 0.16473532, 0.17140996, + 0.6769781, 0.2631886, 0.2839347, 0.29820228, 0.41069508, 0.5356455, 0.71746135, 0.35698152, 0.05139494, 0.13131392, + 0.816463, 0.61201096, 0.2239778, 0.52262163, 0.058599353, 0.064409494, 0.942973, 0.022078633, 0.17818701, 0.23950827, + 0.8534074, 0.6814637, 0.9383421, 0.6421218, 0.02247858, 0.340281, 0.91020954, 0.7773018, 0.90180504, 0.5116112, + 0.1472249, 0.81342924, 0.36924422, 0.36140895, 0.3380972, 0.64267194, 0.82837903, 0.67067564, 0.36155927, 0.8257859, + 0.83122087, 0.20373833, 0.29003596, 0.2440989, 0.22686589, 0.9406892, 0.8452642, 0.3422681, 0.6200223, 0.3502084, + 0.21136594, 0.057701826, 0.8630605, 0.085130334, 0.92665446, 0.75407183, 0.6826974, 0.97964764, 0.4121455, 0.75868344, + 0.657727, 0.9192002, 0.9046594, 0.17510748, 0.59209025, 0.04465711, 0.6342207, 0.6488582, 0.91381216, 0.4303838, + 0.32329273, 0.2554363, 0.23527026, 0.83551, 0.48379838, 0.3679831, 0.1266936, 0.40701914, 0.04337871, 0.7203393, + 0.7459991, 0.95934427, 0.78847814, 0.54069805, 0.76192844, 0.30653572, 0.38274896, 0.15430355, 0.6223062, 0.75912344, + 0.41758096, 0.57099426, 0.062910795, 0.16951632, 0.63413596, 0.25997055, 0.64580345, 0.80837536, 0.17436075, 0.52744627, + 0.955565, 0.51343966, 0.62880766, 0.80154395, 0.57402396, 0.5378729, 0.2837156, 0.08935535, 0.40625834, 0.90769875, + 0.6222819, 0.99333835, 0.23151124, 0.4399693, 0.8487252, 0.44415307, 0.48564982, 0.63850284, 0.82027614, 0.6349807, + 0.5439743, 0.28974473, 0.1226114, 0.9292244, 0.14872587, 0.12393737, 0.9353409, 0.9837874, 0.48682022, 0.6605383, + 0.29459906, 0.5734551, 0.6143441, 0.25978744, 0.36347532, 0.77854705, 0.32766378, 0.614403, 0.9644079, 0.11686623, + 0.051603794, 0.95754385, 0.46563375, 0.44404888, 0.17785072, 0.53456295, 0.39662576, 0.20839465, 0.18283057, 0.12542367, + 0.5992795, 0.44598722, 0.5507462, 0.13081741, 0.24746835, 0.70167947, 0.32917213, 0.8043244, 0.19199884, 0.07340634, + 0.7442012, 0.88634276, 0.106375694, 0.38769078, 0.55993474, 0.027311444, 0.8926519, 0.4126073, 0.43509483, 0.6757555, + 0.7970394, 0.39435184, 0.0713017, 0.9555242, 0.6644647, 0.2204603, 0.7532644, 0.46175587, 0.15524721, 0.9886024, + 0.6884768, 0.85867834, 0.83411133, 0.17189991, 0.834586, 0.21264017, 0.8354089, 0.18901348, 0.6105324, 0.7500992, + 0.4349656, 0.38917565, 0.66454935, 0.07188952, 0.01780808, 0.63985014, 0.7271215, 0.9278964, 0.018743634, 0.6934997, + 0.4796555, 0.005860567, 0.7641336, 0.36682153, 0.2765975, 0.055095434, 0.44382596, 0.85261595, 0.25821137, 0.81936467, + 0.4753747, 0.46313643, 0.58951306, 0.6862515, 0.4983195, 0.030605793, 0.2909112, 0.26098228, 0.6158941, 0.497563, + 0.68160117, 0.3560202, 0.5948249, 0.59420073, 0.014111161, 0.70223486, 0.53195155, 0.015529633, 0.7690458, 0.6813828, + 0.86218953, 0.7945342, 0.8031179, 0.6942755, 0.12994158, 0.6324631, 0.70717144, 0.24366546, 0.4453174, 0.23089767, + 0.8018273, 0.9510478, 0.19186187, 0.5064938, 0.2818396, 0.7556248, 0.8412019, 0.02706194, 0.36871946, 0.31256533, + 0.07072449, 0.47538555, 0.5169723, 0.58680916, 0.2745508, 0.44358885, 0.98345363, 0.084415555, 0.94610643, 0.90275955, + 0.56138587, 0.19335258, 0.111162424, 0.48781037, 0.83486354, 0.7152647, 0.7376859, 0.22149491, 0.3911556, 0.9310167, + 0.2752142, 0.6454352, 0.6867063, 0.3670882, 0.697564, 0.9827224, 0.65915406, 0.16054177, 0.76347816, 0.8311596, + 0.45128322, 0.047348976, 0.04549074, 0.11028159, 0.7409146, 0.72053325, 0.20907164, 0.4394951, 0.4722756, 0.40478623, + 0.78474116, 0.44272053, 0.27849746, 0.7060088, 0.1260184, 0.76329994, 0.7949623, 0.12067616, 0.5728675, 0.2810943, + 0.6756816, 0.7156848, 0.14772165, 0.0797075, 0.23348069, 0.44562554, 0.6477512, 0.4411887, 0.70219386, 0.7154974, + 0.33100903, 0.08568573, 0.5068952, 0.40485716, 0.011946917, 0.19870389, 0.65183485, 0.34053588, 0.014977455, 0.36772335, + 0.91862583, 0.54903805, 0.23894227, 0.111138225, 0.76426375, 0.6404178, 0.25521934, 0.88357925, 0.39441752, 0.11788273, + 0.24329996, 0.15256369, 0.9619615, 0.52103984, 0.15511465, 0.14600134, 0.4528278, 0.0041983128, 0.5283141, 0.23477387, + 0.6610452, 0.49740827, 0.4481287, 0.9431176, 0.6245978, 0.29591775, 0.8304014, 0.4774865, 0.94169974, 0.7296426, + 0.32872498, 0.21623337, 0.31946468, 0.031734586, 0.25602412, 0.4922452, 0.11047828, 0.83048904, 0.6758214, 0.18131244, + 0.69741976, 0.87804425, 0.31939888, 0.15764487, 0.09893918, 0.009761333, 0.5156286, 0.20970821, 0.35494757, 0.09442341, + 0.49190474, 0.32849014, 0.6588496, 0.3740158, 0.40432227, 0.03463137, 0.75054336, 0.21622634, 0.056013107, 0.746395, + 0.9980216, 0.49939704, 0.6625389, 0.016431093, 0.13236976, 0.7328259, 0.56832695, 0.35170567, 0.6608324, 0.8765904, + 0.42412055, 0.4276601, 0.72216094, 0.7539902, 0.061876297, 0.5732645, 0.08953977, 0.19347811, 0.8963697, 0.11450446, + 0.29080236, 0.11356735, 0.68413234, 0.9422358, 0.6160947, 0.34431648, 0.881781, 0.5902381, 0.98752284, 0.8230339, + 0.22673213, 0.019929767, 0.33634377, 0.5873562, 0.47152317, 0.47071123, 0.71857977, 0.25593734, 0.6894473, 0.5973226, + 0.8476708, 0.33640194, 0.27925384, 0.4054302, 0.85734904, 0.15632057, 0.15821159, 0.62935865, 0.6540277, 0.62904286, + 0.84898174, 0.15478921, 0.8864474, 0.9519924, 0.29451346, 0.67696726, 0.12704432, 0.31840634, 0.9285346, 0.44603455, + 0.16312885, 0.8684312, 0.30971074, 0.7599555, 0.19094026, 0.012725472, 0.354509, 0.81747174, 0.49734163, 0.025734782, + 0.12851524, 0.093672276, 0.6405555, 0.18543065, 0.58747256, 0.71158063, 0.17222822, 0.048950434, 0.08505535, 0.8416915, + 0.33020413, 0.09960747, 0.25812685, 0.33848286, 0.5805198, 0.07212055, 0.38205433, 0.30827212, 0.27770185, 0.8527981, + 0.55425227, 0.7883303, 0.57440233, 0.1511774, 0.37137794, 0.24041712, 0.279397, 0.97124946, 0.1144166, 0.9279351, + 0.32142508, 0.6315216, 0.8040507, 0.79869354, 0.8604784, 0.43671775, 0.3609692, 0.3727386, 0.81151724, 0.3273605, + 0.8342643, 0.78927994, 0.7386817, 0.21210217, 0.607185, 0.074275374, 0.22218573, 0.72348917, 0.6727958, 0.36972976, + 0.041228294, 0.9265106, 0.5363116, 0.9358785, 0.57502234, 0.24857318, 0.2824955, 0.7045808, 0.34444773, 0.7045897, + 0.9218527, 0.9551153, 0.5743766, 0.7627282, 0.61280906, 0.10266864, 0.6106193, 0.04589486, 0.72128665, 0.89373183, + 0.95856214, 0.39901018, 0.72399974, 0.15778804, 0.43795228, 0.84974074, 0.21161151, 0.96944284, 0.13352, 0.46957636, + 0.478243, 0.015688539, 0.605837, 0.97211254, 0.52398705, 0.6332265, 0.5095302, 0.16539657, 0.8218174, 0.015690207, + 0.31285608, 0.6918832, 0.03302002, 0.28348088, 0.9560195, 0.29644978, 0.1871177, 0.92262244, 0.09197247, 0.13974404, + 0.69789135, 0.029397845, 0.98480356, 0.19825423, 0.29304338, 0.38458562, 0.5714431, 0.68952703, 0.7567693, 0.50896156, + 0.2000227, 0.51699114, 0.80132234, 0.5298228, 0.316535, 0.2887758, 0.92835784, 0.35692036, 0.52835834, 0.20589733, + 0.7112398, 0.27981007, 0.5109384, 0.3547132, 0.6262708, 0.4847225, 0.42585826, 0.98732257, 0.84461117, 0.21232617, + 0.53845537, 0.67480576, 0.6037221, 0.53723097, 0.5940857, 0.44536424, 0.08896923, 0.6166723, 0.22585225, 0.6198033, + 0.47839844, 0.83490825, 0.60896194, 0.6491686, 0.35188508, 0.71943736, 0.4374386, 0.27780712, 0.2398318, 0.5398191, + 0.72725236, 0.7961432, 0.5676062, 0.29175377, 0.1403892, 0.83639014, 0.5130267, 0.748925, 0.44885826, 0.02487421, + 0.8026062, 0.655838, 0.8067317, 0.6445738, 0.33280754, 0.23956144, 0.5526843, 0.9612994, 0.277331, 0.4771024, + 0.24758732, 0.73545337, 0.839947, 0.5268049, 0.028115869, 0.04903519, 0.57568324, 0.6612463, 0.61287296, 0.40442133, + 0.2977829, 0.85185266, 0.6052873, 0.38442016, 0.56634676, 0.7382108, 0.75316393, 0.90563583, 0.919719, 0.6332716, + 0.08157194, 0.26395345, 0.22111869, 0.117441416, 0.340047, 0.91731584, 0.79152966, 0.22739625, 0.8944266, 0.52084243, + 0.29368675, 0.6366463, 0.8816589, 0.03091538, 0.45720637, 0.8618498, 0.55700827, 0.34830284, 0.73910964, 0.7620152, + 0.43112147, 0.36171293, 0.5104506, 0.44388855, 0.01574421, 0.9944941, 0.91709507, 0.24325037, 0.6865269, 0.86856294, + 0.7012013, 0.5565945, 0.41113782, 0.683805, 0.5298022, 0.53780174, 0.18666196, 0.5736418, 0.76191497, 0.75119495, + 0.35070503, 0.6711445, 0.8153758, 0.7853663, 0.85426176, 0.84250987, 0.087068915, 0.4668008, 0.47638965, 0.75997984, + 0.71615434, 0.90159905, 0.78579473, 0.9680548, 0.71292746, 0.5589421, 0.18893087, 0.17948163, 0.115719676, 0.9197506, + 0.08338475, 0.616781, 0.804981, 0.5508243, 0.039471745, 0.55158305, 0.13551891, 0.855652, 0.89375615, 0.69537234, + 0.08188152, 0.6223254, 0.8552971, 0.9302217, 0.5388168, 0.10642862, 0.85319805, 0.7420707, 0.10802531, 0.9671242, + 0.718472, 0.87362397, 0.7683494, 0.82467294, 0.5873301, 0.66737235, 0.038029194, 0.2899145, 0.96235776, 0.50241756, + 0.5470295, 0.30472577, 0.37776458, 0.2669505, 0.698493, 0.22798026, 0.97103655, 0.3354299, 0.24576819, 0.047673106, + 0.52921, 0.8117347, 0.98924935, 0.73586464, 0.37598693, 0.39350164, 0.81917846, 0.998649, 0.6417353, 0.8903322, + 0.46651673, 0.23584998, 0.33319163, 0.79923236, 0.83747625, 0.5343089, 0.7443042, 0.78657484, 0.738397, 0.37031865, + 0.0030778646, 0.37311518, 0.48297358, 0.54841936, 0.24646723, 0.11862123, 0.59019625, 0.15992844, 0.5449046, 0.3090706, + 0.4943446, 0.54624724, 0.17694855, 0.7658179, 0.22369087, 0.8557756, 0.88607943, 0.42113984, 0.091416, 0.52473176, + 0.8515595, 0.8438989, 0.67039955, 0.24939859, 0.94291914, 0.08018947, 0.31803405, 0.8203814, 0.98842347, 0.75908494, + 0.015782475, 0.19791031, 0.63223255, 0.31199002, 0.62816715, 0.6786376, 0.57546043, 0.07393181, 0.6122651, 0.15861511, + 0.52861166, 0.5836936, 0.064639926, 0.9265189, 0.18180525, 0.5943655, 0.51276624, 0.042227626, 0.089913964, 0.18521214, + 0.72757673, 0.501415, 0.8572358, 0.5705321, 0.7490289, 0.17366755, 0.36672843, 0.6178845, 0.2091974, 0.94561493, + 0.76138747, 0.35082257, 0.19139922, 0.06558108, 0.37775517, 0.22158921, 0.77584445, 0.29588556, 0.13562012, 0.24709344, + 0.03603387, 0.72824323, 0.29223502, 0.03518009, 0.3911494, 0.4981786, 0.024398446, 0.3603208, 0.10245907, 0.2578137, + 0.4318664, 0.04043913, 0.7485409, 0.9726323, 0.62593293, 0.5647639, 0.055208445, 0.9240315, 0.41791523, 0.19060326, + 0.042542458, 0.05962789, 0.69759905, 0.7579099, 0.76185393, 0.12025678, 0.33541143, 0.001075387, 0.23920286, 0.90003896, + 0.5296136, 0.0028681755, 0.78455734, 0.23484981, 0.70681477, 0.02527225, 0.42518055, 0.05063665, 0.022149444, 0.75088584, + 0.9095608, 0.94822466, 0.35212266, 0.33531058, 0.27303326, 0.7847185, 0.5990069, 0.9269346, 0.11433494, 0.7002108, + 0.43017793, 0.37953484, 0.48553193, 0.08081639, 0.32281876, 0.01116991, 0.49833214, 0.21468651, 0.4632269, 0.7275182, + 0.9304296, 0.98571086, 0.123325825, 0.8939614, 0.98891366, 0.7725787, 0.3819965, 0.090581775, 0.88050497, 0.19276714, + 0.7276703, 0.5255976, 0.87660396, 0.009100199, 0.8593335, 0.5782666, 0.7234534, 0.028552294, 0.9157082, 0.5533469, + 0.3717202, 0.6486821, 0.54823554, 0.56534064, 0.31027877, 0.28286624, 0.79128885, 0.5542624, 0.4781673, 0.43149328, + 0.5684221, 0.49034524, 0.85906816, 0.806088, 0.67974794, 0.4946109, 0.7554163, 0.14170301, 0.50648475, 0.0582788, + 0.49654472, 0.8766638, 0.6141406, 0.45045555, 0.31969285, 0.71179783, 0.8709283, 0.6920043, 0.025787711, 0.7813592, + 0.8946247, 0.13359535, 0.53838336, 0.49897218, 0.8130735, 0.16234899, 0.27389753, 0.5241703, 0.22068858, 0.6978365, + 0.5904192, 0.38652158, 0.10600114, 0.12798262, 0.15990579, 0.88547266, 0.93217814, 0.68338037, 0.8671917, 0.7152933, + 0.68956625, 0.14015365, 0.33275032, 0.90480506, 0.82067955, 0.99259865, 0.19425917, 0.67310965, 0.6042056, 0.04504621, + 0.95180774, 0.93462515, 0.082999825, 0.1489985, 0.42435837, 0.666795, 0.5135591, 0.42355657, 0.39397228, 0.6141639, + 0.37718678, 0.15454769, 0.49552345, 0.34481514, 0.6977755, 0.011367559, 0.611006, 0.5113392, 0.8001766, 0.8808273, + 0.122484446, 0.29189074, 0.17856741, 0.98978746, 0.1437614, 0.73477244, 0.61726964, 0.06380391, 0.91560566, 0.97842276, + 0.75268006, 0.78507257, 0.41300213, 0.3555951, 0.8253411, 0.5657227, 0.33011603, 0.8406342, 0.040947795, 0.52445614, + 0.61388946, 0.1996162, 0.9019338, 0.23502958, 0.32894504, 0.57632315, 0.54247403, 0.14475358, 0.49748206, 0.079687834, + 0.08797252, 0.4425949, 0.20791495, 0.43396866, 0.6632776, 0.6829692, 0.9401679, 0.041894674, 0.83087134, 0.6552795, + 0.02779305, 0.78489006, 0.9712775, 0.20532, 0.89487445, 0.93043315, 0.70217776, 0.871485, 0.07885587, 0.23344958, + 0.43122983, 0.17272627, 0.7453574, 0.13840139, 0.38422048, 0.8079119, 0.5059979, 0.34371614, 0.90171206, 0.84900105, + 0.6326765, 0.25811613, 0.049816847, 0.82696414, 0.68981624, 0.071273565, 0.14720738, 0.35850942, 0.5725751, 0.06359327, + 0.24401522, 0.74947214, 0.9767562, 0.030699134, 0.47930956, 0.96732354, 0.95353067, 0.5626503, 0.44130802, 0.33570445, + 0.95328057, 0.31819034, 0.33608043, 0.43649864, 0.97357833, 0.51410115, 0.80121577, 0.30437458, 0.81207097, 0.47390246, + 0.6694138, 0.2956494, 0.015133619, 0.17068005, 0.6703154, 0.26955235, 0.6318829, 0.52841294, 0.13756728, 0.27718115, + 0.3768357, 0.8991393, 0.20209599, 0.5726234, 0.070804715, 0.79802024, 0.1963607, 0.3506465, 0.915431, 0.46312678, + 0.3309301, 0.47637522, 0.46132588, 0.01874721, 0.4520576, 0.75304234, 0.053877234, 0.80086064, 0.7810049, 0.4971987, + 0.49297273, 0.2883451, 0.30665278, 0.0493623, 0.89043176, 0.988698, 0.19157207, 0.25613952, 0.29669082, 0.7936405, + 0.09355295, 0.6040616, 0.7927896, 0.9343045, 0.5342717, 0.25656772, 0.13076806, 0.9430548, 0.32580793, 0.92087424, + 0.35988677, 0.2800274, 0.07443559, 0.67547905, 0.3707763, 0.49510753, 0.48547828, 0.3660332, 0.987169, 0.1791482, + 0.52333426, 0.02522552, 0.7719941, 0.11929548, 0.9683417, 0.17846775, 0.7042968, 0.006574869, 0.06395185, 0.49776518, + 0.018683076, 0.43396664, 0.13850296, 0.41140115, 0.13274002, 0.29551983, 0.25847626, 0.13167393, 0.15831089, 0.8580946, + 0.25644636, 0.11476886, 0.46916175, 0.7050644, 0.05730605, 0.64031506, 0.12440121, 0.8967531, 0.062045813, 0.32802165, + 0.46647608, 0.06457937, 0.27824306, 0.5225817, 0.79185855, 0.6242821, 0.26541054, 0.040977836, 0.78520536, 0.046996593, + 0.53879666, 0.9759579, 0.5412892, 0.45345402, 0.63502705, 0.85081875, 0.07262981, 0.17546833, 0.70350015, 0.91222584, + 0.1751529, 0.3063239, 0.34686363, 0.30367815, 0.55981255, 0.19336653, 0.75074804, 0.5322423, 0.9560909, 0.8808918, + 0.8719697, 0.27360296, 0.88394284, 0.44862592, 0.9761331, 0.5863266, 0.73995256, 0.23181856, 0.030474424, 0.10563278, + 0.85380185, 0.9586954, 0.585382, 0.9102448, 0.8255738, 0.38647103, 0.57847536, 0.94781435, 0.48173237, 0.3026744, + 0.43523872, 0.5172758, 0.2824775, 0.6265929, 0.00547421, 0.41751218, 0.3776729, 0.06383693, 0.043819547, 0.0077608824, + 0.64894056, 0.68476844, 0.7487658, 0.604094, 0.3441106, 0.65578127, 0.40794468, 0.9540199, 0.9876665, 0.54194736, + 0.81349385, 0.8960943, 0.47141564, 0.1728189, 0.023175716, 0.5964273, 0.47476602, 0.8971374, 0.31239295, 0.0068258047, + 0.82177603, 0.13877666, 0.010460615, 0.01832056, 0.7250948, 0.4211986, 0.15723062, 0.3607731, 0.31589437, 0.15157664, + 0.9086088, 0.66513, 0.71218777, 0.82628787, 0.91778207, 0.3773092, 0.6409985, 0.9112637, 0.7706226, 0.40254426, + 0.35741782, 0.6029804, 0.22935736, 0.33165526, 0.6333555, 0.82496476, 0.030705571, 0.63878965, 0.31329453, 0.58998036, + 0.71059203, 0.94953597, 0.046227813, 0.9365388, 0.6840464, 0.28607416, 0.4500121, 0.6866846, 0.5909487, 0.11210072, + 0.1103307, 0.42058563, 0.2368058, 0.008660674, 0.89059186, 0.21762168, 0.7351476, 0.9993504, 0.9959886, 0.1063391, + 0.09356964, 0.6624726, 0.18301463, 0.696224, 0.7050519, 0.96778977, 0.41426873, 0.2221731, 0.15795946, 0.06914687, + 0.69111, 0.083158135, 0.7456162, 0.92250824, 0.041266203, 0.09774029, 0.11052513, 0.4053638, 0.83990693, 0.5996897, + 0.8906064, 0.8555409, 0.78848875, 0.28732538, 0.7476531, 0.030461788, 0.8049388, 0.7106006, 0.99458826, 0.120414615, + 0.618992, 0.732239, 0.2739781, 0.40457046, 0.53054225, 0.31508696, 0.51425946, 0.18728113, 0.2363702, 0.08930063, + 0.52513695, 0.35101533, 0.14695764, 0.22912455, 0.9037862, 0.12885118, 0.12467635, 0.5806235, 0.44423962, 0.8083011, + 0.6481397, 0.5311742, 0.9270346, 0.40661597, 0.10972333, 0.7266029, 0.23428237, 0.6322063, 0.035403013, 0.7842696, + 0.70838356, 0.15987456, 0.033396363, 0.6620045, 0.46336937, 0.17668915, 0.5044614, 0.109010816, 0.64547443, 0.18090737, + 0.23758185, 0.74317896, 0.6342877, 0.9855989, 0.07065606, 0.390517, 0.97366583, 0.3847704, 0.32387924, 0.14415443, + 0.72286177, 0.6640918, 0.21319008, 0.35465574, 0.04106164, 0.6930089, 0.38214076, 0.18263817, 0.120888114, 0.91627276, + 0.48528802, 0.73559034, 0.4476652, 0.74854374, 0.70258737, 0.15923786, 0.34445202, 0.7570344, 0.5644314, 0.5534462, + 0.76895976, 0.3592192, 0.3036486, 0.6397557, 0.56466424, 0.60368705, 0.3774371, 0.86235917, 0.34447408, 0.5552199, + 0.44478714, 0.8028388, 0.14580369, 0.056139708, 0.86080873, 0.558231, 0.32234323, 0.842317, 0.7524468, 0.4838388, + 0.9507102, 0.71060336, 0.003720522, 0.041124582, 0.6000831, 0.095710635, 0.89782095, 0.66741765, 0.63313246, 0.41027045, + 0.28755915, 0.6291976, 0.13256586, 0.45300066, 0.962762, 0.8540492, 0.8685849, 0.8112565, 0.26700842, 0.5497582, + 0.3821007, 0.14665675, 0.32487833, 0.51548433, 0.33827555, 0.31055593, 0.34621072, 0.5538776, 0.3008393, 0.67891276, + 0.16333401, 0.559163, 0.8063803, 0.15381634, 0.6390219, 0.9391507, 0.016887546, 0.83752024, 0.6055795, 0.619449, + 0.5570717, 0.16456771, 0.58242726, 0.38279378, 0.069501996, 0.9105377, 0.5580727, 0.988559, 0.6141422, 0.07285142, + 0.6663115, 0.9232218, 0.19583762, 0.3639723, 0.43874633, 0.9679744, 0.63199234, 0.82048273, 0.5863162, 0.9389484, + 0.38804603, 0.3196013, 0.71210074, 0.37190568, 0.34513593, 0.9193224, 0.34673405, 0.33127916, 0.17532718, 0.37646174, + 0.60818017, 0.40575743, 0.83085954, 0.8557794, 0.14016843, 0.617718, 0.75873506, 0.24297798, 0.7481657, 0.43712246, + 0.35065222, 0.81084096, 0.62352026, 0.37436676, 0.77083063, 0.7847092, 0.4324957, 0.9557135, 0.4218378, 0.92131793, + 0.55303574, 0.7187419, 0.8675792, 0.57046103, 0.38549185, 0.77889824, 0.7139721, 0.984007, 0.5461241, 0.47925794, + 0.4152075, 0.41369438, 0.728559, 0.6706697, 0.036333323, 0.59346676, 0.8634473, 0.6683911, 0.22677302, 0.04654312, + 0.90984786, 0.9581218, 0.22460055, 0.5758486, 0.45485234, 0.41362286, 0.794464, 0.25549304, 0.03472662, 0.3553369, + 0.57665336, 0.1279118, 0.6459384, 0.469741, 0.72146153, 0.3962214, 0.53111744, 0.6590177, 0.8073834, 0.18562567, + 0.989416, 0.9177935, 0.0095665455, 0.50436616, 0.96901166, 0.25255597, 0.2602415, 0.8452184, 0.08408558, 0.3925941, + 0.2861662, 0.5905421, 0.38091075, 0.30424786, 0.8636844, 0.7346792, 0.2583505, 0.008626342, 0.7472192, 0.32531214, + 0.25280833, 0.09190476, 0.23163939, 0.4166125, 0.31742144, 0.8833345, 0.3063625, 0.43987083, 0.05561173, 0.24516499, + 0.5457225, 0.017105937, 0.33140385, 0.40275574, 0.8718505, 0.5272844, 0.042399168, 0.5011121, 0.06540847, 0.5303607, + 0.5874903, 0.05206418, 0.39980268, 0.119243264, 0.24241436, 0.64655995, 0.38258946, 0.3144492, 0.26858854, 0.21042073, + 0.57962847, 0.8303269, 0.40360355, 0.27780104, 0.6136911, 0.12562108, 0.3202498, 0.7312546, 0.9425826, 0.67212975, + 0.82645, 0.8645599, 0.8534951, 0.87337244, 0.6205795, 0.69331336, 0.49546087, 0.015071273, 0.5482869, 0.43831277, + 0.90358734, 0.575771, 0.72531235, 0.4884565, 0.13953233, 0.45709264, 0.4120674, 0.38694692, 0.41616583, 0.31270397, + 0.20690763, 0.19586754, 0.7196951, 0.86629677, 0.8909025, 0.591066, 0.57817864, 0.084812164, 0.48980522, 0.39633775, + 0.36117005, 0.28894174, 0.5929427, 0.8878174, 0.41028976, 0.6326628, 0.1294061, 0.15639889, 0.3941946, 0.42888868, + 0.5433066, 0.39753962, 0.4632026, 0.24067068, 0.42807567, 0.035683274, 0.8961402, 0.74549544, 0.70986176, 0.34891653, + 0.9861194, 0.50052106, 0.42497253, 0.1139009, 0.1145277, 0.37502134, 0.12224281, 0.66156876, 0.3823924, 0.30841112, + 0.35388982, 0.18243992, 0.23659694, 0.7722671, 0.32780266, 0.8767257, 0.22730339, 0.7475523, 0.5625973, 0.42547214, + 0.88211656, 0.47869205, 0.92450714, 0.7295604, 0.5315031, 0.35869944, 0.9411527, 0.50154257, 0.55904186, 0.53222203, + 0.79450166, 0.15558457, 0.16689801, 0.81611, 0.25091338, 0.21953273, 0.6244092, 0.12556744, 0.91251504, 0.23553741, + 0.83064604, 0.8392587, 0.6288334, 0.25636792, 0.9647114, 0.49071515, 0.6952883, 0.75947285, 0.30187035, 0.64635956, + 0.50833523, 0.32529938, 0.07899833, 0.6759312, 0.19690871, 0.5898783, 0.15009427, 0.721825, 0.6453445, 0.4863286, + 0.6321099, 0.90430593, 0.9571543, 0.069999814, 0.64040816, 0.6447439, 0.7679794, 0.38806236, 0.8262229, 0.5652633, + 0.89214027, 0.94770694, 0.08394647, 0.742852, 0.77750075, 0.18635476, 0.32295096, 0.86118245, 0.35514307, 0.38267207, + 0.24131835, 0.9882927, 0.7282318, 0.496464, 0.9180844, 0.6173309, 0.63722825, 0.034676313, 0.83454144, 0.24473429, + 0.47459352, 0.28216588, 0.12796378, 0.66252863, 0.94008434, 0.49747276, 0.05932045, 0.73446155, 0.31850886, 0.63200283, + 0.1819247, 0.031088948, 0.23594022, 0.52276325, 0.12613297, 0.16525531, 0.83500373, 0.6399615, 0.6245507, 0.97396815, + 0.48528826, 0.64660203, 0.99606943, 0.5675732, 0.47032917, 0.12408829, 0.9496292, 0.5127709, 0.879315, 0.38930273, + 0.064664125, 0.8333659, 0.6193286, 0.6174785, 0.6654451, 0.84807265, 0.8534857, 0.8494061, 0.5994992, 0.029694796, + 0.55890834, 0.46317005, 0.18731773, 0.5103376, 0.38963473, 0.83246815, 0.18412971, 0.8647071, 0.71584547, 0.33451712, + 0.029054284, 0.44782352, 0.32525563, 0.20829141, 0.30182922, 0.32140112, 0.6175065, 0.3386942, 0.27213967, 0.73392403, + 0.7337438, 0.72843766, 0.93421566, 0.37941396, 0.14596903, 0.3532803, 0.43827975, 0.21399975, 0.24997973, 0.7173469, + 0.26380086, 0.94008005, 0.063246965, 0.42009163, 0.7526399, 0.9561336, 0.07120144, 0.65143514, 0.30060327, 0.6978173, + 0.15539145, 0.3703748, 0.71513, 0.9123484, 0.18302286, 0.86906695, 0.38449657, 0.2344768, 0.63189864, 0.38360524, + 0.3119539, 0.8919158, 0.71597254, 0.8597268, 0.028058052, 0.5733756, 0.2040633, 0.8875146, 0.17834413, 0.2933513, + 0.3154148, 0.8897525, 0.22210026, 0.42190576, 0.2348417, 0.8213141, 0.630142, 0.91756713, 0.5948069, 0.5735388, + 0.0017411709, 0.06508756, 0.91466737, 0.7841996, 0.44958484, 0.21038806, 0.03233552, 0.64601445, 0.23226535, 0.9789239, + 0.40043008, 0.9007944, 0.11791861, 0.5314971, 0.99768186, 0.5448891, 0.5002023, 0.99646854, 0.03828442, 0.8371755, + 0.99282193, 0.693604, 0.6591588, 0.42008364, 0.49760926, 0.68455255, 0.8923695, 0.5689285, 0.17675567, 0.38440323, + 0.0022345781, 0.47063565, 0.318568, 0.88059425, 0.011461139, 0.9187517, 0.54680645, 0.57725835, 0.480363, 0.8263724, + 0.55709434, 0.20502198, 0.4567654, 0.5825442, 0.2511413, 0.26175332, 0.6423383, 0.62668157, 0.49162805, 0.5162821, + 0.046515346, 0.08727801, 0.05831015, 0.1878401, 0.67503774, 0.50753534, 0.2079165, 0.7297895, 0.50069344, 0.8677982, + 0.67793274, 0.31541038, 0.2264322, 0.8540213, 0.8309455, 0.008723021, 0.23057032, 0.5027199, 0.06404722, 0.113770485, + 0.41573644, 0.69402087, 0.15275991, 0.66282415, 0.4839456, 0.95415056, 0.6816684, 0.5700717, 0.9130838, 0.22481441, + 0.3932804, 0.6314676, 0.2120148, 0.15018713, 0.9940871, 0.13616621, 0.021256208, 0.06395042, 0.8720964, 0.74397314, + 0.5395341, 0.2962333, 0.60470164, 0.41833138, 0.54921305, 0.15927267, 0.8956554, 0.6057761, 0.0762862, 0.63290596, + 0.771742, 0.22465694, 0.11943281, 0.023544312, 0.9806918, 0.94767845, 0.73642385, 0.38626754, 0.35590303, 0.13351583, + 0.60190797, 0.54608774, 0.5621543, 0.62281764, 0.6069634, 0.997664, 0.41410935, 0.45969343, 0.48508072, 0.9554707, + 0.9325818, 0.64323545, 0.061731577, 0.26067746, 0.5530982, 0.10328853, 0.70898163, 0.24436891, 0.28356314, 0.31847048, + 0.35427904, 0.38639057, 0.3723017, 0.18108428, 0.75702524, 0.9857061, 0.57433426, 0.4265653, 0.20089579, 0.28066194, + 0.22247875, 0.96558213, 0.91309786, 0.24605513, 0.89949834, 0.99586415, 0.2774359, 0.64021313, 0.8599446, 0.027357578, + 0.36352313, 0.6442684, 0.53779364, 0.44097924, 0.17694068, 0.27518308, 0.11995351, 0.29838705, 0.10782707, 0.6049943, + 0.20321107, 0.83364654, 0.7877829, 0.05647874, 0.2730447, 0.16717827, 0.7819642, 0.39185905, 0.86071944, 0.7518023, + 0.35460663, 0.8211409, 0.54548335, 0.8493583, 0.6487541, 0.6798259, 0.94961035, 0.77307415, 0.3178085, 0.72384334, + 0.51640797, 0.5412574, 0.25732565, 0.03090179, 0.32508278, 0.4501145, 0.5862789, 0.6069275, 0.3977332, 0.74229586, + 0.46339643, 0.9188107, 0.27716494, 0.13868976, 0.25718236, 0.46637976, 0.9694152, 0.48906195, 0.46407545, 0.023825884, + 0.5283948, 0.08825421, 0.95693696, 0.6224762, 0.56843865, 0.43331468, 0.9695796, 0.9405464, 0.12378049, 0.43416715, + 0.07658827, 0.574275, 0.9483731, 0.24193203, 0.6950865, 0.98315334, 0.14461303, 0.4016899, 0.7650684, 0.3788998, + 0.28827643, 0.060182452, 0.48568237, 0.51714313, 0.7081181, 0.33150804, 0.40075958, 0.87001514, 0.73710334, 0.058862448, + 0.948974, 0.8049164, 0.17090058, 0.1396985, 0.96039605, 0.9232738, 0.91312885, 0.74735165, 0.15138459, 0.047783256, + 0.21095634, 0.31530535, 0.90841234, 0.6325146, 0.44696426, 0.4350165, 0.0694921, 0.16361928, 0.939888, 0.39202154, + 0.41315746, 0.34595764, 0.6774734, 0.55146074, 0.58091295, 0.30141282, 0.118180275, 0.86616004, 0.73203695, 0.03618169, + 0.9751437, 0.5217582, 0.3371153, 0.54555285, 0.7450892, 0.49612403, 0.17038059, 0.664919, 0.9997505, 0.14109015, + 0.4119022, 0.33592784, 0.15437007, 0.08401692, 0.5600014, 0.65622044, 0.2889936, 0.7714193, 0.60641813, 0.4496895, + 0.061199903, 0.5719433, 0.9599842, 0.22224689, 0.2227776, 0.7527323, 0.686733, 0.12617111, 0.7095275, 0.29884648, + 0.14009833, 0.52664995, 0.61742854, 0.020469546, 0.11463332, 0.6880728, 0.6962459, 0.5507709, 0.27928233, 0.6804135, + 0.70108795, 0.020131946, 0.89853346, 0.53065515, 0.9758806, 0.4400301, 0.20929801, 0.47667885, 0.12577796, 0.3594947, + 0.2673025, 0.53454053, 0.79574645, 0.8261862, 0.66477644, 0.9239379, 0.31145084, 0.8880626, 0.75125206, 0.6447078, + 0.15325177, 0.613145, 0.985993, 0.48242867, 0.40972102, 0.97727835, 0.28121352, 0.21973133, 0.15444279, 0.20758474, + 0.74273753, 0.78547215, 0.21592331, 0.2043755, 0.53266644, 0.45060158, 0.98712325, 0.35790896, 0.2770121, 0.8769958, + 0.18156731, 0.92520535, 0.15342689, 0.26509893, 0.26494217, 0.14585638, 0.225456, 0.022874951, 0.707212, 0.07958126, + 0.21103764, 0.14773512, 0.5403155, 0.99073935, 0.26471972, 0.33912814, 0.8808024, 0.11260116, 0.5960436, 0.94802904, + 0.5219017, 0.4619658, 0.69143033, 0.8791307, 0.113346696, 0.9281982, 0.86161125, 0.8878095, 0.20753789, 0.28451967, + 0.93486285, 0.29887676, 0.3497349, 0.35303068, 0.18445003, 0.31840456, 0.2863921, 0.97237206, 0.73536146, 0.6584841, + 0.5074253, 0.12153077, 0.08019495, 0.14261198, 0.77308464, 0.96275437, 0.6180546, 0.5908065, 0.6450465, 0.56620085, + 0.4150418, 0.24493563, 0.6161063, 0.6891333, 0.18454576, 0.16773558, 0.51949537, 0.26248598, 0.9845811, 0.6866524, + 0.3678037, 0.113915086, 0.42257965, 0.3644868, 0.14000738, 0.90079963, 0.44996786, 0.17689216, 0.7578169, 0.8760164, + 0.11300993, 0.7232106, 0.55123186, 0.7387514, 0.61544394, 0.10095847, 0.75984156, 0.5863813, 0.68230975, 0.860633, + 0.8310212, 0.23383915, 0.5577806, 0.6911721, 0.96827996, 0.50994563, 0.7436837, 0.6357583, 0.36465776, 0.38452375, + 0.95579445, 0.7888119, 0.99932885, 0.6856854, 0.733325, 0.26323152, 0.2918421, 0.8427998, 0.81952703, 0.95172954, + 0.69079137, 0.18690813, 0.8647493, 0.1851269, 0.048691273, 0.30197394, 0.9392736, 0.37051558, 0.35517645, 0.6906197, + 0.21519315, 0.17867374, 0.9134257, 0.6055409, 0.019968629, 0.87757146, 0.8783028, 0.18589413, 0.6776031, 0.5502838, + 0.3927275, 0.18606365, 0.78671074, 0.47549713, 0.32636678, 0.8159418, 0.47174108, 0.21751547, 0.97376645, 0.30582094, + 0.047374964, 0.5587448, 0.6268387, 0.6501833, 0.49434412, 0.14269078, 0.1680361, 0.30492032, 0.94329906, 0.34936094, + 0.14466536, 0.16301215, 0.98242176, 0.91589224, 0.46527874, 0.22920132, 0.4979874, 0.3941685, 0.76656985, 0.3039831, + 0.9452089, 0.6096324, 0.9994203, 0.47152734, 0.52069414, 0.79390895, 0.6446867, 0.49992883, 0.27029717, 0.092381835, + 0.7844249, 0.44262648, 0.9510298, 0.79124415, 0.53164196, 0.97782874, 0.8547815, 0.36111605, 0.24613309, 0.22507453, + 0.30934417, 0.94160473, 0.82935345, 0.03495598, 0.5373862, 0.31731164, 0.9104061, 0.59294665, 0.071294665, 0.9882016, + 0.8394655, 0.8361442, 0.7365334, 0.41259003, 0.2704543, 0.707814, 0.52892375, 0.18335176, 0.95862794, 0.3832779, + 0.7244257, 0.37162983, 0.98916066, 0.27160752, 0.8411654, 0.7197684, 0.66521835, 0.21680069, 0.048986554, 0.9028177, + 0.2756474, 0.18758607, 0.19506586, 0.99402773, 0.78308845, 0.3965609, 0.2733184, 0.76973474, 0.9161016, 0.4647504, + 0.44799626, 0.17247057, 0.7125654, 0.92414045, 0.5980288, 0.3492272, 0.8344171, 0.5402223, 0.09782314, 0.8785144, + 0.19327247, 0.41778266, 0.05793953, 0.76029825, 0.82229304, 0.44936085, 0.8398199, 0.24516094, 0.2626642, 0.035540342, + 0.05193448, 0.946926, 0.07071781, 0.6331221, 0.6586585, 0.09387994, 0.08587599, 0.034860015, 0.694023, 0.98517394, + 0.6626153, 0.35834038, 0.50896, 0.7014741, 0.11710918, 0.59879386, 0.2148031, 0.10131347, 0.04168558, 0.18615699, + 0.08424783, 0.9774436, 0.13989484, 0.96090615, 0.5834956, 0.9899963, 0.8457025, 0.5406213, 0.6587424, 0.8619002, + 0.80786693, 0.29252613, 0.6500509, 0.7847725, 0.6266576, 0.23898244, 0.9238975, 0.6020783, 0.37427557, 0.19663656, + 0.042768836, 0.81899714, 0.12598991, 0.42444098, 0.7339133, 0.64314497, 0.043818235, 0.38594162, 0.9867952, 0.7578242, + 0.98607945, 0.8985684, 0.36851597, 0.53013587, 0.14084077, 0.42991245, 0.07751989, 0.62328553, 0.8200983, 0.5555885, + 0.11834848, 0.5952728, 0.7240963, 0.61059165, 0.6676949, 0.4952109, 0.08346188, 0.48778784, 0.52742743, 0.053282022, + 0.5374453, 0.6230675, 0.85758626, 0.6406976, 0.49813986, 0.37785494, 0.8450171, 0.78908587, 0.42790747, 0.8745462, + 0.75856376, 0.52884495, 0.4241221, 0.1258446, 0.75770104, 0.65104127, 0.7231051, 0.9360664, 0.4995638, 0.48699093, + 0.031516314, 0.4047488, 0.86456275, 0.68007946, 0.10198605, 0.746765, 0.4207703, 0.39970458, 0.43246794, 0.87141144, + 0.8622104, 0.23365545, 0.65856266, 0.2689767, 0.32029748, 0.90215087, 0.76512945, 0.4295777, 0.36715996, 0.05452478, + 0.48919034, 0.8288255, 0.9224317, 0.13793659, 0.6749599, 0.052672386, 0.41985595, 0.9861038, 0.3642863, 0.49956644, + 0.11207521, 0.5639417, 0.94257236, 0.32539642, 0.55226016, 0.29219294, 0.680253, 0.78523433, 0.8467716, 0.557497, + 0.68164957, 0.07598972, 0.52896, 0.61256135, 0.44124162, 0.676757, 0.03527975, 0.87092364, 0.608618, 0.69751966, + 0.841974, 0.246598, 0.71116877, 0.4066956, 0.36267054, 0.35163987, 0.52587664, 0.6749693, 0.8194766, 0.22605336, + 0.95037544, 0.6836966, 0.8660017, 0.9106624, 0.2564187, 0.38855135, 0.06364298, 0.20807707, 0.13247705, 0.18793833, + 0.7854843, 0.21154523, 0.19440114, 0.9220687, 0.77175224, 0.15666866, 0.37804484, 0.886747, 0.015437722, 0.06376016, + 0.13255394, 0.78438795, 0.08267939, 0.36213052, 0.17714214, 0.05074513, 0.8890313, 0.3803022, 0.9192661, 0.64585364, + 0.07874191, 0.26479268, 0.0420928, 0.8807844, 0.01080966, 0.31815243, 0.0026453733, 0.99630046, 0.91653156, 0.3731253, + 0.10803795, 0.48371446, 0.87298477, 0.41568255, 0.7158135, 0.6714237, 0.6230571, 0.46036792, 0.25786686, 0.26752293, + 0.66929066, 0.40476263, 0.3101461, 0.52475, 0.8316717, 0.17815745, 0.4568745, 0.3852811, 0.69265926, 0.38589418, + 0.17604494, 0.63527226, 0.6034739, 0.56178474, 0.56384075, 0.7176814, 0.9763982, 0.90890396, 0.5579599, 0.96569955, + 0.32902694, 0.16800904, 0.4890604, 0.38910985, 0.6266439, 0.38513482, 0.81284714, 0.57885575, 0.5160018, 0.18379843, + 0.17220831, 0.30555046, 0.25671792, 0.58956933, 0.298679, 0.24536943, 0.5808079, 0.89229465, 0.40765834, 0.111299515, + 0.83085084, 0.8697618, 0.10349774, 0.14749348, 0.7381973, 0.5386931, 0.16365027, 0.22439766, 0.60834503, 0.6325109, + 0.8387178, 0.42383432, 0.68734574, 0.7922901, 0.9894073, 0.88251615, 0.7738519, 0.2207843, 0.24383414, 0.50753236, + 0.602895, 0.49796987, 0.7928108, 0.77240014, 0.09995389, 0.51543605, 0.7170874, 0.5424297, 0.56477785, 0.4379598, + 0.13067782, 0.011431932, 0.63457394, 0.37795782, 0.0064485073, 0.60061836, 0.83225954, 0.12862313, 0.017816782, 0.7459837, + 0.38415492, 0.56335294, 0.24408364, 0.93227184, 0.71103454, 0.75147414, 0.47258162, 0.19353592, 0.62608063, 0.6454886, + 0.39011407, 0.5135088, 0.04001105, 0.8942952, 0.8346454, 0.07126176, 0.24956965, 0.4036256, 0.768458, 0.16418457, + 0.2399658, 0.8745997, 0.383505, 0.15229332, 0.31909597, 0.77732587, 0.19169462, 0.17216742, 0.47752964, 0.89891326, + 0.7328955, 0.17774093, 0.8145282, 0.84876883, 0.22609675, 0.6062846, 0.80669487, 0.5823301, 0.63287437, 0.5601853, + 0.28424466, 0.28250992, 0.271927, 0.34061468, 0.18500876, 0.41001213, 0.6518301, 0.48217356, 0.21719861, 0.5224457, + 0.208781, 0.26664186, 0.33027256, 0.85210264, 0.611325, 0.73039615, 0.25543785, 0.9301505, 0.8835528, 0.5831796, + 0.71608925, 0.4858955, 0.015086532, 0.8556404, 0.5066911, 0.13155174, 0.28481805, 0.41526437, 0.66886735, 0.48466468, + 0.020262122, 0.9230609, 0.30206764, 0.47152627, 0.92936563, 0.9544251, 0.19461036, 0.31860602, 0.023904562, 0.5612248, + 0.3773607, 0.4695164, 0.2242229, 0.6227046, 0.79354155, 0.3833034, 0.43986416, 0.5140382, 0.81387246, 0.4656968, + 0.34056973, 0.35884953, 0.19053543, 0.06488466, 0.8671222, 0.48168087, 0.8818903, 0.43210506, 0.9649105, 0.25000894, + 0.84994924, 0.49345934, 0.05926037, 0.80483043, 0.36683297, 0.71413255, 0.07119179, 0.8318815, 0.7588639, 0.63426733, + 0.25331688, 0.31843078, 0.2069987, 0.823998, 0.458879, 0.4751315, 0.3584149, 0.03881824, 0.4215088, 0.14042509, + 0.37484384, 0.7824042, 0.72175753, 0.7830949, 0.36283278, 0.47387362, 0.313599, 0.59452, 0.80680895, 0.7013614, + 0.6989523, 0.365322, 0.7881067, 0.7505758, 0.9909531, 0.7252116, 0.26314843, 0.638862, 0.35831416, 0.06385887, + 0.7291535, 0.21287882, 0.9664341, 0.98041224, 0.704165, 0.85278034, 0.8105992, 0.14321578, 0.49429703, 0.42203867, + 0.2516687, 0.41349137, 0.017283082, 0.5018637, 0.19594955, 0.28377736, 0.4807955, 0.758705, 0.57171583, 0.9294312, + 0.8941779, 0.8328208, 0.23086154, 0.93649924, 0.72978985, 0.21779764, 0.7641566, 0.12250829, 0.13366926, 0.13501132, + 0.6759684, 0.9853369, 0.14985764, 0.47732806, 0.09692609, 0.7564479, 0.0010457039, 0.20277464, 0.88071406, 0.31658983, + 0.7705258, 0.69654214, 0.14192033, 0.035719514, 0.8837836, 0.60428274, 0.31511903, 0.6907859, 0.28617346, 0.41179943, + 0.27526045, 0.91372466, 0.83744335, 0.6220734, 0.6509093, 0.93512976, 0.67177224, 0.7028675, 0.29096806, 0.122779965, + 0.88115096, 0.5249462, 0.19483793, 0.096999645, 0.54639494, 0.8518169, 0.033777, 0.028592229, 0.56623304, 0.19235635, + 0.48999906, 0.1601237, 0.25475705, 0.0136550665, 0.4685501, 0.76969945, 0.4802127, 0.70152414, 0.77193916, 0.36136794, + 0.36773753, 0.36730134, 0.5173873, 0.98329043, 0.2666577, 0.1910845, 0.10475743, 0.76984, 0.46394265, 0.0866791, + 0.42938077, 0.9078214, 0.3938179, 0.800786, 0.91018474, 0.035619497, 0.82867086, 0.8901681, 0.96312034, 0.5975976, + 0.4613533, 0.6077858, 0.0046687126, 0.3986143, 0.99488616, 0.18110085, 0.59204483, 0.39211488, 0.5939071, 0.29595447, + 0.20189154, 0.525403, 0.10260868, 0.69615364, 0.8862001, 0.658746, 0.09010017, 0.13732123, 0.32578182, 0.30788386, + 0.07608771, 0.41351378, 0.1124593, 0.4224267, 0.28457642, 0.19279015, 0.35440564, 0.0926584, 0.3208859, 0.56310666, + 0.9207728, 0.21995807, 0.65776217, 0.48097312, 0.2984382, 0.16064715, 0.88856924, 0.43568063, 0.3926226, 0.39277303, + 0.944013, 0.57909906, 0.27410316, 0.99433684, 0.8614173, 0.8040894, 0.104700804, 0.048357964, 0.6116742, 0.3589568, + 0.9572971, 0.048621535, 0.94050443, 0.013103485, 0.9529121, 0.66240716, 0.4573828, 0.40285826, 0.922863, 0.3793528, + 0.6248914, 0.38189375, 0.57484233, 0.6099533, 0.9405302, 0.067231774, 0.97706664, 0.44482255, 0.7441789, 0.18083537, + 0.5414437, 0.09510803, 0.8745649, 0.857267, 0.59444773, 0.33723772, 0.12716413, 0.16987765, 0.12452304, 0.78940964, + 0.8204962, 0.5058116, 0.25208783, 0.025403857, 0.0855242, 0.7452266, 0.033691764, 0.6907518, 0.39951205, 0.40237582, + 0.69878745, 0.7652558, 0.5505564, 0.64405346, 0.6349654, 0.9509027, 0.79684436, 0.7504288, 0.38537526, 0.57795715, + 0.85694265, 0.6184151, 0.5526118, 0.08801544, 0.2539624, 0.8339616, 0.31156075, 0.8841839, 0.5043874, 0.97991943, + 0.66865826, 0.22173464, 0.6291752, 0.91981816, 0.5494572, 0.77072287, 0.12779546, 0.7436887, 0.6100608, 0.88423276, + 0.60395813, 0.49974513, 0.29835713, 0.36831808, 0.29997158, 0.22770953, 0.5261229, 0.6418719, 0.38363516, 0.6815362, + 0.09736955, 0.053799152, 0.331079, 0.66102064, 0.85473585, 0.68381464, 0.12568581, 0.8971633, 0.69253194, 0.080273986, + 0.41746008, 0.5746176, 0.081890464, 0.7322663, 0.48565876, 0.08104527, 0.30449498, 0.08962965, 0.030967593, 0.26247108, + 0.6289511, 0.16217327, 0.27914572, 0.026766062, 0.47894418, 0.27360117, 0.47164953, 0.23992729, 0.555388, 0.80336964, + 0.9121735, 0.21777499, 0.6515883, 0.030278563, 0.47883928, 0.07885468, 0.67519367, 0.72339916, 0.6533371, 0.5025941, + 0.7962762, 0.07853532, 0.7879008, 0.9134555, 0.09968138, 0.23040044, 0.23775756, 0.4200685, 0.44180226, 0.42208028, + 0.53807235, 0.25786185, 0.20149636, 0.38230252, 0.15871441, 0.122398615, 0.66587543, 0.17836237, 0.7163366, 0.8839128, + 0.38296807, 0.11847615, 0.48658192, 0.40956068, 0.06724894, 0.4488485, 0.18802822, 0.6544223, 0.72048795, 0.3555869, + 0.5368583, 0.75729835, 0.8507323, 0.02333486, 0.14404678, 0.11379838, 0.87337923, 0.7624563, 0.27943587, 0.43368137, + 0.90195763, 0.48816907, 0.26899505, 0.68732893, 0.59448874, 0.37496805, 0.38687932, 0.8609613, 0.1980567, 0.9780446, + 0.015794277, 0.48167646, 0.32003093, 0.15970862, 0.79450905, 0.5020082, 0.9972888, 0.35642457, 0.47327363, 0.21727347, + 0.5188397, 0.7477071, 0.32053077, 0.23842144, 0.3859632, 0.22748613, 0.916072, 0.92352676, 0.16297579, 0.9158236, + 0.98434496, 0.7126945, 0.30842745, 0.023742199, 0.4651612, 0.028235316, 0.25442505, 0.5547457, 0.058312416, 0.8117981, + 0.36559772, 0.30213034, 0.9423951, 0.65017664, 0.17994988, 0.92882705, 0.6850617, 0.5491092, 0.044909716, 0.44837093, + 0.86723566, 0.27774394, 0.43017948, 0.9418509, 0.20219278, 0.45884204, 0.036159396, 0.9813055, 0.4268788, 0.5804392, + 0.8897264, 0.5686681, 0.6735867, 0.5581703, 0.525555, 0.6063334, 0.38077796, 0.72023046, 0.28340173, 0.02014947, + 0.75983524, 0.1273824, 0.013360381, 0.34550357, 0.5075822, 0.6906681, 0.0041058064, 0.49272525, 0.8213881, 0.25890815, + 0.5251869, 0.8439983, 0.14531255, 0.6182512, 0.6312945, 0.64082325, 0.6797135, 0.08134115, 0.23285913, 0.95172894, + 0.9430857, 0.7771647, 0.66030145, 0.007511258, 0.1363231, 0.39072716, 0.2668364, 0.14457786, 0.35033524, 0.22830856, + 0.8876238, 0.62496185, 0.19380009, 0.9179133, 0.052157283, 0.6986841, 0.09063363, 0.16796839, 0.09384322, 0.96232677, + 0.82190824, 0.16792607, 0.68979466, 0.46559167, 0.7605387, 0.6543157, 0.95174205, 0.77839625, 0.59512866, 0.96859956, + 0.94992507, 0.51034224, 0.29740417, 0.160393, 0.9483266, 0.27509212, 0.553867, 0.17221606, 0.17879903, 0.83465075, + 0.1871767, 0.28166938, 0.7601222, 0.49564457, 0.42312026, 0.9762759, 0.99854255, 0.814535, 0.14334571, 0.7971066, + 0.8789493, 0.33365428, 0.5632467, 0.7452531, 0.2082839, 0.5275605, 0.7717143, 0.95500207, 0.813725, 0.21611607, + 0.10197985, 0.91323495, 0.6191075, 0.8823669, 0.4312731, 0.49838233, 0.7093209, 0.6828797, 0.14880669, 0.8535619, + 0.8059912, 0.3616749, 0.8086072, 0.5584649, 0.083572626, 0.09712732, 0.01748693, 0.34984708, 0.56870353, 0.42032278, + 0.85661197, 0.90813804, 0.00559175, 0.030344367, 0.4834677, 0.8992288, 0.7630571, 0.47449827, 0.39364445, 0.8671212, + 0.44717908, 0.7430545, 0.9642993, 0.8111954, 0.58385336, 0.9178393, 0.14373207, 0.83182395, 0.17798793, 0.52375877, + 0.16472232, 0.4525261, 0.9741368, 0.8364115, 0.9785439, 0.41322792, 0.041105866, 0.1917938, 0.21944118, 0.6153575, + 0.54132366, 0.6190038, 0.70702195, 0.62466264, 0.4165722, 0.31138337, 0.33914018, 0.32833517, 0.6663208, 0.5930176, + 0.78802025, 0.26484644, 0.40883315, 0.58139694, 0.23609316, 0.9143275, 0.01327312, 0.9019114, 0.016840696, 0.21848202, + 0.2693733, 0.15682495, 0.8895991, 0.67823935, 0.060312986, 0.94318354, 0.8743143, 0.36535156, 0.8975414, 0.8230499, + 0.79172385, 0.4458766, 0.5403832, 0.26402533, 0.7044443, 0.123616815, 0.78186285, 0.53700256, 0.98086977, 0.2703519, + 0.50122654, 0.12547529, 0.87505245, 0.8318558, 0.7948806, 0.73049426, 0.3354293, 0.6851343, 0.5725651, 0.1293968, + 0.5450642, 0.47504926, 0.51916134, 0.7745564, 0.38259685, 0.8682574, 0.77565956, 0.27258658, 0.70882714, 0.03800249, + 0.48211312, 0.5296949, 0.8596853, 0.5541266, 0.098629594, 0.20181441, 0.21174943, 0.5707401, 0.27367735, 0.46285796, + 0.33001828, 0.44831288, 0.8524325, 0.4259547, 0.7096726, 0.047685623, 0.72923803, 0.5686196, 0.31410682, 0.4576844, + 0.9506856, 0.22109377, 0.6538384, 0.92872155, 0.29096162, 0.6660329, 0.79434395, 0.84605014, 0.8487768, 0.93552613, + 0.9790518, 0.80643237, 0.6218947, 0.60578275, 0.035614133, 0.019561887, 0.4895333, 0.7376783, 0.79865324, 0.13057351, + 0.48389816, 0.35441327, 0.7978829, 0.010383487, 0.19818997, 0.15176785, 0.05714774, 0.58426034, 0.6541773, 0.50236535, + 0.6413983, 0.027682424, 0.8661779, 0.11437571, 0.013608217, 0.82775486, 0.31126177, 0.5025828, 0.5478734, 0.10594809, + 0.72943354, 0.9876236, 0.7624713, 0.19982052, 0.08112872, 0.82475245, 0.56996095, 0.32726765, 0.8587843, 0.08988118, + 0.590737, 0.49464, 0.5602988, 0.000628829, 0.0578897, 0.6450206, 0.4356463, 0.72922254, 0.5785183, 0.85050845, + 0.43137515, 0.38170052 +}; + +static const float s_ref_in_1[80] = { + 0.0714519, 0.12623775, 0.18709707, 0.38457298, 0.51552844, 0.058009863, 0.59970665, 0.13472438, 0.12888086, 0.22097993, + 0.5381597, 0.12162638, 0.4304577, 0.7628957, 0.3952452, 0.8830744, 0.96445954, 0.76154673, 0.98054266, 0.004019499, + 0.87109864, 0.9475188, 0.40564144, 0.70299184, 0.6117927, 0.120667934, 0.69452477, 0.62411535, 0.38336444, 0.5133339, + 0.36120117, 0.56116617, 0.9694761, 0.99701285, 0.66396403, 0.88994443, 0.7282429, 0.79826057, 0.04243207, 0.90528893, + 0.51193845, 0.5379157, 0.38144886, 0.061935186, 0.37478077, 0.8003477, 0.15145504, 0.32193863, 0.4462744, 0.31686866, + 0.48822606, 0.023732662, 0.96425056, 0.6253836, 0.84943163, 0.71095276, 0.589314, 0.8142407, 0.30682087, 0.7972348, + 0.8022146, 0.98187447, 0.69415593, 0.38742268, 0.15843844, 0.5912219, 0.6598525, 0.68742585, 0.422688, 0.2071805, + 0.44676173, 0.8743541, 0.7957927, 0.23278022, 0.80306983, 0.06347573, 0.74019456, 0.16609263, 0.17528033, 0.0690223 + +}; + + +static const float s_ref_out_1[80] = { + 3.7410464, 2.8145263, 2.3118865, 1.6125404, 1.3927516, 4.151921, 1.2913103, 2.724438, 2.7855167, 2.1272745, + 1.3631525, 2.8673856, 1.5241747, 1.1448996, 1.5906209, 1.0641463, 1.0182583, 1.1459131, 1.009873, 15.772991, + 1.0714362, 1.0273207, 1.5701054, 1.1926825, 1.2784914, 2.8787508, 1.1999307, 1.2658073, 1.6150801, 1.3957254, + 1.6638931, 1.334917, 1.0156205, 1.0014968, 1.227235, 1.0600309, 1.1718227, 1.1192514, 4.8545933, 1.0510088, + 1.3976265, 1.3634615, 1.6191305, 4.0181975, 1.6334705, 1.1177912, 2.5695562, 1.7624364, 1.4969214, 1.7764801, + 1.4311643, 6.491226, 1.0183687, 1.264523, 1.0850152, 1.185986, 1.3026465, 1.1082139, 1.805334, 1.1199713, + 1.1164896, 1.0091878, 1.2002494, 1.606599, 2.5122895, 1.300543, 1.2310524, 1.2061104, 1.5381193, 2.1969774, + 1.4961047, 1.0694396, 1.1209855, 2.0726547, 1.115895, 3.9691372, 1.1623235, 2.453719, 2.3885448, 3.8063197 + +}; + +static const float s_ref_in_2[315] = { + 0.5354309, 0.5706959, 0.08582878, 0.7716477, 0.7846799, 0.19903004, 0.45012188, 0.08129561, 0.32640302, 0.7038741, + 0.046449542, 0.7598001, 0.63784873, 0.24925351, 0.8694285, 0.6427438, 0.04301381, 0.626596, 0.89536023, 0.8174894, + 0.12152302, 0.17870092, 0.78407276, 0.8414233, 0.57177854, 0.48625302, 0.05350697, 0.23532856, 0.9123963, 0.9605961, + 0.21086526, 0.73622227, 0.7652298, 0.90483284, 0.9876783, 0.62834454, 0.09401584, 0.20044458, 0.78477526, 0.90805626, + 0.55349874, 0.90292907, 0.10652912, 0.85312605, 0.4148997, 0.2313087, 0.2782197, 0.16207528, 0.22736609, 0.97628677, + 0.21293616, 0.6487589, 0.097210646, 0.74700654, 0.8401308, 0.26393652, 0.6438315, 0.5333104, 0.6876273, 0.83873856, + 0.560572, 0.7845613, 0.72653925, 0.05183983, 0.7894952, 0.2194041, 0.94158745, 0.4947139, 0.5587926, 0.47701478, + 0.49289846, 0.7288871, 0.035939097, 0.9242413, 0.44019568, 0.562335, 0.5044346, 0.19014919, 0.7126119, 0.23769414, + 0.21881127, 0.017138004, 0.78003407, 0.8023052, 0.5781249, 0.5684179, 0.38109505, 0.31951964, 0.2749182, 0.41673183, + 0.73603547, 0.19665337, 0.85111713, 0.07795882, 0.9726027, 0.50708675, 0.45485806, 0.17524278, 0.25191045, 0.14121091, + 0.2763902, 0.25920975, 0.3862301, 0.91366863, 0.13487446, 0.13194227, 0.9160392, 0.1821326, 0.80802774, 0.76237357, + 0.43206477, 0.6723207, 0.65332353, 0.3526684, 0.9178188, 0.42246497, 0.8255503, 0.18206525, 0.3980322, 0.9673563, + 0.2263031, 0.11401403, 0.16470885, 0.2298305, 0.62977314, 0.35112357, 0.18998921, 0.41820943, 0.163926, 0.42576826, + 0.5392035, 0.9224622, 0.5082998, 0.45811272, 0.32295084, 0.6324642, 0.62504387, 0.4425254, 0.7310704, 0.19160092, + 0.23115385, 0.6742743, 0.6753521, 0.04122877, 0.8539281, 0.529572, 0.2730304, 0.034256935, 0.19930458, 0.5972066, + 0.88354266, 0.19321322, 0.4382187, 0.9258901, 0.528438, 0.6784861, 0.61599135, 0.5774728, 0.1455524, 0.77443266, + 0.4308859, 0.4474635, 0.70211864, 0.78242016, 0.87218356, 0.44771576, 0.32596874, 0.81004906, 0.8207288, 0.12623632, + 0.47389424, 0.19992828, 0.5337106, 0.40851927, 0.21927512, 0.5075737, 0.88335276, 0.20100081, 0.7772665, 0.364439, + 0.0025515556, 0.9023489, 0.15650678, 0.14470422, 0.34163475, 0.40104342, 0.12134564, 0.46136415, 0.11972165, 0.8410375, + 0.029690266, 0.9787234, 0.7614236, 0.27507997, 0.15340817, 0.25746202, 0.35459936, 0.69697416, 0.37098598, 0.9866402, + 0.48803425, 0.5515444, 0.8105136, 0.5403311, 0.96023977, 0.21188116, 0.5412921, 0.15898585, 0.007098794, 0.8128096, + 0.92877805, 0.7140355, 0.24916804, 0.1546346, 0.08551681, 0.64278543, 0.08582747, 0.8459058, 0.68326473, 0.6286442, + 0.7514545, 0.31526327, 0.8225237, 0.80733705, 0.28956318, 0.72692573, 0.27075148, 0.88366115, 0.09420836, 0.5059111, + 0.8815049, 0.624176, 0.40416753, 0.66228116, 0.8977046, 0.033474922, 0.28803778, 0.44661343, 0.8945348, 0.91121185, + 0.16841066, 0.1187495, 0.41342342, 0.89796555, 0.98599434, 0.50317943, 0.8126558, 0.51442575, 0.33303964, 0.8089168, + 0.39373648, 0.020447493, 0.42672384, 0.65305257, 0.3910576, 0.5421792, 0.055668473, 0.06792641, 0.69302773, 0.6945785, + 0.4411093, 0.02286303, 0.5321884, 0.73990464, 0.59460723, 0.25752735, 0.12906373, 0.6920619, 0.22273242, 0.067554474, + 0.6739532, 0.5523802, 0.4651184, 0.7635666, 0.8839631, 0.911078, 0.57708454, 0.049878716, 0.9037883, 0.52949417, + 0.67093325, 0.29871237, 0.23468554, 0.5750108, 0.29468834, 0.8259256, 0.7657645, 0.39826298, 0.60791755, 0.3141173, + 0.13440597, 0.17416406, 0.71300006, 0.048197865, 0.24844909, 0.22503221, 0.65346766, 0.80012405, 0.23312247, 0.44725537, + 0.8239305, 0.88067615, 0.36532688, 0.0024797916, 0.08369565, 0.9838147, 0.45748472, 0.015620589, 0.62834024, 0.909263, + 0.23793268, 0.061614394, 0.22974575, 0.28789353, 0.9109963 +}; + +static const float s_ref_out_2[315] = { + 1.3666216, 1.3237245, 3.413371, 1.1383884, 1.1288954, 2.24151, 1.4905101, 3.5072477, 1.7503419, 1.1919348, + 4.6399074, 1.1472294, 1.2521061, 2.0029924, 1.0724648, 1.247329, 4.821654, 1.2632991, 1.0568202, 1.1060097, + 2.868605, 2.3655744, 1.1293324, 1.0901662, 1.3224707, 1.434065, 4.323096, 2.0614018, 1.0469073, 1.0203041, + 2.1776972, 1.165455, 1.1431522, 1.0512738, 1.0062183, 1.26154, 3.2613657, 2.233587, 1.1288267, 1.0494062, + 1.3441312, 1.0523814, 3.0638382, 1.0826633, 1.5524887, 2.079237, 1.895859, 2.4839427, 2.097187, 1.0120717, + 2.1670816, 1.2415332, 3.207326, 1.1570117, 1.0910045, 1.9464813, 1.2462751, 1.3693358, 1.2059337, 1.0919096, + 1.3356242, 1.1289808, 1.1731957, 4.3920593, 1.1254475, 2.1349006, 1.0305514, 1.421749, 1.3377491, 1.447885, + 1.4243649, 1.1713047, 5.2749267, 1.0401772, 1.5072217, 1.3335289, 1.4079833, 2.2932572, 1.1846048, 2.0511184, + 2.1377907, 7.6387076, 1.1322522, 1.1164266, 1.315192, 1.3263744, 1.6198819, 1.7690953, 1.9072088, 1.5490721, + 1.1656029, 2.2550142, 1.0839403, 3.58152, 1.0139867, 1.4042968, 1.48273, 2.3888009, 1.9924016, 2.6611285, + 1.9021235, 1.9641485, 1.6090773, 1.0461781, 2.7229214, 2.7530115, 1.0448235, 2.3431826, 1.1124662, 1.1452917, + 1.5213375, 1.2195841, 1.2371885, 1.6839017, 1.0438101, 1.5385253, 1.1005967, 2.343616, 1.5850426, 1.0167326, + 2.1021066, 2.961562, 2.4640048, 2.085913, 1.2601085, 1.687602, 2.2942226, 1.5463332, 2.4698813, 1.5325453, + 1.3618323, 1.0411797, 1.4026197, 1.4774536, 1.7596723, 1.2574248, 1.2648666, 1.5032489, 1.1695544, 2.2845528, + 2.0799334, 1.217816, 1.2168438, 4.9249268, 1.0821548, 1.3741605, 1.913791, 5.4028854, 2.2399657, 1.29401, + 1.0638642, 2.2750008, 1.5106176, 1.0392505, 1.3756342, 1.2140303, 1.2741269, 1.3159344, 2.6211407, 1.1363397, + 1.5234172, 1.4949311, 1.193424, 1.1305244, 1.0707697, 1.4945099, 1.7515075, 1.1110774, 1.1038249, 2.8145425, + 1.4526443, 2.236469, 1.3688223, 1.5645654, 2.1355283, 1.4036229, 1.0639787, 2.2304943, 1.1342663, 1.6564852, + 19.796913, 1.0527196, 2.5277457, 2.6288114, 1.7108777, 1.5790807, 2.8707006, 1.4722382, 2.8901052, 1.0904163, + 5.8035398, 1.0108111, 1.146006, 1.906648, 2.5531466, 1.9708039, 1.6793106, 1.1978203, 1.6418037, 1.0067475, + 1.4314456, 1.3465105, 1.110759, 1.3604106, 1.0204933, 2.17247, 1.3592025, 2.5079608, 11.868824, 1.109189, + 1.0376337, 1.1834233, 2.0033362, 2.5430017, 3.4195917, 1.2472887, 3.4133973, 1.0872741, 1.2097775, 1.2612393, + 1.1535825, 1.7809974, 1.1026198, 1.1129421, 1.8583534, 1.1728837, 1.921828, 1.063793, 3.2580316, 1.4059273, + 1.0650933, 1.2657456, 1.5729657, 1.2287931, 1.0554394, 5.4656296, 1.8632678, 1.4963533, 1.0573076, 1.0475875, + 2.4367738, 2.9019113, 1.555258, 1.0552859, 1.0070772, 1.4097385, 1.109294, 1.3942436, 1.7328143, 1.1118548, + 1.5936655, 6.993264, 1.5308286, 1.2374451, 1.5991147, 1.35809, 4.2383356, 3.8369017, 1.2012259, 1.1998842, + 1.5056598, 6.6135263, 1.3707784, 1.1625513, 1.2968355, 1.9705539, 2.7835429, 1.2020638, 2.1188893, 3.8474495, + 1.2181062, 1.3454914, 1.4662843, 1.1443965, 1.0636111, 1.0476644, 1.3163769, 4.47757, 1.0518811, 1.3742616, + 1.2208444, 1.8296727, 2.064224, 1.3187486, 1.8421224, 1.1003467, 1.142753, 1.5845832, 1.2825598, 1.7842432, + 2.727663, 2.396187, 1.1842822, 4.554976, 2.0062325, 2.1080344, 1.237052, 1.1179473, 2.0711327, 1.4952788, + 1.101678, 1.0655943, 1.6544712, 20.081327, 3.4565957, 1.0081922, 1.4784671, 8.001129, 1.2615445, 1.0487095, + 2.05009, 4.028644, 2.0862978, 1.8637344, 1.0477115 +}; + + +static const float s_ref_in_3[63] = { + 0.5791794, 0.8733411, 0.8453586, 0.51857257, 0.068139195, 0.5324079, 0.60879815, 0.7256423, 0.14692831, 0.8674985, + 0.29180813, 0.8902134, 0.64316845, 0.73019934, 0.26884735, 0.99293077, 0.023704052, 0.9068496, 0.48417532, 0.28190506, + 0.1008935, 0.23307681, 0.14699912, 0.82567847, 0.80686843, 0.9491637, 0.75170374, 0.5627792, 0.13389075, 0.42160153, + 0.25540173, 0.8414289, 0.08418059, 0.5961586, 0.98014593, 0.462718, 0.59378016, 0.031244874, 0.56282103, 0.26272094, + 0.020642042, 0.51890624, 0.90061283, 0.26496375, 0.24705374, 0.0038696527, 0.49684858, 0.5104109, 0.006249666, 0.24472594, + 0.7588073, 0.10402942, 0.06712484, 0.7021766, 0.919343, 0.093617916, 0.09531379, 0.15898287, 0.19267154, 0.77865076, + 0.8584075, 0.39687288, 0.12596667 +}; + +static const float s_ref_out_3[63] = { + 1.3139942, 1.0700598, 1.0876259, 1.3886577, 3.8309062, 1.3704959, 1.2816321, 1.1739205, 2.6088388, 1.0736572, + 1.8511912, 1.0598708, 1.2469171, 1.1702516, 1.928622, 1.0035534, 6.495143, 1.0501041, 1.4371387, 1.8834261, + 3.1482441, 2.0713356, 2.6082106, 1.1005113, 1.1132652, 1.0264302, 1.1533912, 1.3330026, 2.732906, 1.5401, + 1.9787368, 1.0901626, 3.4466248, 1.295147, 1.0100774, 1.4700829, 1.2977383, 5.657318, 1.332953, 1.9509791, + 6.9602313, 1.3882111, 1.0537338, 1.9427048, 2.0118902, 16.075481, 1.4186914, 1.3997163, 12.649447, 2.021436, + 1.1479796, 3.10043, 3.8597424, 1.1933746, 1.0429446, 3.2682893, 3.2390833, 2.5079844, 2.2781968, 1.1332576, + 1.0793276, 1.5873559, 2.8175535 +}; + + + +static const float s_ref_out_4[540] = { + 2.0626745, 1.3757447, 2.4035306, 1.2767605, 2.0165412, 1.870952, 1.1758473, 2.9100406, 1.6332598, 11.422995, + 1.3245044, 1.3527055, 2.225012, 2.198758, 2.6285663, 1.1240159, 4.2854285, 1.075842, 2.704463, 2.0511966, + 1.1511587, 1.9665362, 1.2358102, 1.1683834, 1.6254263, 1.4059877, 5.003717, 1.6117826, 1.8121971, 1.0414851, + 1.0093573, 6.432194, 1.126725, 1.5871071, 2.1211343, 1.3618971, 1.457987, 3.122314, 1.3764304, 1.2884133, + 1.4328839, 1.0969249, 1.3343709, 2.4985254, 1.0331993, 1.0550616, 1.6038557, 1.0290797, 1.2016362, 2.0825315, + 1.2126997, 1.0244088, 1.1701843, 1.472176, 1.2521183, 1.3675023, 1.0061092, 1.7922156, 16.130236, 1.0553181, + 1.0910031, 1.0498873, 1.2889358, 1.9056972, 1.8288897, 1.0776074, 1.2268339, 1.0044394, 1.1644065, 1.1501403, + 1.6262465, 2.6113539, 1.2117401, 1.9363229, 3.1915977, 1.4567232, 1.1154531, 1.6470877, 1.0000335, 1.0310073, + 1.6454293, 2.161959, 1.027221, 2.055492, 1.6399598, 1.4800228, 1.4100174, 1.0169388, 2.4333065, 1.171675, + 1.040884, 1.042112, 1.502844, 3.2317073, 4.055541, 1.5605311, 2.9287686, 3.9137099, 2.0973878, 2.908677, + 1.4072286, 1.0738316, 2.30354, 2.811878, 1.287568, 1.1830577, 1.0645667, 1.737841, 1.2068229, 5.890191, + 1.9532069, 1.4085927, 1.1429209, 1.066124, 1.9369173, 3.4435103, 1.0613708, 2.0936127, 1.1084231, 1.2007766, + 1.924209, 1.4450746, 1.5827194, 1.1758689, 1.052018, 1.1013676, 2.1684668, 2.0138597, 1.1030911, 1.2556024, + 1.1456525, 1.2168527, 1.122964, 1.0293113, 1.021221, 3.005051, 1.0297853, 1.3238235, 1.4425057, 4.224153, + 1.2356782, 1.2791672, 1.4848621, 1.1616862, 1.1476674, 2.211874, 1.2599818, 2.7543654, 1.9874514, 1.5998554, + 2.1176646, 1.5760059, 1.7480079, 1.022117, 2.8958359, 3.195595, 1.0314232, 1.0066103, 1.1471924, 12.961765, + 1.2641777, 1.8241689, 2.9348488, 1.0571674, 1.0360056, 1.4780183, 1.4729158, 1.1863534, 1.5353522, 1.3385284, + 1.1049706, 1.3476654, 1.3151941, 1.4451356, 1.768401, 18.168413, 1.1078858, 1.877059, 1.2995818, 1.5534023, + 1.2462038, 1.0323951, 1.2331318, 1.8356155, 1.1972278, 1.2166631, 1.8046325, 1.4789225, 1.2960656, 2.0066905, + 1.4434648, 1.039861, 1.3156812, 1.0087554, 1.1758102, 1.0683596, 1.088053, 1.083002, 1.4094586, 6.4981327, + 1.1299689, 1.8111197, 1.0069056, 2.547985, 1.241241, 1.0041013, 1.1669868, 1.3891885, 1.4797331, 4.2020845, + 1.3519951, 2.4738061, 1.5881884, 1.1950935, 1.9037837, 2.02002, 1.2598444, 1.3041217, 1.6309483, 1.2173853, + 1.0839283, 1.0045539, 1.5700022, 1.22965, 1.0276359, 1.1223928, 1.4653816, 2.2132232, 1.3598087, 2.5778735, + 1.3961089, 1.0468982, 1.0310295, 2.4572797, 1.0097613, 7.6898804, 1.112431, 2.6717017, 1.1494099, 10.571599, + 8.86551, 3.7374096, 1.3369695, 1.0994929, 1.1336765, 1.644182, 1.0315963, 2.3437803, 1.1448107, 2.2846403, + 1.0093718, 1.4116843, 1.3457617, 2.6145682, 1.9096984, 1.0125806, 2.495668, 1.1711853, 1.0113872, 2.0196345, + 1.0531262, 1.1322964, 2.1851888, 1.3198335, 3.592051, 1.109537, 2.7026818, 1.0957063, 1.6971716, 13.122005, + 1.0876538, 2.2981443, 1.4707042, 6.7504234, 1.0666971, 6.885638, 1.0947702, 1.1534613, 2.315602, 1.0055053, + 1.0807523, 1.2536515, 1.2671982, 1.6123018, 1.1263804, 1.0560803, 1.4934716, 1.1926678, 1.6893387, 1.8022323, + 1.0108602, 1.756772, 3.2550714, 1.1364474, 3.2283828, 1.0013753, 1.1892772, 1.6671216, 1.7250608, 1.2321414, + 1.4592445, 1.4059243, 3.5033095, 1.9416701, 1.12842, 1.1145383, 3.2638848, 1.160097, 1.8483434, 1.201578, + 1.0389098, 1.0400556, 8.284067, 1.0019523, 1.4478053, 1.0843546, 1.4217663, 3.4844596, 1.9762157, 1.1801493, + 2.761386, 1.429483, 1.2663672, 2.0792744, 1.5488228, 1.222745, 1.150107, 1.0392138, 1.1497881, 18.715883, + 1.2877945, 1.2194674, 2.8331945, 2.5034578, 1.1425112, 1.560225, 5.6449046, 1.2148772, 1.0629485, 4.7681704, + 1.5807865, 1.2584258, 1.5779754, 1.9831275, 1.8729521, 4.046305, 1.1754289, 1.3697711, 1.2466861, 2.871434, + 6.02829, 2.0594146, 1.4234277, 7.5442376, 1.2133754, 1.0700374, 4.4955325, 1.0297946, 1.2888685, 1.7108867, + 1.3413868, 1.4466594, 1.0360558, 1.7752748, 2.2701278, 1.3993206, 1.1871761, 1.5403805, 1.2501658, 2.8977456, + 1.5305321, 1.1920822, 3.147216, 1.0975988, 1.6652528, 1.0620317, 2.5241761, 6.0789847, 1.9809648, 1.1773614, + 2.7411208, 2.1084168, 1.0256639, 1.1833591, 1.3072637, 1.1260488, 2.7400084, 1.2794892, 12.492334, 1.2693629, + 3.9458816, 2.5878842, 1.412023, 1.4246888, 1.2155728, 1.6618562, 1.0520887, 1.7393299, 1.2083539, 2.3105524, + 1.556021, 3.949376, 1.4287602, 2.6165972, 1.0091175, 2.515494, 1.4350383, 1.0713443, 1.40587, 1.0266142, + 2.1634686, 1.8356798, 1.1197585, 1.6779069, 1.5015451, 1.0178915, 2.7366767, 1.7660401, 1.1080211, 1.5176939, + 5.1396565, 1.0802255, 1.0582317, 1.1813534, 1.9270691, 1.3626716, 5.160279, 2.546552, 1.7635537, 2.7792375, + 1.181691, 1.0029644, 1.4163834, 1.3510113, 1.9332927, 1.4004866, 1.6927123, 1.8164705, 1.3619349, 3.0449195, + 1.0581859, 1.0455642, 5.9030833, 1.1073112, 1.5917798, 1.5781837, 2.3232942, 11.913018, 2.5379803, 1.6973319, + 1.223552, 1.0933895, 1.3464831, 1.2181442, 1.1547506, 1.4921824, 2.2070138, 1.4809239, 4.453658, 1.1254771, + 1.0654131, 2.7021008, 1.058515, 1.7278204, 1.3256723, 1.0025882, 1.1125354, 1.6264408, 1.121413, 1.2124856, + 1.6359154, 2.0873876, 1.4064584, 1.0301061, 2.5560977, 1.0145518, 1.0148243, 2.0213778, 6.277102, 1.0144906, + 3.114441, 4.5911093, 1.8340713, 2.3571534, 2.5375857, 2.1372411, 1.354841, 4.017281, 2.42324, 4.4197607, + 1.1543607, 1.2606053, 1.4946947, 2.1438656, 2.66782, 1.7280138, 1.2077395, 2.7006707, 1.0756756, 1.4669523, + 1.111834, 1.3193457, 1.3340853, 1.7425953, 1.5014317, 1.9714041, 1.0210835, 1.4920087, 2.0544047, 4.9387407, + 1.4859357, 1.8736597, 2.614316, 1.4905329, 1.1119473, 1.144899, 1.0723094, 1.9219047, 3.4817724, 1.3141596, + 1.0496585, 2.846015, 1.0605841, 1.1761864, 1.9862597, 2.2261443, 1.6031121, 2.7794049, 3.875186, 1.6542884, + 1.1099429, 1.2349973, 1.5194987, 1.276289, 2.5227702, 1.3138906, 2.8143687, 5.2074966, 1.2818736, 14.191117 + +}; + +static const float s_ref_in_4[540] = { + 0.23503828, 0.5283531, 0.17310143, 0.6134527, 0.24591541, 0.2856766, 0.72326624, 0.118086934, 0.37487757, 0.007663727, + 0.570024, 0.54650426, 0.20199251, 0.20684505, 0.14473116, 0.7915075, 0.054451704, 0.8639785, 0.13672185, 0.23767602, + 0.7546221, 0.25858068, 0.6547816, 0.73253655, 0.37849963, 0.5058676, 0.039940596, 0.38493478, 0.3045013, 0.9219214, + 0.98154473, 0.02417028, 0.787706, 0.39699733, 0.22226119, 0.53915226, 0.4704275, 0.102576256, 0.5278268, 0.6024064, + 0.48705494, 0.8310863, 0.5616256, 0.16018891, 0.93676734, 0.8983474, 0.38874912, 0.9442824, 0.6925546, 0.23057747, + 0.67997575, 0.95291317, 0.7302835, 0.46140313, 0.6378362, 0.5347413, 0.9878926, 0.3113289, 0.0038434267, 0.89791095, + 0.8401331, 0.9072242, 0.6019181, 0.2753545, 0.2989682, 0.86115015, 0.6643981, 0.9911798, 0.7375487, 0.7559593, + 0.37811792, 0.14664543, 0.68105316, 0.26671314, 0.098171115, 0.4712441, 0.80370605, 0.36860955, 0.9999329, 0.9407549, + 0.36935294, 0.21394646, 0.947703, 0.23668373, 0.3718207, 0.45652354, 0.50298035, 0.96696424, 0.16889095, 0.72842634, + 0.9229865, 0.9208125, 0.44276392, 0.09574938, 0.060799837, 0.41063416, 0.11658156, 0.0652864, 0.22732258, 0.11819768, + 0.5049759, 0.8672166, 0.18845534, 0.12647569, 0.6031977, 0.7144768, 0.88237715, 0.33111584, 0.6866144, 0.028823137, + 0.26212204, 0.5039984, 0.76553965, 0.8798013, 0.26654947, 0.08433294, 0.88769877, 0.2281431, 0.81393325, 0.6935464, + 0.27008188, 0.47887206, 0.3992014, 0.72323966, 0.9035531, 0.82439506, 0.21266425, 0.2465707, 0.821821, 0.63430154, + 0.76189315, 0.6753423, 0.79299104, 0.94385767, 0.9588717, 0.11073792, 0.942989, 0.57061064, 0.48057914, 0.05604291, + 0.6549214, 0.61114657, 0.45355272, 0.741007, 0.7592205, 0.20439923, 0.62989986, 0.13181257, 0.2531669, 0.39069557, + 0.22299016, 0.40260983, 0.32727528, 0.9571912, 0.11924827, 0.09792566, 0.93999624, 0.9869095, 0.7598493, 0.00595212, + 0.6257255, 0.30051756, 0.116099, 0.89477193, 0.9316994, 0.4577626, 0.46093976, 0.71051276, 0.42421293, 0.5581422, + 0.8190278, 0.5505996, 0.578123, 0.47883165, 0.31977057, 0.0030294657, 0.814723, 0.28382075, 0.5920969, 0.41441178, + 0.64390516, 0.93822753, 0.657629, 0.2967813, 0.69766414, 0.67555285, 0.3070594, 0.45720315, 0.5953139, 0.24833572, + 0.47994077, 0.9248034, 0.577695, 0.98271656, 0.72331166, 0.8761231, 0.844695, 0.85259247, 0.5033792, 0.023682237, + 0.78318965, 0.3048637, 0.9863305, 0.15403032, 0.6490644, 0.99184763, 0.73429084, 0.5181763, 0.45670235, 0.056633115, + 0.5470786, 0.16340625, 0.39645684, 0.70015824, 0.27590835, 0.24506915, 0.63003707, 0.5879816, 0.37594092, 0.67475164, + 0.85113573, 0.99095404, 0.40569484, 0.6613585, 0.9469379, 0.79379845, 0.4656917, 0.20415008, 0.5408095, 0.15047932, + 0.513052, 0.91241217, 0.9407145, 0.16561162, 0.9807596, 0.016910672, 0.8080789, 0.14009547, 0.7569202, 0.008947849, + 0.012723088, 0.07159102, 0.5594444, 0.8272089, 0.77807534, 0.36991358, 0.93968093, 0.18203974, 0.7630142, 0.19158626, + 0.9815166, 0.50179327, 0.55215836, 0.14628506, 0.27420187, 0.97530556, 0.16055596, 0.7290355, 0.9776087, 0.24516273, + 0.90165246, 0.77997327, 0.20942187, 0.5740658, 0.07750237, 0.81229997, 0.1369021, 0.8329359, 0.347175, 0.005807638, + 0.8453152, 0.1893413, 0.46232712, 0.021945119, 0.87885606, 0.0210917, 0.8343612, 0.7516123, 0.18649709, 0.9890796, + 0.8561456, 0.6362771, 0.622746, 0.38468683, 0.78818786, 0.896615, 0.4483385, 0.7030091, 0.350402, 0.3078779, + 0.9786285, 0.324018, 0.09437978, 0.7742858, 0.09594667, 0.99725497, 0.7070234, 0.35980356, 0.33604014, 0.65868664, + 0.469617, 0.50591326, 0.08147848, 0.26524615, 0.7853414, 0.8050262, 0.09387076, 0.74303865, 0.29270804, 0.6926216, + 0.9264978, 0.9244572, 0.014571786, 0.99610686, 0.47706735, 0.8504667, 0.49470186, 0.08236241, 0.2560538, 0.7180027, + 0.13114321, 0.48937523, 0.6235635, 0.23130035, 0.41686606, 0.66884923, 0.7560029, 0.9259558, 0.7564223, 0.002854824, + 0.6029855, 0.67244935, 0.12457967, 0.1595583, 0.7660886, 0.41079533, 0.03138244, 0.6775404, 0.8850658, 0.043984175, + 0.4001783, 0.6314584, 0.40160537, 0.2542721, 0.28506684, 0.061077714, 0.7237812, 0.5329715, 0.64340687, 0.12128365, + 0.027517676, 0.23578298, 0.49354768, 0.0175699, 0.67921865, 0.8733777, 0.049480915, 0.94297194, 0.6019809, 0.34163117, + 0.555766, 0.47782338, 0.9316089, 0.31729913, 0.19404364, 0.5106995, 0.7095282, 0.421448, 0.63983023, 0.11909115, + 0.42688906, 0.70369995, 0.10095942, 0.8300662, 0.36061156, 0.88659453, 0.15694976, 0.027060628, 0.25482762, 0.7214072, + 0.13308942, 0.22495055, 0.9505826, 0.71411276, 0.5851586, 0.7886523, 0.13319755, 0.6108389, 0.006407857, 0.6206236, + 0.06422615, 0.14931738, 0.5015526, 0.49267435, 0.6767652, 0.36208713, 0.90343165, 0.33054912, 0.6848756, 0.1873132, + 0.4130181, 0.064112544, 0.48987055, 0.14605832, 0.9820113, 0.15803504, 0.48559356, 0.87124836, 0.5059525, 0.9488237, + 0.21364796, 0.29676056, 0.7975378, 0.3551929, 0.4435302, 0.96515477, 0.13352203, 0.32062614, 0.81452405, 0.43414176, + 0.037855744, 0.8569809, 0.8929732, 0.71653974, 0.2692808, 0.5385394, 0.037553787, 0.15420377, 0.32153082, 0.12946391, + 0.7161305, 0.99409735, 0.49846923, 0.54787576, 0.26754987, 0.5098494, 0.34900665, 0.3030702, 0.5391222, 0.10785699, + 0.89305043, 0.914742, 0.028697371, 0.81556857, 0.3946699, 0.4014994, 0.18526423, 0.0070462227, 0.15524709, 0.34710944, + 0.6679671, 0.83646953, 0.55156696, 0.6739111, 0.74993503, 0.4491136, 0.20530045, 0.45596814, 0.050415754, 0.78945374, + 0.8809756, 0.13696098, 0.8924953, 0.3349676, 0.56902015, 0.9948437, 0.80792737, 0.37802756, 0.79518616, 0.68021595, + 0.37366152, 0.2295059, 0.50552917, 0.94240177, 0.15305412, 0.9715195, 0.9709979, 0.24474001, 0.02537942, 0.97163665, + 0.10309553, 0.047442198, 0.29728127, 0.17998004, 0.15529537, 0.2189238, 0.54478276, 0.06196344, 0.17029703, 0.051192045, + 0.7504417, 0.62927675, 0.44760513, 0.21757293, 0.1405034, 0.33489263, 0.6855726, 0.13710606, 0.8642458, 0.46469498, + 0.80894697, 0.5744904, 0.56186604, 0.3293115, 0.4435972, 0.25730526, 0.95913017, 0.44921815, 0.2369343, 0.04099846, + 0.45289755, 0.28485155, 0.14631331, 0.45010817, 0.8087821, 0.76289654, 0.8696805, 0.2707299, 0.08248961, 0.5790335, + 0.9076196, 0.123459816, 0.8890165, 0.722849, 0.25347078, 0.20178711, 0.38910985, 0.1294483, 0.066590905, 0.3654076, + 0.8117058, 0.6556438, 0.43311107, 0.613906, 0.15712476, 0.5792707, 0.12625194, 0.036875844, 0.60856867, 0.0049655437 + +}; + +#endif \ No newline at end of file diff --git a/TESTS/operators/constants_sum.hpp b/TESTS/operators/constants_sum.hpp new file mode 100644 index 00000000..49e136f2 --- /dev/null +++ b/TESTS/operators/constants_sum.hpp @@ -0,0 +1,638 @@ +#ifndef constants_sum_hpp +#define constants_sum_hpp +static const float s_ref_in_0[756] = { + 0.3201108, 0.8462242, 0.45321774, 0.05781412, 0.28890228, 0.69911206, 0.9515259, 0.15497255, 0.0019938946, 0.53279877, + 0.096054435, 0.4124447, 0.56492233, 0.99994206, 0.8695247, 0.5112628, 0.38242018, 0.83944154, 0.35629117, 0.60769963, + 0.56769145, 0.4697497, 0.81455433, 0.3423711, 0.021919847, 0.6643195, 0.82845306, 0.8964473, 0.7944603, 0.09168422, + 0.9741379, 0.12533653, 0.13818347, 0.4106716, 0.73002267, 0.012872219, 0.3486116, 0.3416617, 0.13793719, 0.36776948, + 0.17339242, 0.18864226, 0.98261106, 0.4711045, 0.07876778, 0.7381846, 0.9967779, 0.47219443, 0.5495007, 0.39821255, + 0.15759528, 0.32816255, 0.7105688, 0.39509702, 0.68333185, 0.51213133, 0.7289976, 0.6609323, 0.67559886, 0.010752201, + 0.46638942, 0.017047167, 0.12187958, 0.53290045, 0.14634824, 0.4584769, 0.78035975, 0.6602942, 0.6005914, 0.75033605, + 0.62090933, 0.6646265, 0.762733, 0.74551344, 0.7248739, 0.26720357, 0.05411887, 0.10385108, 0.7696469, 0.05176556, + 0.38741565, 0.44307995, 0.9088018, 0.84940743, 0.25168848, 0.1388694, 0.8471917, 0.91401994, 0.4175824, 0.07619274, + 0.29732263, 0.17147243, 0.54777503, 0.3981365, 0.5058286, 0.8732132, 0.15999389, 0.005717635, 0.1773665, 0.7955036, + 0.98867714, 0.34362113, 0.4651227, 0.5519836, 0.7300525, 0.08323276, 0.2114464, 0.31209302, 0.5910089, 0.8919735, + 0.6822376, 0.8928462, 0.6048739, 0.9956442, 0.2796471, 0.08406305, 0.59412646, 0.48955512, 0.57204247, 0.85063744, + 0.1939714, 0.026566029, 0.59685147, 0.7475815, 0.89551175, 0.8155868, 0.1622231, 0.8645314, 0.32707405, 0.8044021, + 0.9966531, 0.15688825, 0.2646922, 0.752831, 0.11029267, 0.10227275, 0.2649566, 0.2596619, 0.30033588, 0.6444144, + 0.63906515, 0.97144127, 0.99109626, 0.7887485, 0.35871947, 0.11237514, 0.25581646, 0.38393342, 0.10473716, 0.82236207, + 0.7291142, 0.3906281, 0.409675, 0.116689086, 0.23459804, 0.23663807, 0.2541008, 0.11934435, 0.8726764, 0.44477677, + 0.4149952, 0.7361202, 0.57763064, 0.18329859, 0.19863343, 0.8962023, 0.012652636, 0.54531837, 0.21916318, 0.73300374, + 0.5364926, 0.8280308, 0.18671274, 0.70468485, 0.18469107, 0.6326901, 0.59046257, 0.81039274, 0.23726869, 0.25435793, + 0.8438401, 0.091780186, 0.1746651, 0.23794413, 0.76478267, 0.51032495, 0.5067159, 0.19963467, 0.27861786, 0.5993335, + 0.560488, 0.1276735, 0.97277594, 0.16557717, 0.69699645, 0.4365393, 0.38201082, 0.22074401, 0.42611945, 0.8226911, + 0.88933, 0.9835646, 0.94331634, 0.40300167, 0.85663664, 0.9018047, 0.7870029, 0.2197746, 0.9257941, 0.22534204, + 0.39006197, 0.021277547, 0.74179375, 0.27260888, 0.3349893, 0.8223225, 0.542935, 0.8238139, 0.6513518, 0.701447, + 0.19076312, 0.36566675, 0.8698275, 0.4356717, 0.8180909, 0.280326, 0.702922, 0.48065245, 0.6437632, 0.8244258, + 0.33009636, 0.7106042, 0.43051064, 0.08355892, 0.84309864, 0.17157638, 0.892491, 0.96224356, 0.69551504, 0.97517467, + 0.65242934, 0.9408585, 0.9751333, 0.58877766, 0.1567558, 0.080137014, 0.3296033, 0.7637298, 0.81439066, 0.21529722, + 0.8411279, 0.9236121, 0.2290355, 0.09911132, 0.8108201, 0.82079196, 0.62663007, 0.36482644, 0.289019, 0.39896476, + 0.080970526, 0.3460586, 0.46570528, 0.27263153, 0.36844027, 0.85090613, 0.74423003, 0.30476546, 0.9529275, 0.4093573, + 0.87477016, 0.77651227, 0.018203616, 0.56174624, 0.43807566, 0.3859564, 0.5867473, 0.41894925, 0.60881627, 0.1696918, + 0.92640555, 0.9231465, 0.20958745, 0.74865115, 0.76607895, 0.5131135, 0.6072719, 0.7548181, 0.34592617, 0.7143289, + 0.47029698, 0.88289523, 0.36869144, 0.85284007, 0.14824402, 0.4176036, 0.44949067, 0.9251429, 0.5809412, 0.4604001, + 0.30581653, 0.2740214, 0.73404753, 0.9891491, 0.7153835, 0.8732363, 0.5523616, 0.35183275, 0.8106452, 0.921571, + 0.3564421, 0.9591706, 0.049067855, 0.9008503, 0.22968936, 0.65982926, 0.9433837, 0.91244113, 0.9918705, 0.7896551, + 0.97076905, 0.5681231, 0.6531013, 0.40662766, 0.9458256, 0.08326018, 0.9268582, 0.09280443, 0.91278446, 0.37608993, + 0.10651481, 0.49413216, 0.5277206, 0.923877, 0.89571023, 0.96263885, 0.25779796, 0.098638415, 0.8243109, 0.9475224, + 0.5717318, 0.59255767, 0.15278828, 0.5196067, 0.9340944, 0.839229, 0.7775911, 0.26397932, 0.41729462, 0.909765, + 0.27892768, 0.06577122, 0.24269783, 0.8844689, 0.31442738, 0.015246749, 0.0062276125, 0.07459605, 0.23701608, 0.58090556, + 0.5801548, 0.5831388, 0.03662598, 0.9673096, 0.46923888, 0.41123986, 0.9162891, 0.5087551, 0.500927, 0.46377015, + 0.55088687, 0.14046073, 0.7781142, 0.89290476, 0.7576946, 0.45207298, 0.5817133, 0.7944076, 0.039491653, 0.9135834, + 0.09654176, 0.64771414, 0.72585523, 0.61622095, 0.6006508, 0.6416316, 0.890342, 0.84797585, 0.7589201, 0.15424728, + 0.21751308, 0.41683865, 0.80176616, 0.1192857, 0.5377066, 0.515278, 0.23577642, 0.2617036, 0.35398877, 0.69440794, + 0.6836939, 0.57845736, 0.18507457, 0.48772514, 0.098758936, 0.15628457, 0.5765765, 0.76701546, 0.42719305, 0.3286389, + 0.44640923, 0.83448493, 0.08973503, 0.5619441, 0.6508064, 0.42868567, 0.035826564, 0.9509809, 0.38160026, 0.5325321, + 0.87759674, 0.51010656, 0.13178778, 0.4896903, 0.34128046, 0.23869002, 0.1515373, 0.28971756, 0.8806046, 0.62122655, + 0.71656835, 0.091904044, 0.708321, 0.062829375, 0.47487283, 0.41126084, 0.10275459, 0.04618752, 0.8928987, 0.8753369, + 0.8651948, 0.09802151, 0.78063, 0.4035406, 0.2987963, 0.15558922, 0.42263305, 0.13016438, 0.49344945, 0.11709833, + 0.023563623, 0.4593693, 0.08605552, 0.44111347, 0.111312866, 0.60637534, 0.79617786, 0.88953567, 0.63400054, 0.7207922, + 0.65261674, 0.7396432, 0.19964993, 0.08656037, 0.08211732, 0.7889334, 0.84555304, 0.7119423, 0.18508351, 0.05621457, + 0.9794259, 0.10693669, 0.28730989, 0.18352997, 0.8997121, 0.07139051, 0.16465676, 0.69615173, 0.6164819, 0.23176706, + 0.33144128, 0.9375702, 0.38451242, 0.9174901, 0.43443382, 0.31675696, 0.23924637, 0.8278173, 0.33539677, 0.5200212, + 0.21600771, 0.35576212, 0.85695374, 0.25055182, 0.81883943, 0.34779346, 0.69498146, 0.81869555, 0.6773902, 0.4598186, + 0.5222025, 0.377028, 0.5156156, 0.31265438, 0.29038537, 0.5654985, 0.4013039, 0.5813179, 0.48750114, 0.81595886, + 0.6976347, 0.9846709, 0.1971041, 0.31045926, 0.1718303, 0.77557254, 0.609766, 0.32981527, 0.4014567, 0.91359234, + 0.4078598, 0.32230783, 0.21556032, 0.618685, 0.88887334, 0.9341277, 0.3921839, 0.61806154, 0.82043636, 0.8746705, + 0.5336981, 0.68230045, 0.008471131, 0.94081557, 0.41509557, 0.5041913, 0.7626926, 0.85475695, 0.2769382, 0.31066978, + 0.7373221, 0.7582482, 0.89209604, 0.09000349, 0.45603752, 0.5071733, 0.2154069, 0.09907794, 0.8452704, 0.018251538, + 0.88569033, 0.3906387, 0.22425675, 0.23794115, 0.22231829, 0.3434887, 0.20270467, 0.3325714, 0.092543006, 0.5037341, + 0.57644594, 0.44342983, 0.7411494, 0.9429698, 0.3866346, 0.7622912, 0.41746306, 0.14723647, 0.9096427, 0.023991108, + 0.247388, 0.3562405, 0.16277122, 0.9118353, 0.661111, 0.5430155, 0.45648134, 0.7547393, 0.987285, 0.69402325, + 0.48858213, 0.47030413, 0.31375337, 0.56758237, 0.8470379, 0.44549537, 0.51655245, 0.23093057, 0.65977323, 0.032735467, + 0.122360826, 0.5929595, 0.9585198, 0.7076056, 0.12442541, 0.8365421, 0.32673275, 0.14667535, 0.35522258, 0.8065045, + 0.5741041, 0.56877947, 0.4769714, 0.77324855, 0.5570607, 0.8056296, 0.11344838, 0.18434417, 0.84286284, 0.2797464, + 0.7064458, 0.53275275, 0.1283611, 0.49539268, 0.6738422, 0.09924507, 0.4589944, 0.11817658, 0.91218984, 0.4745971, + 0.679795, 0.9110093, 0.67358315, 0.1384052, 0.98417604, 0.053039193, 0.6251972, 0.8439343, 0.21441221, 0.54539645, + 0.69887686, 0.7720424, 0.15387046, 0.39991343, 0.14929414, 0.20599616, 0.24233031, 0.8791245, 0.8469268, 0.463879, + 0.68758583, 0.65248656, 0.6558335, 0.9625877, 0.6598948, 0.7799735, 0.9905311, 0.291914, 0.284873, 0.5389708, + 0.34289372, 0.47061253, 0.016644716, 0.0844512, 0.12629735, 0.47175562, 0.86187196, 0.216591, 0.39447463, 0.5261643, + 0.2164849, 0.8001003, 0.534533, 0.7928693, 0.42522, 0.940431, 0.9879527, 0.8088058, 0.7593359, 0.7298678, + 0.4412111, 0.12742984, 0.7883868, 0.6391194, 0.46703196, 0.6329733, 0.6749922, 0.7891321, 0.5974753, 0.8014935, + 0.65329194, 0.32609963, 0.3113047, 0.32964063, 0.13854718, 0.785112, 0.09087467, 0.8607018, 0.92764235, 0.50508857, + 0.44607925, 0.68823385, 0.15913153, 0.8986262, 0.07795119, 0.041403055, 0.32688403, 0.88108087, 0.76158154, 0.8454503, + 0.13635027, 0.25127447, 0.36257136, 0.0838387, 0.14311779, 0.29693568, 0.05142927, 0.8789524, 0.6201925, 0.49330652, + 0.76433456, 0.09707928, 0.40498948, 0.017602444, 0.06799281, 0.5670825, 0.6386429, 0.9474447, 0.5144155, 0.94022393, + 0.4202919, 0.39301372, 0.8567779, 0.66104794, 0.959044, 0.2068361, 0.47792387, 0.45508683, 0.29350972, 0.63454974, + 0.81996036, 0.36304796, 0.14907551, 0.09901166, 0.43101776, 0.91226697, 0.7093183, 0.9330503, 0.26806736, 0.93720376, + 0.023975253, 0.5450885, 0.79197156, 0.9473301, 0.8005451, 0.79782045, 0.08498812, 0.59906304, 0.7763226, 0.06396508, + 0.43774593, 0.69104385, 0.26854563, 0.43475223, 0.31525457, 0.12294364 +}; + +static const int32_t s_ref_axis_0[1] = { + 2 +}; + + +static const float s_ref_out_0[108] = { + 2.1479607, 5.0515876, 4.3696213, 2.9830122, 2.7934852, 2.564154, 4.662414, 2.289571, 3.146594, 3.179237, + 4.6020703, 3.0369499, 3.6867783, 1.9377437, 3.1865163, 4.511132, 3.1452065, 4.144247, 3.0180457, 3.450389, + 2.3799262, 3.7745345, 3.6735847, 2.9733417, 3.8563552, 3.615097, 2.8973176, 2.7168703, 4.529263, 3.7935452, + 4.402669, 3.426186, 4.4084315, 3.3868468, 4.7174964, 4.614127, 2.8629546, 3.0509553, 4.2314363, 3.1293142, + 3.8777928, 5.075829, 3.3027506, 4.60535, 5.1601963, 4.6862125, 4.160187, 4.364858, 3.0099988, 3.9823937, + 2.6216874, 3.3603415, 3.786106, 4.0059156, 4.098073, 3.8959074, 2.3727503, 2.9572952, 3.1321626, 4.2601295, + 4.0745482, 1.7326508, 3.570928, 2.6916146, 2.5828102, 3.2160687, 3.693218, 2.7633667, 3.3400664, 3.9167752, + 3.4680934, 3.453103, 3.7019262, 4.1528378, 2.8136678, 5.174201, 3.2367551, 3.6497583, 3.0000882, 2.2418041, + 3.8275957, 3.8120863, 3.8847024, 3.4819984, 4.0474143, 3.0365648, 2.5727167, 3.825597, 3.4211643, 3.5591462, + 4.561901, 3.861442, 3.2243252, 4.090386, 3.8178935, 3.4895515, 3.6688762, 4.824259, 2.7522986, 4.1998963, + 3.322629, 2.6064134, 3.0954452, 3.6833115, 3.0212922, 3.5082378, 3.149006, 4.572899 +}; + +static const int32_t s_ref_axis_1[1] = { + 0 +}; + +static const float s_ref_out_1[112] = { + 1.2661625, 1.1679456, 1.7865634, 0.9199115, 1.9298116, 1.8487812, 2.7281868, 0.93562424, 1.9525447, 1.9562559, + 1.8266389, 1.5007539, 0.8453138, 1.1202079, 1.9195278, 2.872138, 2.296008, 2.7217617, 1.8311902, 1.1361334, + 1.906253, 3.1016588, 2.6285043, 2.8396573, 1.468084, 2.1114373, 2.1069136, 1.9598225, 1.6062702, 2.7835827, + 2.1052873, 1.7623259, 3.0900254, 1.7208568, 1.1170847, 1.8880303, 1.9906486, 0.64239573, 2.0422616, 2.9632454, + 2.7769406, 2.8777516, 2.1796112, 1.3240033, 2.2894955, 1.5517868, 2.7756681, 2.0727267, 2.0661707, 1.8274451, + 2.5533843, 1.943889, 1.7302248, 1.1355287, 2.8312235, 1.8119285, 2.812398, 2.511435, 1.9611019, 1.9923534, + 2.4442039, 1.2393918, 1.6456362, 0.50690424, 1.3384854, 1.3740332, 0.60457134, 1.5131338, 1.1669035, 1.9978784, + 1.0530516, 2.583045, 2.1414735, 2.1525557, 2.240097, 1.4734211, 2.8136399, 2.5209146, 1.4370964, 1.7587214, + 2.0789084, 3.2916775, 1.6756729, 1.719876, 1.6671932, 3.4650178, 2.6400461, 1.6108619, 2.4159288, 1.8183124, + 2.262708, 3.0646224, 2.310889, 2.9017344, 2.8780107, 2.8361738, 2.1597433, 1.4421095, 1.0419885, 1.2992737, + 0.9932656, 3.0112586, 2.0156975, 3.1235242, 2.49526, 2.0384774, 1.8305293, 2.808711, 2.4078684, 1.5454414, + 1.1143576, 0.9288205 +}; + +static const float s_ref_in_1[448] = { + 0.27241743, 0.1422466, 0.55070436, 0.42356098, 0.78549945, 0.1721437, 0.8950968, 0.06953764, 0.21758449, 0.26146472, + 0.60098994, 0.26340437, 0.24021506, 0.48227704, 0.24195278, 0.30572116, 0.558522, 0.2461443, 0.32235014, 0.12818742, + 0.49981594, 0.8058655, 0.8851656, 0.6153375, 0.5724913, 0.35898697, 0.63837063, 0.03238249, 0.23577476, 0.8752301, + 0.65256965, 0.32213223, 0.9218172, 0.5183779, 0.22082841, 0.1152066, 0.6262294, 0.17631006, 0.66853, 0.80904007, + 0.8492582, 0.82491004, 0.5660802, 0.16041708, 0.061729074, 0.44581115, 0.65907705, 0.50401616, 0.68807924, 0.10399306, + 0.65199697, 0.19057608, 0.7821579, 0.4357785, 0.9822079, 0.2375474, 0.21295321, 0.35430133, 0.19668126, 0.7777786, + 0.6867225, 0.027563334, 0.49602926, 0.26509082, 0.49371493, 0.83431756, 0.35535812, 0.47017503, 0.69448006, 0.76407576, + 0.499102, 0.69511485, 0.29760492, 0.24290371, 0.8999163, 0.09227705, 0.89521706, 0.9496908, 0.24704683, 0.29870045, + 0.7726308, 0.9662167, 0.27161133, 0.10911167, 0.27892327, 0.99936426, 0.2098608, 0.09738982, 0.41501188, 0.068009496, + 0.59958255, 0.7619164, 0.74425817, 0.9332905, 0.21608174, 0.76533425, 0.09055054, 0.5261586, 0.103499055, 0.10998368, + 0.16352189, 0.35913157, 0.81196725, 0.8384577, 0.68306196, 0.2748705, 0.70470977, 0.97056377, 0.4977926, 0.68832636, + 0.064106226, 0.34787714, 0.3214625, 0.6241952, 0.7076223, 0.23039067, 0.3050394, 0.6889725, 0.60047925, 0.07103014, + 0.69934976, 0.9518466, 0.224002, 0.9141375, 0.0036002398, 0.3584944, 0.64399004, 0.9471005, 0.8795419, 0.95878327, + 0.4609276, 0.5811573, 0.35574257, 0.9472375, 0.646237, 0.87627614, 0.036904216, 0.9406369, 0.22282565, 0.43935597, + 0.5223634, 0.9732647, 0.7100736, 0.6379981, 0.85281324, 0.6539619, 0.4687587, 0.8189647, 0.5907332, 0.06992018, + 0.80589604, 0.85599005, 0.77453387, 0.3050785, 0.6366787, 0.34820163, 0.9103657, 0.39386237, 0.8851894, 0.89399576, + 0.80531514, 0.02433753, 0.4619224, 0.71477985, 0.077210665, 0.26895857, 0.72337544, 0.41389644, 0.7112802, 0.9027637, + 0.7097677, 0.32098222, 0.48250735, 0.532248, 0.16788399, 0.04858792, 0.3905697, 0.17859387, 0.025931954, 0.18107712, + 0.16479301, 0.06713307, 0.13508439, 0.9540683, 0.5002433, 0.9469172, 0.3525045, 0.5565518, 0.9784173, 0.31359363, + 0.68637776, 0.15428638, 0.5586734, 0.97753215, 0.4367733, 0.25113487, 0.34428573, 0.9766295, 0.7479646, 0.8266356, + 0.63020766, 0.7241231, 0.99643517, 0.99315286, 0.6760348, 0.9729363, 0.8169929, 0.6317533, 0.6607039, 0.07196474, + 0.21094894, 0.33592236, 0.20258391, 0.8101138, 0.043835044, 0.7497524, 0.96093094, 0.57015264, 0.49645448, 0.4653777, + 0.4164704, 0.10667503, 0.31941307, 0.092072606, 0.2556374, 0.3466661, 0.26669228, 0.14031887, 0.7473595, 0.89958537, + 0.99727523, 0.6668943, 0.92143786, 0.08649337, 0.630365, 0.26284456, 0.3082776, 0.01827836, 0.58912885, 0.9673784, + 0.18660796, 0.8107115, 0.79472363, 0.3304366, 0.13860583, 0.7090795, 0.25982547, 0.87166893, 0.44676113, 0.056670666, + 0.32919085, 0.6918086, 0.2906866, 0.10725379, 0.3141718, 0.7190839, 0.55417717, 0.14706194, 0.049167633, 0.91350937, + 0.12663412, 0.3114351, 0.29777277, 0.5169487, 0.9864764, 0.91419184, 0.8406942, 0.14239514, 0.54104996, 0.24663985, + 0.8931582, 0.042024016, 0.43624663, 0.71559846, 0.44112563, 0.4581585, 0.2669357, 0.31407857, 0.2732656, 0.44182825, + 0.964386, 0.7098886, 0.49677634, 0.09770262, 0.6422751, 0.26597965, 0.16827261, 0.12938643, 0.1726563, 0.00096416473, + 0.0864203, 0.56709206, 0.2337743, 0.97312856, 0.2597319, 0.04217589, 0.5250089, 0.70912397, 0.78542924, 0.34628654, + 0.279068, 0.8521625, 0.22902751, 0.47335804, 0.38167834, 0.7111242, 0.6358185, 0.46190238, 0.955374, 0.77256644, + 0.88337815, 0.12533641, 0.47030032, 0.57844794, 0.4382385, 0.75749207, 0.61164486, 0.9500388, 0.9764949, 0.9297992, + 0.6107044, 0.69705725, 0.58460987, 0.21156263, 0.14845204, 0.9556227, 0.26046526, 0.8692018, 0.80273664, 0.888953, + 0.6084446, 0.70315826, 0.51368225, 0.7258884, 0.62995946, 0.28276205, 0.41664517, 0.054837704, 0.26154447, 0.12564099, + 0.09191322, 0.08807969, 0.23533559, 0.12816215, 0.11417258, 0.6564512, 0.37128198, 0.060367465, 0.29322088, 0.2611581, + 0.4444561, 0.6519381, 0.6713363, 0.70612276, 0.25318885, 0.0963521, 0.91208863, 0.6394764, 0.8372762, 0.4763745, + 0.41192734, 0.7551427, 0.91652656, 0.7962755, 0.5574454, 0.8278341, 0.42847228, 0.083111644, 0.7612177, 0.40145504, + 0.37833, 0.040349603, 0.64705193, 0.08473039, 0.2700628, 0.78126657, 0.16667199, 0.8335712, 0.13615787, 0.6729895, + 0.77635086, 0.4654734, 0.3382436, 0.63269067, 0.13652968, 0.9835161, 0.9983393, 0.5803746, 0.6039206, 0.11671305, + 0.85237443, 0.7186564, 0.9237784, 0.5444813, 0.5578766, 0.79589, 0.6326988, 0.4136008, 0.81345034, 0.06383908, + 0.28154445, 0.3601576, 0.13686097, 0.29478955, 0.073856115, 0.19354105, 0.15913332, 0.89168584, 0.8186164, 0.25361085, + 0.20224702, 0.4783057, 0.66093755, 0.4054674, 0.27464426, 0.8323765, 0.3659259, 0.6368047, 0.33146977, 0.89772713, + 0.08861017, 0.7164577, 0.79884243, 0.5615001, 0.900409, 0.44773185, 0.22845173, 0.5520611, 0.27895117, 0.045468807, + 0.868441, 0.5092871, 0.79778445, 0.1469289, 0.14293063, 0.64180505, 0.4787078, 0.88639057, 0.8994298, 0.6661124, + 0.04853034, 0.30450118, 0.020920515, 0.66961145, 0.97992325, 0.02455163, 0.100878835, 0.20610869 +}; + + +static const int32_t s_ref_axis_2[1] = { + 3 +}; + + +static const float s_ref_out_2[360] = { + 4.6314526, 3.3901496, 5.294491, 4.326424, 4.0266924, 5.1668878, 5.09037, 6.542169, 5.692472, 4.9597254, + 3.4110997, 5.4234414, 5.035086, 3.87431, 6.3353195, 4.956802, 5.5664535, 6.8329544, 3.9345098, 3.912181, + 6.0116568, 7.535078, 7.7687616, 4.994485, 2.970294, 5.9649935, 5.5793805, 3.895461, 6.3028293, 5.8307247, + 4.4301653, 5.050832, 3.4681134, 5.4555225, 5.790288, 3.7416744, 5.954864, 4.5259514, 4.8755913, 5.840498, + 4.38002, 4.097321, 5.4937234, 4.587783, 4.2426534, 3.65559, 5.7567644, 4.8697476, 4.2803392, 4.7480483, + 3.6221828, 6.301096, 4.6530647, 4.403284, 5.9679346, 3.7276707, 4.8610144, 6.6647296, 4.310983, 5.3534265, + 5.615535, 4.555214, 3.5472596, 5.4671454, 3.2844844, 5.38472, 4.955546, 4.7539325, 5.806183, 2.9987295, + 4.050555, 4.983551, 4.437165, 5.5889945, 4.6807466, 5.2943797, 6.3407774, 2.989131, 5.5321674, 4.807746, + 5.443693, 6.1611824, 4.9719286, 4.693534, 5.3184886, 5.722538, 3.0137353, 5.668414, 3.176095, 4.6935797, + 5.8386354, 7.578068, 5.5032334, 4.5789013, 5.0962386, 5.3958626, 5.750371, 4.980014, 6.419579, 5.3583755, + 4.61578, 6.515646, 7.1421137, 3.9037275, 4.783474, 3.8281202, 5.7091546, 4.9268775, 4.6763315, 4.51723, + 5.0235257, 6.382867, 4.3904696, 6.370563, 4.97451, 6.7048225, 5.8687186, 5.4257255, 4.7253313, 5.315681, + 4.8488054, 3.972148, 5.875324, 5.483129, 6.971451, 3.9406495, 4.9879613, 3.2136765, 3.6527286, 5.2520266, + 5.019712, 4.4070444, 4.545953, 6.21807, 5.5579467, 5.7616434, 5.0374494, 4.8188357, 5.242651, 5.3159094, + 3.5839415, 4.1199436, 4.08148, 6.2988977, 4.4614983, 3.6224284, 4.4046063, 6.965977, 5.9370823, 4.461723, + 6.280719, 4.02496, 5.417304, 6.3477674, 5.6229615, 6.8539176, 3.111166, 5.5669165, 3.7148764, 4.6435657, + 4.6045775, 4.3003097, 5.503171, 4.2174177, 6.4472036, 3.8696156, 6.2742405, 4.1019616, 5.9461117, 4.886925, + 4.5387774, 5.0577264, 5.174202, 4.842995, 5.2499366, 2.8901367, 4.126834, 5.251418, 6.25564, 4.3523755, + 5.099201, 5.444023, 4.0101357, 4.3309603, 5.405243, 5.166344, 5.600432, 2.360314, 4.273644, 4.344634, + 5.128792, 3.9014041, 5.8765345, 5.501498, 5.504857, 6.8953786, 3.5118985, 5.156555, 4.043602, 5.334905, + 5.0163913, 3.6117973, 5.4926443, 5.06761, 5.190322, 3.4679158, 5.106953, 5.1057253, 4.9049125, 2.6610293, + 5.746148, 5.31465, 5.0299616, 5.0187416, 5.9699297, 5.042715, 6.0339026, 5.4471397, 4.6416016, 3.63677, + 4.9684844, 5.9431605, 5.1059146, 3.8780475, 3.6381674, 5.1605415, 4.5280514, 3.0720448, 5.2209716, 3.2253227, + 5.2857428, 4.7761, 5.8180475, 5.289606, 5.030465, 4.0288825, 6.789199, 4.276684, 4.14861, 6.7402453, + 3.7436094, 5.047489, 5.592845, 4.7784653, 6.5980234, 4.7825737, 5.240616, 4.431031, 6.899655, 6.110056, + 3.5972843, 4.121448, 5.232657, 4.6182976, 4.7434793, 6.8633175, 3.9607244, 5.399476, 4.2121625, 5.2934966, + 4.760248, 4.4562054, 5.910847, 5.243113, 3.5687232, 6.5690994, 4.2285805, 5.783585, 3.935553, 5.3451357, + 2.5869591, 3.6154685, 3.712494, 6.834568, 6.3170943, 4.399838, 4.0625134, 5.6300163, 5.232081, 6.670689, + 4.380413, 5.211981, 6.2875986, 5.2251034, 3.3762288, 6.637551, 4.650399, 4.355767, 5.3241253, 3.9049783, + 4.8787727, 5.336543, 5.293762, 3.1033487, 5.879508, 6.321685, 3.2628112, 6.25865, 6.282341, 4.692564, + 6.781967, 4.1940365, 4.4009395, 6.2249603, 3.8919258, 5.358093, 6.534253, 5.594706, 5.019779, 5.3748455, + 4.5058184, 5.741848, 5.2474794, 4.371116, 3.0388265, 5.2216744, 5.740961, 5.681837, 5.3905973, 6.011057, + 4.4717216, 6.0639343, 5.109643, 5.309008, 5.9510484, 4.8650093, 3.8410058, 3.5502245, 5.0973077, 5.237738, + 4.6245346, 4.4266977, 4.565054, 5.519083, 6.433197, 5.1200905, 6.6441164, 4.6909637, 3.9412248, 5.159569, + 5.896843, 4.9131694, 3.813469, 5.062227, 4.753413, 3.593276, 4.2971325, 5.1578197, 6.7750607, 5.8785467, + 5.721301, 4.5824227, 4.8705726, 7.273358, 5.4416604, 3.7172313, 4.584539, 4.2733927, 4.5546594, 4.6595955 + +}; + +static const float s_ref_in_2[3600] = { + 0.05338788, 0.53327465, 0.38554883, 0.77605987, 0.6835637, 0.8118249, 0.07482755, 0.3114159, 0.51885974, 0.48268938, + 0.6923772, 0.21619141, 0.030232906, 0.98164535, 0.14589095, 0.10841107, 0.13393903, 0.29073215, 0.06951475, 0.7212149, + 0.77889276, 0.48711956, 0.6235639, 0.47387552, 0.498816, 0.18380296, 0.9521822, 0.18732595, 0.6433939, 0.465518, + 0.8412818, 0.06647396, 0.4553547, 0.94103754, 0.123787284, 0.30554295, 0.21801889, 0.12576771, 0.82417953, 0.4249798, + 0.25863278, 0.5506661, 0.058689475, 0.5677924, 0.9250984, 0.24413824, 0.8171979, 0.1612767, 0.00835228, 0.4348482, + 0.52008545, 0.86259735, 0.24825168, 0.7592869, 0.89358926, 0.51786184, 0.14536107, 0.7472968, 0.22160125, 0.2509563, + 0.560653, 0.22908783, 0.19092155, 0.51687884, 0.3346951, 0.7167556, 0.9486921, 0.36208248, 0.81361294, 0.41699076, + 0.98455024, 0.96937454, 0.6181333, 0.6925013, 0.22782397, 0.4664942, 0.97488856, 0.52887046, 0.43901908, 0.6405134, + 0.80035293, 0.7552273, 0.3059199, 0.12455559, 0.4887805, 0.32202137, 0.9077922, 0.88685393, 0.8100312, 0.2909366, + 0.16754675, 0.75928295, 0.008126974, 0.20619142, 0.9110192, 0.39480472, 0.6323446, 0.30586517, 0.90345263, 0.6710906, + 0.6103233, 0.595232, 0.23644209, 0.15571702, 0.09187293, 0.89973426, 0.01775229, 0.3558756, 0.1678983, 0.28025186, + 0.56425357, 0.15725493, 0.63888025, 0.7902293, 0.66157734, 0.8131225, 0.73173904, 0.57783866, 0.48230958, 0.0062361956, + 0.25416982, 0.8891088, 0.10393989, 0.65278137, 0.70636916, 0.35162222, 0.25039482, 0.45185292, 0.5372422, 0.8376051, + 0.6883637, 0.15012777, 0.58172965, 0.25360692, 0.028959513, 0.29804814, 0.35031104, 0.5826851, 0.29512227, 0.64535594, + 0.49078786, 0.47510707, 0.30632663, 0.99111915, 0.37721658, 0.40398908, 0.678228, 0.98978055, 0.78455055, 0.8382143, + 0.70778096, 0.4665346, 0.7128408, 0.09071219, 0.70480096, 0.6030146, 0.52419865, 0.09176254, 0.5225699, 0.5325867, + 0.90014195, 0.7387774, 0.71732974, 0.356681, 0.01047802, 0.72970974, 0.7272601, 0.6271509, 0.37025535, 0.38866925, + 0.9366946, 0.9095262, 0.5738658, 0.71178865, 0.9557766, 0.5949906, 0.60609686, 0.62840617, 0.7652366, 0.15057182, + 0.58952343, 0.7452873, 0.2767061, 0.4416033, 0.79022026, 0.36353326, 0.13049114, 0.3995204, 0.1856947, 0.011929989, + 0.32960963, 0.15810418, 0.84280825, 0.241341, 0.15381503, 0.6759347, 0.6451962, 0.26296532, 0.4660555, 0.13635111, + 0.49833906, 0.7659172, 0.24095297, 0.21699023, 0.27686787, 0.9406104, 0.44943142, 0.9675294, 0.78507304, 0.86994505, + 0.28340387, 0.93033755, 0.62303925, 0.9045253, 0.76706684, 0.3126824, 0.8758615, 0.91010165, 0.9325273, 0.9955323, + 0.8058715, 0.9841894, 0.99383116, 0.64302087, 0.67546177, 0.91043556, 0.74984026, 0.76638746, 0.32851505, 0.91120887, + 0.714031, 0.9667351, 0.67158175, 0.7081578, 0.9435501, 0.24842548, 0.094512224, 0.22739244, 0.36736643, 0.052732944, + 0.106968045, 0.3738023, 0.47110844, 0.18571138, 0.5566442, 0.21550691, 0.02779293, 0.46477652, 0.40338182, 0.16460145, + 0.5878651, 0.7084272, 0.59980726, 0.8800658, 0.4808247, 0.6313894, 0.3531072, 0.16404891, 0.8049629, 0.75449514, + 0.4889418, 0.6986743, 0.25176942, 0.88964283, 0.58012974, 0.90689874, 0.5992484, 0.10781193, 0.9519961, 0.10426724, + 0.40665078, 0.22118556, 0.24760783, 0.21276486, 0.3899132, 0.7942964, 0.13238502, 0.33783758, 0.69051266, 0.4623071, + 0.13735783, 0.9413959, 0.45063055, 0.9156736, 0.8849255, 0.24030018, 0.6180475, 0.43265498, 0.73586774, 0.94597554, + 0.7257321, 0.20644438, 0.6258342, 0.5259335, 0.32504344, 0.20308006, 0.64423275, 0.8425683, 0.75613713, 0.97571874, + 0.24101448, 0.8037157, 0.36263263, 0.11313546, 0.29876244, 0.28820145, 0.89021516, 0.6905155, 0.062144518, 0.6798278, + 0.6794183, 0.09511745, 0.8656467, 0.6568285, 0.32577574, 0.25796008, 0.27901483, 0.5699465, 0.41636288, 0.90476096, + 0.029880404, 0.70896554, 0.21135962, 0.7216531, 0.30699384, 0.6803849, 0.24964929, 0.26004815, 0.2564404, 0.04273832, + 0.9055059, 0.5685711, 0.9509543, 0.07348192, 0.3302462, 0.75862885, 0.8924389, 0.103850484, 0.3011613, 0.5706837, + 0.6149541, 0.68695366, 0.62580776, 0.60371304, 0.5323329, 0.032447815, 0.88190556, 0.8457937, 0.17328882, 0.7930907, + 0.9760661, 0.12988198, 0.600477, 0.32472432, 0.043180108, 0.49072385, 0.12768388, 0.32121265, 0.12110293, 0.6066216, + 0.95810425, 0.60996056, 0.30545878, 0.7579678, 0.13801646, 0.93924165, 0.80441976, 0.7555567, 0.23953807, 0.44659972, + 0.28952265, 0.788602, 0.60553336, 0.4915353, 0.69760215, 0.04821968, 0.7530663, 0.007732749, 0.2498486, 0.59428847, + 0.5863098, 0.59331346, 0.16416132, 0.6980951, 0.85624766, 0.67378783, 0.054865837, 0.25060475, 0.62625694, 0.37194872, + 0.54311013, 0.97166574, 0.58582056, 0.82188714, 0.2639686, 0.040347815, 0.9626074, 0.9910282, 0.052432537, 0.60763013, + 0.6451775, 0.1226747, 0.6257342, 0.6320373, 0.42016482, 0.065021396, 0.293028, 0.86147475, 0.47686362, 0.23784399, + 0.6382475, 0.55132496, 0.6120926, 0.48279154, 0.939446, 0.17938626, 0.38176918, 0.013682723, 0.035885572, 0.26269484, + 0.87908065, 0.16413355, 0.19227827, 0.77581525, 0.6250849, 0.68134665, 0.77772343, 0.3721714, 0.13575137, 0.8903377, + 0.3148036, 0.2563522, 0.8996638, 0.05933118, 0.9253408, 0.16301012, 0.11328769, 0.08390081, 0.84523857, 0.92685425, + 0.27441978, 0.8460517, 0.48212397, 0.41194117, 0.24299312, 0.052200317, 0.79656494, 0.43228602, 0.3406216, 0.36345077, + 0.3144791, 0.085336804, 0.21166742, 0.866022, 0.21280158, 0.03535676, 0.44692338, 0.56498516, 0.76408505, 0.15393281, + 0.5879061, 0.15245426, 0.7949693, 0.7280108, 0.27058363, 0.73786366, 0.4885801, 0.93891895, 0.97367465, 0.08380306, + 0.14414358, 0.5960443, 0.78625333, 0.5693854, 0.10851097, 0.8229513, 0.45183575, 0.25359726, 0.18055964, 0.9564661, + 0.59412014, 0.06595147, 0.67271316, 0.09738171, 0.98867536, 0.18597925, 0.29307985, 0.378124, 0.8365605, 0.16775405, + 0.27543783, 0.5958394, 0.636698, 0.482517, 0.5378598, 0.092191815, 0.379519, 0.58329546, 0.61987424, 0.54481566, + 0.2510897, 0.7639048, 0.32046425, 0.40864575, 0.12744653, 0.118441105, 0.67558515, 0.1753912, 0.6355742, 0.14564002, + 0.4922818, 0.89547336, 0.8548031, 0.770777, 0.89475644, 0.845024, 0.30919552, 0.43075275, 0.6321547, 0.1758771, + 0.76777565, 0.932919, 0.49310172, 0.026759267, 0.8731743, 0.30319047, 0.09714377, 0.46491396, 0.1044054, 0.58968115, + 0.81293285, 0.23228168, 0.18371427, 0.3787198, 0.3876717, 0.23055375, 0.51932704, 0.7065933, 0.83884645, 0.11264312, + 0.19617355, 0.68095434, 0.7533941, 0.80699277, 0.73543644, 0.9518975, 0.5734329, 0.11459243, 0.5734956, 0.58156455, + 0.27599645, 0.87470865, 0.5541824, 0.20409143, 0.050843716, 0.5582495, 0.0698477, 0.34697437, 0.33687687, 0.4558996, + 0.9087175, 0.6257435, 0.42228913, 0.4544146, 0.17661607, 0.61935353, 0.20843184, 0.313514, 0.5013133, 0.6306206, + 0.9630933, 0.48180854, 0.38110352, 0.908895, 0.36585867, 0.5423924, 0.51019347, 0.8339546, 0.8249662, 0.85246384, + 0.52898896, 0.5753976, 0.99089503, 0.4603685, 0.1077373, 0.6929743, 0.25539386, 0.018425703, 0.2433995, 0.4374025, + 0.28977323, 0.99002266, 0.81024706, 0.58248043, 0.5514201, 0.6746683, 0.028779864, 0.48861825, 0.39077783, 0.54663885, + 0.84474456, 0.7412145, 0.8193674, 0.5905963, 0.38943863, 0.8623228, 0.52549815, 0.1511668, 0.17786884, 0.5133172, + 0.055423856, 0.72411215, 0.8118733, 0.16154039, 0.45078516, 0.8882407, 0.004402876, 0.13221526, 0.8456714, 0.4809487, + 0.20351255, 0.5397172, 0.8593813, 0.15425324, 0.48141134, 0.5546061, 0.08750987, 0.10755098, 0.1098243, 0.44949257, + 0.08541024, 0.9734521, 0.07400274, 0.7280836, 0.69340694, 0.9425883, 0.914503, 0.64560056, 0.004334092, 0.40576386, + 0.2874545, 0.6111239, 0.344836, 0.2880516, 0.036996007, 0.46369922, 0.4130844, 0.3350768, 0.2971394, 0.20702255, + 0.5122565, 0.19153905, 0.013921142, 0.46467018, 0.64104974, 0.23453593, 0.64267874, 0.966133, 0.8984891, 0.8194463, + 0.4205259, 0.5826622, 0.86243176, 0.35729146, 0.502838, 0.187338, 0.51917005, 0.22522616, 0.9439242, 0.35413826, + 0.016472816, 0.32803178, 0.46308947, 0.48721647, 0.85403264, 0.36779618, 0.48978603, 0.34078145, 0.8293803, 0.5773454, + 0.04373324, 0.4423046, 0.3868202, 0.96255004, 0.39996195, 0.51010287, 0.8616303, 0.621879, 0.8424163, 0.734784, + 0.023580432, 0.8235264, 0.7030287, 0.6257827, 0.16483319, 0.20242226, 0.011038542, 0.1812787, 0.03737402, 0.22586465, + 0.28033423, 0.66035974, 0.3358873, 0.012434125, 0.013985753, 0.524987, 0.41161942, 0.99624264, 0.57698035, 0.23772454, + 0.68829656, 0.27378082, 0.27983916, 0.71483564, 0.95584714, 0.2692021, 0.063765526, 0.4610331, 0.9968724, 0.28007853, + 0.31052268, 0.12741435, 0.24655724, 0.44912386, 0.3871801, 0.3199308, 0.13290274, 0.830225, 0.7290795, 0.90422857, + 0.43018568, 0.394933, 0.32261467, 0.29196942, 0.36234558, 0.93110573, 0.7408093, 0.58748317, 0.77218103, 0.7553668, + 0.9042233, 0.7671069, 0.9834844, 0.11783457, 0.5234262, 0.0717845, 0.47552752, 0.25108957, 0.38970888, 0.19656062, + 0.65593517, 0.33749068, 0.93375385, 0.26395726, 0.9532844, 0.59961665, 0.93017054, 0.009052634, 0.019179225, 0.5919391, + 0.88269484, 0.8896333, 0.07228851, 0.9861102, 0.94508004, 0.6336192, 0.5574509, 0.7377317, 0.41453612, 0.2216326, + 0.13869834, 0.5669918, 0.07152462, 0.4020505, 0.32384634, 0.23308337, 0.22926235, 0.5528232, 0.12453914, 0.3463112, + 0.5807766, 0.643407, 0.24506867, 0.8628808, 0.79203, 0.29488778, 0.02862823, 0.75167334, 0.7285366, 0.6042788, + 0.3315766, 0.45344615, 0.6006973, 0.84762716, 0.5658089, 0.6534269, 0.43183398, 0.22819579, 0.45819557, 0.23693764, + 0.7256324, 0.7792978, 0.11758578, 0.0022194386, 0.23370838, 0.3862368, 0.74948144, 0.791242, 0.68624437, 0.9720448, + 0.69776034, 0.5188911, 0.45230544, 0.91786206, 0.40764832, 0.9096074, 0.89006054, 0.29187274, 0.29315984, 0.7820145, + 0.17715728, 0.6848273, 0.16961956, 0.52626514, 0.8133384, 0.92281973, 0.25973296, 0.48408294, 0.79071605, 0.1433686, + 0.4851141, 0.3333125, 0.3349017, 0.7650391, 0.6105232, 0.95183444, 0.15465546, 0.36886525, 0.050993323, 0.6382946, + 0.6195655, 0.36611533, 0.8112352, 0.97155666, 0.2351023, 0.7001647, 0.40842104, 0.32018244, 0.80329883, 0.082846284, + 0.7082591, 0.75320935, 0.72287285, 0.8350178, 0.41559255, 0.29724967, 0.32392383, 0.96970356, 0.6896795, 0.0070302486, + 0.03976488, 0.09442413, 0.6563957, 0.055316687, 0.22115028, 0.28366423, 0.18290877, 0.44673216, 0.7863656, 0.24701285, + 0.62238955, 0.5568316, 0.51779675, 0.92030334, 0.2847886, 0.08319402, 0.79893327, 0.8892267, 0.6618495, 0.33310068, + 0.22273576, 0.18489039, 0.08447981, 0.8591956, 0.40707552, 0.26070046, 0.28650582, 0.23292923, 0.27950203, 0.35808027, + 0.58742404, 0.6393957, 0.3046435, 0.2689923, 0.48160446, 0.40666997, 0.8839054, 0.16171539, 0.93607736, 0.023151517, + 0.3565464, 0.77685285, 0.050717115, 0.66158175, 0.9285915, 0.7764232, 0.04458821, 0.5685246, 0.9218457, 0.7529645, + 0.5150918, 0.5459441, 0.95426595, 0.9547696, 0.8196323, 0.8476658, 0.58370745, 0.4615879, 0.9301264, 0.9652765, + 0.6969838, 0.86634505, 0.2064606, 0.6792345, 0.38931274, 0.33010733, 0.6534066, 0.34296083, 0.54236555, 0.7960563, + 0.9948636, 0.3104217, 0.45983863, 0.9606466, 0.08412993, 0.21350765, 0.8767365, 0.09073269, 0.58666205, 0.0013617277, + 0.3488449, 0.57402587, 0.6927465, 0.5764477, 0.25428903, 0.30107033, 0.41499603, 0.6308689, 0.9370655, 0.36588395, + 0.70017385, 0.062515736, 0.72438526, 0.33671403, 0.92918324, 0.04602623, 0.8050573, 0.822634, 0.43422186, 0.534951, + 0.5907061, 0.42558825, 0.71307063, 0.11955571, 0.9142189, 0.3917849, 0.77613103, 0.5828601, 0.27712607, 0.95932865, + 0.99412286, 0.33553386, 0.15722406, 0.72461796, 0.97319794, 0.51078427, 0.0055435896, 0.4340316, 0.34114254, 0.5038153, + 0.7766564, 0.8668872, 0.6807647, 0.7488723, 0.7954216, 0.7801273, 0.19302571, 0.48994505, 0.18600571, 0.901873, + 0.023107886, 0.17637968, 0.9419825, 0.07883179, 0.935163, 0.64799285, 0.81623054, 0.683048, 0.88972056, 0.16591895, + 0.8575858, 0.4613818, 0.20869291, 0.692376, 0.59870183, 0.21636558, 0.78621745, 0.38449764, 0.26173544, 0.14822543, + 0.29211807, 0.89387846, 0.2220813, 0.55910015, 0.9502146, 0.8080107, 0.16924953, 0.9570216, 0.9776013, 0.6863704, + 0.7817261, 0.78018844, 0.71725786, 0.8116455, 0.869027, 0.5829407, 0.95367336, 0.8743063, 0.2706939, 0.50065434, + 0.09018266, 0.10824859, 0.8982787, 0.1768384, 0.6856251, 0.18264937, 0.08615756, 0.20641124, 0.59923327, 0.8701029, + 0.58536065, 0.35222208, 0.12516928, 0.47634685, 0.9228983, 0.12137878, 0.8544849, 0.36826432, 0.53755975, 0.43978882, + 0.28538346, 0.16112328, 0.5982611, 0.014742136, 0.026756167, 0.1362611, 0.38576555, 0.54181874, 0.9827788, 0.69522977, + 0.7139063, 0.264539, 0.9946592, 0.7463875, 0.41069114, 0.63434565, 0.97708344, 0.18349242, 0.4196328, 0.3644172, + 0.20782077, 0.8793026, 0.19882822, 0.90065396, 0.49229062, 0.55321705, 0.14427948, 0.8159728, 0.22799003, 0.5065218, + 0.75467443, 0.6611012, 0.07586563, 0.37493885, 0.15202773, 3.0517578e-05, 0.68459475, 0.96836483, 0.18465328, 0.82008004, + 0.07469225, 0.9601003, 0.046043873, 0.2753358, 0.6767521, 0.31431222, 0.5492983, 0.62965834, 0.95362246, 0.03741443, + 0.22456527, 0.7896837, 0.06382227, 0.73836875, 0.028351784, 0.8166436, 0.7819146, 0.76755214, 0.13432658, 0.6782968, + 0.36512828, 0.85190976, 0.7224643, 0.9986874, 0.43727362, 0.5910783, 0.54073226, 0.6111964, 0.49059045, 0.773806, + 0.22783864, 0.557788, 0.710438, 0.991006, 0.7734835, 0.62139237, 0.14259076, 0.030434608, 0.28887427, 0.04662299, + 0.28035986, 0.71295226, 0.61225367, 0.8404217, 0.82808006, 0.63743675, 0.99126124, 0.12438774, 0.670889, 0.6725209, + 0.29241133, 0.8699088, 0.100467086, 0.5471461, 0.42417943, 0.64534223, 0.42065728, 0.5543214, 0.55903184, 0.56104493, + 0.51506186, 0.79960597, 0.85172606, 0.26914096, 0.98191035, 0.80255723, 0.73988426, 0.8881335, 0.3465433, 0.5102589, + 0.0024399757, 0.84398186, 0.41104007, 0.97834396, 0.3582815, 0.28221226, 0.7538636, 0.82187617, 0.46439528, 0.9522842, + 0.98968625, 0.54569674, 0.7416853, 0.25720274, 0.7386141, 0.51273155, 0.92034984, 0.20103037, 0.0018063784, 0.51692235, + 0.77992153, 0.096181035, 0.077481985, 0.6441437, 0.2677076, 0.3460499, 0.7858621, 0.26977623, 0.5474616, 0.91074574, + 0.6311351, 0.9143299, 0.63659656, 0.9971094, 0.11050427, 0.80656683, 0.08400345, 0.78834283, 0.1351676, 0.21192515, + 0.046553135, 0.7892258, 0.77173185, 0.65169764, 0.9159827, 0.16493905, 0.21018708, 0.50409627, 0.7438711, 0.050520897, + 0.1514256, 0.6413971, 0.9331708, 0.17371643, 0.13074172, 0.85771966, 0.23751998, 0.08022988, 0.5173471, 0.24887979, + 0.14303231, 0.5853329, 0.41598082, 0.50099444, 0.89950025, 0.8051206, 0.9076984, 0.13294923, 0.70561993, 0.77909505, + 0.10683048, 0.17451715, 0.81043947, 0.63642156, 0.20819736, 0.55720425, 0.99082077, 0.41748822, 0.5949615, 0.98624814, + 0.914356, 0.589224, 0.8957373, 0.98555446, 0.90177155, 0.6147895, 0.21345699, 0.36278725, 0.7352588, 0.7585145, + 0.7812885, 0.5494627, 0.2527635, 0.24361539, 0.3350861, 0.2299937, 0.57615197, 0.5571872, 0.026614666, 0.3884859, + 0.62638724, 0.22102797, 0.82251275, 0.24282229, 0.56534183, 0.41435504, 0.8058554, 0.008076668, 0.31674504, 0.96483696, + 0.0036722422, 0.30464602, 0.0498451, 0.15107799, 0.6351663, 0.0821321, 0.6328051, 0.33805108, 0.7468116, 0.26946902, + 0.008346677, 0.6201843, 0.72999024, 0.18597221, 0.31186008, 0.27696884, 0.28282452, 0.5392021, 0.22431934, 0.47306013, + 0.97167265, 0.70468986, 0.6213577, 0.6244855, 0.5355427, 0.76277196, 0.3527596, 0.11873245, 0.3867787, 0.17323482, + 0.8752866, 0.58124256, 0.566615, 0.8131281, 0.11323595, 0.050239682, 0.9186964, 0.49102938, 0.49906456, 0.11117351, + 0.74266386, 0.082047105, 0.3961805, 0.90810466, 0.12492943, 0.62403107, 0.524845, 0.118376255, 0.22479963, 0.6610671, + 0.6688267, 0.1868211, 0.2449578, 0.3070413, 0.0035446882, 0.91785085, 0.37267637, 0.90682554, 0.43464327, 0.5027652, + 0.7326404, 0.8669666, 0.9169364, 0.79049134, 0.63582265, 0.23339379, 0.14591634, 0.8765527, 0.57817054, 0.44117904, + 0.7636498, 0.90421295, 0.304242, 0.5523784, 0.9938531, 0.2621634, 0.8135421, 0.10262132, 0.067290306, 0.79399335, + 0.44680035, 0.12662601, 0.38810122, 0.93097115, 0.7592342, 0.31137538, 0.9421387, 0.6344526, 0.8770789, 0.34486473, + 0.78392565, 0.6293162, 0.2406218, 0.6144471, 0.9818666, 0.19417119, 0.45903134, 0.63446784, 0.2492429, 0.25035834, + 0.82125485, 0.6784874, 0.12828827, 0.32775068, 0.4518, 0.6961206, 0.40835845, 0.19204438, 0.41124833, 0.70348287, + 0.7077348, 0.8921907, 0.9495231, 0.2691691, 0.6489984, 0.19629204, 0.21326542, 0.38734674, 0.45541644, 0.52271426, + 0.7051685, 0.5772383, 0.84789824, 0.841887, 0.5496808, 0.23395228, 0.06230092, 0.0875721, 0.73094153, 0.6792693, + 0.2582475, 0.049636245, 0.2852062, 0.32567334, 0.612864, 0.9920256, 0.50795555, 0.114962935, 0.24068129, 0.19668889, + 0.14616048, 0.91603553, 0.6150583, 0.8056741, 0.37068808, 0.035991907, 0.3996414, 0.1493485, 0.439546, 0.2417996, + 0.26057386, 0.18546665, 0.5638945, 0.6546043, 0.16363168, 0.66931, 0.17198408, 0.57299197, 0.8363092, 0.0027139187, + 0.7483021, 0.7402736, 0.83327913, 0.79789615, 0.26365983, 0.33445787, 0.82715774, 0.8514973, 0.079747915, 0.8226265, + 0.7882786, 0.91611445, 0.19671309, 0.7948278, 0.52869654, 0.74227226, 0.005864978, 0.056674123, 0.16427672, 0.26777995, + 0.1157676, 0.13946283, 0.19586003, 0.60996985, 0.99474084, 0.35092437, 0.36949253, 0.782254, 0.053942442, 0.010013938, + 0.25491416, 0.36287475, 0.27344787, 0.771368, 0.97703624, 0.32092106, 0.4669119, 0.53380847, 0.29385364, 0.14947021, + 0.9470762, 0.5531417, 0.6269984, 0.6124122, 0.5770017, 0.14757478, 0.79482424, 0.9143239, 0.98675454, 0.80586934, + 0.6792681, 0.34178138, 0.62485003, 0.71117187, 0.8276361, 0.34993446, 0.5935061, 0.43402278, 0.6073034, 0.7676077, + 0.35981333, 0.5897325, 0.99388885, 0.44033468, 0.59909153, 0.17113638, 0.3399433, 0.037410736, 0.5956106, 0.3347609, + 0.634133, 0.5040333, 0.98190093, 0.75298023, 0.8233497, 0.6208886, 0.66836476, 0.30626953, 0.6501658, 0.33863306, + 0.9033451, 0.122396946, 0.8050717, 0.11865997, 0.005946994, 0.593683, 0.1656245, 0.38930643, 0.7498045, 0.171121, + 0.12839544, 0.9428444, 0.4282006, 0.85549057, 0.2725712, 0.8494272, 0.4413259, 0.61274767, 0.64283395, 0.24346709, + 0.37192512, 0.26858616, 0.9837848, 0.5807588, 0.9813533, 0.9262183, 0.25052953, 0.63576984, 0.53413177, 0.8147098, + 0.87779987, 0.5048512, 0.23181331, 0.91634357, 0.31307125, 0.22807157, 0.4434905, 0.54325247, 0.74545264, 0.8188149, + 0.5581975, 0.92756784, 0.45664704, 0.60477674, 0.8597052, 0.9742577, 0.4074036, 0.93269145, 0.91867983, 0.21399045, + 0.38356173, 0.047356486, 0.2016623, 0.15571868, 0.15731311, 0.42723453, 0.87440944, 0.21972167, 0.5750023, 0.069185495, + 0.9616288, 0.5884545, 0.47309518, 0.44084752, 0.27182698, 0.72217333, 0.7299384, 0.39775252, 0.19970095, 0.7814982, + 0.2901188, 0.100337744, 0.26153314, 0.47814703, 0.4385054, 0.33292675, 0.6204461, 0.963243, 0.15368092, 0.07593739, + 0.24942994, 0.3542031, 0.8646345, 0.31434095, 0.5643883, 0.6068319, 0.46717894, 0.687353, 0.058402896, 0.4768021, + 0.34411168, 0.17198193, 0.24417043, 0.32249582, 0.2590382, 0.912886, 0.8556826, 0.91358113, 0.33505607, 0.24557388, + 0.018204331, 0.40480876, 0.9495534, 0.59072244, 0.42886972, 0.45545912, 0.1488992, 0.5295303, 0.7625712, 0.011691332, + 0.4603845, 0.8796458, 0.587458, 0.5254934, 0.89566755, 0.014761925, 0.6583179, 0.4517964, 0.9488832, 0.08076239, + 0.16287708, 0.28614402, 0.68821144, 0.81519735, 0.28239393, 0.16196215, 0.0029393435, 0.5602875, 0.81873524, 0.43866932, + 0.606763, 0.49302936, 0.31008124, 0.90874815, 0.87819195, 0.36834884, 0.7841091, 0.9117651, 0.7318628, 0.45430386, + 0.35772836, 0.55437124, 0.100630164, 0.77114594, 0.094901204, 0.2865703, 0.47497487, 0.25685966, 0.9425465, 0.029887319, + 0.07836223, 0.9242526, 0.67121136, 0.9908116, 0.7356689, 0.50391364, 0.3360654, 0.97230005, 0.37260938, 0.68904567, + 0.71923625, 0.5154693, 0.3211763, 0.14385068, 0.72710204, 0.57916486, 0.008303404, 0.061687946, 0.79869795, 0.22727287, + 0.38508332, 0.7432704, 0.7662873, 0.37220562, 0.9539901, 0.6041137, 0.33417356, 0.65024686, 0.7726158, 0.36412513, + 0.3907938, 0.8529533, 0.4795549, 0.96793914, 0.36191595, 0.30755746, 0.5438132, 0.5007429, 0.36279774, 0.118857026, + 0.55855846, 0.4437002, 0.14894056, 0.48293424, 0.95782566, 0.8036921, 0.28501987, 0.12654912, 0.365744, 0.36581326, + 0.66963637, 0.9659089, 0.82623756, 0.06783128, 0.5704379, 0.70359135, 0.2910174, 0.12992609, 0.55779076, 0.27534866, + 0.10464096, 0.6660743, 0.05568087, 0.13560736, 0.8776313, 0.92405856, 0.42314005, 0.44264567, 0.5472832, 0.9974396, + 0.9741874, 0.09415567, 0.53906894, 0.15336716, 0.29060173, 0.3387171, 0.64941645, 0.8255943, 0.74538577, 0.23250067, + 0.9626887, 0.24806964, 0.8060491, 0.2969842, 0.79090047, 0.33829534, 0.6336843, 0.4518528, 0.6915723, 0.029839754, + 0.16647506, 0.39573956, 0.08862412, 0.016178966, 0.052921057, 0.21782756, 0.6218153, 0.50709486, 0.32802796, 0.49543226, + 0.049818635, 0.53848016, 0.8173803, 0.23538697, 0.20066202, 0.9021071, 0.5141934, 0.32053828, 0.54631877, 0.0019482374, + 0.533844, 0.7678509, 0.6088238, 0.74461114, 0.5792794, 0.1659739, 0.24033475, 0.412637, 0.547732, 0.6503308, + 0.8846328, 0.45547724, 0.36146247, 0.9499599, 0.73945606, 0.29144657, 0.53612494, 0.9637383, 0.93161035, 0.14173126, + 0.3059044, 0.06322336, 0.47358847, 0.1634872, 0.3452301, 0.8622345, 0.91130364, 0.48902917, 0.26508844, 0.47328615, + 0.50762093, 0.66342235, 0.65169156, 0.2931292, 0.2012496, 0.41731787, 0.74583375, 0.59053123, 0.39286196, 0.635543, + 0.99667823, 0.06353879, 0.70077395, 0.3093922, 0.58273935, 0.343161, 0.2715422, 0.7438059, 0.66015184, 0.7722397, + 0.9147043, 0.73979557, 0.050675273, 0.15575731, 0.047237754, 0.10236144, 0.7199383, 0.6555284, 0.23744094, 0.38669658, + 0.595615, 0.61655796, 0.20261288, 0.25504458, 0.97712874, 0.082057476, 0.7008244, 0.13255, 0.33376753, 0.43480158, + 0.82233584, 0.9893441, 0.054785967, 0.26241326, 0.9525125, 0.87277627, 0.11326623, 0.011104226, 0.43593526, 0.89076924, + 0.11505926, 0.4572612, 0.8960165, 0.6806023, 0.96788037, 0.43750703, 0.12562001, 0.94301593, 0.5034176, 0.0399642, + 0.9716402, 0.10844755, 0.9369637, 0.6975038, 0.73210967, 0.36686063, 0.5703528, 0.088079095, 0.7104292, 0.41804564, + 0.121742606, 0.35850537, 0.6504594, 0.13200223, 0.2678467, 0.009881973, 0.049093366, 0.006628871, 0.67125773, 0.092895746, + 0.05418849, 0.1702931, 0.9489049, 0.6399064, 0.7612647, 0.27210438, 0.7364912, 0.05863142, 0.41485822, 0.21700108, + 0.28951347, 0.0656178, 0.67589235, 0.20911777, 0.41150534, 0.76864326, 0.46809888, 0.75869155, 0.2380637, 0.45948982, + 0.7511587, 0.5838133, 0.68924844, 0.34272063, 0.77698886, 0.4730569, 0.09202576, 0.57735693, 0.6268717, 0.21555054, + 0.80967045, 0.18879807, 0.4520861, 0.14313209, 0.0545125, 0.5299039, 0.07047796, 0.14857888, 0.75658166, 0.7476624, + 0.78879356, 0.0596478, 0.7126292, 0.9082972, 0.59186876, 0.9666004, 0.4277525, 0.18683302, 0.6938858, 0.54022586, + 0.54279315, 0.8275379, 0.9431139, 0.45086205, 0.521386, 0.531656, 0.779323, 0.27156937, 0.46507335, 0.16818368, + 0.7115723, 0.44442344, 0.3785144, 0.86182106, 0.98573875, 0.26274478, 0.49428654, 0.3988204, 0.05621147, 0.9107237, + 0.5459734, 0.9698428, 0.63981783, 0.49870348, 0.79262006, 0.34285808, 0.8736379, 0.58428955, 0.89621973, 0.7514156, + 0.2500229, 0.37044156, 0.17858624, 0.011668563, 0.1610508, 0.23095572, 0.43932176, 0.89876246, 0.40001154, 0.571077, + 0.28762877, 0.8468907, 0.23359406, 0.15186179, 0.71721065, 0.28672147, 0.34740615, 0.63810694, 0.67104757, 0.97608745, + 0.45288944, 0.81503356, 0.5194274, 0.25501657, 0.23005784, 0.23724163, 0.60981274, 0.6684809, 0.25304246, 0.0025992393, + 0.5854924, 0.36654103, 0.7113495, 0.4678247, 0.20158696, 0.5570767, 0.72576034, 0.8576778, 0.27661097, 0.58498454, + 0.07861769, 0.27565598, 0.6329297, 0.99668837, 0.99829257, 0.7041129, 0.55665255, 0.32900393, 0.15544593, 0.28899145, + 0.18146074, 0.4333825, 0.25522923, 0.56290853, 0.43915153, 0.0011008978, 0.44239974, 0.26880503, 0.60295415, 0.42440474, + 0.58854914, 0.3556373, 0.45344055, 0.8514602, 0.7754861, 0.066423535, 0.20454073, 0.56293416, 0.8492116, 0.78496075, + 0.19457912, 0.9618577, 0.1472565, 0.32801235, 0.71831644, 0.15783572, 0.11309576, 0.9319098, 0.6244559, 0.89029074, + 0.8221022, 0.8559654, 0.024967074, 0.06750584, 0.17022657, 0.55600274, 0.74315274, 0.96926713, 0.32544243, 0.65568984, + 0.08838022, 0.44170523, 0.18168104, 0.9115685, 0.7397616, 0.09368813, 0.14046764, 0.31007802, 0.5585172, 0.0020680428, + 0.06978297, 0.93712807, 0.84556496, 0.28471506, 0.512676, 0.6666, 0.68012655, 0.39698267, 0.27655137, 0.43682575, + 0.56988037, 0.9146124, 0.45821953, 0.3103994, 0.096473694, 0.59808254, 0.28097808, 0.36081588, 0.86763895, 0.6486243, + 0.45206463, 0.16312313, 0.25862706, 0.9772004, 0.36955166, 0.44093156, 0.9953301, 0.5002159, 0.5319911, 0.21587682, + 0.34766114, 0.25480068, 0.71190965, 0.15587234, 0.015319586, 0.30078864, 0.06905615, 0.41275513, 0.17785001, 0.215016, + 0.37261415, 0.6511587, 0.79052985, 0.6817529, 0.060821652, 0.5524225, 0.92593646, 0.22843814, 0.80642426, 0.67604935, + 0.7701262, 0.120652795, 0.56832147, 0.9189483, 0.37761378, 0.2701757, 0.8007511, 0.7996105, 0.49731266, 0.19113767, + 0.19066262, 0.5072293, 0.18622017, 0.8377557, 0.36327875, 0.77997506, 0.67428935, 0.76877546, 0.33302844, 0.38874686, + 0.7992499, 0.69803965, 0.3103609, 0.47553337, 0.22880018, 0.23313534, 0.42834187, 0.75218356, 0.34107912, 0.7520176, + 0.6987015, 0.92401946, 0.91179013, 0.47521555, 0.90081465, 0.44400644, 0.17522144, 0.99085236, 0.11477697, 0.3345312, + 0.2159152, 0.21531558, 0.857708, 0.03550732, 0.91260266, 0.58104765, 0.62081146, 0.8006053, 0.44487727, 0.35832453, + 0.50761557, 0.44910872, 0.7147782, 0.72367764, 0.9326123, 0.29223096, 0.45186317, 0.9503292, 0.6678194, 0.34386754, + 0.7693442, 0.66958714, 0.73360956, 0.4611708, 0.09887314, 0.200418, 0.69692683, 0.702603, 0.762849, 0.35175812, + 0.049579978, 0.67362833, 0.0015245676, 0.6285583, 0.91239023, 0.031867385, 0.9244741, 0.41512072, 0.9253615, 0.079096675, + 0.72723925, 0.39360988, 0.24304521, 0.15560818, 0.041139245, 0.3362348, 0.55622256, 0.59740293, 0.3870716, 0.19919634, + 0.08506644, 0.20412779, 0.24865675, 0.8515825, 0.14244354, 0.52828646, 0.74260414, 0.62648404, 0.719769, 0.81946385, + 0.43523777, 0.5222846, 0.48170733, 0.9578924, 0.78787875, 0.45989263, 0.976284, 0.8507621, 0.14487004, 0.32635033, + 0.020331979, 0.71688056, 0.67764735, 0.25449133, 0.9653505, 0.7624005, 0.61675406, 0.07801354, 0.07414389, 0.939901, + 0.67883706, 0.1387366, 0.77622104, 0.417269, 0.17931628, 0.34446836, 0.26415932, 0.54243934, 0.21575785, 0.32084274, + 0.6471205, 0.45512283, 0.32815123, 0.89469707, 0.21433556, 0.33858073, 0.21323228, 0.33407354, 0.1776073, 0.035246134, + 0.61234796, 0.27119362, 0.82145226, 0.6387135, 0.25996387, 0.0697701, 0.98357904, 0.5879369, 0.010895252, 0.9046893, + 0.77307105, 0.8458985, 0.3633685, 0.061897755, 0.28181386, 0.5076786, 0.39590287, 0.24668634, 0.22664952, 0.82508445, + 0.591334, 0.41541588, 0.25864935, 0.1826005, 0.02313137, 0.008282304, 0.0048879385, 0.18609309, 0.5629295, 0.83872104, + 0.7212565, 0.47568202, 0.35148954, 0.94599664, 0.08950424, 0.7302642, 0.15857792, 0.8009268, 0.28207195, 0.66520166, + 0.11818099, 0.56556606, 0.110533476, 0.23367023, 0.2237742, 0.7091341, 0.8498024, 0.19684374, 0.17544961, 0.042367935, + 0.9026221, 0.50952935, 0.745612, 0.31593084, 0.4930358, 0.5662211, 0.50048554, 0.8616395, 0.28437138, 0.10629499, + 0.48341417, 0.3240255, 0.830407, 0.9078181, 0.33372712, 0.2166543, 0.7898146, 0.26945138, 0.21408248, 0.40670586, + 0.52459204, 0.9730145, 0.98859024, 0.3205608, 0.66442394, 0.9879652, 0.096597314, 0.97039676, 0.18528306, 0.10662317, + 0.8001981, 0.6392633, 0.4304719, 0.73661184, 0.519614, 0.24754465, 0.54828334, 0.49313915, 0.5481732, 0.32630658, + 0.6885487, 0.28220093, 0.41675127, 0.471164, 0.74139, 0.40644932, 0.5696535, 0.33590627, 0.88720393, 0.23119736, + 0.20439911, 0.93422973, 0.320832, 0.040211678, 0.6009095, 0.27113092, 0.50428104, 0.09738898, 0.9304968, 0.12500286, + 0.7253587, 0.77314067, 0.8222766, 0.7705921, 0.8456888, 0.5937691, 0.34165144, 0.80231774, 0.19782233, 0.91658163, + 0.45833957, 0.16372633, 0.012993574, 0.6201712, 0.50650346, 0.30319488, 0.41727006, 0.66326535, 0.8777932, 0.25342643, + 0.16228962, 0.35682857, 0.5185491, 0.9329219, 0.7185948, 0.790326, 0.17167485, 0.047770023, 0.20763743, 0.24201787, + 0.9704912, 0.32009995, 0.77360904, 0.91753995, 0.42023146, 0.20573366, 0.71165097, 0.7367796, 0.8849925, 0.7991166, + 0.0797441, 0.29323936, 0.56809735, 0.28626192, 0.34367692, 0.94077945, 0.014205813, 0.2437911, 0.32021797, 0.65359545, + 0.8953661, 0.8638629, 0.7597617, 0.41426885, 0.06926119, 0.022209525, 0.8160584, 0.65363705, 0.46859086, 0.084472656, + 0.73416436, 0.97773695, 0.008449793, 0.5773548, 0.015250921, 0.64889693, 0.49060917, 0.93346095, 0.7749996, 0.43192148, + 0.59193385, 0.35592484, 0.0619812, 0.4197998, 0.49389052, 0.7293259, 0.6834229, 0.9246514, 0.43536437, 0.08217096, + 0.76871145, 0.80069375, 0.8416091, 0.68635464, 0.21184516, 0.35141182, 0.99809146, 0.9484662, 0.020008206, 0.9708315, + 0.99975777, 0.24562728, 0.95811963, 0.21620011, 0.4759972, 0.49087214, 0.40292585, 0.012907028, 0.64766896, 0.3324976, + 0.6859852, 0.39522672, 0.50135624, 0.7005676, 0.56725395, 0.3606707, 0.82294166, 0.6958443, 0.028547883, 0.48222136, + 0.7454958, 0.98710036, 0.56120026, 0.022181034, 0.47856998, 0.387388, 0.20176756, 0.6172484, 0.22061276, 0.20946646, + 0.8644031, 0.46223748, 0.4677019, 0.95789456, 0.6448493, 0.9817474, 0.83187544, 0.37631416, 0.7259364, 0.5866953, + 0.9955276, 0.71437216, 0.42719805, 0.47605515, 0.08072281, 0.56777525, 0.9490675, 0.3731315, 0.9098238, 0.61638224, + 0.108293414, 0.50029206, 0.20072448, 0.022334218, 0.47025228, 0.53747463, 0.8185706, 0.08620751, 0.44721687, 0.40591836, + 0.5803696, 0.32710493, 0.06909239, 0.16926217, 0.14675915, 0.0289855, 0.73988926, 0.7999917, 0.47605908, 0.78393435, + 0.9887701, 0.81081617, 0.17400634, 0.18963432, 0.9175476, 0.52773356, 0.050842643, 0.6016879, 0.22880054, 0.74281764, + 0.58084464, 0.3536929, 0.14166236, 0.55028105, 0.4038279, 0.70922494, 0.81550205, 0.5256995, 0.36231518, 0.17524743, + 0.7051867, 0.68845963, 0.14774966, 0.50851524, 0.03838575, 0.065110445, 0.44824362, 0.7539233, 0.41282284, 0.9750819, + 0.8848063, 0.37257445, 0.69432616, 0.65052664, 0.7557012, 0.86297655, 0.7490624, 0.12573159, 0.9204507, 0.8471613, + 0.36207902, 0.5129626, 0.598577, 0.05498767, 0.029197931, 0.57306445, 0.90776634, 0.19494438, 0.57786655, 0.1492784, + 0.4311267, 0.21654284, 0.93990374, 0.2689036, 0.40368485, 0.9250324, 0.08921909, 0.30957043, 0.9360858, 0.87940645, + 0.5357337, 0.042562604, 0.34196544, 0.93424726, 0.5225965, 0.52984285, 0.008500218, 0.6969304, 0.02931106, 0.57047236, + 0.34011793, 0.8885436, 0.8241571, 0.7340013, 0.21657479, 0.52565885, 0.24682546, 0.75489104, 0.64444137, 0.11828494, + 0.41928017, 0.23310828, 0.57989, 0.17396772, 0.12329781, 0.8526362, 0.7721447, 0.7505028, 0.40826082, 0.4471599, + 0.36693966, 0.5178678, 0.2886076, 0.02278626, 0.846614, 0.2645439, 0.095194936, 0.97863424, 0.8181387, 0.2568785, + 0.28641045, 0.4889834, 0.24015939, 0.6903932, 0.89565694, 0.4596367, 0.8553127, 0.9475155, 0.42796624, 0.6188129, + 0.15538669, 0.63190484, 0.22089481, 0.80139244, 0.36802673, 0.42290604, 0.7579931, 0.5564873, 0.71794677, 0.6101744, + 0.2916416, 0.13165009, 0.07844138, 0.18229365, 0.22042692, 0.13051033, 0.92585886, 0.18179, 0.46223855, 0.96387184, + 0.92967045, 0.54464746, 0.54909503, 0.40820765, 0.6034552, 0.4849373, 0.8806232, 0.45460653, 0.94596195, 0.76789486, + 0.7525495, 0.39198256, 0.3405038, 0.12069368, 0.07573581, 0.44571078, 0.99672365, 0.076937556, 0.31034887, 0.71739423, + 0.5207726, 0.90379906, 0.7604362, 0.5337447, 0.21497571, 0.33771574, 0.1105541, 0.7266669, 0.93214536, 0.7427747, + 0.649253, 0.3724674, 0.20541167, 0.336074, 0.35409713, 0.92259586, 0.13476443, 0.016726613, 0.30847168, 0.6356913, + 0.22577512, 0.9356338, 0.29006386, 0.78581965, 0.22405219, 0.49781108, 0.38500845, 0.6081706, 0.5482172, 0.844584, + 0.107258916, 0.029871702, 0.5950588, 0.16126382, 0.2148968, 0.25681114, 0.38993943, 0.2638409, 0.31440854, 0.25360918, + 0.45148408, 0.23758805, 0.76283145, 0.21877289, 0.27119386, 0.17510188, 0.43231833, 0.19550347, 0.6240896, 0.24658513, + 0.2768948, 0.27051163, 0.08016729, 0.29234338, 0.4884851, 0.105314255, 0.61312294, 0.20885098, 0.9360819, 0.44072163, + 0.76933587, 0.7898004, 0.84014237, 0.16236186, 0.93231857, 0.83791053, 0.31689513, 0.58383787, 0.97360396, 0.6283616, + 0.8871347, 0.9355371, 0.7892976, 0.16497624, 0.40144575, 0.94361997, 0.9268329, 0.38516915, 0.26197922, 0.62110186, + 0.8354622, 0.5244837, 0.1371696, 0.54713035, 0.61866355, 0.09861398, 0.26882958, 0.3907975, 0.8408997, 0.13778782, + 0.10430908, 0.116101265, 0.12059653, 0.34904003, 0.6231868, 0.619643, 0.0013849735, 0.53576565, 0.7704475, 0.8220384, + 0.1876508, 0.86109877, 0.41957748, 0.5335779, 0.6672065, 0.5576868, 0.7813809, 0.2063669, 0.46574867, 0.94972146, + 0.43765378, 0.45001614, 0.026944876, 0.88066113, 0.5768014, 0.48079944, 0.38284016, 0.6798645, 0.36824822, 0.9482515, + 0.3091761, 0.5590097, 0.6593752, 0.90113246, 0.514802, 0.9560946, 0.50078034, 0.8689424, 0.7627641, 0.6386123, + 0.3201511, 0.22144413, 0.2507975, 0.45111573, 0.5909728, 0.10912359, 0.74913573, 0.6820383, 0.86003816, 0.14559615, + 0.22996259, 0.7000786, 0.6488491, 0.6788682, 0.18922877, 0.009787202, 0.77192426, 0.6581255, 0.46968567, 0.85547125, + 0.5157434, 0.8101891, 0.57122254, 0.5764102, 0.41633463, 0.21107543, 0.794575, 0.6766341, 0.8160944, 0.89932036, + 0.91537666, 0.49353898, 0.086411595, 0.3039322, 0.4832096, 0.8194516, 0.42615807, 0.52318573, 0.5634495, 0.61038935, + 0.38167262, 0.6688714, 0.7709342, 0.10772765, 0.022864103, 0.076440334, 0.4725951, 0.21984506, 0.09468317, 0.56059504, + 0.7469039, 0.8534874, 0.16971433, 0.97212374, 0.9277178, 0.4824443, 0.56515443, 0.596933, 0.7391671, 0.58390474, + 0.0427289, 0.6832173, 0.80663383, 0.6726949, 0.7654358, 0.15631545, 0.9927794, 0.20932317, 0.114006996, 0.20726359, + 0.49297774, 0.45377624, 0.423419, 0.2909317, 0.23791242, 0.93831575, 0.001095891, 0.40030026, 0.59970605, 0.51733184, + 0.94346035, 0.44343746, 0.8788154, 0.61663294, 0.34536695, 0.02020359, 0.8278016, 0.65676355, 0.16409159, 0.4275515, + 0.49438393, 0.44802868, 0.16625655, 0.01475811, 0.459383, 0.5862576, 0.72364306, 0.38105404, 0.19342422, 0.43778896, + 0.05640912, 0.9452152, 0.30429935, 0.66409945, 0.39489388, 0.8718662, 0.6038215, 0.09846556, 0.4612807, 0.47842145, + 0.121831894, 0.00070881844, 0.6774461, 0.760697, 0.7117437, 0.59560335, 0.18447375, 0.91430414, 0.62669504, 0.74303913, + 0.43605864, 0.791168, 0.9077883, 0.22808754, 0.45315087, 0.122772336, 0.48727643, 0.8492012, 0.869167, 0.14909208, + 0.24115813, 0.57733524, 0.19908369, 0.07013595, 0.45881724, 0.49765182, 0.046831965, 0.5400802, 0.3832965, 0.088957906, + 0.014243722, 0.21020424, 0.7503433, 0.531387, 0.9593154, 0.88402915, 0.95254135, 0.34550583, 0.86739373, 0.36454403, + 0.5213088, 0.006765604, 0.87643635, 0.9247074, 0.11978483, 0.5260029, 0.8386898, 0.6797445, 0.87760556, 0.95063937, + 0.12240076, 0.124458075, 0.79591465, 0.05779648, 0.04845822, 0.016687155, 0.17982793, 0.5697781, 0.70284796, 0.64464176, + 0.28357232, 0.9072015, 0.8424399, 0.9739506, 0.678208, 0.76438975, 0.59557724, 0.5829319, 0.44698572, 0.183393, + 0.59334457, 0.06800926, 0.9876615, 0.79772663, 0.919809, 0.90150774, 0.1509527, 0.9302163, 0.8679247, 0.06518853, + 0.5927969, 0.608407, 0.13817918, 0.8603718, 0.66343343, 0.03555572, 0.7141932, 0.08824396, 0.09285283, 0.8985299, + 0.75657153, 0.43066394, 0.7900647, 0.44234407, 0.815158, 0.7902192, 0.4556408, 0.9930748, 0.8909048, 0.41732585, + 0.9028381, 0.34595764, 0.65539896, 0.18453026, 0.42251718, 0.51510155, 0.4712125, 0.36520648, 0.02726376, 0.3040099, + 0.96063113, 0.3893, 0.9566742, 0.466707, 0.26739275, 0.12741292, 0.27436984, 0.32078397, 0.40955245, 0.2281152, + 0.705045, 0.92129445, 0.76109457, 0.9052019, 0.9625423, 0.4054731, 0.105170965, 0.27116776, 0.9384192, 0.24955094, + 0.18520916, 0.1030426, 0.23659754, 0.94052076, 0.48046243, 0.177477, 0.116348624, 0.6327851, 0.57965004, 0.43983245, + 0.95717335, 0.93491626, 0.008707523, 0.1698432, 0.68292904, 0.21637177, 0.64623034, 0.92905736, 0.421605, 0.39125884, + 0.8234204, 0.4644438, 0.7849318, 0.0735594, 0.93446565, 0.9430226, 0.774366, 0.6115508, 0.5996156, 0.52487695, + 0.29699385, 0.73536265, 0.95668054, 0.72458816, 0.9434711, 0.54205775, 0.86730003, 0.2012335, 0.19012618, 0.1368922, + 0.91701853, 0.40248477, 0.50191724, 0.42969358, 0.2998339, 0.686345, 0.085552454, 0.5717921, 0.9024024, 0.22273898, + 0.3062564, 0.40420365, 0.4601513, 0.72295094, 0.21332383, 0.6330874, 0.42494392, 0.55386245, 0.93205774, 0.7240075, + 0.38994503, 0.7331388, 0.017596245, 0.65458107, 0.75389266, 0.29891574, 0.5539452, 0.16041231, 0.51121676, 0.4321748, + 0.6975839, 0.8136159, 0.5909631, 0.7386161, 0.42331982, 0.84611726, 0.0012364388, 0.66423917, 0.06563008, 0.90052605, + 0.5343683, 0.5688654, 0.72081804, 0.46366632, 0.42951798, 0.64402866, 0.19868255, 0.007995129, 0.83389807, 0.84563875, + 0.41091383, 0.39566553, 0.5355325, 0.30539954, 0.3262943, 0.23791778, 0.55150783, 0.78128076, 0.48648095, 0.3401233, + 0.5557368, 0.5267644, 0.2746433, 0.17450154, 0.45250857, 0.008645892, 0.44412065, 0.45932293, 0.12946475, 0.01311779, + 0.48381984, 0.95043206, 0.5438169, 0.19742835, 0.25955737, 0.97381735, 0.13950944, 0.7052485, 0.850088, 0.11795664, + 0.7665411, 0.8391706, 0.5571674, 0.4419526, 0.32868838, 0.111050844, 0.75159836, 0.82800066, 0.31243265, 0.80435836, + 0.9318341, 0.52065635, 0.3272395, 0.36172557, 0.492517, 0.9463693, 0.31988358, 0.18364322, 0.7006897, 0.8972788, + 0.05028975, 0.36960185, 0.9271432, 0.42299652, 0.5702206, 0.79333806, 0.31106317, 0.9732926, 0.48309302, 0.48955822, + 0.5659355, 0.7616854, 0.8699939, 0.6049628, 0.4572158, 0.6602361, 0.505618, 0.9234036, 0.06651187, 0.59549403, + 0.8385047, 0.11908007, 0.6052959, 0.50332916, 0.52623165, 0.90001917, 0.4979142, 0.19105422, 0.044943452, 0.2453494, + 0.4253081, 0.09380293, 0.9299675, 0.9823271, 0.26787484, 0.9325211, 0.89249635, 0.5023407, 0.48697495, 0.55032027, + 0.9985539, 0.37058365, 0.8050616, 0.40203428, 0.2159729, 0.19033504, 0.8998989, 0.040631652, 0.61069584, 0.57587504, + 0.29204154, 0.8592011, 0.600723, 0.46155024, 0.78079545, 0.9797622, 0.011621833, 0.11545873, 0.5472075, 0.6606462, + 0.0764637, 0.34509456, 0.84131634, 0.62546873, 0.9698156, 0.426867, 0.1457076, 0.9963372, 0.7396401, 0.7843375, + 0.38063633, 0.1989615, 0.018760085, 0.4072814, 0.77375185, 0.9957533, 0.3130213, 0.8634138, 0.46897125, 0.44445825, + 0.60939884, 0.021061897, 0.9488238, 0.2880453, 0.040649176, 0.18815732, 0.6432431, 0.13030005, 0.34577537, 0.62555087, + 0.24145854, 0.27260077, 0.20891404, 0.4307456, 0.06295693, 0.3063556, 0.2869178, 0.8136598, 0.8914851, 0.03513038, + 0.5325296, 0.6547828, 0.6385778, 0.71722865, 0.12591541, 0.16604686, 0.762993, 0.7598791, 0.41634893, 0.32300568, + 0.6897869, 0.29830158, 0.8400191, 0.5499227, 0.322325, 0.27235377, 0.49730468, 0.5058465, 0.81801045, 0.4438672, + 0.3366102, 0.020214558, 0.9574443, 0.7129102, 0.10075188, 0.45588088, 0.3848461, 0.06718004, 0.7314944, 0.8572018, + 0.41633606, 0.0027153492, 0.79847944, 0.33917463, 0.8741555, 0.26820993, 0.20650315, 0.0060925484, 0.58488476, 0.9301466, + 0.72300136, 0.1710285, 0.53218925, 0.2261734, 0.7663491, 0.0004452467, 0.14710498, 0.31834936, 0.75150156, 0.9289111, + 0.7560625, 0.4394393, 0.43180132, 0.35200167, 0.17655265, 0.94999945, 0.8517543, 0.9587712, 0.38932836, 0.21337259, + 0.2781713, 0.24972236, 0.5211731, 0.86335886, 0.5984459, 0.6260141, 0.8805593, 0.9998236, 0.6133126, 0.8026165, + 0.7797748, 0.10139835, 0.45289183, 0.60841537, 0.6397393, 0.2869295, 0.95750105, 0.00014054775, 0.74664557, 0.54665434, + 0.7873961, 0.9973109, 0.36070728, 0.9382651, 0.5291873, 0.7578443, 0.92896414, 0.72396815, 0.13711345, 0.48335958, + 0.79642713, 0.88767684, 0.54553497, 0.009688735, 0.46796072, 0.22365952, 0.33790672, 0.58301675, 0.79072046, 0.04837179, + 0.5035169, 0.747615, 0.05338967, 0.5268462, 0.21020186, 0.22541499, 0.035803318, 0.090353966, 0.8952265, 0.6528566, + 0.64126635, 0.026224017, 0.9919175, 0.5730021, 0.7291974, 0.7752149, 0.3218732, 0.06379342, 0.5928781, 0.44420183, + 0.5895004, 0.81038094, 0.81207883, 0.7418941, 0.24261343, 0.18539095, 0.46753752, 0.6900375, 0.58825374, 0.76915586, + 0.8843223, 0.7434628, 0.41890657, 0.30091333, 0.7525383, 0.022969842, 0.8184351, 0.07255125, 0.32981515, 0.5692545, + 0.065372944, 0.53784287, 0.7921468, 0.045265317, 0.34530377, 0.89636993, 0.43792808, 0.31964493, 0.10664272, 0.26695156, + 0.5958868, 0.33832574, 0.36951315, 0.86327815, 0.12636626, 0.67303085, 0.4760201, 0.8411715, 0.07911563, 0.69951844, + 0.7567936, 0.36490297, 0.18722332, 0.98485494, 0.13600576, 0.73340607, 0.7770513, 0.2200756, 0.42526639, 0.16783321, + 0.53869474, 0.086185455, 0.8837999, 0.081128955, 0.20998955, 0.7118223, 0.29446614, 0.5951327, 0.17610145, 0.015954852, + 0.53358555, 0.95286286, 0.29186308, 0.2535367, 0.31155562, 0.027576923, 0.8789197, 0.36013925, 0.6637299, 0.023362756, + 0.39644432, 0.8587805, 0.42137432, 0.6198008, 0.14239597, 0.75332475, 0.14649141, 0.6961322, 0.6209277, 0.50214756, + 0.67862093, 0.690362, 0.3325237, 0.64408624, 0.8476635, 0.5807227, 0.8634039, 0.7017826, 0.7690264, 0.66686857, + 0.3434931, 0.8126197, 0.6636872, 0.6014049, 0.5313623, 0.5992073, 0.62506247, 0.56315434, 0.80882037, 0.32973516, + 0.54395664, 0.7178421, 0.07294989, 0.21406496, 0.9502369, 0.6122458, 0.4108026, 0.49830854, 0.8116578, 0.8892354, + 0.5088432, 0.5419935, 0.89436376, 0.6524111, 0.03276515, 0.17632914, 0.20731139, 0.2939378, 0.8230814, 0.45138645, + 0.9188534, 0.35317135, 0.04680252, 0.849031, 0.7454829, 0.633018, 0.004293561, 0.9773097, 0.21971393, 0.122896075, + 0.477409, 0.9217073, 0.9424641, 0.9307542, 0.5092119, 0.8585882, 0.8774098, 0.28767657, 0.86791396, 0.6002227, + 0.66517127, 0.24726725, 0.7403469, 0.6707703, 0.4279331, 0.16843295, 0.5631764, 0.8463224, 0.8061552, 0.30608463, + 0.09159422, 0.34705913, 0.25008285, 0.6757778, 0.4244634, 0.095475554, 0.713598, 0.23027503, 0.3249942, 0.5639111, + 0.03611076, 0.8020971, 0.9565375, 0.32208312, 0.8502139, 0.33968234, 0.18326402, 0.04271996, 0.070637584, 0.9811927, + 0.71214604, 0.44660413, 0.34602487, 0.77315485, 0.30251884, 0.08101797, 0.6046778, 0.63996565, 0.25666034, 0.11062181, + 0.7577908, 0.33282351, 0.27553737, 0.6404567, 0.515092, 0.063676596, 0.25581837, 0.4907714, 0.8881253, 0.3345673, + 0.009430647, 0.65420735, 0.047246218, 0.6041722, 0.3078146, 0.9908116, 0.31711686, 0.64722896, 0.48887944, 0.5926876 + +}; + + +static const float s_ref_in_3[15] = { + 0.27463865, 0.096559644, 0.8262538, 0.23872852, 0.92823386, 0.45637512, 0.80588424, 0.5794023, 0.25774014, 0.20805216, + 0.33264327, 0.6097946, 0.5922972, 0.3169762, 0.62389123 +}; + +static const float s_ref_out_3[3] = { + 2.1196008, 2.2538152, 2.774055 +}; + +static const int32_t s_ref_axis_3[1] = { + 0 +}; + +static const int32_t s_ref_axis_4[1] = { + 0 +}; + + +static const float s_ref_in_4[300] = { + 0.3170308, 0.8508799, 0.9343252, 0.8132678, 0.5227629, 0.21126235, 0.92412066, 0.10437608, 0.18218088, 0.6430415, + 0.5644717, 0.5894418, 0.58074737, 0.6289016, 0.32241344, 0.5440862, 0.94226587, 0.08141625, 0.817104, 0.84937406, + 0.0446862, 0.009930611, 0.60297406, 0.53378, 0.8734963, 0.6648531, 0.45676994, 0.761294, 0.33146477, 0.18020976, + 0.776297, 0.3275261, 0.87975717, 0.46862662, 0.662956, 0.5930047, 0.94778407, 0.5102533, 0.14388645, 0.538784, + 0.78650653, 0.00745368, 0.6087724, 0.6740788, 0.35517633, 0.9212018, 0.30038893, 0.87381756, 0.24262011, 0.6031513, + 0.13945389, 0.6855658, 0.87102735, 0.20698678, 0.17658365, 0.08452821, 0.62391746, 0.5239303, 0.56989825, 0.1773547, + 0.23231065, 0.9755815, 0.56677246, 0.14534903, 0.86095953, 0.5557097, 0.06940591, 0.5534991, 0.855415, 0.16414607, + 0.7956674, 0.59989774, 0.56404924, 0.64413357, 0.6370214, 0.7640848, 0.1919483, 0.90493333, 0.20431185, 0.5117775, + 0.52189744, 0.43821025, 0.9084207, 0.4896598, 0.07568598, 0.5355047, 0.025326371, 0.8135778, 0.62005603, 0.52170265, + 0.5187191, 0.41446662, 0.75057614, 0.22039866, 0.82781684, 0.8618771, 0.9300208, 0.69949245, 0.24139881, 0.27396226, + 0.37665844, 0.34122193, 0.60290253, 0.936252, 0.55714095, 0.36943734, 0.92629683, 0.28148174, 0.4201311, 0.911554, + 0.6824775, 0.6495658, 0.732386, 0.97551954, 0.234622, 0.97549677, 0.8019662, 0.81195724, 0.07082605, 0.3794918, + 0.6119499, 0.9404409, 0.7625637, 0.26998615, 0.7007446, 0.9497868, 0.77031374, 0.007848978, 0.20176983, 0.18416655, + 0.24470484, 0.50242543, 0.99647284, 0.20376778, 0.80554926, 0.6916096, 0.0064691305, 0.16321182, 0.0127260685, 0.669057, + 0.8938961, 0.015486479, 0.36056662, 0.20944774, 0.6651372, 0.898602, 0.018214941, 0.34747863, 0.6577898, 0.75690603, + 0.67638934, 0.22101557, 0.11049986, 0.8873645, 0.34674406, 0.5510068, 0.9055104, 0.9703289, 0.21821213, 0.102954626, + 0.2856635, 0.05311644, 0.29634058, 0.62760556, 0.8043922, 0.15966845, 0.9692236, 0.045668483, 0.52900004, 0.27069032, + 0.04701066, 0.43083227, 0.09155667, 0.98857355, 0.7760577, 0.503634, 0.5997704, 0.05111015, 0.4164847, 0.96176744, + 0.16809094, 0.36865163, 0.5046464, 0.3645177, 0.8678794, 0.24195063, 0.29044032, 0.6307188, 0.28084433, 0.97022915, + 0.53154147, 0.48737955, 0.8557004, 0.6537808, 0.3470304, 0.2673335, 0.5647875, 0.48689818, 0.01156199, 0.6453538, + 0.20649052, 0.3405944, 0.6891035, 0.7325407, 0.99459994, 0.19894266, 0.38924754, 0.8408427, 0.61956334, 0.16466117, + 0.9208207, 0.76318324, 0.9032278, 0.7271446, 0.95521414, 0.5179807, 0.7391707, 0.4750682, 0.43809187, 0.5902872, + 0.32094955, 0.59650695, 0.59523094, 0.75387585, 0.15434158, 0.36689627, 0.00055265427, 0.5290612, 0.75206745, 0.8270756, + 0.94942105, 0.17100441, 0.8264818, 0.4557017, 0.2755264, 0.778563, 0.6249919, 0.604941, 0.4510038, 0.48278296, + 0.9564177, 0.23501337, 0.6366111, 0.79314137, 0.32816005, 0.08045864, 0.24302256, 0.7602745, 0.7687428, 0.60064423, + 0.35666192, 0.9503472, 0.23301601, 0.83359265, 0.36721122, 0.56076133, 0.042044282, 0.48969078, 0.7619554, 0.048397303, + 0.79028904, 0.9264736, 0.48806155, 0.19924653, 0.75378203, 0.0044254065, 0.37891197, 0.3862599, 0.20245063, 0.32678223, + 0.24842799, 0.7213844, 0.19563437, 0.91932726, 0.0626992, 0.22989249, 0.47125208, 0.78004, 0.7733439, 0.8498181, + 0.3680172, 0.65390253, 0.51022327, 0.84815395, 0.18831241, 0.87922335, 0.25881302, 0.23769987, 0.34320986, 0.29735625, + 0.4676571, 0.805629, 0.39954078, 0.10411632, 0.65849113, 0.87334347, 0.4593916, 0.07336342, 0.08414376, 0.3175645 + +}; + +static const float s_ref_out_4[30] = { + 5.4264536, 5.8181434, 6.244614, 5.6091237, 6.1359367, 4.7929296, 6.291041, 5.4919004, 4.1038857, 4.9180336, + 4.630842, 4.781693, 5.843456, 6.804143, 4.5385895, 5.524303, 4.20279, 4.093879, 4.0946875, 5.6337867, + 4.7432795, 4.4732924, 5.970119, 4.8955727, 5.483982, 5.5178933, 4.378508, 5.214755, 4.023681, 4.269223 + +}; + +#endif \ No newline at end of file diff --git a/TESTS/operators/test_rsqrt.cpp b/TESTS/operators/test_rsqrt.cpp new file mode 100644 index 00000000..1c205912 --- /dev/null +++ b/TESTS/operators/test_rsqrt.cpp @@ -0,0 +1,200 @@ +#include +#include + +#include "uTensor.h" +#include "gtest/gtest.h" + +#include "constants_rsqrt.hpp" +using std::cout; +using std::endl; + +using namespace uTensor; +using namespace uTensor::ReferenceOperators; + +SimpleErrorHandler mErrHandler(10); + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceRsqrt, random_gen_rsqrt__0) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<4032*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor out = new RamTensor({ 8,9,8,7 }, flt); + Tensor out_ref = new RomTensor({ 8,9,8,7 }, flt, s_ref_out_0); + Tensor input = new RomTensor({ 8,9,8,7 }, flt, s_ref_in_0); + + uTensor::ReferenceOperators::RsqrtOperator rsqrt_op; + rsqrt_op + .set_inputs({ + { uTensor::ReferenceOperators::RsqrtOperator::input, input } + }).set_outputs({ + { uTensor::ReferenceOperators::RsqrtOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 4032; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceRsqrt, random_gen_rsqrt__1) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<80*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor input = new RomTensor({ 4,5,4 }, flt, s_ref_in_1); + Tensor out = new RamTensor({ 4,5,4 }, flt); + Tensor out_ref = new RomTensor({ 4,5,4 }, flt, s_ref_out_1); + + uTensor::ReferenceOperators::RsqrtOperator rsqrt_op; + rsqrt_op + .set_inputs({ + { uTensor::ReferenceOperators::RsqrtOperator::input, input } + }).set_outputs({ + { uTensor::ReferenceOperators::RsqrtOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 80; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceRsqrt, random_gen_rsqrt__2) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<315*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor input = new RomTensor({ 5,9,7 }, flt, s_ref_in_2); + Tensor out_ref = new RomTensor({ 5,9,7 }, flt, s_ref_out_2); + Tensor out = new RamTensor({ 5,9,7 }, flt); + + uTensor::ReferenceOperators::RsqrtOperator rsqrt_op; + rsqrt_op + .set_inputs({ + { uTensor::ReferenceOperators::RsqrtOperator::input, input } + }).set_outputs({ + { uTensor::ReferenceOperators::RsqrtOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 315; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceRsqrt, random_gen_rsqrt__3) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<63*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor input = new RomTensor({ 7,9 }, flt, s_ref_in_3); + Tensor out_ref = new RomTensor({ 7,9 }, flt, s_ref_out_3); + Tensor out = new RamTensor({ 7,9 }, flt); + + uTensor::ReferenceOperators::RsqrtOperator rsqrt_op; + rsqrt_op + .set_inputs({ + { uTensor::ReferenceOperators::RsqrtOperator::input, input } + }).set_outputs({ + { uTensor::ReferenceOperators::RsqrtOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 63; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceRsqrt, random_gen_rsqrt__4) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<540*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor out = new RamTensor({ 6,10,9 }, flt); + Tensor out_ref = new RomTensor({ 6,10,9 }, flt, s_ref_out_4); + Tensor input = new RomTensor({ 6,10,9 }, flt, s_ref_in_4); + + uTensor::ReferenceOperators::RsqrtOperator rsqrt_op; + rsqrt_op + .set_inputs({ + { uTensor::ReferenceOperators::RsqrtOperator::input, input } + }).set_outputs({ + { uTensor::ReferenceOperators::RsqrtOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 540; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + diff --git a/TESTS/operators/test_sum.cpp b/TESTS/operators/test_sum.cpp new file mode 100644 index 00000000..af6d13c3 --- /dev/null +++ b/TESTS/operators/test_sum.cpp @@ -0,0 +1,210 @@ +#include +#include + +#include "uTensor.h" +#include "gtest/gtest.h" + +#include "constants_sum.hpp" +using std::cout; +using std::endl; + +using namespace uTensor; +using namespace uTensor::ReferenceOperators; + +SimpleErrorHandler mErrHandler(10); + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceSum, random_gen_reduce_sum__0) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<108*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor input = new RomTensor({ 3,9,7,4 }, flt, s_ref_in_0); + Tensor axis = new RomTensor({ 1 }, i32, s_ref_axis_0); + Tensor out = new RamTensor({ 3,9,4 }, flt); + Tensor out_ref = new RomTensor({ 3,9,4 }, flt, s_ref_out_0); + + uTensor::ReferenceOperators::SumOperator sum_op; + sum_op + .set_inputs({ + { uTensor::ReferenceOperators::SumOperator::input, input }, + { uTensor::ReferenceOperators::SumOperator::axis, axis } + }).set_outputs({ + { uTensor::ReferenceOperators::SumOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 108; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceSum, random_gen_reduce_sum__1) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<112*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor axis = new RomTensor({ 1 }, i32, s_ref_axis_1); + Tensor out_ref = new RomTensor({ 7,4,4 }, flt, s_ref_out_1); + Tensor input = new RomTensor({ 4,7,4,4 }, flt, s_ref_in_1); + Tensor out = new RamTensor({ 7,4,4 }, flt); + + uTensor::ReferenceOperators::SumOperator sum_op; + sum_op + .set_inputs({ + { uTensor::ReferenceOperators::SumOperator::input, input }, + { uTensor::ReferenceOperators::SumOperator::axis, axis } + }).set_outputs({ + { uTensor::ReferenceOperators::SumOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 112; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceSum, random_gen_reduce_sum__2) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<360*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor axis = new RomTensor({ 1 }, i32, s_ref_axis_2); + Tensor out = new RamTensor({ 9,8,5 }, flt); + Tensor out_ref = new RomTensor({ 9,8,5 }, flt, s_ref_out_2); + Tensor input = new RomTensor({ 9,8,5,10 }, flt, s_ref_in_2); + + uTensor::ReferenceOperators::SumOperator sum_op; + sum_op + .set_inputs({ + { uTensor::ReferenceOperators::SumOperator::input, input }, + { uTensor::ReferenceOperators::SumOperator::axis, axis } + }).set_outputs({ + { uTensor::ReferenceOperators::SumOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 360; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceSum, random_gen_reduce_sum__3) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<3*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor out = new RamTensor({ 3 }, flt); + Tensor input = new RomTensor({ 5,3 }, flt, s_ref_in_3); + Tensor out_ref = new RomTensor({ 3 }, flt, s_ref_out_3); + Tensor axis = new RomTensor({ 1 }, i32, s_ref_axis_3); + + uTensor::ReferenceOperators::SumOperator sum_op; + sum_op + .set_inputs({ + { uTensor::ReferenceOperators::SumOperator::input, input }, + { uTensor::ReferenceOperators::SumOperator::axis, axis } + }).set_outputs({ + { uTensor::ReferenceOperators::SumOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 3; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + +/*************************************** + * Generated Test + ***************************************/ + +TEST(ReferenceSum, random_gen_reduce_sum__4) { + // Make sure no errors get thrown + bool got_error = false; + mErrHandler.set_onError([&got_error](Error* err){ + got_error = true; + }); + + localCircularArenaAllocator<1024> meta_allocator; + localCircularArenaAllocator<30*2*sizeof(float), uint32_t> ram_allocator; + Context::get_default_context()->set_metadata_allocator(&meta_allocator); + Context::get_default_context()->set_ram_data_allocator(&ram_allocator); + Context::get_default_context()->set_ErrorHandler(&mErrHandler); + + Tensor axis = new RomTensor({ 1 }, i32, s_ref_axis_4); + Tensor out = new RamTensor({ 5,6 }, flt); + Tensor input = new RomTensor({ 10,5,6 }, flt, s_ref_in_4); + Tensor out_ref = new RomTensor({ 5,6 }, flt, s_ref_out_4); + + uTensor::ReferenceOperators::SumOperator sum_op; + sum_op + .set_inputs({ + { uTensor::ReferenceOperators::SumOperator::input, input }, + { uTensor::ReferenceOperators::SumOperator::axis, axis } + }).set_outputs({ + { uTensor::ReferenceOperators::SumOperator::output, out } + }).eval(); + + // Make sure no errors got thrown + ASSERT_EQ(got_error, false); + + for(int i = 0; i < 30; i++) { + EXPECT_NEAR(static_cast( out(i) ), static_cast( out_ref(i) ), 0.001); +} +} + diff --git a/python/test_scripts/gen_rsqrt.py b/python/test_scripts/gen_rsqrt.py new file mode 100644 index 00000000..349f52f1 --- /dev/null +++ b/python/test_scripts/gen_rsqrt.py @@ -0,0 +1,50 @@ +from random import randint + +import tensorflow as tf +from jinja_env import Operator, SingleOpTest, Tensor, env2 + +test_group = "ReferenceRsqrt" +num_tests = 5 +output_file = "test_rsqrt.cpp" +const_file = "constants_rsqrt.hpp" + + +def gen_test(test_number: int): + test_name = f"random_gen_rsqrt__{test_number:d}" + num_dims = randint(2, 4) + in_tensor = tf.constant( + tf.random.uniform([randint(3, 10) for _ in range(num_dims)]), + ).numpy() + out = tf.math.rsqrt(in_tensor).numpy() + in_t = Tensor("input", in_tensor, f"s_ref_in_{test_number:0d}") + out_ref = Tensor("out_ref", out, f"s_ref_out_{test_number:0d}") + out_t = Tensor("out", out) + op = Operator( + "RsqrtOperator", "rsqrt_op", dtypes=[lambda: "float"] + ) + op.set_namespace("uTensor::ReferenceOperators::") + op.set_inputs({"input": in_t}).set_outputs({"output": out_t}) + test = SingleOpTest(test_group, test_name, op) + test.add_tensor_comparison(out_t, out_ref, 0.001) + return test.render() + + +if __name__ == "__main__": + tests = [] + const_snippets = [] + for i in range(num_tests): + tr, cs = gen_test(i) + tests.append(tr) + const_snippets.extend(cs) + with open(const_file, "w") as fp: + c_r = env2.get_template("const_container.hpp").render( + constants=const_snippets, constants_header=const_file + ) + fp.write(c_r) + with open(output_file, "w") as fp: + gt_r = env2.get_template("gtest_container.cpp").render( + constants_header=const_file, + using_directives=["using namespace uTensor::ReferenceOperators"], + tests=tests, + ) + fp.write(gt_r) diff --git a/python/test_scripts/gen_sum.py b/python/test_scripts/gen_sum.py new file mode 100644 index 00000000..09dfa0c4 --- /dev/null +++ b/python/test_scripts/gen_sum.py @@ -0,0 +1,55 @@ +from random import randint + +import numpy as np +import tensorflow as tf +from jinja_env import Operator, SingleOpTest, Tensor, env2 + +test_group = "ReferenceSum" +num_tests = 5 +output_file = "test_sum.cpp" +const_file = "constants_sum.hpp" + + +def gen_test(test_number): + test_name = f"random_gen_reduce_sum__{test_number:d}" + num_dims = randint(2, 4) + in_tensor = tf.constant( + tf.random.uniform([randint(3, 10) for _ in range(num_dims)]), + ).numpy() + axis = np.array([randint(0, num_dims - 1)], dtype=np.int32) + out = tf.reduce_sum(in_tensor, axis=axis).numpy() + + in_t = Tensor("input", in_tensor, f"s_ref_in_{test_number:0d}") + axis_t = Tensor("axis", axis, f"s_ref_axis_{test_number:0d}") + out_ref = Tensor("out_ref", out, f"s_ref_out_{test_number:0d}") + out_t = Tensor("out", out) + + op = Operator("SumOperator", "sum_op", dtypes=[lambda: "float"]) + op.set_namespace("uTensor::ReferenceOperators::") + op.set_inputs({"input": in_t, "axis": axis_t}).set_outputs({"output": out_t}) + + test = SingleOpTest(test_group, test_name, op) + test.add_tensor_comparison(out_t, out_ref, 0.001) + test_rendered, const_snippets = test.render() + return test_rendered, const_snippets + + +if __name__ == "__main__": + tests = [] + const_snippets = [] + for i in range(num_tests): + tr, cs = gen_test(i) + tests.append(tr) + const_snippets.extend(cs) + with open(const_file, "w") as fp: + c_r = env2.get_template("const_container.hpp").render( + constants=const_snippets, constants_header=const_file + ) + fp.write(c_r) + with open(output_file, "w") as fp: + gt_r = env2.get_template("gtest_container.cpp").render( + constants_header=const_file, + using_directives=["using namespace uTensor::ReferenceOperators"], + tests=tests, + ) + fp.write(gt_r) diff --git a/src/uTensor.h b/src/uTensor.h index 2ca4e6f6..608c4567 100644 --- a/src/uTensor.h +++ b/src/uTensor.h @@ -23,6 +23,8 @@ #include "uTensor/ops/Functional.hpp" #include "uTensor/ops/Matrix.hpp" #include "uTensor/ops/Reshape.hpp" +#include "uTensor/ops/Rsqrt.hpp" +#include "uTensor/ops/Sum.hpp" #include "uTensor/ops/symmetric_quantization/QuantizeOps.hpp" #include "uTensor/ops/symmetric_quantization/convolution2d.hpp" #include "uTensor/ops/symmetric_quantization/depthwise_separable_convolution.hpp" diff --git a/src/uTensor/ops/Rsqrt.hpp b/src/uTensor/ops/Rsqrt.hpp new file mode 100644 index 00000000..a4123624 --- /dev/null +++ b/src/uTensor/ops/Rsqrt.hpp @@ -0,0 +1,32 @@ +#ifndef UTENSOR_RSQRT_H +#define UTENSOR_RSQRT_H +#include + +#include "uTensor/core/operatorBase.hpp" +#include "uTensor/core/tensor.hpp" +#include "uTensor/core/types.hpp" + +namespace uTensor { +namespace ReferenceOperators { + +template +class RsqrtOperator : public OperatorInterface<1, 1> { + public: + enum names_in : uint8_t { input }; + enum names_out : uint8_t { output }; + + protected: + void compute() { + Tensor &inputT = inputs[input].tensor(); + Tensor &outputT = outputs[output].tensor(); + for (uint32_t i = 0; i < outputT->num_elems(); ++i) { + Tin v = static_cast(inputT(i)); + Tin one = 1; + Tin sqrt = std::sqrt(v); + outputT(i) = static_cast(one / sqrt); + } + } +}; +} // namespace ReferenceOperators +} // namespace uTensor +#endif // UTENSOR_RSQRT_H \ No newline at end of file diff --git a/src/uTensor/ops/Sum.hpp b/src/uTensor/ops/Sum.hpp new file mode 100644 index 00000000..08353502 --- /dev/null +++ b/src/uTensor/ops/Sum.hpp @@ -0,0 +1,55 @@ +#ifndef UTENSOR_SUM_H +#define UTENSOR_SUM_H + +#include "uTensor/core/operatorBase.hpp" +#include "uTensor/core/tensor.hpp" +#include "uTensor/core/types.hpp" + +namespace uTensor { +namespace ReferenceOperators { +template +class SumOperator : public OperatorInterface<2, 1> { + public: + enum names_in : uint8_t { input, axis }; + enum names_out : uint8_t { output }; + + virtual void compute() { + const Tensor &input_tensor = inputs[input].tensor(); + const Tensor &axis_tensor = inputs[axis].tensor(); + Tensor &output_tensor = outputs[output].tensor(); + if (axis_tensor->get_type() != i32) { + uTensor_printf("only support i32 typed axis tensor\n"); + Context::get_default_context()->throwError(new InvalidTensorError); + return; + } + TensorShape input_shape = input_tensor->get_shape(); + int num_dims = input_shape.num_dims(); + int32_t axis_dim = axis_tensor(0); + if (axis_dim < 0) axis_dim += num_dims; + uint16_t axis_size = input_shape[axis_dim]; + uint32_t outer_size = 1; + for (int i = 0; i < axis_dim; ++i) { + outer_size *= input_shape[i]; + } + uint32_t inner_size = 1; + for (int i = axis_dim + 1; i < num_dims; ++i) { + inner_size *= input_shape[i]; + } + for (uint32_t outer = 0; outer < outer_size; ++outer) { + for (uint32_t inner = 0; inner < inner_size; ++inner) { + Tin acc = 0; + for (uint32_t i = 0; i < axis_size; ++i) { + Tin elem = static_cast( + input_tensor((outer * axis_size + i) * inner_size + inner)); + acc += elem; + } + output_tensor(outer * inner_size + inner) = acc; + } + } + } +}; + +} // namespace ReferenceOperators +} // namespace uTensor + +#endif // UTENSOR_SUM_H \ No newline at end of file