diff options
Diffstat (limited to 'workspaces/main/shaders/cnn')
| -rw-r--r-- | workspaces/main/shaders/cnn/cnn_conv3x3.wgsl | 69 | ||||
| -rw-r--r-- | workspaces/main/shaders/cnn/cnn_conv5x5.wgsl | 56 | ||||
| -rw-r--r-- | workspaces/main/shaders/cnn/cnn_layer.wgsl | 27 | ||||
| -rw-r--r-- | workspaces/main/shaders/cnn/cnn_weights_generated.wgsl | 290 |
4 files changed, 191 insertions, 251 deletions
diff --git a/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl b/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl index b895504..96ddf5b 100644 --- a/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl +++ b/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl @@ -1,55 +1,54 @@ // 3x3 convolution with weight indexing -// Samples 9 pixels, applies mat4 weights per sample -fn cnn_conv3x3( +// Source layers: 7→4 channels (RGBD output) +// Assumes 'tex' (the input) is *not* normalized to [-1,1], but is [0,1] +// UV coordinates remain in [0,1] and are normalized internally +// weights: array<array<f32, 8>, 36> (9 positions × 4 channels, each with 7 weights + bias) +fn cnn_conv3x3_7to4_src( tex: texture_2d<f32>, samp: sampler, uv: vec2<f32>, resolution: vec2<f32>, - weights: array<mat4x4<f32>, 9>, - bias: vec4<f32> + weights: array<array<f32, 8>, 36> ) -> vec4<f32> { let step = 1.0 / resolution; - var sum = bias; - var idx = 0; - - for (var dy = -1; dy <= 1; dy++) { - for (var dx = -1; dx <= 1; dx++) { - let offset = vec2<f32>(f32(dx), f32(dy)) * step; - let sample = textureSample(tex, samp, uv + offset); - sum += weights[idx] * sample; - idx++; - } - } - return sum; -} + // Compute grayscale from original (converted in [-1,1]) + let original = (textureSample(tex, samp, uv) - 0.5) * 2.0; + let gray = 0.2126*original.r + 0.7152*original.g + 0.0722*original.b; -fn cnn_conv3x3_with_coord( - tex: texture_2d<f32>, - samp: sampler, - uv: vec2<f32>, - resolution: vec2<f32>, - rgba_weights: array<mat4x4<f32>, 9>, - coord_weights: mat2x4<f32>, - bias: vec4<f32> -) -> vec4<f32> { - let step = 1.0 / resolution; - var sum = bias; + // Normalize UV to [-1,1] + let uv_norm = (uv - 0.5) * 2.0; - sum += coord_weights * uv; + var sum = vec4<f32>(0.0); - var idx = 0; + var pos = 0; for (var dy = -1; dy <= 1; dy++) { for (var dx = -1; dx <= 1; dx++) { let offset = vec2<f32>(f32(dx), f32(dy)) * step; - let rgba = textureSample(tex, samp, uv + offset); - sum += rgba_weights[idx] * rgba; - idx++; + let rgbd = (textureSample(tex, samp, uv + offset) - .5) * 2.0; // convert to [-1,1] + + // 7-channel input: [R,G,B,D, uv.x, uv.y, gray] all in [-1,1] + let inputs = array<f32, 7>( + rgbd.r, rgbd.g, rgbd.b, rgbd.a, + uv_norm.x, uv_norm.y, gray + ); + + // Accumulate for each output channel (RGBD) + for (var out_c = 0; out_c < 4; out_c++) { + let idx = pos * 4 + out_c; + var channel_sum = weights[idx][7]; // Bias (8th element) + for (var in_c = 0; in_c < 7; in_c++) { + channel_sum += weights[idx][in_c] * inputs[in_c]; + } + sum[out_c] += channel_sum; + } + + pos++; } } - return sum; + return sum; // Output in [-1,1] range } // Inner layers: 7→4 channels (RGBD output) @@ -145,5 +144,5 @@ fn cnn_conv3x3_7to1( } } - return sum; // Output in [-1,1], needs denormalization + return sum; // Output in [-1,1] } diff --git a/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl b/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl index bfb4ebb..5136740 100644 --- a/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl +++ b/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl @@ -1,57 +1,3 @@ -// 5x5 convolution with 25 samples -// Applies mat4 weights per sample - -fn cnn_conv5x5( - tex: texture_2d<f32>, - samp: sampler, - uv: vec2<f32>, - resolution: vec2<f32>, - weights: array<mat4x4<f32>, 25>, - bias: vec4<f32> -) -> vec4<f32> { - let step = 1.0 / resolution; - var sum = bias; - var idx = 0; - - for (var dy = -2; dy <= 2; dy++) { - for (var dx = -2; dx <= 2; dx++) { - let offset = vec2<f32>(f32(dx), f32(dy)) * step; - let sample = textureSample(tex, samp, uv + offset); - sum += weights[idx] * sample; - idx++; - } - } - - return sum; -} - -fn cnn_conv5x5_with_coord( - tex: texture_2d<f32>, - samp: sampler, - uv: vec2<f32>, - resolution: vec2<f32>, - rgba_weights: array<mat4x4<f32>, 25>, - coord_weights: mat2x4<f32>, - bias: vec4<f32> -) -> vec4<f32> { - let step = 1.0 / resolution; - var sum = bias; - - sum += coord_weights * uv; - - var idx = 0; - for (var dy = -2; dy <= 2; dy++) { - for (var dx = -2; dx <= 2; dx++) { - let offset = vec2<f32>(f32(dx), f32(dy)) * step; - let rgba = textureSample(tex, samp, uv + offset); - sum += rgba_weights[idx] * rgba; - idx++; - } - } - - return sum; -} - // 5×5 variant for 7→4 channels (RGBD output) // Assumes 'tex' and 'original' are already normalized to [-1,1] // UV coordinates remain in [0,1] and are normalized internally @@ -135,5 +81,5 @@ fn cnn_conv5x5_7to1( } } - return sum; + return sum; // Output in [-1,1] } diff --git a/workspaces/main/shaders/cnn/cnn_layer.wgsl b/workspaces/main/shaders/cnn/cnn_layer.wgsl index f97f798..1b1b539 100644 --- a/workspaces/main/shaders/cnn/cnn_layer.wgsl +++ b/workspaces/main/shaders/cnn/cnn_layer.wgsl @@ -30,33 +30,28 @@ struct CNNLayerParams { @fragment fn fs_main(@builtin(position) p: vec4<f32>) -> @location(0) vec4<f32> { let uv = p.xy / uniforms.resolution; - let input_raw = textureSample(txt, smplr, uv); - let input = (input_raw - 0.5) * 2.0; // Normalize to [-1,1] - let original_raw = textureSample(original_input, smplr, uv); - let original = (original_raw - 0.5) * 2.0; // Normalize to [-1,1] + let original = (textureSample(original_input, smplr, uv) - 0.5) * 2.0; // Normalize to [-1,1] var result = vec4<f32>(0.0); // Layer 0: 7→4 (RGBD output) if (params.layer_index == 0) { - result = cnn_conv3x3_7to4(txt, smplr, uv, uniforms.resolution, - original, weights_layer0); + result = cnn_conv3x3_7to4_src(txt, smplr, uv, uniforms.resolution, weights_layer0); result = cnn_tanh(result); // Keep in [-1,1] } else if (params.layer_index == 1) { result = cnn_conv5x5_7to4(txt, smplr, uv, uniforms.resolution, original, weights_layer1); - result = cnn_tanh(result); // Keep in [-1,1] + result = cnn_tanh(result); // Keep in [-1,1] } - else if (params.layer_index == 2) { + else if (params.layer_index == 2) { // last layer let gray_out = cnn_conv3x3_7to1(txt, smplr, uv, uniforms.resolution, - original, weights_layer2); + original, weights_layer2); + + // At this point here, 'gray_out' is what the training script should have learned. + // Below is some extra code for visual output, excluded from training: result = vec4<f32>(gray_out, gray_out, gray_out, 1.0); // Keep in [-1,1] + let blended = mix(original, result, params.blend_amount); + return (blended + 1.0) * 0.5; // Denormalize to [0,1] for display } - else { - result = input; - } - - // Blend with ORIGINAL input from layer 0 and denormalize for display - let blended = mix(original, result, params.blend_amount); - return (blended + 1.0) * 0.5; // Denormalize to [0,1] for display + return result; } diff --git a/workspaces/main/shaders/cnn/cnn_weights_generated.wgsl b/workspaces/main/shaders/cnn/cnn_weights_generated.wgsl index 6ec78c1..e38669f 100644 --- a/workspaces/main/shaders/cnn/cnn_weights_generated.wgsl +++ b/workspaces/main/shaders/cnn/cnn_weights_generated.wgsl @@ -2,156 +2,156 @@ // DO NOT EDIT - Generated by train_cnn.py const weights_layer0: array<array<f32, 8>, 36> = array( - array<f32, 8>(0.181071, 0.180671, -0.156688, -0.133398, -0.121571, -0.069398, 0.197448, -0.010528), - array<f32, 8>(-0.315179, -0.222857, -0.084049, 0.211023, 0.093378, 0.041467, -0.171730, 0.109394), - array<f32, 8>(-0.776134, -0.748738, -0.426878, 0.038600, 0.055702, 0.264617, -0.766478, -0.140384), - array<f32, 8>(0.325726, 0.142498, 0.022606, -0.071913, -0.085795, -0.008587, 0.142883, 0.080188), - array<f32, 8>(0.036004, 0.238142, 0.248112, -0.031285, -0.124107, 0.040947, 0.298797, -0.010528), - array<f32, 8>(0.223016, 0.358479, -0.011029, 0.102233, -0.167285, 0.111095, 0.247539, 0.109394), - array<f32, 8>(1.147701, 1.132161, 0.406157, 0.030399, 0.155895, 0.158795, 1.070009, -0.140384), - array<f32, 8>(0.343120, 0.413393, 0.345993, 0.048482, 0.007208, 0.103310, 0.410492, 0.080188), - array<f32, 8>(-0.074602, -0.271241, -0.181283, -0.062921, 0.126872, -0.006445, -0.171823, -0.010528), - array<f32, 8>(-0.554038, -0.443533, -0.282759, 0.123052, -0.076625, 0.047519, -0.525091, 0.109394), - array<f32, 8>(-0.036767, 0.183663, 0.026803, -0.102403, -0.052118, 0.014384, 0.272146, -0.140384), - array<f32, 8>(0.006535, -0.016445, -0.063138, 0.121560, 0.026330, 0.142604, -0.172336, 0.080188), - array<f32, 8>(-0.166300, -0.154177, 0.124821, -0.109807, -0.052216, 0.009249, -0.217568, -0.010528), - array<f32, 8>(0.258850, 0.122862, -0.085148, 0.217309, 0.115453, -0.045434, -0.018513, 0.109394), - array<f32, 8>(0.030132, 0.150035, 0.140258, -0.016209, -0.002259, -0.073409, 0.106627, -0.140384), - array<f32, 8>(-0.382104, -0.406515, -0.130833, 0.006075, -0.032734, -0.066618, -0.293135, 0.080188), - array<f32, 8>(-0.344131, -0.804046, -0.131275, -0.025023, 0.107656, -0.105495, -0.477465, -0.010528), - array<f32, 8>(2.238629, 2.666346, 1.344841, 0.188894, -0.064351, -0.079447, 2.525197, 0.109394), - array<f32, 8>(1.617750, 1.332233, 0.817712, 0.084650, 0.008433, -0.191120, 1.499900, -0.140384), - array<f32, 8>(-1.007007, -0.971186, -0.670325, 0.066275, 0.044722, -0.034290, -0.874401, 0.080188), - array<f32, 8>(0.214410, 0.423019, 0.210104, -0.111646, 0.025179, 0.021650, 0.370431, -0.010528), - array<f32, 8>(0.698145, 0.742521, 0.259904, 0.172190, 0.002103, 0.150391, 0.710542, 0.109394), - array<f32, 8>(-0.437137, -0.378108, -0.350803, -0.151723, -0.079989, -0.014077, -0.393804, -0.140384), - array<f32, 8>(0.148036, 0.149877, 0.208686, 0.118023, 0.106081, -0.156695, 0.040117, 0.080188), - array<f32, 8>(0.007790, -0.006625, -0.036656, 0.033389, -0.087019, 0.037006, 0.125953, -0.010528), - array<f32, 8>(-0.362541, -0.324086, -0.150862, 0.000339, 0.227779, -0.035100, -0.325073, 0.109394), - array<f32, 8>(-0.248297, -0.083314, -0.071273, -0.108375, 0.037361, -0.055978, -0.192155, -0.140384), - array<f32, 8>(0.396704, 0.247469, 0.274000, -0.005654, 0.014277, 0.097346, 0.185350, 0.080188), - array<f32, 8>(-0.264719, -0.327878, -0.137154, -0.082728, 0.053555, 0.134324, -0.360542, -0.010528), - array<f32, 8>(0.154692, 0.521805, -0.014565, 0.236786, -0.050656, -0.077934, 0.252781, 0.109394), - array<f32, 8>(-0.762319, -0.789229, -0.565690, -0.050543, -0.033753, 0.065576, -0.704560, -0.140384), - array<f32, 8>(-0.366925, -0.189991, -0.177319, -0.068166, -0.096794, 0.111543, -0.319584, 0.080188), - array<f32, 8>(-0.069582, -0.007117, -0.080914, -0.054291, 0.099181, -0.057500, 0.064654, -0.010528), - array<f32, 8>(-0.234008, -0.283279, -0.317393, 0.138485, -0.089743, -0.116539, -0.340335, 0.109394), - array<f32, 8>(-0.332349, -0.045645, -0.142621, 0.066072, -0.063394, -0.047263, -0.275151, -0.140384), - array<f32, 8>(0.243287, -0.037305, 0.084462, 0.050442, 0.038222, -0.094055, 0.019547, 0.080188) + array<f32, 8>(0.074911, 0.143202, 0.086903, 0.070680, -0.031904, 0.122884, 0.191824, 0.071112), + array<f32, 8>(0.081964, 0.033505, 0.058371, -0.015971, -0.069732, -0.014956, 0.142861, 0.119666), + array<f32, 8>(0.231883, -0.160763, -0.147218, 0.161321, -0.031718, -0.065766, 0.093359, 0.171734), + array<f32, 8>(0.082047, 0.288492, 0.121087, 0.001740, -0.104745, -0.071150, 0.031105, 0.037989), + array<f32, 8>(0.139236, 0.160690, 0.022091, 0.070994, 0.008793, 0.059247, 0.215077, 0.071112), + array<f32, 8>(0.128842, 0.268017, -0.031546, 0.068152, -0.073793, 0.124100, 0.252295, 0.119666), + array<f32, 8>(0.077193, -0.080009, -0.160674, 0.101131, -0.152167, -0.035271, 0.067397, 0.171734), + array<f32, 8>(-0.073119, 0.204309, 0.005654, 0.101254, -0.063530, -0.040801, 0.213393, 0.037989), + array<f32, 8>(-0.024175, 0.018739, 0.095518, 0.096945, 0.088315, 0.079085, -0.069127, 0.071112), + array<f32, 8>(0.219014, 0.218505, 0.014228, 0.014379, 0.075954, -0.001065, 0.201142, 0.119666), + array<f32, 8>(0.182743, -0.041270, -0.085458, 0.092904, 0.020316, 0.036077, 0.020220, 0.171734), + array<f32, 8>(-0.210247, -0.072180, 0.017628, 0.084834, 0.050409, -0.067274, -0.130565, 0.037989), + array<f32, 8>(0.071649, -0.072076, -0.109385, -0.012436, 0.041505, -0.013451, -0.068780, 0.071112), + array<f32, 8>(0.083389, 0.133852, -0.018137, 0.086250, -0.006205, 0.052853, 0.137369, 0.119666), + array<f32, 8>(0.023275, 0.036871, -0.092898, -0.059569, -0.029758, -0.089218, -0.031705, 0.171734), + array<f32, 8>(0.054874, 0.290596, 0.157026, -0.127200, 0.054010, -0.163627, 0.185273, 0.037989), + array<f32, 8>(0.069455, -0.122527, 0.010922, -0.051404, -0.067941, 0.122001, 0.034784, 0.071112), + array<f32, 8>(0.263187, 0.346644, 0.094376, 0.080049, -0.013980, -0.020629, 0.287019, 0.119666), + array<f32, 8>(0.078601, -0.045813, 0.048391, 0.107248, -0.001537, 0.003619, 0.040853, 0.171734), + array<f32, 8>(-0.052910, 0.333324, -0.028273, 0.111413, 0.059925, 0.054957, 0.257592, 0.037989), + array<f32, 8>(0.037894, 0.001266, 0.039858, 0.027731, 0.156182, 0.094188, 0.021791, 0.071112), + array<f32, 8>(0.220401, 0.241493, 0.138405, 0.082160, 0.144517, -0.050410, 0.257101, 0.119666), + array<f32, 8>(0.055409, -0.103410, 0.049778, -0.023193, -0.116368, -0.085046, 0.047003, 0.171734), + array<f32, 8>(0.019721, 0.099621, 0.005697, -0.069641, -0.100712, 0.044279, -0.104894, 0.037989), + array<f32, 8>(0.132833, 0.144224, 0.075612, -0.052095, -0.027924, 0.029124, -0.012077, 0.071112), + array<f32, 8>(0.146387, 0.098381, 0.131536, 0.034274, -0.073611, 0.080596, 0.124333, 0.119666), + array<f32, 8>(0.118243, -0.165692, -0.091107, 0.001822, 0.003771, -0.053877, -0.045592, 0.171734), + array<f32, 8>(-0.146034, 0.167379, 0.036433, -0.074485, 0.047772, 0.007719, -0.057026, 0.037989), + array<f32, 8>(-0.105517, -0.143677, 0.006013, 0.038752, 0.082525, -0.070290, -0.082964, 0.071112), + array<f32, 8>(0.084325, 0.192342, 0.005734, 0.083787, 0.010618, 0.076732, 0.206159, 0.119666), + array<f32, 8>(0.025873, -0.002030, -0.008453, 0.189578, 0.077363, 0.014099, 0.086760, 0.171734), + array<f32, 8>(-0.040145, 0.209639, 0.131112, 0.021154, -0.046391, -0.055185, 0.110424, 0.037989), + array<f32, 8>(-0.091272, -0.149872, -0.018825, 0.109157, 0.037674, -0.067088, -0.199940, 0.071112), + array<f32, 8>(0.170814, 0.171591, -0.039657, 0.146638, -0.054918, -0.043451, 0.262821, 0.119666), + array<f32, 8>(0.183810, -0.147660, -0.144689, 0.045301, 0.055273, 0.017425, 0.136362, 0.171734), + array<f32, 8>(-0.078196, 0.116630, -0.138657, -0.140199, -0.052198, -0.040295, -0.093252, 0.037989) ); const weights_layer1: array<array<f32, 8>, 100> = array( - array<f32, 8>(0.036741, 0.174566, 0.291795, -0.033066, -0.084725, 0.017211, -0.119127, 0.705181), - array<f32, 8>(0.122186, -0.078751, 0.003745, 0.000022, 0.027259, -0.014794, -0.132560, -0.554858), - array<f32, 8>(0.275572, 0.018150, -0.008554, -0.146253, -0.124261, -0.106076, -0.124406, -0.384431), - array<f32, 8>(0.235391, -0.078051, 0.052366, 0.054055, 0.116088, 0.137109, -0.041252, 0.096202), - array<f32, 8>(0.029752, 0.005636, -0.434780, 0.218587, -0.174135, 0.077972, -0.243145, 0.705181), - array<f32, 8>(0.075832, 0.036187, -0.151527, -0.131852, 0.042588, -0.087969, 0.116469, -0.554858), - array<f32, 8>(0.234748, -0.130623, 0.049978, -0.065811, 0.114875, -0.159655, -0.065553, -0.384431), - array<f32, 8>(0.000944, -0.056210, 0.007023, -0.046152, 0.006291, 0.055730, 0.079512, 0.096202), - array<f32, 8>(-0.656454, 0.171425, 0.518928, -0.355405, 0.005253, 0.188539, 0.031148, 0.705181), - array<f32, 8>(0.253326, -0.090369, -0.096764, -0.047542, 0.073904, 0.040503, 0.111922, -0.554858), - array<f32, 8>(0.228924, 0.111527, -0.027116, -0.133119, 0.099857, -0.150050, -0.075578, -0.384431), - array<f32, 8>(-0.037827, 0.075674, -0.111529, -0.114302, -0.118413, -0.000674, 0.072307, 0.096202), - array<f32, 8>(-0.633403, -0.158435, 0.042044, -0.199189, 0.135613, 0.128976, -0.095854, 0.705181), - array<f32, 8>(0.224475, 0.009348, -0.014853, -0.083097, -0.129013, 0.058030, -0.010732, -0.554858), - array<f32, 8>(0.277777, -0.008638, -0.024935, 0.055844, -0.137042, -0.173785, -0.168956, -0.384431), - array<f32, 8>(-0.027801, 0.013278, -0.084694, -0.074887, 0.065917, 0.209263, 0.102990, 0.096202), - array<f32, 8>(-0.236525, 0.081545, 0.120326, 0.497596, -0.133167, 0.111884, -0.149371, 0.705181), - array<f32, 8>(0.041858, -0.011563, 0.027560, 0.003061, -0.033285, -0.083021, -0.297831, -0.554858), - array<f32, 8>(0.297747, 0.001253, 0.106780, 0.007335, 0.259682, -0.229853, -0.001358, -0.384431), - array<f32, 8>(-0.043069, -0.045672, -0.018898, -0.190785, -0.000672, 0.089811, 0.118545, 0.096202), - array<f32, 8>(-0.066188, 0.120479, -0.198253, -0.004995, 0.017530, -0.258193, -0.046440, 0.705181), - array<f32, 8>(-0.017375, 0.127093, -0.003759, 0.053924, 0.036127, 0.462423, 0.238701, -0.554858), - array<f32, 8>(0.281321, -0.034091, 0.129930, 0.026051, -0.134687, -0.102370, 0.015789, -0.384431), - array<f32, 8>(-0.098730, 0.061805, 0.049945, 0.045479, -0.037703, 0.164979, 0.015898, 0.096202), - array<f32, 8>(-0.782371, -0.398567, 0.203990, -0.918743, -0.150142, -0.208263, -0.191751, 0.705181), - array<f32, 8>(0.020808, -0.079593, -0.020436, 0.289221, 0.055709, 0.460382, 0.367026, -0.554858), - array<f32, 8>(0.349494, -0.057511, 0.075111, -0.102943, 0.063262, -0.130990, -0.008248, -0.384431), - array<f32, 8>(0.168912, 0.176731, -0.134468, 0.232372, -0.033147, 0.085774, -0.048677, 0.096202), - array<f32, 8>(0.618180, -0.520695, -0.530039, 1.196123, 0.122213, -0.173562, -0.324433, 0.705181), - array<f32, 8>(0.638450, -0.149078, -0.017734, 0.493464, -0.015998, 0.584648, 0.288746, -0.554858), - array<f32, 8>(0.074488, 0.212364, 0.187959, -0.055154, 0.065607, -0.068925, -0.017994, -0.384431), - array<f32, 8>(-0.018923, -0.099117, -0.005060, 0.242744, -0.274629, 0.051926, 0.079712, 0.096202), - array<f32, 8>(0.658693, -0.039718, 0.441997, 0.250902, 0.016350, -0.200507, 0.022444, 0.705181), - array<f32, 8>(0.559097, -0.196625, 0.035123, 0.046925, -0.186840, 0.619048, 0.559590, -0.554858), - array<f32, 8>(-0.139655, -0.021050, 0.295279, -0.302983, -0.061179, -0.146221, 0.082147, -0.384431), - array<f32, 8>(0.174535, -0.052728, -0.181830, -0.037692, -0.027964, 0.094183, 0.075072, 0.096202), - array<f32, 8>(-0.025873, -0.035599, 0.024004, 0.191656, -0.102396, -0.254495, -0.094824, 0.705181), - array<f32, 8>(0.228900, -0.003296, -0.008463, 0.324218, -0.049343, 0.447783, 0.273508, -0.554858), - array<f32, 8>(0.160779, -0.008924, -0.081788, -0.433376, 0.227781, -0.062434, 0.032769, -0.384431), - array<f32, 8>(0.278581, -0.029578, -0.048828, 0.037354, -0.083503, 0.051478, 0.129985, 0.096202), - array<f32, 8>(-0.179409, -0.150093, -0.154602, 0.155942, -0.030033, -0.052753, 0.126435, 0.705181), - array<f32, 8>(-0.276681, 0.000117, 0.005694, 0.112600, 0.053831, -0.226162, 0.238592, -0.554858), - array<f32, 8>(0.509299, -0.073816, -0.036746, -0.229020, -0.084083, 0.102554, 0.091619, -0.384431), - array<f32, 8>(-0.226426, 0.100353, 0.041059, 0.298785, 0.189457, -0.066325, -0.044970, 0.096202), - array<f32, 8>(-1.231526, -1.330216, 0.526922, -0.587336, -0.130186, -0.092712, 0.001462, 0.705181), - array<f32, 8>(-0.181467, -0.162607, -0.034778, 0.462190, 0.018091, -0.425409, -0.281373, -0.554858), - array<f32, 8>(-0.127841, 0.636898, -0.133350, -0.021139, 0.041704, 0.131472, 0.064884, -0.384431), - array<f32, 8>(-0.142875, 0.037216, -0.253924, 0.065928, 0.010346, -0.066305, 0.010009, 0.096202), - array<f32, 8>(1.275860, -1.926775, -2.786324, 0.841585, 0.184752, 0.129195, -0.746670, 0.705181), - array<f32, 8>(0.224131, -0.438348, -0.301076, 0.516342, -0.025436, -0.288755, 0.113458, -0.554858), - array<f32, 8>(-0.458493, 1.383449, -0.836509, 0.513842, 0.009788, 0.140230, -0.178303, -0.384431), - array<f32, 8>(0.615726, -0.780623, -0.056982, 0.279193, -0.126452, -0.148191, -0.142928, 0.096202), - array<f32, 8>(0.900523, -0.634242, 0.387372, 0.906412, 0.123193, 0.017453, 0.044746, 0.705181), - array<f32, 8>(0.027988, -0.101389, 0.206885, 0.397388, -0.107841, -0.200823, 0.062329, -0.554858), - array<f32, 8>(-0.075820, 0.221546, -0.360333, 0.653466, -0.164603, -0.018184, -0.054492, -0.384431), - array<f32, 8>(0.428530, -0.333444, 0.292398, -0.419585, 0.189928, 0.033952, 0.048148, 0.096202), - array<f32, 8>(-0.375948, -0.074633, 0.091707, 0.403029, -0.058652, 0.015809, -0.074391, 0.705181), - array<f32, 8>(0.257007, -0.003856, 0.044474, 0.471313, -0.028859, -0.319677, 0.420764, -0.554858), - array<f32, 8>(0.134231, -0.048700, 0.029223, -0.006709, 0.116888, 0.081077, 0.034694, -0.384431), - array<f32, 8>(-0.081323, 0.073446, -0.045513, 0.067464, 0.129549, -0.099304, 0.013744, 0.096202), - array<f32, 8>(-0.050969, -0.016310, 0.185193, 0.154125, -0.036880, 0.023559, 0.025859, 0.705181), - array<f32, 8>(0.126071, -0.051684, 0.043923, 0.108173, 0.066038, -0.192287, 0.352096, -0.554858), - array<f32, 8>(0.427852, 0.008965, 0.102399, -0.108640, -0.150961, 0.163040, -0.050800, -0.384431), - array<f32, 8>(-0.072433, 0.037114, 0.013594, 0.069869, 0.104687, -0.078728, -0.069972, 0.096202), - array<f32, 8>(0.361002, -0.392113, 0.274024, -0.034550, -0.082394, 0.095107, 0.401706, 0.705181), - array<f32, 8>(-0.348729, 0.008971, -0.079949, -0.066546, 0.134612, -0.303610, -0.186502, -0.554858), - array<f32, 8>(0.345962, 0.668520, -0.784279, 0.051949, -0.042057, 0.050625, 0.020689, -0.384431), - array<f32, 8>(-0.274767, 0.076023, -0.254009, 0.323161, 0.033120, -0.065693, 0.092788, 0.096202), - array<f32, 8>(-0.922054, -0.756431, 0.393524, -1.602483, 0.114452, 0.112853, 0.537923, 0.705181), - array<f32, 8>(-0.171843, 0.212152, -0.122848, 0.602091, 0.046238, -0.188875, -0.437717, -0.554858), - array<f32, 8>(-0.588119, 1.183603, -0.530633, -0.829767, -0.006702, 0.078743, 0.153854, -0.384431), - array<f32, 8>(-0.188030, -0.172885, -0.066943, -0.046181, -0.106921, -0.134572, 0.080975, 0.096202), - array<f32, 8>(-1.695124, 0.212725, 1.229505, -0.741534, 0.126303, 0.133647, 0.108956, 0.705181), - array<f32, 8>(-0.320230, -0.041878, -0.084837, 0.395743, -0.002644, -0.220269, 0.159212, -0.554858), - array<f32, 8>(-0.321301, 0.390960, 0.261866, -0.413745, -0.124661, 0.036689, 0.011903, -0.384431), - array<f32, 8>(0.119845, -0.057012, 0.525753, -0.132904, 0.033117, 0.029606, 0.127306, 0.096202), - array<f32, 8>(-0.612274, 0.254915, 0.019614, 0.080070, 0.006519, 0.087940, -0.047548, 0.705181), - array<f32, 8>(0.051014, -0.017890, 0.233801, -0.168954, 0.079934, -0.283275, 0.332838, -0.554858), - array<f32, 8>(0.332870, -0.118202, 0.131280, 0.036194, 0.131048, 0.067103, 0.056030, -0.384431), - array<f32, 8>(-0.257300, 0.003565, -0.232427, 0.046336, -0.003665, -0.094940, 0.127497, 0.096202), - array<f32, 8>(-0.600203, 0.063626, -0.105803, 0.208178, -0.051062, -0.008572, -0.035231, 0.705181), - array<f32, 8>(-0.042070, -0.023061, -0.037054, -0.002751, 0.019568, 0.078162, -0.044403, -0.554858), - array<f32, 8>(-0.079765, 0.198893, 0.041831, 0.061495, -0.120350, 0.150103, -0.058056, -0.384431), - array<f32, 8>(0.139291, -0.054425, 0.002238, 0.016114, 0.057097, -0.116833, -0.081744, 0.096202), - array<f32, 8>(-0.738361, -0.374730, 0.359610, 0.291041, -0.072061, -0.041352, -0.189793, 0.705181), - array<f32, 8>(0.090555, -0.020056, -0.012717, 0.120644, -0.026834, -0.073251, 0.329796, -0.554858), - array<f32, 8>(0.367344, -0.049545, -0.421975, -0.066803, 0.069864, 0.155396, -0.118779, -0.384431), - array<f32, 8>(0.045037, 0.104654, -0.079043, 0.036356, 0.026634, 0.000503, 0.029131, 0.096202), - array<f32, 8>(-0.250248, -0.186821, 0.671967, 0.211267, 0.217392, -0.004840, -0.025819, 0.705181), - array<f32, 8>(-0.085968, -0.124825, -0.065762, 0.084599, -0.049381, -0.046614, 0.102548, -0.554858), - array<f32, 8>(0.691882, 0.082284, 0.786431, -0.352507, 0.007640, 0.130147, 0.079168, -0.384431), - array<f32, 8>(-0.089554, 0.033068, -0.013298, 0.223259, -0.209770, -0.050661, -0.024264, 0.096202), - array<f32, 8>(-0.214123, -0.168090, -1.084093, -0.058018, 0.160565, -0.012314, 0.023839, 0.705181), - array<f32, 8>(-0.078129, -0.058517, 0.103285, -0.001551, -0.050279, 0.056731, 0.340157, -0.554858), - array<f32, 8>(0.540997, 0.024887, -0.143659, -0.515214, -0.222923, 0.116850, 0.008144, -0.384431), - array<f32, 8>(-0.257782, 0.012741, 0.142405, 0.064579, 0.010678, -0.069590, -0.029995, 0.096202), - array<f32, 8>(-0.153197, -0.103723, 0.189375, -0.136753, 0.037238, -0.016964, 0.086707, 0.705181), - array<f32, 8>(0.168810, 0.040280, -0.134904, -0.028552, -0.059283, -0.131581, 0.522745, -0.554858), - array<f32, 8>(0.450779, 0.116955, -0.198275, -0.132313, 0.138815, 0.283598, 0.010077, -0.384431), - array<f32, 8>(-0.010634, -0.029003, -0.015055, 0.000537, -0.000948, -0.070859, 0.027198, 0.096202) + array<f32, 8>(0.016434, 0.032528, 0.014184, -0.048073, 0.017625, 0.025898, 0.035017, -0.024743), + array<f32, 8>(-0.086195, 0.041682, 0.071182, -0.062423, -0.016809, -0.004450, -0.035094, 0.087283), + array<f32, 8>(-0.070627, 0.033625, 0.025104, -0.086014, -0.037153, -0.019897, 0.046995, -0.025117), + array<f32, 8>(-0.042999, 0.043590, -0.107547, 0.114733, -0.006566, 0.067189, 0.042215, -0.019137), + array<f32, 8>(-0.105321, 0.188555, -0.033070, 0.005478, -0.019701, -0.006125, -0.006207, -0.024743), + array<f32, 8>(-0.018644, 0.021491, 0.042713, 0.047051, 0.009930, -0.074932, 0.016032, 0.087283), + array<f32, 8>(-0.036977, 0.022728, -0.031943, -0.134525, -0.024105, 0.022550, 0.038872, -0.025117), + array<f32, 8>(-0.017196, 0.102869, -0.028182, 0.153466, -0.024727, 0.008610, -0.029993, -0.019137), + array<f32, 8>(-0.135262, 0.264086, 0.052894, 0.104268, -0.044918, 0.085902, 0.119113, -0.024743), + array<f32, 8>(0.052648, 0.081481, 0.063582, 0.016832, 0.100333, -0.095727, 0.022089, 0.087283), + array<f32, 8>(0.028176, 0.006417, -0.010806, -0.049843, 0.010670, 0.058400, 0.051595, -0.025117), + array<f32, 8>(-0.078976, 0.040644, -0.116569, 0.145770, 0.019023, 0.071229, 0.056151, -0.019137), + array<f32, 8>(-0.028693, 0.154285, -0.019369, 0.111634, 0.022241, -0.015484, 0.039056, -0.024743), + array<f32, 8>(-0.052688, -0.046999, -0.000280, -0.024856, 0.012262, 0.028524, -0.028633, 0.087283), + array<f32, 8>(-0.004525, 0.052883, 0.002108, -0.096774, 0.052697, -0.055029, -0.022623, -0.025117), + array<f32, 8>(-0.076488, 0.013246, -0.097773, 0.023400, 0.027572, 0.041318, 0.012556, -0.019137), + array<f32, 8>(0.028093, 0.007624, 0.021861, -0.079392, 0.053487, 0.065200, -0.084020, -0.024743), + array<f32, 8>(-0.027503, 0.010973, 0.077242, 0.105956, 0.003837, -0.032827, 0.062214, 0.087283), + array<f32, 8>(0.028159, 0.036260, 0.051032, -0.057339, -0.032511, -0.019800, -0.113611, -0.025117), + array<f32, 8>(-0.004438, 0.024692, -0.151404, 0.097579, -0.031042, 0.067771, -0.062624, -0.019137), + array<f32, 8>(-0.053284, 0.062195, 0.018403, -0.145339, 0.008091, -0.048359, 0.060338, -0.024743), + array<f32, 8>(0.035264, 0.022147, 0.014877, -0.010450, 0.048411, -0.011475, -0.025409, 0.087283), + array<f32, 8>(-0.095181, 0.095906, 0.022414, -0.068326, -0.035929, 0.041247, -0.066456, -0.025117), + array<f32, 8>(0.011500, 0.097427, -0.072423, 0.068691, 0.006129, 0.025585, -0.066149, -0.019137), + array<f32, 8>(0.000253, 0.207033, 0.041903, -0.018208, 0.080300, 0.029738, 0.170740, -0.024743), + array<f32, 8>(0.118473, -0.002532, 0.082055, 0.029355, -0.017353, -0.094582, -0.028445, 0.087283), + array<f32, 8>(-0.167765, 0.166992, -0.051393, 0.018985, 0.000246, -0.060339, -0.036368, -0.025117), + array<f32, 8>(-0.037902, 0.123576, -0.135429, 0.018780, 0.069222, -0.048750, 0.010303, -0.019137), + array<f32, 8>(0.092400, 0.317862, 0.056507, 0.269526, 0.015330, -0.078774, 0.213070, -0.024743), + array<f32, 8>(0.147994, -0.056838, -0.046159, 0.069406, -0.025076, -0.018648, 0.019698, 0.087283), + array<f32, 8>(-0.063516, 0.051390, -0.043280, 0.053602, 0.046148, 0.032013, -0.012079, -0.025117), + array<f32, 8>(-0.069387, 0.008554, -0.016392, 0.041428, 0.069626, -0.028865, 0.031068, -0.019137), + array<f32, 8>(0.001597, 0.092924, 0.064679, 0.242996, 0.070280, -0.047444, 0.155082, -0.024743), + array<f32, 8>(0.003761, -0.067148, 0.020808, -0.009994, 0.064026, -0.023521, -0.061335, 0.087283), + array<f32, 8>(0.013300, 0.048670, -0.058611, -0.104133, 0.060389, 0.022588, -0.085768, -0.025117), + array<f32, 8>(0.001996, 0.035599, -0.067395, 0.113355, -0.054467, 0.021354, -0.020545, -0.019137), + array<f32, 8>(0.024443, 0.016439, 0.095606, -0.006610, 0.056457, 0.009034, 0.048181, -0.024743), + array<f32, 8>(-0.081707, 0.089380, 0.012570, 0.040154, 0.006970, -0.097259, -0.003088, 0.087283), + array<f32, 8>(0.037347, -0.012520, -0.009110, -0.164514, -0.052337, 0.031441, -0.117828, -0.025117), + array<f32, 8>(-0.050695, 0.023007, -0.086370, 0.106721, -0.022698, -0.063039, 0.007639, -0.019137), + array<f32, 8>(-0.032690, 0.100637, 0.090612, -0.170336, -0.013709, 0.096891, -0.064632, -0.024743), + array<f32, 8>(0.005479, 0.068678, -0.014147, -0.117601, 0.033542, -0.026603, -0.034334, 0.087283), + array<f32, 8>(-0.049645, 0.161140, 0.019592, -0.020424, 0.021700, 0.046387, 0.070111, -0.025117), + array<f32, 8>(-0.075219, -0.030338, -0.042611, 0.045346, -0.012298, -0.029272, -0.048395, -0.019137), + array<f32, 8>(0.110303, 0.091954, 0.026566, -0.013034, -0.001918, 0.025677, -0.003027, -0.024743), + array<f32, 8>(0.084352, 0.004527, 0.042981, 0.040333, 0.011019, 0.011699, 0.053396, 0.087283), + array<f32, 8>(-0.151306, 0.282692, 0.038388, 0.199704, -0.024410, -0.021070, 0.135509, -0.025117), + array<f32, 8>(0.008868, 0.058833, -0.035204, 0.017617, 0.036727, -0.084137, 0.008426, -0.019137), + array<f32, 8>(0.111690, 0.202555, 0.002230, 0.104773, 0.043414, 0.094714, 0.024386, -0.024743), + array<f32, 8>(0.109470, -0.130369, -0.049615, 0.027567, 0.015618, 0.010219, -0.035927, 0.087283), + array<f32, 8>(0.013092, 0.191465, -0.022463, 0.306655, 0.046994, 0.023051, 0.114596, -0.025117), + array<f32, 8>(-0.095580, 0.067644, -0.069810, 0.058185, 0.079298, 0.042359, 0.102818, -0.019137), + array<f32, 8>(0.163902, 0.060505, 0.020250, 0.151637, -0.041346, 0.079968, -0.066609, -0.024743), + array<f32, 8>(0.007401, -0.119463, 0.029195, -0.118251, -0.057537, 0.057136, -0.162722, 0.087283), + array<f32, 8>(-0.036401, 0.152383, -0.049404, 0.188484, 0.069434, -0.056077, -0.041920, -0.025117), + array<f32, 8>(-0.070811, 0.042628, -0.080224, 0.133910, 0.054912, -0.086587, 0.104432, -0.019137), + array<f32, 8>(0.045319, 0.031249, -0.007304, -0.008136, 0.001678, 0.019408, -0.016683, -0.024743), + array<f32, 8>(-0.054316, -0.005207, -0.003794, -0.009173, -0.015797, 0.088869, -0.054766, 0.087283), + array<f32, 8>(0.036646, 0.049626, -0.038869, -0.049720, 0.012847, -0.054911, -0.012426, -0.025117), + array<f32, 8>(-0.002965, 0.087409, -0.027885, 0.089920, 0.013074, -0.106163, 0.065504, -0.019137), + array<f32, 8>(-0.004488, 0.102517, 0.092916, -0.079512, 0.001532, -0.048995, -0.041429, -0.024743), + array<f32, 8>(-0.062161, -0.027813, 0.037159, -0.030745, -0.017068, 0.084630, -0.046134, 0.087283), + array<f32, 8>(-0.017315, 0.191771, -0.050660, -0.140278, 0.038320, 0.037753, -0.043447, -0.025117), + array<f32, 8>(-0.079621, 0.091290, -0.098575, 0.055638, 0.007634, -0.051456, -0.011530, -0.019137), + array<f32, 8>(-0.044260, 0.010435, 0.104869, -0.029082, 0.038487, 0.004167, 0.020321, -0.024743), + array<f32, 8>(0.004107, -0.049898, -0.011912, 0.126974, 0.074958, 0.038876, 0.027066, 0.087283), + array<f32, 8>(0.022312, 0.332216, -0.028889, 0.171475, 0.052267, -0.023821, 0.193472, -0.025117), + array<f32, 8>(0.009104, -0.027289, -0.016718, 0.092231, 0.023904, -0.034162, 0.004693, -0.019137), + array<f32, 8>(0.022922, -0.036846, 0.071670, -0.118853, -0.046374, 0.005972, -0.079006, -0.024743), + array<f32, 8>(-0.086613, -0.033065, 0.032719, 0.081925, -0.025818, -0.065103, 0.010425, 0.087283), + array<f32, 8>(0.014945, 0.330249, -0.062079, 0.408858, 0.044895, -0.036703, 0.195226, -0.025117), + array<f32, 8>(0.021647, 0.086135, -0.013491, 0.027627, -0.033652, -0.016643, -0.037425, -0.019137), + array<f32, 8>(-0.028124, 0.039691, 0.108537, -0.123861, -0.071841, -0.034232, 0.009737, -0.024743), + array<f32, 8>(-0.095938, -0.080740, 0.047554, -0.145590, -0.041365, 0.031658, -0.027601, 0.087283), + array<f32, 8>(-0.050837, 0.179578, 0.020990, 0.240896, -0.038067, 0.007052, 0.036244, -0.025117), + array<f32, 8>(-0.100474, 0.012669, -0.123589, 0.147449, -0.056871, 0.029335, -0.041989, -0.019137), + array<f32, 8>(0.000809, 0.020182, 0.123381, 0.009990, 0.061892, -0.056804, 0.049866, -0.024743), + array<f32, 8>(-0.006123, 0.085572, -0.065080, -0.003607, -0.100605, -0.015746, 0.045932, 0.087283), + array<f32, 8>(-0.068945, 0.037700, -0.068738, 0.088604, 0.034364, -0.027429, -0.023157, -0.025117), + array<f32, 8>(-0.028689, 0.018089, -0.144344, 0.097751, -0.022261, 0.004934, 0.044538, -0.019137), + array<f32, 8>(-0.072695, 0.099329, 0.037965, -0.007148, -0.061809, -0.014461, -0.050644, -0.024743), + array<f32, 8>(-0.043364, -0.019908, 0.033602, -0.011686, -0.046646, -0.005387, 0.057703, 0.087283), + array<f32, 8>(0.020640, 0.058992, 0.042389, -0.111803, -0.000105, -0.069637, -0.058816, -0.025117), + array<f32, 8>(-0.090411, -0.034394, -0.135574, 0.085031, -0.020320, -0.002235, 0.079036, -0.019137), + array<f32, 8>(-0.035238, 0.052656, 0.011918, -0.032684, 0.067555, -0.047663, -0.013151, -0.024743), + array<f32, 8>(0.077223, 0.067583, -0.053024, 0.063017, -0.023909, -0.041936, 0.039041, 0.087283), + array<f32, 8>(-0.011154, 0.253355, 0.006886, 0.066990, -0.018613, -0.033851, 0.022408, -0.025117), + array<f32, 8>(-0.042376, 0.097067, -0.107170, 0.053378, 0.081423, -0.059980, -0.019982, -0.019137), + array<f32, 8>(-0.086462, 0.042703, 0.052655, -0.129460, -0.073930, -0.004732, -0.089001, -0.024743), + array<f32, 8>(0.019294, 0.036932, -0.046783, 0.172396, -0.003345, 0.029704, -0.013067, 0.087283), + array<f32, 8>(0.142370, 0.248269, -0.072705, 0.188676, 0.028917, -0.058974, -0.007950, -0.025117), + array<f32, 8>(-0.021378, 0.064055, -0.103605, -0.015491, -0.002155, -0.048161, -0.045529, -0.019137), + array<f32, 8>(0.006191, 0.063159, 0.005143, -0.101334, -0.020484, 0.038330, 0.010742, -0.024743), + array<f32, 8>(-0.123413, 0.027806, -0.063111, 0.060050, -0.087346, 0.080827, 0.016499, 0.087283), + array<f32, 8>(0.054552, 0.047349, 0.029259, 0.152502, -0.013689, -0.035447, -0.006584, -0.025117), + array<f32, 8>(-0.034984, 0.059972, -0.147872, 0.096835, 0.055766, -0.001973, -0.033631, -0.019137), + array<f32, 8>(0.004488, -0.060204, 0.120817, -0.095007, 0.040546, 0.026207, -0.011824, -0.024743), + array<f32, 8>(0.000380, 0.102988, 0.010112, -0.011668, 0.004855, -0.019988, -0.035633, 0.087283), + array<f32, 8>(0.003894, -0.083172, -0.046051, -0.005485, 0.017347, -0.057191, -0.085077, -0.025117), + array<f32, 8>(-0.066185, 0.092341, -0.135679, 0.009092, -0.015954, 0.003226, -0.010182, -0.019137) ); const weights_layer2: array<array<f32, 8>, 9> = array( - array<f32, 8>(-0.049127, 0.044294, 0.110612, -0.009803, -0.027652, -0.198405, -0.024763, 0.092761), - array<f32, 8>(-0.104378, 0.082831, 0.347193, -0.040960, -0.067023, -0.078163, 0.003278, 0.092761), - array<f32, 8>(-0.044334, 0.015010, 0.085171, -0.000658, -0.048960, -0.180710, -0.118388, 0.092761), - array<f32, 8>(-0.090802, 0.239246, 0.060319, -0.157119, -0.096438, 0.122192, -0.110975, 0.092761), - array<f32, 8>(-0.243697, 0.489006, 0.108902, -0.465329, 0.124279, 0.126061, 0.159364, 0.092761), - array<f32, 8>(-0.102790, 0.124908, 0.017353, -0.057910, 0.113450, 0.203798, 0.088674, 0.092761), - array<f32, 8>(-0.038260, 0.080576, 0.018707, -0.018687, -0.003492, 0.084815, 0.019988, 0.092761), - array<f32, 8>(-0.048685, 0.067695, 0.012956, 0.020401, -0.090458, -0.066818, -0.060523, 0.092761), - array<f32, 8>(-0.060803, 0.066513, 0.004983, -0.006159, 0.095386, -0.025576, 0.056029, 0.092761) + array<f32, 8>(0.071600, -0.118269, 0.093769, 0.096974, -0.002193, -0.065924, -0.125094, 0.018248), + array<f32, 8>(-0.089131, -0.053007, 0.150626, -0.051485, 0.087371, -0.078030, -0.045468, 0.018248), + array<f32, 8>(0.042144, 0.146191, 0.152445, 0.028572, 0.064491, -0.061860, 0.037828, 0.018248), + array<f32, 8>(-0.084747, -0.133062, -0.030736, 0.061174, -0.055809, -0.012031, 0.126923, 0.018248), + array<f32, 8>(-0.017155, -0.105189, 0.003457, 0.105491, 0.003587, 0.089110, -0.001623, 0.018248), + array<f32, 8>(-0.028012, -0.066691, 0.125358, -0.027705, 0.032134, 0.044475, -0.036991, 0.018248), + array<f32, 8>(0.094536, -0.038367, -0.009421, 0.027049, -0.103427, -0.065209, -0.110071, 0.018248), + array<f32, 8>(0.147956, 0.028446, 0.031066, 0.055667, -0.039952, 0.069251, 0.020060, 0.018248), + array<f32, 8>(0.067507, 0.154407, -0.017526, 0.064009, -0.014328, 0.022175, 0.015376, 0.018248) ); |
