From 59b50034d084a00fd1511cc80c2155313623e25e Mon Sep 17 00:00:00 2001
From: Erik Strand <erik.strand@cba.mit.edu>
Date: Wed, 8 May 2019 21:38:18 -0400
Subject: [PATCH] Decay learning rate for L2 descent too

Doesn't change much but was worth a shot.
---
 main.cpp   | 34 ++++++++++++++++++++++++++++------
 plotter.py |  2 +-
 2 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/main.cpp b/main.cpp
index 15b85f1..bcea49a 100644
--- a/main.cpp
+++ b/main.cpp
@@ -120,6 +120,7 @@ int main() {
     Scalar loss = subset_differences.squaredNorm();
     Vector gradient = -2 * subset_dct_matrix * subset_differences;
     Scalar learning_rate = 0.1;
+    uint32_t count = 0;
     while (loss > 1e-6) {
         recovered_dct -= learning_rate * gradient;
         recovered_sample_values = dct_matrix.transpose() * recovered_dct;
@@ -128,8 +129,10 @@ int main() {
         loss = subset_differences.squaredNorm();
         gradient = -2 * subset_dct_matrix * subset_differences;
         //std::cout << loss << '\n';
+        ++count;
     }
     Scalar const final_loss_e = loss;
+    uint32_t const final_count_e = count;
     python_print("dct_e", recovered_dct);
 
     // Part (f)
@@ -139,16 +142,31 @@ int main() {
     subset_differences = subset_sample_values - subset_recovered_sample_values;
     loss = subset_differences.squaredNorm() + recovered_dct.squaredNorm();
     gradient = -2 * subset_dct_matrix * subset_differences + 2 * recovered_dct;
-    while (gradient.squaredNorm() > 1e-3) {
+    learning_rate = 0.1;
+    count = 0;
+    while (gradient.squaredNorm() > 1e-6) {
         recovered_dct -= learning_rate * gradient;
         recovered_sample_values = dct_matrix.transpose() * recovered_dct;
         subset_recovered_sample_values = vector_subset(recovered_sample_values, subset_indices);
         subset_differences = subset_sample_values - subset_recovered_sample_values;
         loss = subset_differences.squaredNorm() + recovered_dct.squaredNorm();
         gradient = -2 * subset_dct_matrix * subset_differences + 2 * recovered_dct;
-        //std::cout << loss << '\n';
+        if (count % 32 == 0) {
+            learning_rate *= 0.99;
+            /*
+            std::cout << "loss: " << loss;
+            std::cout << ", learning rate: " << learning_rate;
+            std::cout << ", |grad|^2: " << gradient.squaredNorm();
+            std::cout << '\n';
+            */
+        }
+        if (count > 100000) {
+            break;
+        }
+        ++count;
     }
     Scalar const final_loss_f = loss;
+    uint32_t const final_count_f = count;
     python_print("dct_f", recovered_dct);
 
     // Part (g)
@@ -166,7 +184,7 @@ int main() {
     Scalar last_loss = std::numeric_limits<Scalar>::infinity();
     Scalar relative_change = std::abs(loss - last_loss) / loss;
     learning_rate = 0.1;
-    uint32_t count = 0;
+    count = 0;
     while (relative_change > 1e-9) {
         recovered_dct -= learning_rate * gradient;
         recovered_sample_values = dct_matrix.transpose() * recovered_dct;
@@ -198,12 +216,16 @@ int main() {
     //std::cout << "g iterations: " << count;
     //std::cout << "g squared gradient norm: " << gradient.squaredNorm();
     Scalar const final_loss_g = loss;
+    uint32_t const final_count_g = count;
     python_print("dct_g", recovered_dct);
 
     std::cout << '\n';
-    std::cout << "Final unregularized loss: " << final_loss_e << '\n';
-    std::cout << "Final L2 regularized loss: " << final_loss_f << '\n';
-    std::cout << "Final L1 regularized loss: " << final_loss_g << '\n';
+    std::cout << "Final unregularized loss: " << final_loss_e
+              << " (" << final_count_e << " iterations)\n";
+    std::cout << "Final L2 regularized loss: " << final_loss_f
+              << " (" << final_count_f << " iterations)\n";
+    std::cout << "Final L1 regularized loss: " << final_loss_g
+              << " (" << final_count_g << " iterations)\n";
 
     return 0;
 }
diff --git a/plotter.py b/plotter.py
index 2d9e34b..b43bae3 100644
--- a/plotter.py
+++ b/plotter.py
@@ -8,7 +8,7 @@ recovered_sample_values = np.array([3.71932e-15, 0.475338, 0.917539, 1.29619, 1.
 subset_sample_times = np.array([0, 8.03213e-05, 0.000200803, 0.000240964, 0.000281124, 0.000321285, 0.000361446, 0.000401606, 0.000441767, 0.000522088, 0.000562249, 0.00060241, 0.00064257, 0.000682731, 0.000722892, 0.000763052, 0.000803213, 0.000843373, 0.000883534, 0.00100402, 0.00104418, 0.0011245, 0.00116466, 0.00120482, 0.00124498, 0.0013253, 0.00136546, 0.00144578, 0.00148594, 0.0015261, 0.00164659, 0.00168675, 0.00176707, 0.00180723, 0.00184739, 0.00192771, 0.00196787, 0.00200803, 0.00208835, 0.00212851, 0.00216867, 0.00220884, 0.00228916, 0.00236948, 0.00240964, 0.0024498, 0.00248996, 0.00253012, 0.00261044, 0.00269076, 0.00273092, 0.00277108, 0.00281124, 0.00285141, 0.00289157, 0.00293173, 0.00297189, 0.00301205, 0.00305221, 0.00309237, 0.00313253, 0.00317269, 0.00321285, 0.00325301, 0.00329317, 0.00333333, 0.00341365, 0.00345382, 0.00353414, 0.0035743, 0.00361446, 0.00369478, 0.00373494, 0.0037751, 0.00381526, 0.00385542, 0.00389558, 0.00401606, 0.00405622, 0.00409639, 0.00413655, 0.00417671, 0.00421687, 0.00425703, 0.00429719, 0.00433735, 0.00437751, 0.00441767, 0.00449799, 0.00453815, 0.00461847, 0.00465863, 0.0046988, 0.00473896, 0.00477912, 0.00481928, 0.00485944, 0.0048996, 0.00502008, 0.00506024, 0.0051004, 0.00518072, 0.00522088, 0.00526104, 0.0053012, 0.00534137, 0.00538153, 0.00542169, 0.00546185, 0.00554217, 0.00558233, 0.00562249, 0.00570281, 0.00574297, 0.00578313, 0.00582329, 0.00586345, 0.00590361, 0.00594378, 0.00598394, 0.00606426, 0.00614458, 0.00618474, 0.0062249, 0.00626506, 0.00630522, 0.00634538, 0.00638554, 0.0064257, 0.00646586, 0.00650602, 0.00658635, 0.00662651, 0.00670683, 0.00674699, 0.00678715, 0.00682731, 0.00694779, 0.00698795, 0.00702811, 0.00706827, 0.00710843, 0.00714859, 0.00718876, 0.00722892, 0.00726908, 0.00730924, 0.0073494, 0.00742972, 0.0075502, 0.00759036, 0.00763052, 0.00767068, 0.00771084, 0.007751, 0.00779116, 0.00783133, 0.00791165, 0.00795181, 0.00799197, 0.00803213, 0.00807229, 0.00811245, 0.00815261, 0.00819277, 0.00823293, 0.00827309, 0.00831325, 0.00835341, 0.00839357, 0.00843373, 0.00851406, 0.00855422, 0.00859438, 0.00863454, 0.0086747, 0.00871486, 0.00883534, 0.0088755, 0.00891566, 0.00895582, 0.00899598, 0.00903614, 0.00911647, 0.00915663, 0.00923695, 0.00927711, 0.00931727, 0.00935743, 0.00947791, 0.00951807, 0.00959839, 0.00963855, 0.00967871, 0.00975904, 0.00983936, 0.00987952, 0.00991968, 0.00995984, 0.01])
 subset_sample_values = np.array([0, 0.917539, 1.76932, 1.83651, 1.78761, 1.6316, 1.38558, 1.0731, 0.721928, 0.0205522, -0.27594, -0.508314, -0.664077, -0.738727, -0.735864, -0.666533, -0.547871, -0.401193, -0.249706, 0.0236569, 0.00668195, -0.205127, -0.379618, -0.575975, -0.771114, -1.06042, -1.1108, -0.951487, -0.73516, -0.43726, 0.742071, 1.13718, 1.7492, 1.91577, 1.96681, 1.70642, 1.41042, 1.02857, 0.120163, -0.341839, -0.765935, -1.12376, -1.5588, -1.56598, -1.42199, -1.20225, -0.930797, -0.634626, -0.0755387, 0.294754, 0.377636, 0.390584, 0.341783, 0.245913, 0.122481, -0.00631234, -0.117955, -0.19203, -0.212412, -0.169044, -0.0591181, 0.112454, 0.333336, 0.584794, 0.843377, 1.08309, 1.40408, 1.44291, 1.21838, 0.95598, 0.608661, -0.249515, -0.701696, -1.12623, -1.49192, -1.77159, -1.94442, -1.74113, -1.45207, -1.08332, -0.663067, -0.222778, 0.205515, 0.591886, 0.910992, 1.14409, 1.28044, 1.31795, 1.12989, 0.938508, 0.478999, 0.261091, 0.0805585, -0.0466774, -0.11149, -0.112311, -0.0551393, 0.0472029, 0.427974, 0.505792, 0.526522, 0.354329, 0.158647, -0.0988122, -0.400459, -0.722977, -1.03934, -1.32121, -1.54155, -1.71079, -1.63312, -1.44356, -0.771708, -0.33113, 0.14113, 0.6122, 1.04895, 1.42074, 1.70194, 1.87404, 1.86053, 1.41149, 1.06984, 0.686454, 0.291854, -0.0840174, -0.414358, -0.677735, -0.859784, -0.954231, -0.963144, -0.770496, -0.606599, -0.259632, -0.121617, -0.0311657, 0.00112032, -0.247029, -0.408011, -0.575983, -0.727348, -0.838913, -0.890317, -0.866221, -0.75805, -0.565119, -0.295029, 0.0367266, 0.791266, 1.71807, 1.86376, 1.89685, 1.81066, 1.60779, 1.30007, 0.907671, 0.457475, -0.488655, -0.918654, -1.28001, -1.54948, -1.71149, -1.75931, -1.69539, -1.53092, -1.28466, -0.981105, -0.648113, -0.314394, -0.00689592, 0.25156, 0.561694, 0.602629, 0.573475, 0.487607, 0.363754, 0.223933, -0.0715908, -0.0717057, -0.00857246, 0.115302, 0.289952, 0.498828, 0.929905, 1.10238, 1.24743, 1.18842, 1.03264, 0.783761, -0.36236, -0.792506, -1.54017, -1.79994, -1.95375, -1.9006, -1.38735, -0.999124, -0.559002, -0.0988865, 0.348445])
 dct_e = np.array([-0.196094, 1.18936, 0.479573, 0.663146, -0.080901, 0.577832, -0.148233, 1.01453, -0.197465, 2.00114, -0.294051, 2.11453, 0.213071, 6.16016, -0.731251, -4.70639, 0.256332, -1.53081, 0.259213, -0.0554509, -0.415897, 1.23824, -1.31813, 3.16587, 2.08398, -7.2223, -0.677869, -2.43735, -0.0684313, -1.19933, -0.423981, -0.599289, -1.02476, -0.993441, -0.0777809, -0.865453, -0.074759, -0.345011, -0.281427, -0.203953, -0.622912, 0.275884, 0.111848, -0.296558, 0.264995, 0.430286, -0.281935, 0.0723075, -0.307119, -0.364219, 0.0657357, 0.44006, 0.799354, -0.769753, 0.285176, 0.950941, -0.280907, -0.00497288, 0.296292, -0.642131, 0.889798, 1.09052, 0.400533, -0.304707, 0.246949, 0.293316, 0.323294, -0.533684, 0.474883, 0.195358, 0.637553, 0.580914, -0.0442756, -0.0349357, 0.657594, -0.154956, 0.690376, 0.0426053, 0.71097, 0.0513258, 0.60229, -0.234083, 0.0678623, -0.829127, 0.544893, -0.0570755, 0.341786, 0.779736, 0.287186, -0.0968679, 0.556942, 0.120861, 0.0556344, -0.566939, -0.413085, 0.573418, -0.0885655, 0.293251, 0.261079, -0.256654, 0.0575593, 0.94802, -0.54351, -0.436904, -0.961599, 0.230876, 0.0726653, -0.0600418, -0.528705, -0.0715482, 0.457052, 0.823255, -0.345286, -0.327319, -0.0162373, -0.663708, 0.0437903, -0.493872, -0.79755, -0.238856, -0.609117, -0.187032, 0.187882, 0.231953, -0.202489, -0.264078, -0.396135, -0.0454859, -0.0553627, -0.512516, 0.011238, -0.620677, 0.366957, -0.58604, -0.100525, -0.460264, -0.571354, -1.07625, 0.346349, -0.634828, 0.237577, 0.734295, 0.464448, -0.453415, -0.417422, 0.0399954, 0.129525, -0.628497, -1.76705, -0.512841, -0.129151, 1.00282, -0.322279, 0.391106, 0.0401609, 0.404917, 0.467034, -0.025818, -0.80657, 0.084261, -0.907793, -0.502164, 0.370733, -0.148036, -0.417506, 0.504627, -0.511599, 0.576102, 0.806729, 0.434816, -0.288823, 0.564942, -0.1185, -0.422731, -0.0933278, 0.0328392, -0.264447, 0.0941453, 0.974272, -0.557034, 0.394226, 0.210044, 0.757861, -0.577916, -0.0323905, 0.274702, 1.41617, 0.327861, -0.045681, -0.0263465, -0.332338, 0.299948, 0.196235, -0.435646, 0.223145, 0.681411, 0.332371, 0.0769544, 0.441301, 0.259661, 0.270069, -0.0829026, 0.816754, -0.0269315, 1.1196, 0.186495, -0.335414, -0.693516, 0.642428, -1.09616, 0.213204, 0.679919, 0.549171, 0.157623, 1.03292, 1.01379, -0.0463448, 0.347021, -0.017238, -0.628042, -0.532548, 0.770155, 0.0893456, 0.257188, -0.369556, 0.376224, 0.284265, 0.966083, -0.138508, 0.136536, -0.493359, 1.13903, -0.0016658, -0.455193, -0.646744, 0.676872, -0.703003, 0.797936, 0.322608, 0.587281, 0.0820393, 0.584012, -0.96235, -0.145036, -0.153075, -0.230502, -0.460132, 0.722142, 0.810725, -0.216875])
-dct_f = np.array([-0.128202, 0.625785, 0.0201692, 0.398691, 0.144763, 0.490854, 0.0956919, 0.650749, 0.0173706, 0.902481, 0.0810071, 1.23349, -0.134141, 3.10943, -0.307434, -2.28341, 0.0897043, -0.677982, 0.238718, -0.0569493, -0.0625467, 0.678633, -0.399306, 1.59969, 1.07472, -3.58733, -0.175665, -1.22954, -0.073115, -0.642949, -0.32888, -0.293621, -0.33002, -0.461082, -0.0924337, -0.261168, 0.0365576, -0.268522, -0.19366, -0.142064, -0.291814, 0.0633658, 0.0429835, -0.159101, 0.176932, 0.167059, -0.0376179, -0.0163244, -0.290812, -0.133946, 0.118496, 0.265316, 0.117899, -0.380144, 0.0815734, 0.390314, 0.0166088, -0.106858, 0.112289, -0.258428, 0.431392, 0.478348, 0.0876306, -0.154815, -0.061415, 0.150749, 0.0786899, -0.0259306, 0.14254, -0.051765, 0.260549, 0.321238, -0.0298536, -0.236221, 0.109051, -0.151414, 0.289132, 0.0607066, 0.138025, -0.072031, 0.218627, 0.0156062, 0.0406325, -0.520255, 0.247159, -0.154366, 0.206985, 0.16453, 0.157685, -0.293041, 0.0767808, 0.10905, 0.118047, -0.371501, -0.148446, 0.218044, -0.0529188, 0.00374332, 0.0224681, -0.0576681, -0.0306463, 0.257711, -0.0644529, -0.0882774, -0.50266, 0.0187881, 0.00477641, -0.0816121, -0.252274, -0.0786066, 0.261582, 0.330727, -0.0604508, -0.157064, -0.302593, -0.380228, 0.030939, -0.134265, -0.463183, -0.133715, 0.0123524, 0.0958193, 0.094654, 0.0480209, -0.0655042, -0.366965, -0.276783, 0.0918902, -0.0780344, -0.235922, -0.0770751, 0.0460241, 0.260871, -0.24325, 0.0715379, -0.147367, -0.280814, -0.315655, 0.183873, -0.293842, 0.0506389, 0.362196, 0.272027, 0.00189439, -0.285468, 0.298874, 0.0664038, -0.192419, -0.528099, -0.224467, -0.188268, 0.395158, 0.163009, 0.27742, -0.120604, 0.177714, 0.283735, 0.0160217, -0.251383, 0.00552576, -0.316482, -0.116127, 0.239018, 0.120915, 0.00778038, -0.0171491, -0.238564, 0.256053, 0.271199, 0.308677, -0.058214, 0.16632, 0.134117, -0.0719508, 0.00850059, 0.000685789, -0.0666121, 0.0378622, 0.403544, -0.277101, 0.268779, 0.185174, 0.276086, -0.283073, 0.0229385, 0.0953724, 0.561176, 0.0569767, 0.204422, -0.166952, -0.177897, 0.09501, 0.0628256, -0.0611136, -0.0329177, 0.120971, 0.0986958, 0.119868, 0.233474, -0.0227016, -0.145502, -0.117204, 0.208528, -0.151173, 0.524241, 0.0341692, -0.293842, -0.185265, 0.268604, -0.352157, -0.182337, 0.0817727, 0.234098, -0.0181577, 0.296696, 0.350259, -0.0718085, -0.000718198, -0.0585872, -0.234716, -0.332507, 0.26509, -0.0116758, 0.0687702, -0.172702, 0.14437, 0.00131067, 0.172244, -0.0201932, 0.0983488, -0.209788, 0.225785, -0.231219, 0.00300628, -0.292026, 0.0532718, -0.300906, 0.413064, 0.029319, 0.221479, -0.032181, 0.152876, -0.593108, -0.191158, -0.0322509, -0.0192836, -0.291647, 0.530207, 0.395767, -0.078254])
+dct_f = np.array([-0.127384, 0.627279, 0.0199222, 0.397183, 0.145131, 0.490567, 0.0941131, 0.65138, 0.0163942, 0.900983, 0.0798731, 1.23351, -0.134871, 3.109, -0.306674, -2.28422, 0.0898475, -0.677689, 0.239389, -0.0569611, -0.0638795, 0.678978, -0.398818, 1.60106, 1.07357, -3.58646, -0.177939, -1.23054, -0.072577, -0.642832, -0.328457, -0.294611, -0.328588, -0.463325, -0.092353, -0.261672, 0.038062, -0.26873, -0.194016, -0.140642, -0.292498, 0.0643444, 0.0423415, -0.159698, 0.177234, 0.167989, -0.0365016, -0.0161079, -0.289834, -0.135586, 0.119238, 0.263733, 0.118237, -0.380305, 0.0819409, 0.389443, 0.0157327, -0.106219, 0.112208, -0.256745, 0.432081, 0.478686, 0.0884035, -0.153851, -0.0618788, 0.151083, 0.0776944, -0.0262708, 0.143394, -0.0524241, 0.259769, 0.321918, -0.0302636, -0.236035, 0.109229, -0.150947, 0.289312, 0.0611814, 0.1376, -0.0731829, 0.219035, 0.0158738, 0.0413149, -0.520574, 0.247689, -0.153244, 0.206044, 0.164181, 0.157553, -0.292042, 0.0757304, 0.10983, 0.117293, -0.373123, -0.148336, 0.217526, -0.0523727, 0.00312375, 0.0242798, -0.0581677, -0.0302421, 0.256125, -0.065483, -0.0873927, -0.505082, 0.0201628, 0.00458385, -0.0804091, -0.252171, -0.0772387, 0.260188, 0.33038, -0.0598087, -0.15732, -0.302627, -0.382199, 0.0305166, -0.135607, -0.463583, -0.134784, 0.0133132, 0.0972837, 0.0938835, 0.0487493, -0.0640276, -0.366303, -0.276528, 0.0920163, -0.0787023, -0.236961, -0.077293, 0.0457126, 0.260715, -0.244861, 0.072821, -0.146865, -0.280616, -0.315394, 0.184365, -0.294766, 0.0498205, 0.362471, 0.272611, 0.00276286, -0.28505, 0.29905, 0.0666097, -0.193081, -0.526209, -0.222541, -0.189158, 0.395057, 0.163073, 0.277107, -0.121956, 0.178439, 0.283141, 0.0165068, -0.250144, 0.00599858, -0.314896, -0.115557, 0.238953, 0.119366, 0.00942922, -0.0177633, -0.236968, 0.257597, 0.269313, 0.309531, -0.0579236, 0.167483, 0.134955, -0.0704734, 0.00780955, 0.000736808, -0.0669349, 0.0366694, 0.403837, -0.278345, 0.268819, 0.185103, 0.277384, -0.282463, 0.0252847, 0.0970917, 0.560296, 0.0583888, 0.204766, -0.1665, -0.179371, 0.0941689, 0.0603326, -0.0609865, -0.0326477, 0.121736, 0.0993557, 0.120331, 0.234207, -0.023324, -0.145185, -0.116067, 0.209003, -0.15216, 0.523804, 0.034098, -0.295132, -0.184485, 0.267951, -0.351953, -0.181704, 0.0823375, 0.235163, -0.0189395, 0.295202, 0.349386, -0.0721829, -0.0018707, -0.0580155, -0.234116, -0.332597, 0.264692, -0.0111895, 0.0680038, -0.171677, 0.14486, 0.00132998, 0.170335, -0.0199255, 0.0963386, -0.209359, 0.225002, -0.232108, 0.00555737, -0.291547, 0.0532376, -0.301205, 0.413878, 0.0275611, 0.220819, -0.0329236, 0.152603, -0.592978, -0.192029, -0.0314966, -0.0197569, -0.290899, 0.531222, 0.397682, -0.0790065])
 dct_g = np.array([-0.000851391, 0.812182, 0.000717756, 0.809907, 0.000900241, 0.917738, 0.000749033, 1.15795, 0.000835791, 1.62193, 0.000701021, 2.55865, 6.39499e-05, 7.38274, -0.365392, -5.39843, 0.000937966, -0.620037, 0.000923682, -0.000934204, 0.000895766, 0.495184, 0.00083622, 3.64842, 2.27359, -8.35605, -0.000955588, -1.95047, -0.000825429, -0.829454, -0.00106938, -0.350288, -0.000896813, -0.189321, -0.000911419, -0.00462112, -0.000873775, -0.00126141, -0.00107919, -0.00104999, -0.00107941, -0.000960722, -0.000953438, -0.00116742, 0.000703776, -0.000844646, -0.000709299, -0.00103849, -0.00103327, -0.00105577, 0.000816728, -0.000924531, 0.000912414, -0.000874898, 0.000940953, 0.000936466, 0.000865222, -0.000963668, 0.00106016, -0.000786654, 0.000717029, 0.000980539, 0.00101915, -0.000982648, -0.000638853, -0.00100786, 0.000850404, -0.000977216, 0.00101871, -0.000831285, 0.00113269, 0.000652622, 0.0009446, -0.000859014, 0.00107991, -0.000778459, 0.00117572, -0.000988392, 0.0009614, -0.000953972, 0.000926992, -0.00103274, 0.000765707, -0.000924638, 0.000716508, -0.000808706, 0.000975015, -0.000867629, 0.00106449, -0.000869952, 0.000982544, -0.000874038, 0.000671562, -0.000981684, -0.000983644, 0.000852325, 0.000788513, -0.000862389, -0.000644516, -0.000930621, -0.000946701, -0.000833687, -0.000897757, -0.000885385, -0.000814795, -0.00110544, -0.000823527, -0.00103523, -0.000921799, -0.000902532, -0.000931668, 0.00076057, -0.000907159, -0.000997527, -0.000959691, -0.000887081, -0.00082766, -0.000906316, -0.000733922, -0.00082827, -0.000847044, -0.00103147, 0.000702726, -0.000927271, -0.000970154, -0.00111192, -0.000989683, -0.000733875, -0.000737839, -0.000798997, -0.00071557, -0.000775354, -0.000683331, -0.000879843, -0.000691919, -0.000784618, -0.000841537, -0.000992862, -0.000956877, -0.000677055, 0.000660592, 0.00080709, 0.000883074, 0.000770463, -0.000759243, -0.000866693, -0.00072857, -0.00108437, -0.000975323, -0.000774906, -0.000801349, 0.000870644, 0.000922241, 0.000802996, 0.000739285, 0.000722587, 0.000839007, 0.000801986, -0.000738018, 0.000899697, -0.00101084, 0.000739463, -0.000942127, 0.000879426, -0.000693701, -0.000626707, 0.000937644, 0.000771342, 0.000940338, 0.000805688, 0.000846179, 0.000644826, 0.000744126, -0.00092446, 0.00102083, 0.000952457, 0.000844855, -0.000970845, 0.000877286, 0.000951266, 0.000780698, 0.000927065, 0.0010894, -0.000838937, 0.000762118, 0.000853707, 0.000941357, -0.000809598, 0.00102197, -0.000704607, -0.000717992, -0.00069311, 0.00101798, -0.00103429, 0.000993027, -0.000965518, 0.00102058, 0.00106333, 0.000930496, 0.000637145, 0.000878801, -0.000991114, 0.00108496, 0.000818405, 0.00100599, -0.000930881, -0.000817473, -0.000823709, -0.00067736, -0.000810699, -0.00068407, -0.000651194, 0.000808338, 0.000888656, 0.000995602, 0.000928179, 0.000865867, -0.000714207, -0.000808991, -0.000698807, -0.000799164, 0.000679106, -0.00102976, 0.000760702, -0.000759948, 0.000982899, -0.00076065, 0.000731775, -0.000939647, 0.000925197, -0.00111515, 0.000815017, -0.00107993, 0.000728991, -0.000841825, 0.000984775, -0.000831179, 0.000979764, -0.000847649, 0.000929749, -0.000829043, 0.000653262, -0.00104896, 0.000727772, -0.000965807, 0.000978599, -0.0010083, 0.000744049, 0.000959018, 0.000969082])
 
 if __name__ == "__main__":
-- 
GitLab