From 869f5e7344c3d0e9eb3b1bc56035736ee5b259ed Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 05:55:21 +0200 Subject: [PATCH 1/9] Add uint --- fair_kmeans/point.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fair_kmeans/point.cpp b/fair_kmeans/point.cpp index a3261c8..96be038 100644 --- a/fair_kmeans/point.cpp +++ b/fair_kmeans/point.cpp @@ -6,6 +6,8 @@ #include "point.h" +typedef unsigned int uint; + // print a point std::string Point::print() const { From 0306d3a581dcb248a942d30ca3bb4cc2f819d02f Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 05:56:16 +0200 Subject: [PATCH 2/9] change uint position --- fair_kmeans/point.cpp | 2 -- fair_kmeans/point.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fair_kmeans/point.cpp b/fair_kmeans/point.cpp index 96be038..a3261c8 100644 --- a/fair_kmeans/point.cpp +++ b/fair_kmeans/point.cpp @@ -6,8 +6,6 @@ #include "point.h" -typedef unsigned int uint; - // print a point std::string Point::print() const { diff --git a/fair_kmeans/point.h b/fair_kmeans/point.h index 9f3cd24..bd93f27 100644 --- a/fair_kmeans/point.h +++ b/fair_kmeans/point.h @@ -3,6 +3,8 @@ #include #include +typedef unsigned int uint; + // Small class for storing weighted points class Point { From a2b543ef09143605404605316255cb2cf1d5118e Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 05:59:25 +0200 Subject: [PATCH 3/9] Add static cast --- fair_kmeans/_core.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fair_kmeans/_core.cpp b/fair_kmeans/_core.cpp index 09c3771..3f12561 100644 --- a/fair_kmeans/_core.cpp +++ b/fair_kmeans/_core.cpp @@ -36,7 +36,7 @@ void postprocessData(double *array, double *sampleWeights, int *colors, uint n, double w = sampleWeights[j]; int c = colors[j]; number[c] += 1; - weightsum[c] += w; + weightsum[c] += static_cast(w); std::vector coords(&array[i], &array[i] + d); // Add j as the position of the point in the array points[c].push_back(Point(w, c, j, coords)); From dcd00bbee87123f3a77bc6fef718b71255409cd0 Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 06:01:34 +0200 Subject: [PATCH 4/9] Move weight cast position --- fair_kmeans/_core.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fair_kmeans/_core.cpp b/fair_kmeans/_core.cpp index 3f12561..34c237f 100644 --- a/fair_kmeans/_core.cpp +++ b/fair_kmeans/_core.cpp @@ -33,10 +33,12 @@ void postprocessData(double *array, double *sampleWeights, int *colors, uint n, int j = 0; for (uint i = 0; i < n * d; i += d) { - double w = sampleWeights[j]; + // In a future version, we might consider using weights as doubles + // but currently the algorithm does not allow for that + double w = static_cast(sampleWeights[j]); int c = colors[j]; number[c] += 1; - weightsum[c] += static_cast(w); + weightsum[c] += w; std::vector coords(&array[i], &array[i] + d); // Add j as the position of the point in the array points[c].push_back(Point(w, c, j, coords)); From 611c7907f01e7d167223972cc90a721ada801329 Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 06:02:31 +0200 Subject: [PATCH 5/9] Correctly set type --- fair_kmeans/_core.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fair_kmeans/_core.cpp b/fair_kmeans/_core.cpp index 34c237f..469a1c9 100644 --- a/fair_kmeans/_core.cpp +++ b/fair_kmeans/_core.cpp @@ -35,7 +35,7 @@ void postprocessData(double *array, double *sampleWeights, int *colors, uint n, { // In a future version, we might consider using weights as doubles // but currently the algorithm does not allow for that - double w = static_cast(sampleWeights[j]); + int w = static_cast(sampleWeights[j]); int c = colors[j]; number[c] += 1; weightsum[c] += w; From 163fa64d8aeca9a8f375765f30ad8809534c65c6 Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 06:03:40 +0200 Subject: [PATCH 6/9] Set seed to int --- fair_kmeans/_core.cpp | 2 +- fair_kmeans/core.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fair_kmeans/_core.cpp b/fair_kmeans/_core.cpp index 469a1c9..d8cf3cb 100644 --- a/fair_kmeans/_core.cpp +++ b/fair_kmeans/_core.cpp @@ -111,7 +111,7 @@ extern "C" uint nc, uint maxIterations, double tolerance, - std::uint64_t seed, + int seed, int *labels, double *centers, bool updateCenters, diff --git a/fair_kmeans/core.py b/fair_kmeans/core.py index e4d3a00..ef25b9b 100644 --- a/fair_kmeans/core.py +++ b/fair_kmeans/core.py @@ -148,7 +148,7 @@ def _run_fair_clustering( c_k = ctypes.c_uint(self.n_clusters) c_n_colors = ctypes.c_uint(self.n_colors_) - c_random_state = ctypes.c_size_t(self._seed) + c_random_state = ctypes.c_int(self._seed) c_labels = (ctypes.c_int * n_samples)() c_centers = self.cluster_centers_.ctypes.data_as( From 19854f86a2a8d35c58711732e1c133dde18ae614 Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 06:11:35 +0200 Subject: [PATCH 7/9] Add lemon only templates option --- build_extension.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_extension.py b/build_extension.py index 13177f9..dc695d3 100644 --- a/build_extension.py +++ b/build_extension.py @@ -25,6 +25,7 @@ def build_extensions(self) -> None: # with clang++. This works across compilers (ignored by MSVC). for extension in self.extensions: extension.extra_compile_args.append("-std=c++11") + extension.extra_compile_args.append("-DLEMON_ONLY_TEMPLATES") try: build_ext.build_extensions(self) @@ -34,6 +35,7 @@ def build_extensions(self) -> None: # so the code can compile on macOS with Anaconda. for extension in self.extensions: extension.extra_compile_args.append("-stdlib=libc++") + extension.extra_compile_args.append("-DLEMON_ONLY_TEMPLATES") extension.extra_link_args.append("-stdlib=libc++") build_ext.build_extensions(self) From a809d2554afeb116ceb119697c86f70471726e4d Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 07:45:46 +0200 Subject: [PATCH 8/9] Add more platform stable version of randomness --- fair_kmeans/fair_clustering_tools.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/fair_kmeans/fair_clustering_tools.cpp b/fair_kmeans/fair_clustering_tools.cpp index 74da1bb..b3d22c4 100644 --- a/fair_kmeans/fair_clustering_tools.cpp +++ b/fair_kmeans/fair_clustering_tools.cpp @@ -169,6 +169,12 @@ std::vector computeFairlets(const std::vector> &colore return fairlets; } +int randomDoubleToInt(double value, int min, int max) +{ + double result = (value * (max - min)) + min; + return static_cast(std::ceil(result)); +} + // Computes the fair assignment of points to a given set of centers. Returns new centroids. CentersValueChange compute_fair_assignment( std::vector> &points, @@ -336,18 +342,22 @@ CentersValueChange compute_fair_assignment( int centerindex = 0; std::mt19937 rng(seed); // random-number engine used (Mersenne-Twister in this case) - std::uniform_int_distribution uni(0, points[0].size() - 1); // guaranteed unbiased + // Replaced this because it does not produce the same results on different platforms + //std::uniform_int_distribution uni(0, points[0].size() - 1); // guaranteed unbiased + std::uniform_real_distribution realDist(0.0, 1.0); + + # define getRandomValue() randomDoubleToInt(realDist(rng), 0, points[0].size() - 1) // Choose k - 1 random integers between 0 and the size of the blue points // Such that we can use them in case our clusters are empty std::vector matchingPairs(centers.size() - 1); - for (size_t i = 0; i < centers.size() - 1; ++i) + for (size_t i = 0; i < matchingPairs.size(); ++i) { - auto randomInteger = uni(rng); + auto randomInteger = getRandomValue(); while (std::find_if(matchingPairs.begin(), matchingPairs.end(), find_id(randomInteger)) != matchingPairs.end()) { - randomInteger = uni(rng); + randomInteger = getRandomValue(); } matchingPairs[i].source = randomInteger; } From 836552347b438d8d8cce6780c3a1982ac18889b7 Mon Sep 17 00:00:00 2001 From: Giulia Baldini Date: Wed, 17 Jul 2024 07:45:59 +0200 Subject: [PATCH 9/9] Update outputs accordingly --- tests/datasets/adult-balanced_10.output | 6 +- tests/datasets/adult-balanced_100.output | 132 ++++++++++---------- tests/datasets/adult-balanced_50.output | 60 ++++----- tests/datasets/bank-balanced_100.output | 80 ++++++------ tests/datasets/bank-balanced_20.output | 20 +-- tests/datasets/bank-balanced_50.output | 32 ++--- tests/datasets/diabetic-balanced_100.output | 18 +-- 7 files changed, 174 insertions(+), 174 deletions(-) diff --git a/tests/datasets/adult-balanced_10.output b/tests/datasets/adult-balanced_10.output index 11fd82f..db1e426 100644 --- a/tests/datasets/adult-balanced_10.output +++ b/tests/datasets/adult-balanced_10.output @@ -1,12 +1,12 @@ 1.27575e+10 -10 +8 1 -56.1786,9.60714,0,859.607,32.75 +55.5714,9.35714,0,859.607,30.25 39.5,12.5,99999,0,45 47,10.75,8855.5,0,45 41.8889,12.4444,12553,0,46.5 36.9618,10.0632,3.23508,0,39.1671 -49.7,9.5,3841.2,0,31.6 +51.4,10.2,3841.2,0,38.6 46.3667,10.8,0,2022.5,45.1 42.625,12.5,61495.9,0,39.875 38.6818,10.6364,5793.09,0,44 diff --git a/tests/datasets/adult-balanced_100.output b/tests/datasets/adult-balanced_100.output index 9c582b5..9786ac7 100644 --- a/tests/datasets/adult-balanced_100.output +++ b/tests/datasets/adult-balanced_100.output @@ -1,103 +1,103 @@ 1.26827e+10 -11 +13 1 -49.1923,10.2308,0,0,34.8462 +49.25,10.3214,0,0,35.5714 39.5,12.5,99999,0,45 -23,10.1667,0,0,21.6667 -19.25,9.375,0,0,22.375 -18,5,0,0,22.5 +19.5,6.75,0,0,19.5 +15,6.5,0,0,22.5 +18.75,6.5,0,0,20 36.5,10,3946,0,32.5 46.5,9,0,1914,40 56,10,7420.5,0,47.5 40.75,12.375,61495.9,0,41.125 -19,9.33333,0,0,17.3333 +11.75,4.5,0,0,20 42.8333,10.5,5195.5,0,46.8333 71.5,9.5,0,3400,42.5 -51,9.5,457,0,30 -18,9,0,0,20 -18.5,6.5,0,0,18.75 +50,7.5,457,0,32.5 +22,6,0,0,30 +27.25,7.75,0,0,30 34.5,9,0,1383.5,42.5 -15.75,4.75,0,0,17.5 -15,6.5,0,0,22.5 +24.75,6,0,0,30 +16.5,4.5,0,0,21.25 40.375,12,6173.62,0,44 -13.5,5,0,0,20 -44,11.8333,1542.83,0,46.6667 +34,9,0,0,29.5 +43.8333,12.1667,1542.83,0,46.6667 54.8333,10,0,2165.17,44.1667 -42.1667,9.66667,0,746.25,41.1667 -25.5,9.5,1087,0,32.5 +42.75,9.16667,0,746.25,41.1667 +55.25,10,0,933.75,36.75 50,14,12293,0,50 -28.1667,10.1667,0,0,54.7667 -29.5,11.75,1203.5,0,32.5 -54,9.75,3340.75,0,38.25 +27.9667,10.1333,0,0,54.6 +38.25,10.875,1159.75,0,25.125 +53.75,12,3340.75,0,40.75 53.5,9,4402,0,40 31,11,6813.5,0,40 -23,5.75,0,0,20 -39,8.2,1941.3,0,42.6 +42.5,10,0,0,9 +38.6,7.3,1941.3,0,42.6 42.25,7.5,5841,0,48 -29,8,0,0,16.25 -25.2,10.4,0,0,26.2 -23.2917,10.75,0,0,43 +20.3333,9.33333,0,0,29.3333 +25.1667,10.5,0,0,25 +9.5,5.25,0,0,7.75 34.5,11.5,14485.5,0,45 -43.1667,12.6667,2193,0,41.6667 -37.24,10.06,0,0,44.96 +42.5,10.5,2193,0,41.6667 +37.7292,9.91667,0,0,44.9375 42,12.25,11163.2,0,46 47,10.5,0,2043.25,41 26.5,9,4176.5,0,35 -46,8.25,2589,0,41.25 -50.4545,10.8636,0,0,56.1364 +45.5,8.5,2589,0,41.25 +50.65,11,0,0,56.65 34,13.5,4947.5,0,35.5 70,6,898.5,0,40 -20,8.25,0,0,29.5 +22.5,5.75,3093.75,0,18.75 46.875,9.875,0,0,88.25 -27.44,9.52,0,0,39.68 -24,4.25,2568.75,0,22 -63.6,10.3,0,0,16.6 -28.5,9.5,2325,0,32.5 -53.5,12.75,0,933.75,41.25 +27.14,9.18,0,0,39.52 +42.5,9.25,0,852.25,46.25 +62.25,11,0,0,17 +30.5,9.5,2325,0,35 +24.8333,9.66667,0,867.167,28.6667 44.8333,11.6667,0,1821.33,40.8333 -11.25,4.5,0,0,18.75 -47.9231,9.73077,0,0,45.2308 +17.5,7,0,0,30 +47.8333,9.63333,0,0,45.8667 41,14,0,1686,53.5 64.8636,8.27273,0,0,39.9545 39.25,10.75,0,1738.75,53.75 -26.6667,7.83333,0,0,45.8333 -28,12.5,0,0,9 -32.7027,9.59459,0,0,38.9189 -18.3,8.2,0,0,12.1 -23.8333,12,0,0,16.5 -27.5,3.25,0,0,20 -38,12.4762,0,0,39.3571 -20.8333,5.66667,0,0,40.5 -42.5,10,0,0,9 -67.5,8.8,0,0,5.2 +29.25,4,0,0,32 +27.6,11.6,0,0,13.5 +32.6892,9.63514,0,0,39.2432 +26.25,6.25,0,862.75,33.75 +22.5833,10.3333,0,0,21.25 +39.25,5.25,0,0,12.5 +37.675,12.775,0,0,39.725 +17.75,5.5,0,0,27 +22.75,6.5,831.25,0,22.5 +65.6667,8.83333,0,0,5.5 56.0278,9.30556,0,0,39.4167 -17,6.5,0,0,27.5 -24.8333,9.16667,0,867.167,29.1667 +27,4.5,572.5,0,7 +17.25,6.75,0,0,14.75 25.5,11,0,1869.5,41 -45,9.1,0,0,22.6 -20.7667,9.36667,0,0,39.4 -37.375,11.0833,0,0,54.8333 +45.9,8.8,0,0,22.6 +22.5,9.72,0,0,41.16 +37,11.0833,0,0,54.9167 82,8.5,0,0,48 33.7778,11.5,0,0,68.4444 -44.25,10.4167,0,0,39.7083 +44.375,11.15,0,0,39.85 58.2273,10.8636,0,0,46.1364 39.5,11,0,1944.5,55 -24.1304,11.3913,0,0,35.5217 -28.825,12.225,0,0,43.4 -38.8611,9.16667,0,0,34 +24.9,12.1333,0,0,35.7 +28.375,11.875,0,0,43.7292 +39.2619,9.09524,0,0,34.8571 59.5,7.33333,0,0,63.1667 -21.5,7,1096.5,0,20 +15,7.5,0,0,16.25 51.5,13.5,15024,0,40 -12.25,4.5,0,0,22 -59.5,9,1145,0,7 +17,6,0,0,5 +9,4,0,0,4 80.1667,8.83333,0,0,25.6667 -15.75,5.75,0,0,21.25 -19.625,8.75,0,0,6.25 -32.25,12,0,0,20.75 -34,8,0,0,27.1667 -63.6,7.5,0,0,30.2 -22,4,0,0,44.75 +19.6,10.1,0,0,16.7 +19.5833,9.08333,0,0,8.83333 +18.25,8.875,0,0,23 +29,12,0,0,31.8333 +65.1,7.2,0,0,29.2 +19.7,9.25,0,0,35.7 30.6667,12.5,0,0,94.5 -16,4.75,0,0,26.25 -15.5,5.25,0,0,19 -42.75,7.25,0,852.25,46.25 +18.25,4,977,0,21.5 +32,7.5,0,0,17 +19.25,6.75,0,0,20 diff --git a/tests/datasets/adult-balanced_50.output b/tests/datasets/adult-balanced_50.output index 98f2a6d..3566282 100644 --- a/tests/datasets/adult-balanced_50.output +++ b/tests/datasets/adult-balanced_50.output @@ -1,53 +1,53 @@ -1.26829e+10 -20 +1.26828e+10 +25 1 -68.4667,9.2,0,0,16.1333 +68.8333,9.03333,0,0,16.6333 39.5,12.5,99999,0,45 -24.4,10.55,0,0,21.9 +20.2857,10.0714,0,0,16.5714 52,14,15024,0,50 40.75,12.375,61495.9,0,41.125 36.5,10,3946,0,32.5 39.1,11,0,1849.5,40.7 -20.5,10.4286,0,0,15.5714 -18.9167,8.41667,0,0,7.58333 -25.471,10.5145,0,0,41.2681 +38.4286,10.3286,0,0,35.6714 +17.25,6.75,0,0,14.75 +21.7679,9.80357,0,0,35.1964 42.1667,12.3333,11163.2,0,44.3333 71.5,9.5,0,3400,42.5 40.375,12,6173.62,0,44 -16.5,5,0,0,21.5 -56,9.5,457,0,35 +27.8772,10.5702,0,0,39.6754 +52.5,10.5,457,0,35 34.5,11.5,14485.5,0,45 -43.2,9.3,1941.3,0,45.3 -17.25,6.75,0,0,14.75 +39.4,8.4,1941.3,0,42.6 +27.6,9.65,0,0,29.35 42.8333,10.5,5195.5,0,46.8333 56,10,7420.5,0,47.5 -16.5,5.5,0,0,20 +18.9167,8.41667,0,0,7.58333 48.5,13,12293,0,50 -46.8333,11.3333,2193,0,41.6667 -57.25,7.25,3340.75,0,49.75 -44.5,9.16667,1184,0,20.8333 -39,9.65385,0,819.308,37.7308 +48,11.5,2193,0,40.6667 +55.5,7.5,3340.75,0,52 +38.125,10.125,1159.75,0,25.75 +46.1667,8.5,0,746.25,41.1667 54.8333,10,0,2165.17,44.1667 -33.373,10.4603,0,0,41.0952 +35.0278,10.5,0,0,42.3704 53.5,9,4402,0,40 -29,11.5,2325,0,36.5 +30.5,9.5,2325,0,37.5 43.5,11.8333,0,1721.17,53.6667 31,11,6813.5,0,40 -47,12,1542.83,0,50 -21.3043,9.34783,0,0,34.4783 -42.0357,10.4214,0,0,42.1786 -47.25,9,2589,0,41.25 +48,11.3333,1542.83,0,50.6667 +18.25,5.5,0,0,18 +35.3333,11.2879,0,0,58 +47.25,9,2589,0,36.875 42.25,7.5,5841,0,48 44.5,10.6667,0,2010.33,45.6667 -48.1731,10.0577,0,0,32.6346 -25.5,11,1087,0,35 -18.7857,8.92857,0,0,25 -33.8333,10,0,0,14 -31.6316,9.02632,0,0,32.4474 +45.4151,10.4057,0,0,42.283 +36.6429,8.07143,0,881.929,39.4286 +48,9.2,0,0,23.25 +28.625,11.0625,0,0,14.1875 +20.4545,9.40909,0,0,24.0909 34,13.5,4947.5,0,35.5 26.5,9,4176.5,0,35 -33.6618,10.9559,0,0,58.2206 -58.6176,9.38235,0,0,43.6275 +24.1552,9.98276,0,0,45.1379 +58.97,9.36,0,0,42.98 39,10.5,0,1383.5,45 -40.1111,10.5,0,0,87.3333 +38.5,10.6111,0,0,87.6111 79.5,8.5,898.5,0,40 diff --git a/tests/datasets/bank-balanced_100.output b/tests/datasets/bank-balanced_100.output index d5a9e5b..c11106c 100644 --- a/tests/datasets/bank-balanced_100.output +++ b/tests/datasets/bank-balanced_100.output @@ -1,66 +1,66 @@ -3.16384e+07 -12 +3.16175e+07 +14 1 35.7222,2.11111,0.0555556,58.8889,0.444444,0.111111,14.5,6.66667,2.83333,0.111111 38,2,0,4964,0.5,0,5.5,6,1,0 43,3,0,8955.5,0.5,0,13,3.5,3.5,0 37,2,0,2713,0.5,0,19.25,5,3.5,0 37.5,2.5,0,23760,0,0,21.5,9,4.5,0 -41.2222,2.16667,0,1087.83,0.333333,0.0555556,13.8889,5.66667,2.44444,0.5 +41.25,2.08333,0,1102.25,0.333333,0,13.25,5.91667,2.08333,0.333333 32,2,0,13246,1,0,11.5,6.5,2.5,0 -38.8889,2.38889,0,681.722,0.444444,0.277778,15.7778,5.44444,2.11111,0.222222 +37.55,2.25,0,674.7,0.6,0.2,16.15,5.45,2.05,0.55 40.1,2.1,0,1883.6,0.6,0.1,17.1,6.9,1.7,1.1 42,2.83333,0,3714.83,0.333333,0,17.8333,6.83333,2.16667,0.666667 -50.3,1.9,0.1,-28.2,0.6,0.3,7,5.2,1.5,0.5 +43.875,2.375,0,775.5,0.25,0.125,12.25,5.625,1.875,0.25 41,2.5,0,6478,0.5,0,21,6.5,5.5,0 37.75,2.125,0.125,-591.5,0.75,0.625,19.75,7,2.875,0.5 31.5,1.5,0,7481,1,0,7,5,1.5,0.5 -38.6944,2.13889,0,362,0.611111,0.138889,12.8333,4.88889,2.86111,1.11111 +38.5769,2.11538,0,368,0.653846,0.115385,13.7692,4.65385,3.03846,1.26923 42,3,0.5,-2070,1,1,23,6,5.5,0 -40.1,2,0,-62,0.9,0.4,12.5,5.2,5.1,0.6 +35.8125,2.3125,0,142.125,0.5625,0.1875,13.125,5.6875,2.3125,0.1875 37.25,2.5,0,4307.25,0.75,0.25,15,6,3.5,0 -42.6429,2.07143,0,251.214,0.714286,0.214286,11.0714,6.28571,1.78571,1 -37.625,2.125,0,1423,0.75,0.125,14,6.125,2.125,0.25 +39.6875,2.6875,0,297.125,0.5625,0.1875,16.1875,5.5625,2.25,0 +40.1429,2.35714,0,1441.07,0.571429,0.0714286,13.4286,5.42857,2.07143,0.785714 37,1.83333,0.0833333,-227.25,0.916667,0.0833333,17.1667,5,2.58333,0.666667 50.5,2,0,3106.5,0.5,0,6.5,4,1.5,0.5 59.5,3,0.5,6089,0,0.5,2.5,2,2,0 -41.75,2.125,0,181.875,0.791667,0.0833333,15.7083,6.20833,3.41667,0.375 +38.6667,2.16667,0,191.083,0.583333,0.125,13.9167,6.08333,3.29167,0.291667 33,3,0,2380.5,0.5,0.25,14.75,4.75,1.5,0.25 41.3333,2.33333,0,1649.33,0.833333,0,15.8333,5.66667,3.66667,0.5 49,2,0,7985,1,0.5,11.5,8.5,1.5,0 -30.6667,2.33333,0,135.667,0.666667,0.333333,9,5,2,0.333333 +38.3333,2.33333,0,738,1,0.333333,13.5,6,2.66667,0.166667 36.8333,1.83333,0,596.417,0.583333,0.0833333,11.6667,5.33333,2.08333,0.583333 -40.6,2.35,0,863.45,0.55,0.15,18.8,5.95,2.75,0.25 -40,2.3,0,283.5,0.65,0.25,15.55,5.65,2.75,0 +41.0909,2.27273,0,868.136,0.545455,0.136364,18.4545,6.18182,2.81818,0.318182 +34.5625,2.0625,0,244.188,0.5,0.1875,22.3125,4.6875,2.625,0.75 45.5,2,0,5382.5,0.5,0.5,12.25,4.5,3,0 44.6667,1.83333,0,3974.5,0.666667,0.166667,17.1667,5.66667,2,0 36.3333,2.16667,0,3397.17,0.666667,0,16.5,7,3.16667,0 -36.5,2.125,0.125,-122.375,1,0.25,16.75,5.5,1.5,0 -53.0278,2.16667,0.0555556,1.94444,0.444444,0.166667,18.3333,6.77778,3.11111,0.222222 +38.1667,2,0.0833333,-92.9167,0.916667,0.333333,11.75,5.16667,4.16667,0.166667 +52.7105,2.13158,0.0526316,1.84211,0.447368,0.184211,18.9474,6.63158,3.13158,0.236842 34,2,0,7049.5,0.5,0,15,8,1.5,1 41,2.1,0,2055.1,0.5,0.3,13.3,6.8,2.4,0.6 36.5,2,0,14301.5,0.5,0,13.5,6.5,3,0 -33,2.33333,0,120.833,0.833333,0.166667,23.5,5,3.5,0 -41.3182,2.45455,0,1281.32,0.636364,0,19.5455,6.86364,3.27273,0.409091 -33.2,2,0,941.2,0.5,0,12.8,6.7,2.9,0.6 +47.75,2.25,0,1224.5,0.5,0,14.9167,7.41667,3.16667,0.666667 +40.0625,2.4375,0,1297.06,0.6875,0,19.25,6.25,3.5,0.5 +33.7059,2.17647,0.0588235,1.64706,0.647059,0.117647,8.5,5.55882,3.02941,0.294118 44.25,1.875,0,9603.12,0.5,0,10.625,5.5,2.375,0.25 36.8333,2.5,0,2848.5,0.333333,0.166667,17.8333,7.66667,2.16667,0.5 -31.25,2.375,0,252.125,0.5,0,28.25,2.25,2.5,1.375 -29.6667,2.16667,0,-24,1,0,8.33333,5.16667,2.33333,2.33333 +37.6429,2.28571,0,1038.21,0.428571,0.285714,15.5,6.57143,2.28571,0.5 +44,2,0.05,-31.85,0.7,0.2,10.15,5.5,1.75,1.15 36.2,2,0.1,-445.8,0.9,0.3,15.5,6.3,3.6,1.3 -38.7222,2.05556,0,456.333,0.666667,0.111111,14.8333,5.22222,2.66667,0.444444 +44.0833,1.83333,0,480.917,0.666667,0,11.4167,4.08333,2.08333,0.25 30,2.5,0,4495.5,0.5,0,20,7.5,2.5,1.5 46.5,2.5,0,5762.5,0.5,0,23,5,1,0 37,2.14286,0,1780.29,0.571429,0.142857,18.5,5.57143,3.21429,0.785714 55.5,2,0,12479,1,0,15,8,1,0 33.75,2.625,0.125,806.375,0.875,0,15.25,5.125,1.75,0.625 33,2,0.5,-1307.5,1,0.5,12,6,4.5,0 -34.9167,2.5,0,107.417,0.666667,0.25,10.25,5.33333,2.33333,0.5 -43.5,2.66667,0,1465.17,0.333333,0,12.6667,4.5,2,1.5 +38.9444,2.22222,0,339.389,0.555556,0.222222,11.2222,5.5,2.55556,0.666667 +37.7778,2.16667,0,269.222,0.666667,0.222222,14.1111,5.88889,2.22222,0.444444 37.25,1.75,0,2213.75,0.5,0,15.75,4.25,3.75,0 -38.3571,2.14286,0,1004.07,0.5,0.214286,17.7857,6.64286,2.35714,0.142857 -41,2.1875,0,1175.62,0.6875,0.0625,13.625,5.5625,4.1875,0.4375 -42.1667,2,0,135,0.416667,0.0833333,18.3333,6,4.41667,0.0833333 +35.5,2.07143,0,961.286,0.5,0,15.7857,5.85714,3,0.285714 +35.1,2.3,0,1155.2,0.8,0.1,16.1,5.1,4.5,0 +44.9,1.9,0,124.4,0.3,0.2,19.2,6.3,5.1,0.1 43,2.5,0,3023.75,0.75,0,18,8,1.75,0 36.5,3,0,7236.5,0.5,0,17,6,2.5,0 35,2.125,0,1517.38,0.25,0,18.75,5,1.75,0.875 @@ -70,34 +70,34 @@ 36.25,2.5,0,4686,0.5,0.25,17,8.75,6.25,0.5 40.875,1.875,0,-336,0.625,0.375,17.375,5.125,2.5,0.5 36.5,2.25,0.25,-796.25,1,0.75,11.5,6.25,2.75,0 -41.2222,2.05556,0,208.222,0.5,0.111111,11.0556,5.55556,2.27778,0.388889 -41.9286,2.28571,0,549,0.5,0.214286,17.8571,5.85714,2.71429,0.0714286 +42.3846,1.96154,0,222.846,0.576923,0.0769231,14.4231,5.92308,2.23077,0.653846 +43.1667,2.25,0,552.25,0.5,0.25,16.6667,5.58333,2.5,0.0833333 42,1.5,0,12139,1,0,17.5,5,1.5,0 -43.875,2.375,0,775.5,0.25,0.125,12.25,5.625,1.875,0.25 -37.6333,2.33333,0.0333333,85.6333,0.433333,0.1,17.0667,6.23333,2.63333,0.1 +42,2.16667,0,167.056,0.777778,0.0555556,14.5,5.66667,2.77778,0.222222 +33.5625,2.5,0,108.5,0.8125,0.1875,15.8125,5.3125,2.5625,0.1875 43.5,2.75,0,5586.5,0.5,0,16.75,6.5,1.75,0.25 44.75,2.25,0,3214.5,0.75,0,20,7,3.5,0.5 40.625,1.75,0,1366.5,0.5,0.25,17.125,8,2.125,0.125 50,2,0,5915.5,0,0,9.5,6,1.5,0 43,2.5,0,5215.5,0,0,12.5,9,3.5,1.5 -34.8529,2.14706,0.0588235,1.64706,0.588235,0.117647,8.91176,5.70588,2.88235,0.294118 +36.5357,2.32143,0.0357143,84.4643,0.428571,0.107143,15.5357,6.07143,2.60714,0.214286 38,2.5,0,2603.33,0.166667,0,11.6667,8.5,2.5,1 -38.1875,2.4375,0,722.438,0.6875,0.25,15.625,5.8125,3,0.9375 -42.375,2.29167,0,319.208,0.416667,0.25,16.9167,5.83333,3.25,0.416667 +38.25,2.5,0,710.75,0.416667,0.25,15.1667,5.58333,3.25,1.16667 +50.5,2,0,318.6,0.3,0.3,21.7,5.8,4.7,0.5 42.1667,1.66667,0,1966.67,1,0,15.5,4.83333,1.66667,4 -36.5,2.05263,0.0263158,1.5,0.526316,0.157895,24.1842,6.65789,3.47368,0.105263 -38,1.75,0.0833333,407.25,0.5,0.333333,19.3333,6.58333,5.16667,0.916667 -38.1429,2.14286,0,158.786,0.571429,0.142857,12.9286,6,2.71429,0.0714286 +35.9167,2.08333,0.0277778,1.58333,0.527778,0.138889,23.8611,6.80556,3.47222,0.0833333 +36.7,1.9,0.1,402.2,0.5,0.4,17.3,6.7,5.7,1.1 +39.0714,2.07143,0,445.929,0.571429,0.142857,19.5,5.78571,2.5,0.357143 43.5714,2,0,1585.93,0.714286,0.214286,15.9286,4.85714,2,0.357143 -38.1154,2.03846,0,631.308,0.692308,0.115385,17.0385,6.19231,2.96154,0.615385 +39.1818,2.09091,0,626.955,0.636364,0.136364,17.7727,6.36364,3.04545,0.409091 35.5,2.125,0,2789.5,0.75,0,17.25,7,3.125,0.125 43.25,2.5,0,6245,0.75,0.25,12,9.25,1.5,1.25 -37.4444,2.05556,0,229.222,0.5,0.111111,18.8889,6,2.44444,0.388889 +15,1,0,759.25,0,0,12.5,1.5,0.5,0 39.5,2.23333,0.0666667,31.0667,0.466667,0.2,14.6,6.36667,2.13333,0.0666667 48,1.5,0,8405,0.5,0,24,6,1.5,0 33.5,2,0,2176,0.5,0,18,5.5,4.5,0 39,2.25,0,1713.5,0.75,0,17.25,7,1.5,0.5 40.25,2.125,0,2267.25,0.5,0,15.875,5.375,2,0.25 42.2,2.3,0,2943.1,0.4,0,14.8,7.4,3.3,0.2 -40.6,1.8,0.1,-179.5,0.8,0.1,13.4,6.5,2.2,0 -41.5833,2.16667,0,503.125,0.541667,0.166667,18.5833,6.04167,2.20833,0.375 +40.0833,1.83333,0.0833333,-172.333,0.833333,0.166667,15.25,6.41667,2,0 +38.85,2.25,0,509.95,0.55,0.2,20.6,6.8,2.7,0.45 diff --git a/tests/datasets/bank-balanced_20.output b/tests/datasets/bank-balanced_20.output index d97f23c..3e1d3c6 100644 --- a/tests/datasets/bank-balanced_20.output +++ b/tests/datasets/bank-balanced_20.output @@ -1,23 +1,23 @@ -5.07505e+07 -17 +5.06985e+07 +10 1 -40.2642,2.08962,0.0566038,-23.9764,0.59434,0.169811,15.7453,6.15094,2.84434,0.278302 +39.5947,2.13258,0.0492424,2.66288,0.583333,0.166667,15.6667,6.09848,2.85606,0.257576 38.0714,2.35714,0,4376.21,0.571429,0.142857,17.1429,7,5,0.357143 44.25,1.875,0,9603.12,0.5,0,10.625,5.5,2.375,0.25 -39.6957,2.06522,0,1875.87,0.630435,0.130435,16.3478,6.04348,2.54348,1.17391 +39.5,2.06818,0,1885.57,0.636364,0.136364,16.4773,6.18182,2.31818,1.22727 37.5,2.5,0,23760,0,0,21.5,9,4.5,0 37.75,2.125,0,7438,0.75,0.125,12.625,6.875,1.75,0.375 -39.3214,2.23214,0.00892857,639.438,0.589286,0.1875,16.1696,5.83036,2.57143,0.482143 -38.4813,2.175,0.00625,163.081,0.575,0.13125,15.3375,5.7375,2.75,0.35625 -40.8243,2.22973,0,1419.8,0.594595,0.0810811,16.7027,6.17568,2.48649,0.554054 +39.73,2.07,0,530.39,0.58,0.15,16.94,5.91,2.57,0.45 +38.8462,2.33333,0.0128205,769.962,0.589744,0.166667,15.9615,5.66667,2.42308,0.538462 +40.3939,2.19697,0,1456.03,0.606061,0.0909091,16.6818,5.78788,2.51515,0.530303 44.3077,2.15385,0,3658.85,0.461538,0.0384615,16.5385,6.65385,2.30769,0.307692 37.5667,2.16667,0,2375.7,0.466667,0.0666667,15.5333,5.96667,2.23333,0.633333 43.1667,2.33333,0,5352.92,0.416667,0.166667,12.6667,6.16667,2.33333,0.333333 -37.4,2.03333,0.133333,-570.333,0.833333,0.466667,15.7333,6.2,3.16667,0.7 -39.8468,2.15323,0.00806452,366.46,0.564516,0.177419,15.4919,5.51613,2.95161,0.58871 +37.5938,2.03125,0.125,-552.438,0.8125,0.46875,16.3125,6.15625,3.09375,0.65625 +39.5521,2.16667,0.00520833,255.594,0.583333,0.15625,15.1198,5.5625,2.93229,0.53125 41.5,1.875,0,13041.4,0.875,0,14.375,6.5,2,0 45.5,2.25,0,8680.25,0.5,0,18.5,4.75,2.5,0 -38.8205,2.21795,0,994.346,0.525641,0.102564,15.9744,5.88462,2.78205,0.371795 +39.6333,2.21667,0,1093.57,0.483333,0.0833333,15.0667,6.28333,3,0.35 42,3,0.5,-2070,1,1,23,6,5.5,0 40.1842,2.26316,0,2917.26,0.552632,0.0263158,16.7105,6.94737,2.86842,0.236842 47.25,2.5,0.0833333,6122.5,0.416667,0.166667,13.3333,6.33333,2.16667,0.416667 diff --git a/tests/datasets/bank-balanced_50.output b/tests/datasets/bank-balanced_50.output index 876a768..de1b06e 100644 --- a/tests/datasets/bank-balanced_50.output +++ b/tests/datasets/bank-balanced_50.output @@ -1,26 +1,26 @@ -3.39544e+07 -18 +3.39688e+07 +14 1 -37.0556,2.19444,0.0833333,45.6944,0.472222,0.194444,15.5,6.66667,2.61111,0.0555556 +38.2045,2.20455,0.0681818,39.0455,0.477273,0.181818,15.1364,6.36364,2.5,0.0454545 36,2.25,0,4839,0.5,0,10,6.25,6.25,0.5 37.5,2.5,0,23760,0,0,21.5,9,4.5,0 -38.5,2.05556,0.0555556,-88.8333,0.944444,0.333333,14.3889,5.33333,3.5,0.333333 +40.3889,2.38889,0.0555556,766.5,0.666667,0.166667,13.1111,5.72222,2.16667,0.166667 36.85,2.15,0,1773.8,0.6,0.1,17.65,6.1,2.75,0.65 41.875,2.4375,0,2955.69,0.5,0,15.4375,7.375,2.75,0.125 34,2.16667,0,7255.67,0.666667,0,13,6.33333,1.83333,0.5 39.5385,2.34615,0,860.962,0.576923,0.115385,18.1154,5.96154,2.61538,0.461538 -40.3889,2.38889,0.0555556,766.5,0.666667,0.166667,13.1111,5.72222,2.16667,0.166667 +40.8636,2.15909,0,181.977,0.659091,0.0909091,14.1136,5.90909,3.02273,0.25 40.54,2.1,0,487.52,0.6,0.14,17.56,5.72,2.64,0.34 38.6667,2.33333,0.166667,-748.5,1,0.666667,14.3333,5.83333,2.66667,0 42.9167,2.08333,0,4053.58,0.583333,0.0833333,15.3333,5.75,3.33333,0 55.5,2,0,12479,1,0,15,8,1,0 45.5,2.25,0,8680.25,0.5,0,18.5,4.75,2.5,0 48.25,2.25,0,5839,0.25,0,16.25,5.5,1.25,0 -42.7667,2.36667,0,1260.57,0.633333,0,17.8667,6.53333,3.36667,0.533333 +42.1667,2.41667,0,1286.88,0.625,0.0416667,19.2083,7.16667,3.08333,0.416667 38.1429,2.07143,0,2180.14,0.5,0.0714286,16.9286,5.5,2.92857,0.0714286 -38.6458,2.0625,0,237.229,0.583333,0.125,17.0208,5.4375,2.25,0.770833 +41.15,2.325,0,299.675,0.525,0.275,16.8,5.75,3,0.125 42,1.5,0,12139,1,0,17.5,5,1.5,0 -37.0833,1.91667,0.0833333,-386.5,0.833333,0.25,14,5.66667,3.16667,1.41667 +37.5714,1.92857,0.0714286,-371.857,0.785714,0.285714,15.5714,5.64286,3,1.21429 42.7,2.4,0,3445.8,0.5,0,16.6,6.9,2.8,0.4 37.9,1.9,0,2512,0.5,0.1,16.4,7.3,1.6,1.2 39.2381,2.04762,0,605.095,0.571429,0.142857,16.0714,5.97619,2.47619,0.404762 @@ -32,22 +32,22 @@ 38.62,2.08,0.02,367.96,0.58,0.18,13.6,5.32,3.46,1.12 44.2,2.4,0,5430.7,0.4,0.2,14.1,6.2,2.6,0.4 36.3333,2.33333,0,4507.17,0.666667,0.333333,21.6667,8.33333,3.16667,0.5 -38.7917,1.83333,0.0833333,-212.083,0.833333,0.125,16.25,5.66667,2.375,0.333333 -40.2917,2.125,0,1420.71,0.5,0.125,15.1667,6.58333,2.08333,0.5 +38.0667,1.9,0.1,-183.367,0.9,0.133333,15.8,5.63333,2.16667,0.266667 +39.2727,2.13636,0,1427.32,0.5,0.0909091,15.1364,6.22727,2.18182,0.5 41,2.5,0,6478,0.5,0,21,6.5,5.5,0 45.7,2.1,0,3682.5,0.3,0,16.1,7,2,0.4 32,2,0,13246,1,0,11.5,6.5,2.5,0 37.8125,2.34375,0,688.219,0.53125,0.21875,15.7812,5.5,2.5,0.78125 -40.8636,2.15909,0,181.977,0.659091,0.0909091,14.1136,5.90909,3.02273,0.25 -41.6269,2.11194,0.0447761,-0.291045,0.537313,0.149254,15.903,6.20896,2.90299,0.320896 +36.6905,2.33333,0.0238095,87.5238,0.452381,0.119048,15.1429,6.14286,2.35714,0.261905 +41.5149,2.09701,0.0447761,-6.4403,0.574627,0.171642,15.8731,6.16418,3.14925,0.350746 48.6667,2.66667,0.166667,6193,0.5,0.333333,8.83333,6.83333,1.66667,0.833333 -36.8,2.35,0.025,88.625,0.475,0.125,15.375,6,2.425,0.225 -35.3182,2.13636,0,983.591,0.5,0.136364,15.7727,6.5,2.5,0.272727 -41.15,2.325,0,299.675,0.525,0.275,16.8,5.75,3,0.125 +41,2.1875,0,1175.62,0.6875,0.0625,13.625,5.5625,4.1875,0.4375 +35.1667,2.05556,0,972.111,0.444444,0.111111,15.6111,6.16667,2.61111,0.222222 +38.6458,2.0625,0,237.229,0.583333,0.125,17.0208,5.4375,2.25,0.770833 36.3889,2.22222,0,2765.44,0.5,0.0555556,17.3333,7,2.94444,0.444444 36.5,2,0,14301.5,0.5,0,13.5,6.5,3,0 44.25,1.875,0,9603.12,0.5,0,10.625,5.5,2.375,0.25 -39.3846,2.19231,0,1106.27,0.461538,0.0769231,13.9231,5.61538,3.15385,0.346154 +40.2727,2.22727,0,1078.27,0.409091,0.0909091,14.3636,6.09091,2.36364,0.5 37.5,2.5,0,2332,0.5,0.125,15.75,5.25,1.75,0.375 37.9,2,0.1,-536.6,0.7,0.6,19.4,7.1,3.2,0.4 46.6667,2.16667,0,3178.5,0.666667,0,15.5,6,2.83333,0.5 diff --git a/tests/datasets/diabetic-balanced_100.output b/tests/datasets/diabetic-balanced_100.output index 13b37f9..3d8ff19 100644 --- a/tests/datasets/diabetic-balanced_100.output +++ b/tests/datasets/diabetic-balanced_100.output @@ -1,4 +1,4 @@ -14998.3 +15004.7 13 1 5.8,2.4,8.8,1.3,18.6,-0.6,0,0,0,0,0,-0.2,0,0,0,-0.2,0,0,0,0,0,0,0,0,0,0,0,0 @@ -7,7 +7,7 @@ 5.125,4.375,31.5,1.25,7.125,-0.25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.25,0,0,0,0,0 6.71429,2.92857,36.1429,1.71429,18.5,-0.142857,0,0,0,-0.0714286,0,-0.357143,0,0,-0.0714286,-0.142857,0,0,0,0,0,0,-0.357143,0,0,0,0,0 6.25,6.75,58.75,2.625,29,0.5,0,0,0,-0.125,0,-0.25,-0.125,0,-0.125,-0.125,0,0,0,0,0,0,0.5,0,0,0,0,0 -7.35,3.9,58.75,1.4,14.15,-0.2,0,0,0,-0.05,0,-0.15,0.05,0,0,0,0,0,0,0,0,0,-0.05,0,0,0,0,0 +7.3,3.9,58.6,1.4,14.1,-0.2,0,0,0,-0.05,0,-0.15,0.05,0,-0.05,0,0,0,0,0,0,0,-0.15,0,0,0,0,0 6.125,3.6875,68.125,0.3125,10.0625,-0.0625,-0.0625,0,0,0,0,-0.0625,-0.0625,0,-0.0625,-0.0625,0,0,0,0,0,0,-0.1875,0,0,0,0,0 5.66667,2.16667,44.7778,0.222222,6.05556,-0.222222,0,0,0,0.111111,0,-0.111111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6.26923,4.15385,44.0769,1.42308,18.8846,-0.230769,0,0,0,-0.0384615,0,-0.153846,-0.153846,0,-0.153846,-0.0769231,0,0,0,0,0,0,-0.153846,0,0,0,0,0 @@ -20,13 +20,13 @@ 5.23077,2.46154,51.6923,0.461538,8.96154,-0.115385,0,0,0,-0.0384615,0,-0.115385,0,0,0,-0.0769231,0,0,0,0,0,0,-0.153846,0,0,0,0,0 6.2,11.3,66.8,2.5,22.9,-0.3,-0.1,0,0,-0.1,0,-0.1,0.1,0,0,0,0,0,0,0,0,0,-0.3,0,0,0,0,0 5,5,94.5,6,29,0,0,0,0,0,0,-0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -5.5,1.8,63.7,0,7.8,-0.1,0,0,0,-0.1,0,0,-0.1,0,-0.1,-0.1,0,0,0,0,0,0,0,0,0,0,0,0 +5.58333,1.91667,63.25,0,8.08333,-0.166667,0,0,0,-0.166667,0,0,-0.0833333,0,-0.0833333,-0.0833333,0,0,0,0,0,0,0,0,0,0,0,0 6.83333,5.5,64.1667,0.777778,17.3889,-0.111111,0,0,0,0,0,0,-0.111111,0,0,-0.0555556,0,0,0,0,0,0,0.0555556,0,0,0,0,0 5.66667,7.33333,33.3333,3.16667,16.5,-0.5,0,0,0,0,0,-0.166667,0,0,-0.166667,-0.166667,0,0,0,0,0,0,0.166667,0,0,0,0,0 6.66667,8.83333,38.3333,1.16667,10.5,0,0,0,0,0,0,0.333333,-0.166667,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 5,6,56.5,6,50.5,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0 5.5,10.6667,55,0.5,19.8333,-0.5,0,0,0,0.333333,0,-0.166667,-0.166667,0,-0.166667,0.333333,0,0,0,0,0,0,-0.333333,0,0,0,0,0 -6.1,5.1,22.7,1.9,10.6,0,0,0,0,0,0,-0.2,0.2,0,0,0,0,0,0,0,0,0,-0.2,0,0,0,0,0 +6.25,5.125,23.125,2,11.125,0,0,0,0,0,0,-0.125,0.25,0,0,0,0,0,0,0,0,0,-0.125,0,0,0,0,0 5.6,2.4,2.2,1.5,19.2,-0.3,0,0,0,-0.1,0,-0.1,-0.1,0,-0.2,0,0,0,0,0,0,0,0.2,0,0,0,0,0 6,7.25,42.5,4,28.5,0,0,0,0,0,0,-0.5,0,0,-0.25,0,0,0,0,0,0,0,0.5,0,0,0,0,0 7.66667,4,79.1667,1,11.1667,0,0,0,0,0,0,-0.166667,0,0,0,-0.166667,0,0,0,0,0,0,-0.833333,0,0,0,0,0 @@ -37,16 +37,16 @@ 6.25,8.25,84.5,3.25,19,0,0,0,0,0,0,0,0,0,0,-0.25,0,0,0,0,0,0,0,0,0,0,0,0 4.81818,2.27273,39.4545,1,7.09091,-0.136364,0,0,0,0,0,-0.0909091,-0.0909091,0,-0.0454545,-0.0909091,-0.0454545,0,0,0,0,0,0.227273,-0.0454545,0,0,0,0 6.6,1.6,26.2,0.8,10.6,-0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -6.5,1.91667,21.0833,1,5.66667,0,0,0,0,0,0,-0.25,-0.25,0,0,0,0,0,0,0,0,0,-0.0833333,0,0,0,0,0 +6.8,2.6,21.7,1,6.5,0,0,0,0,0,0,-0.3,-0.3,0,0,0,0,0,0,0,0,0,-0.3,0,0,0,0,0 6.8,7.9,57.4,0.5,10.8,-0.1,0,0,0,-0.1,0,-0.1,0,0,-0.1,0,0,0,0,0,0,0,0,0,0,0,0,0 -4.875,3.1875,63.8125,0.9375,13.875,-0.0625,0,0,0,-0.0625,0,-0.0625,-0.0625,0,0,-0.0625,0,0,0,0,0,0,0.0625,0,0,0,0,0 +4.9375,3.25,63.75,0.9375,14.0625,-0.0625,0,0,0,0,0,-0.0625,-0.0625,0,0,-0.0625,0,0,0,0,0,0,0.125,0,0,0,0,0 2.5,7.5,9,0.5,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.5,0,0,0,0,0 4.9,5.5,1.4,1.9,14.4,-0.4,0,-0.1,0,-0.2,0,-0.2,-0.1,0,0,-0.3,-0.1,0,0,0,0,0,0.3,0,0,0,0,0 7.1875,4.875,71.4375,1,13.5,-0.3125,0,-0.0625,0,-0.0625,0,0,0,0,0,-0.1875,0,0,0,0,0,0,0.5,0,0,0,0,0 6,10.25,71,3,37,0,0,0,0,-0.5,0,0,0.5,0,0.25,0,0,0,0,0,0,0,0.25,0,0,0,0,0 5,10.5,103.5,3,24.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 7,7.88889,50.7222,0.444444,11.6667,-0.166667,0,0,0,0.111111,0,-0.0555556,0.111111,0,-0.166667,-0.0555556,0,0,0,0,0,0,0,0,0,0,0,0 -4.9,3.3,58.7,1.1,9.8,-0.3,-0.1,0,0,-0.1,0,-0.1,0,0,0.1,0,0,0,0,0,0,0,0.1,0,0,0,0,0 +5,3.5,58.75,1.375,9.875,-0.125,-0.125,0,0,0,0,-0.125,0,0,0.125,0,0,0,0,0,0,0,0.125,0,0,0,0,0 7.375,4.375,15.625,0.5,18,0,0,0,0,0,0,0,0.125,0,-0.125,0,0,0,0,0,0,0,0.125,0,0,0,0,0 5.5,11,86,6,45,-1,0,0,0,0,0,0,-0.5,0,0,-0.5,0,0,0,0,0,0,-1,0,0,0,0,0 5.33333,5.83333,30.3333,1.16667,25.3333,-0.333333,0,0,0,0,0,-0.333333,-0.333333,0,-0.166667,-0.166667,0,0,0,0,0,0,-0.333333,0,0,0,0,0 @@ -73,7 +73,7 @@ 5.94444,3.77778,55.9444,1.55556,19.3333,-0.166667,0,0,0,0,0,-0.0555556,0,0,-0.111111,0,0,0,0,0,0,0,0.0555556,0,0,0,0,0 4.5,7.5,65,4,51.5,-0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6.61111,2.94444,28.9444,1.33333,15.0556,-0.333333,0,0,0,-0.111111,0,-0.222222,-0.222222,0,-0.222222,-0.111111,0,0,0,0,0,0,0.388889,0,0,0,0,0 -5.66667,2.38889,55.8333,0.388889,12.2778,-0.222222,0,0,0,0,0,0,-0.0555556,0,-0.111111,0,0,0,0,0,0,0,-0.166667,0,0,0,0,0 +5.5,2.33333,55.7778,0.388889,12.1667,-0.277778,0,0,0,-0.0555556,0,0,-0.0555556,0,-0.0555556,0,0,0,0,0,0,0,-0.111111,0,0,0,0,0 6,4.125,21.625,1.25,16.375,-0.125,0,0,0,0,0,-0.5,-0.125,0,-0.125,0,0,0,0,0,0,0,0.25,0,0,0,0,0 7.2,2.3,55.7,0.4,4.8,-0.2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.2,0,0,0,0,0 6,10.25,45,4,43.75,1,0,0,0,0,0,-0.25,0,0,0,-0.25,0,0,0,0,0,0,1.5,0,0,0,0,0 @@ -95,7 +95,7 @@ 7,6.5,62.5,3.5,33.5,2,0,0,0,0,0,-0.5,-0.5,0,0,0,0,0,0,0,0,0,0.5,0,0,0,0,0 8,4.33333,9.66667,0.666667,11.3333,-0.166667,0,0,0,0,0,0,-0.333333,0,0,-0.166667,0,0,0,0,0,0,-0.333333,0,0,0,0,0 3,1.5,35,0,2,0,0,0,0,-0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2,1.25,12.75,0,7.75,0,0,0,0,0,0,0,0,0,0,-0.25,0,0,0,0,0,0,1,0,0,0,0,0 +5.25,1.75,19.5,1.25,5,0,0,0,0,0,0,-0.25,0,0,0,0,0,0,0,0,0,0,0.25,0,0,0,0,0 3.875,3,36.875,0.875,15.75,-0.125,0,0,0,0,0,-0.125,-0.25,0,0,-0.125,0,0,0,0,0,0,0,0,0,0,0,0 2.5,1,2.5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6.75,3.5,73.375,0.375,8.25,0,0,0,0,0,0,-0.125,0,0,-0.125,0,0,0,0,0,0,0,0.75,0,0,0,0,0