From 3eaadcf5c6b7e5b6b02167f46b998672c3a8b7ed Mon Sep 17 00:00:00 2001 From: Alexandros Giavaras Date: Fri, 1 May 2020 08:56:42 +0100 Subject: [PATCH] Remove examples from jstat main stream --- src/main/java/examples/es/example1/example.md | 203 - .../java/examples/mc/example1/Example1.java | 42 - src/main/java/examples/mc/example1/example.md | 94 - .../java/examples/mc/example2/Example2.java | 72 - src/main/java/examples/mc/example2/example.md | 105 - .../java/examples/mc/example3/Example3.java | 35 - src/main/java/examples/mc/example3/example.md | 64 - .../java/examples/mc/example4/Example4.java | 55 - src/main/java/examples/mc/example4/example.md | 40 - .../java/examples/mc/example4/positions.csv | 9791 ----------------- .../java/examples/ml/example1/Example1.java | 39 - src/main/java/examples/ml/example1/example.md | 69 - .../ml/example1/linear_regression.png | Bin 11122 -> 0 bytes src/main/java/examples/ml/example1/r2.gif | Bin 570 -> 0 bytes src/main/java/examples/ml/example1/ssr.gif | Bin 885 -> 0 bytes src/main/java/examples/ml/example1/sst.gif | Bin 859 -> 0 bytes .../java/examples/ml/example2/Example2.java | 67 - src/main/java/examples/ml/example2/example.md | 130 - .../java/examples/ml/example3/Example3.java | 73 - src/main/java/examples/ml/example3/example.md | 102 - .../java/examples/ml/example4/Example4.java | 102 - src/main/java/examples/ml/example4/example.md | 132 - .../java/examples/ml/example5/Example5.java | 51 - src/main/java/examples/ml/example5/example.md | 76 - .../java/examples/ml/example6/Example6.java | 106 - src/main/java/examples/ml/example6/example.md | 174 - .../java/examples/ml/example7/Example7.java | 154 - src/main/java/examples/ml/example7/example.md | 207 - .../java/examples/ml/example8/Example8.java | 65 - .../ml/example8/confusion_matrix2.png | Bin 7832 -> 0 bytes .../ml/example8/confusion_matrix_simple2.png | Bin 5076 -> 0 bytes src/main/java/examples/ml/example8/example.md | 166 - .../optimization/example1/Example1.java | 56 - .../examples/optimization/example1/example.md | 122 - .../optimization/example2/Example2.java | 92 - .../examples/optimization/example2/example.md | 128 - .../examples/plotting/example1/Example1.java | 29 - .../examples/plotting/example1/example.md | 56 - .../examples/plotting/example2/Example2.java | 34 - .../examples/plotting/example2/example.md | 56 - .../examples/plotting/example3/Example3.java | 39 - .../examples/plotting/example3/example.md | 61 - .../examples/plotting/example4/Example4.java | 30 - .../examples/plotting/example4/example.md | 55 - .../examples/plotting/example5/Example5.java | 30 - .../examples/plotting/example5/example.md | 54 - .../examples/stats/example1/Example1.java | 67 - .../java/examples/stats/example1/example.md | 14 - .../examples/stats/example2/Example2.java | 67 - .../java/examples/stats/example2/example.md | 14 - .../examples/stats/example3/Example3.java | 111 - .../java/examples/stats/example3/example.md | 148 - .../examples/stats/example4/Example4.java | 51 - .../java/examples/stats/example4/example.md | 85 - .../examples/stats/example5/Example5.java | 26 - .../java/examples/stats/example5/example.md | 62 - .../examples/stats/example6/Example6.java | 88 - .../java/examples/stats/example6/example.md | 129 - .../examples/stats/example7/Example7.java | 22 - .../java/examples/stats/example7/example.md | 52 - .../examples/stats/example8/Example8.java | 41 - .../java/examples/stats/example8/example.md | 37 - 62 files changed, 14070 deletions(-) delete mode 100644 src/main/java/examples/es/example1/example.md delete mode 100644 src/main/java/examples/mc/example1/Example1.java delete mode 100644 src/main/java/examples/mc/example1/example.md delete mode 100644 src/main/java/examples/mc/example2/Example2.java delete mode 100644 src/main/java/examples/mc/example2/example.md delete mode 100644 src/main/java/examples/mc/example3/Example3.java delete mode 100644 src/main/java/examples/mc/example3/example.md delete mode 100644 src/main/java/examples/mc/example4/Example4.java delete mode 100644 src/main/java/examples/mc/example4/example.md delete mode 100644 src/main/java/examples/mc/example4/positions.csv delete mode 100644 src/main/java/examples/ml/example1/Example1.java delete mode 100644 src/main/java/examples/ml/example1/example.md delete mode 100644 src/main/java/examples/ml/example1/linear_regression.png delete mode 100644 src/main/java/examples/ml/example1/r2.gif delete mode 100644 src/main/java/examples/ml/example1/ssr.gif delete mode 100644 src/main/java/examples/ml/example1/sst.gif delete mode 100644 src/main/java/examples/ml/example2/Example2.java delete mode 100644 src/main/java/examples/ml/example2/example.md delete mode 100644 src/main/java/examples/ml/example3/Example3.java delete mode 100644 src/main/java/examples/ml/example3/example.md delete mode 100644 src/main/java/examples/ml/example4/Example4.java delete mode 100644 src/main/java/examples/ml/example4/example.md delete mode 100644 src/main/java/examples/ml/example5/Example5.java delete mode 100644 src/main/java/examples/ml/example5/example.md delete mode 100644 src/main/java/examples/ml/example6/Example6.java delete mode 100644 src/main/java/examples/ml/example6/example.md delete mode 100644 src/main/java/examples/ml/example7/Example7.java delete mode 100644 src/main/java/examples/ml/example7/example.md delete mode 100644 src/main/java/examples/ml/example8/Example8.java delete mode 100644 src/main/java/examples/ml/example8/confusion_matrix2.png delete mode 100644 src/main/java/examples/ml/example8/confusion_matrix_simple2.png delete mode 100644 src/main/java/examples/ml/example8/example.md delete mode 100644 src/main/java/examples/optimization/example1/Example1.java delete mode 100644 src/main/java/examples/optimization/example1/example.md delete mode 100644 src/main/java/examples/optimization/example2/Example2.java delete mode 100644 src/main/java/examples/optimization/example2/example.md delete mode 100644 src/main/java/examples/plotting/example1/Example1.java delete mode 100644 src/main/java/examples/plotting/example1/example.md delete mode 100644 src/main/java/examples/plotting/example2/Example2.java delete mode 100644 src/main/java/examples/plotting/example2/example.md delete mode 100644 src/main/java/examples/plotting/example3/Example3.java delete mode 100644 src/main/java/examples/plotting/example3/example.md delete mode 100644 src/main/java/examples/plotting/example4/Example4.java delete mode 100644 src/main/java/examples/plotting/example4/example.md delete mode 100644 src/main/java/examples/plotting/example5/Example5.java delete mode 100644 src/main/java/examples/plotting/example5/example.md delete mode 100644 src/main/java/examples/stats/example1/Example1.java delete mode 100644 src/main/java/examples/stats/example1/example.md delete mode 100644 src/main/java/examples/stats/example2/Example2.java delete mode 100644 src/main/java/examples/stats/example2/example.md delete mode 100644 src/main/java/examples/stats/example3/Example3.java delete mode 100644 src/main/java/examples/stats/example3/example.md delete mode 100644 src/main/java/examples/stats/example4/Example4.java delete mode 100644 src/main/java/examples/stats/example4/example.md delete mode 100644 src/main/java/examples/stats/example5/Example5.java delete mode 100644 src/main/java/examples/stats/example5/example.md delete mode 100644 src/main/java/examples/stats/example6/Example6.java delete mode 100644 src/main/java/examples/stats/example6/example.md delete mode 100644 src/main/java/examples/stats/example7/Example7.java delete mode 100644 src/main/java/examples/stats/example7/example.md delete mode 100644 src/main/java/examples/stats/example8/Example8.java delete mode 100644 src/main/java/examples/stats/example8/example.md diff --git a/src/main/java/examples/es/example1/example.md b/src/main/java/examples/es/example1/example.md deleted file mode 100644 index 8aebe50..0000000 --- a/src/main/java/examples/es/example1/example.md +++ /dev/null @@ -1,203 +0,0 @@ -# Example 1: Load data from an Elasticsearch index - -## Contents -* [Overview](#overview) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -This example shows you how to load data from Elasticsearch -Thus, this example requires you to have Elasticsearch installed on your machine. -You also need to add in the ```pom.xml``` file of the project the following -dependencies - -``` - - - org.elasticsearch - elasticsearch - 6.6.1 - - - - - - org.elasticsearch.client - elasticsearch-rest-high-level-client - 6.6.1 - -``` - -Elasticsearch listens to the 9200 port for upcoming HTTP queries by default. Start the Elasticsearch server and point your -browser to http://localhost:9200/ URL. You should be able to see something like the following: - -``` -{ - "name" : "david-A15", - "cluster_name" : "elasticsearch", - "cluster_uuid" : "Lvn93INcQZKL9ZqJKLI0qg", - "version" : { - "number" : "7.6.0", - "build_flavor" : "default", - "build_type" : "tar", - "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3", - "build_date" : "2020-02-06T00:09:00.449973Z", - "build_snapshot" : false, - "lucene_version" : "8.4.0", - "minimum_wire_compatibility_version" : "6.8.0", - "minimum_index_compatibility_version" : "6.0.0-beta1" - }, - "tagline" : "You Know, for Search" -} - -``` - -We will assume that there are no indexes in Elasticsearch. Change accordingly if this is not true. -Since there are no indices we need to create a new index and insert some documents into it. -After doing this, it's easy to retrieve the documents by issuing a ```SearchRequest```. -We will store the data into a ```MapDataSet``` however this is not compulsory. - -## The main function - -``` -package examples.es.example1; - -import datasets.MapDataSet; -import datasets.VectorDouble; -import org.apache.http.HttpHost; -import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; -import org.elasticsearch.action.index.IndexRequest; -import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.action.search.SearchRequest; -import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.client.RequestOptions; -import org.elasticsearch.client.RestClient; -import org.elasticsearch.client.RestHighLevelClient; -import org.elasticsearch.common.xcontent.XContentType; -import org.elasticsearch.search.SearchHit; -import org.elasticsearch.search.SearchHits; - -import java.io.IOException; -import java.util.Map; - -public class Example1 { - - public static final String INDEX = "jstat_es_example_1"; - - - public static void deleteIndex(RestHighLevelClient client) throws IOException{ - - DeleteIndexRequest request = new DeleteIndexRequest(Example1.INDEX); - client.indices().delete(request, RequestOptions.DEFAULT); - } - - protected static void index(String json, RestHighLevelClient client) throws IOException{ - - IndexRequest indexRequest = new IndexRequest(Example1.INDEX) - .type("es_exe1") - .source(json, XContentType.JSON); - - // create the index - IndexResponse response = client.index(indexRequest); - - } - - public static void loadElasticsearchDB(RestHighLevelClient client)throws IOException{ - - String json = "{" + - "\"Production\":4.51," + - "\"Electricity Usage\":2.48" + "}"; - - Example1.index(json, client); - - json = "{" + - "\"Production\":3.58," + - "\"Electricity Usage\":2.26" + "}"; - - Example1.index(json, client); - - json = "{" + - "\"Production\":4.31," + - "\"Electricity Usage\":2.47" + "}"; - - Example1.index(json, client); - } - - public static MapDataSet loadDataSet(RestHighLevelClient client) throws IOException{ - - MapDataSet data = new MapDataSet<>(); - - SearchRequest request = new SearchRequest(Example1.INDEX); - SearchResponse response = client.search(request, RequestOptions.DEFAULT); - - // let's retrieve the documents - SearchHits hits = response.getHits(); - - SearchHit[] searchHits = hits.getHits(); - - int rowCounter = 0; - for (SearchHit hit : searchHits) { - - Map hitData = hit.getSourceAsMap(); - - VectorDouble row = new VectorDouble(hitData.size()); - - int counter=0; - for(Map.Entry entry: hitData.entrySet()){ - row.set(counter++, (Double)entry.getValue()); - } - - data.add("Row"+rowCounter++, row); - } - - return data; - } - - public static void main(String[] args){ - - // we need a client to interact with Elasticsearch - RestHighLevelClient client = new RestHighLevelClient( - RestClient.builder(new HttpHost("localhost", 9200, "http"), - new HttpHost("localhost", 9201, "http"))); - - try { - - // create the index - Example1.loadElasticsearchDB(client); - - // let's now populate the MapDataSet - Example1.loadDataSet(client); - - // delete the index we created - Example1.deleteIndex(client); - - client.close(); - } - catch(IOException e){ - System.out.println("An IOException occurred"); - } - } -} - - - -``` - -## Results - -Upon executing the code above and depending on your configuration you may be -getting something like the following: - -``` -Feb 25, 2020 5:34:47 PM org.elasticsearch.client.RestClient logResponse -WARNING: request [POST http://localhost:9200/jstat_es_example_1/es_exe1?timeout=1m] returned 1 warnings: [299 Elasticsearch-7.6.0-7f634e9f44834fbc12724506cc1da681b0c3b1e3 "[types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id})."] -Feb 25, 2020 5:34:47 PM org.elasticsearch.client.RestClient logResponse -WARNING: request [POST http://localhost:9200/jstat_es_example_1/es_exe1?timeout=1m] returned 1 warnings: [299 Elasticsearch-7.6.0-7f634e9f44834fbc12724506cc1da681b0c3b1e3 "[types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id})."] -Feb 25, 2020 5:34:47 PM org.elasticsearch.client.RestClient logResponse -WARNING: request [POST http://localhost:9200/jstat_es_example_1/es_exe1?timeout=1m] returned 1 warnings: [299 Elasticsearch-7.6.0-7f634e9f44834fbc12724506cc1da681b0c3b1e3 "[types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id})."] -``` - -## Source Code diff --git a/src/main/java/examples/mc/example1/Example1.java b/src/main/java/examples/mc/example1/Example1.java deleted file mode 100644 index e3a5b3f..0000000 --- a/src/main/java/examples/mc/example1/Example1.java +++ /dev/null @@ -1,42 +0,0 @@ -package examples.mc.example1; -import java.util.Random; - -public class Example1 { - - public static void main(String[] args){ - - final int N_ITRS = 1000; - final String[] doors = new String[3]; - doors[0] = "A"; - doors[1] = "B"; - doors[2] = "C"; - - int first_choice_wins = 0; - int change_wins = 0; - - Random rand = new Random(); - - for(int itr=0; itr Overview - -## Import files - - ``` -package examples.mc.example1; -import java.util.Random; - ``` - -## The main function - -``` -public class Example1 { - - public static void main(String[] args){ - - final int N_ITRS = 1000; - final String[] doors = new String[3]; - doors[0] = "A"; - doors[1] = "B"; - doors[2] = "C"; - - int first_choice_wins = 0; - int change_wins = 0; - - Random rand = new Random(); - - for(int itr=0; itr Results - -``` -... -You chose: B Winner door: B -You chose: A Winner door: C -You chose: A Winner door: C -You chose: B Winner door: C -You chose: C Winner door: B -You chose: A Winner door: B -You chose: A Winner door: A -You chose: A Winner door: A -You chose: C Winner door: B -You chose: C Winner door: B -You chose: C Winner door: C -You chose: C Winner door: B -You chose: A Winner door: A -You chose: A Winner door: B -You chose: B Winner door: B -You chose: A Winner door: B -You chose: C Winner door: A -You chose: C Winner door: C -You chose: C Winner door: B -Wins with original choice: 313 -Wins with change choice: 687 -Probability of winning with initial guess: 0.313 -Probability of winning with change guess: 0.687 -``` - - ## Source Code - - Example1.java \ No newline at end of file diff --git a/src/main/java/examples/mc/example2/Example2.java b/src/main/java/examples/mc/example2/Example2.java deleted file mode 100644 index f5fa63b..0000000 --- a/src/main/java/examples/mc/example2/Example2.java +++ /dev/null @@ -1,72 +0,0 @@ -package examples.mc.example2; -import java.util.concurrent.ThreadLocalRandom; - -public class Example2 { - - public class Circle{ - - public Circle(double r, double x, double y){ - this.r = r; - this.x = x; - this.y = y; - } - - public double radius(){return this.r;} - public boolean isInside(double x, double y){ - - if(Math.pow((this.x - x), 2) + Math.pow(this.y - y, 2) - r*r < 1.0e-9){ - return true; - } - - return false; - } - public double area(){ - return 3.14*r*r; - } - - double r; - double x; - double y; - - } - - public static void main(String[] args){ - Example2 exe = new Example2(); - - - final int N_ITERATIONS = 10000; - - Circle circle = exe.new Circle(2.0, 0.0, 0.0); - - final double x0 = -circle.radius(); - final double x1 = circle.radius(); - final double y0 = -circle.radius(); - final double y1 = circle.radius(); - final double RECT_AREA = (x1 - x0)*(y1 - y0); - - double totalArea = 0.0; - double areaUnderCurve = 0.0; - - for(int i=0; i Overview - -## Import files - - ``` -package examples.mc.example2; -import java.util.concurrent.ThreadLocalRandom; - ``` - -## The main function - -``` -public class Example2 { - - public class Circle{ - - public Circle(double r, double x, double y){ - this.r = r; - this.x = x; - this.y = y; - } - - public double radius(){return this.r;} - public boolean isInside(double x, double y){ - - if(Math.pow((this.x - x), 2) + Math.pow(this.y - y, 2) - r*r < 1.0e-9){ - return true; - } - - return false; - } - public double area(){ - return 3.14*r*r; - } - - double r; - double x; - double y; - - } - - public static void main(String[] args){ - Example2 exe = new Example2(); - - - final int N_ITERATIONS = 10000; - - Circle circle = exe.new Circle(2.0, 0.0, 0.0); - - final double x0 = -circle.radius(); - final double x1 = circle.radius(); - final double y0 = -circle.radius(); - final double y1 = circle.radius(); - final double RECT_AREA = (x1 - x0)*(y1 - y0); - - double totalArea = 0.0; - double areaUnderCurve = 0.0; - - for(int i=0; i Results - -``` -Rectangle area: 16.0 -Total area points: 10000.0 -Area under curve points: 7789.0 -Calculated area: 12.4624 -Circle area: 12.56 -``` - - ## Source Code - - Example2.java \ No newline at end of file diff --git a/src/main/java/examples/mc/example3/Example3.java b/src/main/java/examples/mc/example3/Example3.java deleted file mode 100644 index 1eee42b..0000000 --- a/src/main/java/examples/mc/example3/Example3.java +++ /dev/null @@ -1,35 +0,0 @@ -package examples.mc.example3; - -import java.util.concurrent.ThreadLocalRandom; - -public class Example3 { - - static public void main(String[] args){ - - - - final int N_ITERATIONS = 10000; - final double DELTA = 0.1; - double x = 1.0; - double y = 1.0; - double area_under_curve = 0.0; - - for(int itr=0; itr < N_ITERATIONS; ++itr){ - - double del_x = ThreadLocalRandom.current().nextDouble(-DELTA, DELTA); - double del_y = ThreadLocalRandom.current().nextDouble(-DELTA, DELTA); - - if(Math.abs(x + del_x) < 1.0 && Math.abs(y + del_y) < 1.0){ - x += del_x; - y += del_y; - } - - if(x*x + y*y < 1.0){ - area_under_curve += 1; - } - } - - System.out.println("Pi is: " + 4.0* area_under_curve/(double)N_ITERATIONS); - - } -} diff --git a/src/main/java/examples/mc/example3/example.md b/src/main/java/examples/mc/example3/example.md deleted file mode 100644 index f984955..0000000 --- a/src/main/java/examples/mc/example3/example.md +++ /dev/null @@ -1,64 +0,0 @@ -# Markov Chain Monte Carlo For Pi Calculation - -## Contents - * [Overview](#overview) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - -## Overview - -## Import files - - ``` -package examples.mc.example3; - -import java.util.concurrent.ThreadLocalRandom; - ``` - -## The main function - -``` -public class Example3 { - - static public void main(String[] args){ - - - - final int N_ITERATIONS = 10000; - final double DELTA = 0.1; - double x = 1.0; - double y = 1.0; - double area_under_curve = 0.0; - - for(int itr=0; itr < N_ITERATIONS; ++itr){ - - double del_x = ThreadLocalRandom.current().nextDouble(-DELTA, DELTA); - double del_y = ThreadLocalRandom.current().nextDouble(-DELTA, DELTA); - - if(Math.abs(x + del_x) < 1.0 && Math.abs(y + del_y) < 1.0){ - x += del_x; - y += del_y; - } - - if(x*x + y*y < 1.0){ - area_under_curve += 1; - } - } - - System.out.println("Pi is: " + 4.0* area_under_curve/(double)N_ITERATIONS); - - } -} -``` - -## Results - -``` -Pi is: 3.0244 -``` - - ## Source Code - - Example3.java \ No newline at end of file diff --git a/src/main/java/examples/mc/example4/Example4.java b/src/main/java/examples/mc/example4/Example4.java deleted file mode 100644 index fa21efc..0000000 --- a/src/main/java/examples/mc/example4/Example4.java +++ /dev/null @@ -1,55 +0,0 @@ -package examples.mc.example4; - -import base.CommonConstants; -import io.CSVFileWriter; -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; - -import java.util.ArrayList; -import java.util.List; - -public class Example4 { - - - public static double target(double x){ - - if(x < 0.){ - return 0.0; - } - - return Math.exp(-x); - } - - public static void main(String[] args){ - - final int N_ITERATIONS = 10000; - List pos = new ArrayList<>(N_ITERATIONS); - for(int i=0; i Acknowledgements - This example was taken from fiveMinuteStats. - ## Overview - - ### Metropolis algorithm - - - ## Import files - - ``` - - ``` - - ## The main function - - ``` - - - ``` - - ## Results - - ``` - - ``` - - ## Source Code - - Example4.java \ No newline at end of file diff --git a/src/main/java/examples/mc/example4/positions.csv b/src/main/java/examples/mc/example4/positions.csv deleted file mode 100644 index a4fe364..0000000 --- a/src/main/java/examples/mc/example4/positions.csv +++ /dev/null @@ -1,9791 +0,0 @@ -#ITERATION,POSITION -0,2.0 -1,1.6315655935662816 -2,2.3994463168834796 -3,2.308947971668913 -4,2.1376640295825364 -5,2.1511221223521417 -6,1.5701268982768735 -7,0.7235951153530489 -8,1.0028578867721611 -9,-0.22839456272195857 -10,-1.1695752086938431 -11,-0.4954349426186849 -12,-0.45395896365130406 -13,1.091244646341302 -14,2.3861608241228764 -15,2.52750725241468 -16,1.3717319639928587 -17,0.04461916570675073 -18,0.8805944959364791 -19,0.49763102189765634 -20,0.7278665518329079 -21,-0.6669344174776646 -22,-0.2368523525744724 -23,-1.1109367131851169 -24,-0.2735629360568098 -25,0.015381067650982794 -26,-0.8347452841630107 -27,-2.5752476500733374 -28,-3.1782745443834157 -29,-4.163064673283576 -30,-3.1597562520325466 -31,-2.5342491983614828 -32,-3.4452416987984904 -33,-4.898007566809461 -34,-5.960790267535533 -35,-4.939928616147102 -36,-5.215544955951086 -37,-4.692523784050836 -38,-5.2735820162795575 -39,-6.325669437750772 -40,-5.681966529706655 -41,-5.843940712427163 -42,-5.10524725577313 -43,-6.445347167435036 -44,-6.700834603316318 -45,-6.476504582842421 -46,-5.964434500687987 -47,-6.679634659680342 -48,-5.972477099264269 -49,-5.2486271799993185 -50,-4.074760211012274 -51,-4.492867400398924 -52,-3.6197102054809362 -53,-4.429995816491156 -54,-4.841985685753939 -55,-5.774137262286936 -56,-6.824755405921239 -57,-6.773075199379202 -58,-7.837200971042587 -59,-7.939622402488413 -60,-10.242581097627678 -61,-11.484357118043961 -62,-11.859399762368858 -63,-12.40106199870235 -64,-11.995869561060157 -65,-12.051437728097167 -66,-13.093477508390022 -67,-14.486188616389153 -68,-14.771119278001954 -69,-15.210869255746676 -70,-15.648206188821836 -71,-16.736544375783016 -72,-15.521776966817079 -73,-15.994162717261974 -74,-14.942731529537214 -75,-14.86437831219903 -76,-15.328179164512981 -77,-14.804742731909437 -78,-14.48711467681441 -79,-13.937526285787001 -80,-13.23242748175209 -81,-14.411035505281006 -82,-15.736011991341972 -83,-15.083064145575191 -84,-15.333002394554132 -85,-17.492803284409764 -86,-18.63918115229446 -87,-17.07557953927583 -88,-15.119173463530753 -89,-14.821689134054882 -90,-15.69378496348616 -91,-15.774448986672635 -92,-16.3764123055835 -93,-14.080023828330653 -94,-14.352460607682296 -95,-16.02827376067688 -96,-15.70273651419487 -97,-14.382457127408697 -98,-13.336742517980507 -99,-13.626385337496068 -100,-11.915227672652552 -101,-13.553285982840181 -102,-15.361316009063676 -103,-15.249332354194323 -104,-18.090137792003453 -105,-19.110852297690816 -106,-18.48865361550035 -107,-16.93719454762954 -108,-17.054475201170984 -109,-16.340209584881837 -110,-15.443408293979806 -111,-16.03264151879352 -112,-15.41927832701665 -113,-15.260422958852308 -114,-16.235155149484218 -115,-15.580340673466807 -116,-14.56203147220937 -117,-13.299617291239574 -118,-12.004067427930645 -119,-11.76619154277609 -120,-13.434443396370456 -121,-14.879387073146216 -122,-17.08372550260032 -123,-17.968849946346964 -124,-17.433351657042422 -125,-15.827772584375666 -126,-17.301345740623493 -127,-17.622543668808976 -128,-17.700177766953065 -129,-18.06554817989304 -130,-19.770225440200335 -131,-21.91852779642536 -132,-21.01259252643245 -133,-21.096100070196417 -134,-22.36223590123404 -135,-20.925520526074493 -136,-20.584244370504862 -137,-20.704463130413032 -138,-20.689407816473267 -139,-20.800950170322956 -140,-19.079469852215485 -141,-18.763494288989108 -142,-18.74864384348722 -143,-18.895963261542473 -144,-19.073987719075692 -145,-19.111561637946593 -146,-19.482325582865254 -147,-19.811945606494522 -148,-20.490608958006813 -149,-20.590992391003947 -150,-19.760626687586882 -151,-18.45392215516692 -152,-18.82983070509497 -153,-17.814678964343887 -154,-17.263701179685853 -155,-17.003505336492935 -156,-17.62686338140024 -157,-19.09971894183765 -158,-18.545421103430126 -159,-18.396389971791347 -160,-19.027851840659775 -161,-19.16332264272357 -162,-18.90398757474324 -163,-18.695716514115976 -164,-20.43774069356193 -165,-20.763424134686574 -166,-20.101711238423423 -167,-20.57113350206161 -168,-19.69805987422404 -169,-19.629636232040117 -170,-19.2774171570283 -171,-19.14512010876969 -172,-18.511536388213802 -173,-18.173945763960756 -174,-18.6573868475557 -175,-20.185181843821912 -176,-21.3517846928248 -177,-21.961798453412456 -178,-22.992428313846535 -179,-20.98789035849401 -180,-21.712603349406848 -181,-23.375210371637834 -182,-24.795704200162692 -183,-24.3503618839524 -184,-24.39342511099357 -185,-24.90145699196935 -186,-26.869575686676825 -187,-26.259622798889968 -188,-24.991729421746 -189,-25.220637084612626 -190,-24.84228626368017 -191,-25.434336325398203 -192,-26.248496189676832 -193,-25.343932320959503 -194,-25.259325412495503 -195,-23.854607209709727 -196,-23.091821717958574 -197,-21.83343111492143 -198,-21.45393350379013 -199,-20.471315992215754 -200,-23.697954551888888 -201,-25.384576109885018 -202,-26.242316510273795 -203,-26.651784264907466 -204,-26.385478784996028 -205,-26.99505009474075 -206,-23.904018754970924 -207,-25.722796670604644 -208,-26.27988901601703 -209,-24.607595663490482 -210,-23.193306729281208 -211,-23.91464726952293 -212,-24.435042320594405 -213,-23.826579402556163 -214,-23.545635428414712 -215,-23.346027235926204 -216,-23.519769924405114 -217,-23.183246927854476 -218,-23.008471879826672 -219,-24.953142490610553 -220,-25.346992106238048 -221,-23.549497180260012 -222,-25.080026174153616 -223,-23.639250055966293 -224,-23.589764793323496 -225,-22.91850529530886 -226,-20.51421296879918 -227,-19.60771271388921 -228,-22.00557036094106 -229,-21.092118914053945 -230,-19.591664233919165 -231,-18.124558742738902 -232,-17.786273080391048 -233,-16.43114422988875 -234,-17.633586012401306 -235,-16.049387995387203 -236,-15.971124892647365 -237,-16.44464921380291 -238,-16.755324385719792 -239,-17.40615666766735 -240,-17.327382105379034 -241,-17.716487865814962 -242,-15.965260694304767 -243,-16.601147311615044 -244,-15.70536448950764 -245,-15.660328453423153 -246,-17.000144606049744 -247,-15.655436545528708 -248,-14.326085933791067 -249,-14.071369963782198 -250,-16.28042248433774 -251,-17.39601328858933 -252,-18.674922771770696 -253,-18.462224172339916 -254,-19.239067309603527 -255,-21.069328440981206 -256,-20.383592733323994 -257,-20.886472351854355 -258,-19.434741480501984 -259,-18.865349290054137 -260,-19.469480922595473 -261,-17.880777341499247 -262,-17.511005821140092 -263,-17.25289063568965 -264,-16.47645658806468 -265,-15.245238558403024 -266,-16.591981886933244 -267,-15.306012685774105 -268,-15.838925802836185 -269,-18.108108616848796 -270,-18.717502816430255 -271,-20.01577855884577 -272,-19.763919029062617 -273,-19.755293765044836 -274,-18.64939989460899 -275,-18.947374322602982 -276,-18.489044863515424 -277,-19.515183879238545 -278,-20.01435459494718 -279,-20.040811849166705 -280,-19.59985550250606 -281,-19.0053002057849 -282,-19.069120556677365 -283,-19.927752607257116 -284,-19.858151759840837 -285,-19.583437223720612 -286,-21.329527571669768 -287,-20.838543475690603 -288,-19.70365466221353 -289,-19.49353906881547 -290,-18.70504320958667 -291,-19.11264629690741 -292,-20.841000224119885 -293,-21.15707496300336 -294,-21.4305598856405 -295,-21.170960434582447 -296,-21.73490412384353 -297,-21.699978605877124 -298,-21.695558415146678 -299,-22.121119140896354 -300,-23.29631127365942 -301,-21.9629008718995 -302,-21.13102673976563 -303,-21.34132713011748 -304,-18.958078141923924 -305,-18.232423221648684 -306,-17.36735162886519 -307,-18.33551516597038 -308,-18.32450121414998 -309,-18.503116435417212 -310,-18.146985584129844 -311,-17.55377413420036 -312,-17.86570861620461 -313,-16.176536689166742 -314,-15.006326066365821 -315,-13.684026285477726 -316,-13.08626694554896 -317,-11.871699495805515 -318,-13.086030516193931 -319,-11.959447675337051 -320,-10.512457434411889 -321,-11.705576160956786 -322,-12.871254290158886 -323,-12.793943064690437 -324,-12.486149819335308 -325,-10.866157314003084 -326,-12.170417143505091 -327,-13.013855083918518 -328,-11.435576905357198 -329,-12.662885730412485 -330,-11.943792529193322 -331,-11.936054260447115 -332,-11.378054022802385 -333,-11.438374289064058 -334,-10.688438038032238 -335,-12.700666905858423 -336,-12.980712144209924 -337,-12.167059576102929 -338,-10.577464574357176 -339,-11.419555919298542 -340,-9.500904864610169 -341,-9.796695322592896 -342,-9.949546868991204 -343,-10.12908160156917 -344,-10.336356886121447 -345,-11.849983224565372 -346,-11.923368790970112 -347,-12.415254333844857 -348,-12.32999408678413 -349,-11.301304382575731 -350,-10.730976490362782 -351,-7.952222517119638 -352,-7.599772528619831 -353,-7.702868391008673 -354,-8.745432507494447 -355,-9.067052932023286 -356,-9.496917901851472 -357,-11.451249309797092 -358,-13.131420859558204 -359,-11.851277977485317 -360,-11.021053036091374 -361,-13.122258493643484 -362,-13.47574653638444 -363,-14.276304609038105 -364,-14.035123542706017 -365,-11.555546721678125 -366,-11.72235971272995 -367,-11.942642606921087 -368,-12.243203984435675 -369,-13.354614610306145 -370,-13.662193662661728 -371,-12.285053007936206 -372,-10.787913844345086 -373,-10.821620185318643 -374,-10.880794648107678 -375,-10.34959659008641 -376,-10.175715587477312 -377,-9.444349512333584 -378,-8.05908906339877 -379,-8.834809604556453 -380,-7.994032846275616 -381,-10.45189928192694 -382,-9.939617533758884 -383,-9.065498287342486 -384,-8.853384765665371 -385,-9.704639011446066 -386,-8.534092006365421 -387,-7.602176461631932 -388,-7.312930257509139 -389,-7.994868694778712 -390,-7.757871757039955 -391,-10.270831709244812 -392,-10.12242495066162 -393,-8.254163725398017 -394,-10.47201319824838 -395,-10.643741714194325 -396,-10.181358594869888 -397,-11.525345390817645 -398,-11.184290719476166 -399,-10.493794996494097 -400,-13.234770359365204 -401,-12.506732772567398 -402,-11.982963711607546 -403,-12.953793013545782 -404,-13.110177243145912 -405,-13.404795699578797 -406,-13.455553148799062 -407,-9.3801314108632 -408,-9.073334538086648 -409,-9.807880116327064 -410,-10.326914020670863 -411,-8.514130466974711 -412,-9.893847707028462 -413,-9.722652149224587 -414,-11.517329242622763 -415,-11.677198953953047 -416,-12.32017014877571 -417,-12.031075829229138 -418,-13.873357270326363 -419,-14.133476609407827 -420,-14.031709904076331 -421,-13.05840668686206 -422,-15.013977041523777 -423,-15.644222137144185 -424,-17.906711190916976 -425,-19.452589368421844 -426,-18.955202933458175 -427,-18.862936789173812 -428,-17.455812553367476 -429,-18.458320922113284 -430,-19.393249076802633 -431,-19.076592411546336 -432,-18.739321834696167 -433,-17.68501773969527 -434,-17.400761530261697 -435,-18.8792467325466 -436,-19.87162295776649 -437,-19.827644952933674 -438,-19.73202107266821 -439,-20.945649278388707 -440,-18.510088198446876 -441,-19.48704135867703 -442,-17.55829028685227 -443,-16.631899308071645 -444,-16.349682433177705 -445,-16.66279944489433 -446,-17.10041102773662 -447,-16.900263138230564 -448,-16.00035142534583 -449,-15.663127951857046 -450,-17.95305814193724 -451,-17.679313797912602 -452,-17.12589828360134 -453,-18.018383473063132 -454,-18.27768369803686 -455,-19.047842177641975 -456,-19.673861649423667 -457,-19.72373679233881 -458,-19.767315278432473 -459,-19.975052996799494 -460,-21.829765910845857 -461,-21.48267469541455 -462,-21.12136044468141 -463,-21.04861793115457 -464,-22.10727853945441 -465,-20.439551310335716 -466,-21.13056714379149 -467,-20.513810894008135 -468,-20.80491341037781 -469,-21.400232135479847 -470,-20.999640314948582 -471,-20.48739706121699 -472,-19.996002419743537 -473,-18.148811248615807 -474,-17.357508349402046 -475,-17.978233084770334 -476,-16.35111504973877 -477,-15.335238155123134 -478,-15.34633837642611 -479,-13.923430185721351 -480,-13.079694396658821 -481,-13.443165191757164 -482,-14.410878147000737 -483,-13.84239937722994 -484,-14.90800982631768 -485,-14.51084613618807 -486,-12.863654156511831 -487,-13.335742864887179 -488,-12.727732342951288 -489,-12.954846275018499 -490,-13.591903179362934 -491,-11.118735645652572 -492,-11.305861681799511 -493,-10.947003348827396 -494,-11.03649916792191 -495,-11.718423349082862 -496,-12.283546109261582 -497,-10.499282038295947 -498,-10.231189816441795 -499,-10.377586250276071 -500,-10.71769833979029 -501,-10.878596487327727 -502,-10.36481483860224 -503,-10.103048897305658 -504,-9.64129364606271 -505,-10.710201408914955 -506,-10.196170931075523 -507,-10.288838688193298 -508,-10.57082189960075 -509,-12.124146115262223 -510,-12.97484760693013 -511,-12.256982677463382 -512,-13.570932281903731 -513,-13.163462640858505 -514,-13.846292433456107 -515,-14.204788681945844 -516,-14.748143525304938 -517,-14.671028354966563 -518,-16.91626508648993 -519,-16.339776975874848 -520,-14.152504921392225 -521,-16.156256772523438 -522,-17.75967270987387 -523,-17.067555172245424 -524,-16.740420244140722 -525,-17.029362458529974 -526,-17.08841630786556 -527,-17.125404229109193 -528,-16.53271240128737 -529,-16.806549351015516 -530,-15.821231666951535 -531,-14.431972069347346 -532,-14.631311836485514 -533,-16.492062207656467 -534,-17.963978011323082 -535,-15.90137153593664 -536,-16.112359483064314 -537,-14.490731010186416 -538,-14.356775383397869 -539,-13.135536414687556 -540,-12.69699502279911 -541,-10.824320886255714 -542,-10.971324951056479 -543,-9.776790323060732 -544,-10.690893803344913 -545,-9.999122683683943 -546,-8.789323720625152 -547,-10.530527600785163 -548,-10.627305475749354 -549,-11.192197229592676 -550,-9.72870449393058 -551,-8.025027864976769 -552,-8.817068889346288 -553,-7.769298460181953 -554,-7.883360836983854 -555,-8.098401982048644 -556,-9.80524361305588 -557,-7.527154899281802 -558,-5.620772734977827 -559,-6.03990337942436 -560,-5.684978611859576 -561,-4.626755487830103 -562,-4.330764744284444 -563,-3.166941302562246 -564,-3.4952262685056734 -565,-2.832626313866297 -566,-2.363319684123363 -567,-2.3884833705847086 -568,-3.0673789349186733 -569,-2.6329378017583958 -570,-2.5519272737761436 -571,-3.1530281841989636 -572,-3.2872796855832456 -573,-1.8460168334140512 -574,-0.10330633519164212 -575,-0.2452867468245778 -576,-0.7634118057521522 -577,-1.0193351485624327 -578,0.3075714633830764 -579,-0.6803973569184733 -580,-1.4699972196731865 -581,0.7484696502586772 -582,0.6819999488133921 -583,-0.1252800316841256 -584,-0.5243707629961989 -585,-0.07608298407696762 -586,0.1348973830811549 -587,-0.8774656875643871 -588,-0.7195107557556019 -589,0.03169066719645597 -590,-1.533270284544742 -591,-2.2182772095048193 -592,-3.4163043499393906 -593,-3.396802829515906 -594,-2.7201534954989537 -595,-1.321783228211433 -596,-0.8927743207178018 -597,-0.7589343545176205 -598,-1.9042499089409608 -599,-2.814749033381657 -600,-4.409924314326074 -601,-2.800068468536769 -602,-2.6921939316796517 -603,-0.8767082221777871 -604,-0.24715548126017517 -605,0.1518788988331316 -606,-1.5834460659499319 -607,-0.8584211818595738 -608,-1.8836823363445725 -609,-1.0885080311329767 -610,-0.6163401163644331 -611,-0.8110205137921622 -612,-3.5297238229377235 -613,-4.832384345200395 -614,-4.280287334721861 -615,-2.628238746841383 -616,-4.039296592563832 -617,-3.9778764843519534 -618,-5.570667996644448 -619,-4.1138815895392415 -620,-2.5785181716993635 -621,-4.886044941668703 -622,-7.183573263670006 -623,-7.648967348758796 -624,-6.488215645174579 -625,-7.312796247258459 -626,-7.830329022058686 -627,-9.116536857898819 -628,-7.435121148212359 -629,-7.377748398633493 -630,-8.903834098992974 -631,-7.671270604511784 -632,-8.416307093562965 -633,-8.029963752277256 -634,-7.217310179037343 -635,-7.4051717175219265 -636,-8.84308228303254 -637,-7.997403743860121 -638,-7.854606715436391 -639,-8.199814975859356 -640,-7.886464642698584 -641,-8.904400976371706 -642,-8.369807227146294 -643,-9.635022368220026 -644,-10.884435852650041 -645,-12.008470635187175 -646,-11.871265752051501 -647,-12.457170903208564 -648,-11.948316673504957 -649,-13.16286302172518 -650,-11.810049595416501 -651,-12.267431722704043 -652,-11.979169518851654 -653,-13.057115256964998 -654,-13.541769257221246 -655,-14.816328377802062 -656,-12.557745232388289 -657,-13.929295290698514 -658,-16.442573395010506 -659,-16.96188343247556 -660,-17.77292858583258 -661,-17.398964786798334 -662,-18.374003860630197 -663,-17.2738555916796 -664,-17.07517068191916 -665,-17.642520750052714 -666,-18.008863419723884 -667,-18.378380752534643 -668,-18.05219890845247 -669,-19.071765983963466 -670,-18.967672892596564 -671,-17.677782956739804 -672,-17.25162197364584 -673,-17.456812112805423 -674,-17.089673980794352 -675,-17.461156182506542 -676,-16.06226721169577 -677,-15.185748649924644 -678,-14.536245484712946 -679,-13.038761045086556 -680,-13.36043271587794 -681,-12.600944637852493 -682,-11.70217917508761 -683,-10.634805165807855 -684,-10.466153681649024 -685,-8.651868012169242 -686,-7.621177764714728 -687,-7.241502637471722 -688,-6.277514798726408 -689,-7.957465786232502 -690,-6.772611392292936 -691,-7.320445210392345 -692,-6.203322731280066 -693,-5.415213287195311 -694,-5.666478109275812 -695,-6.667347888421408 -696,-6.563937597473064 -697,-5.262157225396885 -698,-7.108746899758226 -699,-8.551512152509762 -700,-8.655450774894158 -701,-7.982535761668933 -702,-9.212587565809233 -703,-6.88542878867934 -704,-6.928848695984767 -705,-6.633805479734228 -706,-7.083900549511091 -707,-7.893854489371339 -708,-8.373405835974276 -709,-7.03640289213391 -710,-5.766011045742946 -711,-4.284067508252139 -712,-3.5964956426353067 -713,-1.6475485054938568 -714,-2.466799393857304 -715,-2.603739397538327 -716,-2.941601946220356 -717,-2.8306752040915297 -718,-2.3592850233583382 -719,-2.0346706439882145 -720,-2.111639923298141 -721,-3.1178362260567223 -722,-2.7663507480497262 -723,-3.589650444695656 -724,-3.4548863565405026 -725,-1.733091432052709 -726,-2.4536653989014057 -727,-2.395361664445972 -728,-2.0933606638236038 -729,-1.561331413082225 -730,-1.3058533097326563 -731,0.3738120805382905 -732,-0.29572739707022755 -733,-0.9422085341888742 -734,-2.7022494391808394 -735,-4.442515899569104 -736,-2.7936300026579235 -737,-2.9640030387040017 -738,-1.8694779920831968 -739,-1.6865372441067112 -740,1.2535372662731272 -741,1.6393334628982643 -742,2.232571216104291 -743,3.6733616089337 -744,5.611446250564153 -745,5.497343496176454 -746,6.374765441785867 -747,5.518745460622261 -748,4.303640980679903 -749,5.82574182077049 -750,5.489117338447986 -751,5.578771364986182 -752,6.1989895077866315 -753,4.8991996685657 -754,6.260265825561538 -755,5.507589675176217 -756,6.937048079140689 -757,8.58559722239795 -758,7.295095382968495 -759,7.354447863894236 -760,5.051381736549098 -761,5.661453697827116 -762,5.550013132512845 -763,5.460546552409246 -764,5.105533811731162 -765,4.4274425695644375 -766,5.0262838622233454 -767,5.039225284674631 -768,5.7014531816786045 -769,5.831699083937791 -770,6.498470026463304 -771,6.481841336083312 -772,4.083611073218716 -773,4.68729402190487 -774,5.8564970185472625 -775,5.922259174331893 -776,7.106413192416776 -777,7.128100099348104 -778,8.106536333353416 -779,9.98027070761533 -780,11.220064841392997 -781,12.28241924715845 -782,11.96833954045192 -783,10.672026854151001 -784,10.040807783519977 -785,9.290536518131585 -786,9.461731905573014 -787,8.719149320436554 -788,8.366997620665344 -789,8.247907956911149 -790,8.646942944265971 -791,7.82692053688653 -792,7.87456039586519 -793,7.452812412675181 -794,7.6454927607126635 -795,8.783713646272318 -796,7.086337405169308 -797,6.776742291047487 -798,8.187874609115312 -799,9.402284204369998 -800,9.085890074621712 -801,7.645562700548884 -802,8.899440373269423 -803,7.923845399525891 -804,8.947467695014428 -805,9.69517380697728 -806,6.309641549831655 -807,6.300822202526153 -808,5.3679113225002135 -809,6.487754641078032 -810,5.42340874456236 -811,6.2238864019947115 -812,6.699639314994088 -813,6.72778977095413 -814,8.860374764774626 -815,8.012291781137325 -816,7.5398418348289455 -817,5.804607191878658 -818,4.817166933754663 -819,3.7853397479020883 -820,2.4790494629870694 -821,4.15716222172178 -822,3.01645018069957 -823,2.399878034523217 -824,0.988186809742652 -825,1.6401026786539976 -826,0.15198672863126306 -827,0.05832760549184478 -828,1.0998522330639304 -829,2.519984999492964 -830,3.5782329268711566 -831,3.878525197237304 -832,2.700101573001213 -833,4.514423967684614 -834,6.101834215996969 -835,5.781720148406216 -836,5.641824479345951 -837,7.865368842013265 -838,9.061658078923909 -839,8.064295483922919 -840,7.624312224114753 -841,7.029062543603248 -842,7.447852431918027 -843,8.033291015484618 -844,8.076751500193788 -845,8.566887195119723 -846,9.462612119142463 -847,8.568588449334083 -848,8.596028883063115 -849,8.56213717643236 -850,7.287573960780302 -851,6.518168397547629 -852,5.681594880286469 -853,4.811977550547898 -854,3.9257119641494578 -855,3.567550725761703 -856,4.9409843319277265 -857,6.582776069004966 -858,6.378391812248344 -859,5.321342649653455 -860,4.811503629872009 -861,4.162017160198757 -862,3.321788167233846 -863,4.454569532077048 -864,4.885304443620388 -865,4.490622336175763 -866,5.622691487385141 -867,7.47221286972825 -868,8.11748578039826 -869,7.446934109931465 -870,7.201902258399758 -871,8.1682201437961 -872,8.613994262674812 -873,7.9815527244437945 -874,8.131917573882323 -875,8.62877307810063 -876,8.83807066294197 -877,9.348638856544838 -878,8.866754886373288 -879,9.03209723522923 -880,7.352724337703888 -881,6.9845793448964155 -882,6.57803576761953 -883,4.887863445681461 -884,5.221850812836306 -885,6.114082513669171 -886,5.977439553453681 -887,7.329939627111839 -888,7.353091901756936 -889,6.768507643626967 -890,6.7782341103398975 -891,7.62947241778433 -892,8.556098208341556 -893,8.118752352086135 -894,6.35269630499443 -895,5.016678826796332 -896,5.304380859179643 -897,4.711504303157411 -898,6.680696128821412 -899,7.764239554223903 -900,9.272742404758423 -901,9.237397078499356 -902,9.173690748635753 -903,7.886950036424613 -904,9.17294383586744 -905,8.568227758502289 -906,8.476629053898971 -907,8.015538071466473 -908,6.840158538260386 -909,7.003989648925425 -910,5.4630792053879755 -911,5.140207436042604 -912,4.058308042212959 -913,3.5955681026484054 -914,4.025839414868162 -915,2.6741299181751845 -916,2.26641632628664 -917,3.3996331456490814 -918,3.18296435277679 -919,3.3439203520264407 -920,1.7715012391512488 -921,0.6766878876274633 -922,-0.22005119719628818 -923,0.7157226071557277 -924,0.14092259533015372 -925,-0.7567069601152919 -926,0.46301768902183327 -927,-0.20914701136073155 -928,0.6775473861584624 -929,0.22883145602447114 -930,-0.35734266482857896 -931,-0.22333899940754423 -932,-0.41449329260150625 -933,-1.843886093380847 -934,-0.8444431848378999 -935,-0.5631427325760799 -936,-1.3717276843391193 -937,-0.8987406257427552 -938,-1.1882827733959853 -939,-0.94899986841784 -940,-1.838743991553672 -941,-1.7625955204017876 -942,-1.8509156161589289 -943,-3.8027968564753145 -944,-4.529655900338816 -945,-3.296928265868144 -946,-3.3935403708431093 -947,-4.570888037445482 -948,-3.761156030510456 -949,-5.10845882985144 -950,-5.50788353720082 -951,-5.396247496643932 -952,-5.806878188641762 -953,-6.1529655312376805 -954,-6.963849263116619 -955,-7.591178840852095 -956,-7.725073059731892 -957,-7.569181483675057 -958,-6.685526665642961 -959,-8.529938510306659 -960,-6.812860645652572 -961,-7.14195097987278 -962,-8.0379684595321 -963,-9.870452933328831 -964,-10.648606340902722 -965,-10.726154147705396 -966,-10.979745779062647 -967,-11.895721571535493 -968,-12.197523082163185 -969,-12.505795881853027 -970,-12.472053230974286 -971,-12.338341041479593 -972,-14.925563399842371 -973,-14.21138933707424 -974,-13.519194387694307 -975,-12.186353176147342 -976,-14.519894767818242 -977,-15.510263328556213 -978,-14.87166028531223 -979,-15.331773626988177 -980,-17.32902646765797 -981,-18.09703635656806 -982,-16.910179136467416 -983,-18.191061835234446 -984,-17.900209246659042 -985,-17.023442661188366 -986,-16.949669308425964 -987,-17.981261080678873 -988,-18.750499050577968 -989,-18.00490464140171 -990,-18.161239460274977 -991,-16.82094831202191 -992,-18.171212720338005 -993,-17.211983326635973 -994,-16.437631616161266 -995,-15.902632318374717 -996,-15.514673555740597 -997,-13.734274832440905 -998,-11.868671642298164 -999,-11.36931049478377 -1000,-11.12951751561032 -1001,-10.826021797203765 -1002,-9.984284342866403 -1003,-7.853369500624495 -1004,-7.683814350264105 -1005,-7.363899295196818 -1006,-9.433667264503057 -1007,-10.586082375273937 -1008,-11.023737940412557 -1009,-11.342702413976339 -1010,-10.089177692921126 -1011,-9.656413249978646 -1012,-8.972139526155148 -1013,-8.728367577632044 -1014,-8.120463776424161 -1015,-10.058940644270292 -1016,-9.622432341168816 -1017,-11.453889974730222 -1018,-12.131918760444288 -1019,-10.524845895533428 -1020,-9.411511031509676 -1021,-8.390857537829604 -1022,-8.124730115469886 -1023,-9.44132656679004 -1024,-7.623629245924786 -1025,-7.730078602303602 -1026,-7.538897134699475 -1027,-8.183596045761162 -1028,-6.332316508877964 -1029,-6.4514141450628655 -1030,-7.186261759671225 -1031,-8.187193593451738 -1032,-7.979343489559912 -1033,-8.227968582058548 -1034,-7.226902967132217 -1035,-6.4624468927824905 -1036,-6.240692227822139 -1037,-6.676217583123989 -1038,-5.640332839409595 -1039,-4.15312986152549 -1040,-4.179849130500168 -1041,-6.063654452854209 -1042,-8.061644544797142 -1043,-7.228649587301023 -1044,-8.9389541043917 -1045,-8.760626739336258 -1046,-9.441712715110173 -1047,-8.008520289470752 -1048,-7.493046092848916 -1049,-6.298427105156909 -1050,-6.394500269962485 -1051,-5.540128519034587 -1052,-4.404131803809551 -1053,-4.928806940292273 -1054,-4.863835391064986 -1055,-2.904944160864415 -1056,-3.452509446679992 -1057,-4.0207772336475465 -1058,-1.7274313908949153 -1059,-1.730045388008976 -1060,-1.086482891660091 -1061,-1.207953320972025 -1062,-1.4629158958399677 -1063,-2.596268868634418 -1064,-2.0293633839002703 -1065,-1.2764731406385184 -1066,-1.6776109092595979 -1067,-1.4587739742548536 -1068,-0.2739459556089343 -1069,-0.6698738233516001 -1070,-1.2910089802728053 -1071,-0.6354458272135642 -1072,-1.2820614132054584 -1073,-0.6977472214384152 -1074,-1.0626970607073165 -1075,-0.9873775676845997 -1076,-0.7481000438020747 -1077,-0.9087647542450668 -1078,-0.22601800574149056 -1079,-0.3389933875502662 -1080,-0.4474158536165862 -1081,-0.3517987691155248 -1082,-0.36149075628562155 -1083,-0.4703807014279383 -1084,-1.4259005187987963 -1085,-2.222048351386692 -1086,-1.9612532363885147 -1087,-2.328492818578418 -1088,-2.5085918477917857 -1089,-3.1807339418775227 -1090,-3.0171059188806586 -1091,-3.9279265068359055 -1092,-3.221034811686865 -1093,-5.283470036085907 -1094,-4.151401941037363 -1095,-3.367756862319721 -1096,-2.17743197351742 -1097,-2.271505287902671 -1098,-3.244948973463161 -1099,-2.3198564019222614 -1100,-2.141708512048009 -1101,-1.982915265879676 -1102,-2.6553181049242918 -1103,-0.5245828952502336 -1104,-0.2606926051720734 -1105,0.6497904628699105 -1106,-0.901315142927849 -1107,-0.441713172679341 -1108,-0.268797827762802 -1109,-0.9872787079978131 -1110,-2.172282865799556 -1111,-2.1896730278353336 -1112,-1.02660251775029 -1113,-1.5719906833793398 -1114,-2.1172497134931882 -1115,-2.1209832688879895 -1116,-3.0540120374621686 -1117,-5.696171942820888 -1118,-5.768852792065958 -1119,-4.427480263931707 -1120,-5.21345069252081 -1121,-5.849213511084811 -1122,-5.960253347105845 -1123,-4.497412782313297 -1124,-4.467139142728587 -1125,-5.476483536672502 -1126,-5.150464132828816 -1127,-5.857427270541842 -1128,-6.124176585895112 -1129,-6.001556838245614 -1130,-5.77619495529242 -1131,-6.772854640098771 -1132,-4.597607910440913 -1133,-3.945686400845003 -1134,-2.621068877360056 -1135,-3.5321192919548743 -1136,-3.7430247427987813 -1137,-4.07306329676899 -1138,-5.9349966254733495 -1139,-4.906347429174746 -1140,-4.992268096428209 -1141,-4.44763604990352 -1142,-4.330402602231556 -1143,-2.7816938209865922 -1144,-1.560327671891685 -1145,0.0038413146102505014 -1146,-0.2752274191312431 -1147,-1.23057657541804 -1148,-1.5629384689307786 -1149,-0.10559281600418835 -1150,-0.602253501914171 -1151,-1.5670043567316068 -1152,-1.4925854814261146 -1153,-0.32039461418888515 -1154,-0.9879310035783154 -1155,-0.7395546231120855 -1156,-1.3707622283037315 -1157,-0.8564302617481675 -1158,0.8441862127062499 -1159,1.8297004827426127 -1160,2.6189848752079996 -1161,2.8390957141338067 -1162,1.115029959086785 -1163,-0.3866108643625592 -1164,2.291064192195414 -1165,2.9787643579683785 -1166,2.1599167458705812 -1167,2.697579016112795 -1168,2.2831522934832957 -1169,1.9300282987807975 -1170,2.365173406787457 -1171,3.423122963449419 -1172,3.486078903912899 -1173,5.261570426188516 -1174,5.334843508719417 -1175,5.529085561665406 -1176,6.007612619555564 -1177,6.77073118657329 -1178,7.111366129850148 -1179,8.08594515955067 -1180,7.117241549384851 -1181,9.69954154170428 -1182,8.662161922732402 -1183,8.51327959617315 -1184,8.65465160558529 -1185,9.890718355228737 -1186,7.640378576645517 -1187,7.409024848856894 -1188,6.750756017265645 -1189,4.395729561066174 -1190,4.262819046258196 -1191,5.849230085843883 -1192,5.657876469082873 -1193,6.673278594309756 -1194,7.148781956911253 -1195,6.990304367308299 -1196,6.986621677172345 -1197,6.642712105909144 -1198,7.39934159083101 -1199,7.4168278638150715 -1200,8.837597742521128 -1201,9.888203139231617 -1202,9.797418984272426 -1203,8.303717355935849 -1204,8.125368523750323 -1205,8.40834337839624 -1206,9.61044895818404 -1207,9.626415241130516 -1208,9.745263890486106 -1209,11.18679160143553 -1210,10.386552943501552 -1211,10.073738290936273 -1212,8.972631649630094 -1213,8.405786177997005 -1214,6.882783383931491 -1215,6.5738076212531125 -1216,8.101148291328956 -1217,5.593867135865024 -1218,5.9964065256805545 -1219,6.379759571044846 -1220,7.514091887713236 -1221,7.206907401094513 -1222,6.789682406237719 -1223,6.561193481376856 -1224,6.091275452580535 -1225,7.13443752022017 -1226,6.7636114256308835 -1227,6.103722462569394 -1228,6.925056901222997 -1229,5.855037656352559 -1230,6.276052850616948 -1231,6.305298901234085 -1232,4.760302995435151 -1233,4.28202666203338 -1234,4.641789479436574 -1235,4.553118860573151 -1236,4.576782610964797 -1237,4.802710261210558 -1238,4.641471812305126 -1239,4.270844961939375 -1240,3.512064250485429 -1241,3.1637248634953674 -1242,3.7679062857933836 -1243,5.320867669551607 -1244,6.053690586221149 -1245,5.492103673498516 -1246,6.259492915288247 -1247,6.0897103246328195 -1248,4.971200416628767 -1249,3.8064459134158177 -1250,3.7981052057709914 -1251,2.6157797254857176 -1252,3.450914973462534 -1253,3.282498779190312 -1254,3.5574188553473975 -1255,4.2070423227937095 -1256,3.8105296846702315 -1257,3.2498252513156247 -1258,3.886117989876136 -1259,4.509077759700583 -1260,4.2406719612039625 -1261,4.3959190900467116 -1262,4.431875134637797 -1263,5.37996772643989 -1264,5.101297413287348 -1265,5.903436597353999 -1266,4.680555930459693 -1267,4.9786318289669556 -1268,6.0748825907290005 -1269,6.165073585430247 -1270,6.9465500571187855 -1271,9.05523044274244 -1272,10.269648327891709 -1273,9.691814948144911 -1274,10.377782712597051 -1275,9.01929482256008 -1276,8.33226922940847 -1277,8.250576468876606 -1278,9.748237346003226 -1279,8.839472739731395 -1280,7.9126499144522855 -1281,7.191690702289253 -1282,7.0713706638684775 -1283,6.176293461777297 -1284,4.3077235441005515 -1285,5.278647307722515 -1286,6.40213642858383 -1287,5.5761282900955615 -1288,5.692407331316941 -1289,4.783264525548284 -1290,5.0192553520949525 -1291,5.657908100962368 -1292,6.234831661196685 -1293,7.024910745961313 -1294,8.852200730721389 -1295,8.589471764211147 -1296,10.342374353951747 -1297,8.185845681039225 -1298,8.281705418268526 -1299,9.001113576423958 -1300,7.3834911193402295 -1301,5.436543055589385 -1302,5.457627258202662 -1303,4.888826245369895 -1304,6.260042634700174 -1305,5.88267792813296 -1306,8.148213015708517 -1307,9.25888441503388 -1308,9.972740467723193 -1309,10.172635441375537 -1310,10.602949474088435 -1311,8.868090845308213 -1312,8.065237146094706 -1313,7.982359989663223 -1314,7.66551470759536 -1315,6.478855150195606 -1316,6.7995447560205475 -1317,6.53879506037114 -1318,5.739185273512202 -1319,5.833337121177916 -1320,4.756450604742847 -1321,5.768715580724127 -1322,6.0987509886493845 -1323,6.00066475982852 -1324,7.815354062499384 -1325,6.019781495529182 -1326,6.4604241502973885 -1327,6.687077293742719 -1328,6.41184252113367 -1329,6.382373853621329 -1330,6.436728615868321 -1331,5.972582885442311 -1332,6.847499904678562 -1333,7.310236667585261 -1334,8.976736903563856 -1335,10.176495449060113 -1336,10.613965350359173 -1337,8.878151575834579 -1338,9.310503047800626 -1339,8.92159350012445 -1340,8.412321690309787 -1341,9.154036447593622 -1342,8.611856405332246 -1343,8.352733882434036 -1344,8.214011936188056 -1345,7.898460033380378 -1346,7.728532178960212 -1347,7.56295641440455 -1348,7.675174816369604 -1349,8.553175346584027 -1350,9.910462842398484 -1351,9.703783843728448 -1352,9.44391998073276 -1353,9.921761939570064 -1354,10.14773113608813 -1355,10.486024965561779 -1356,12.682445291024099 -1357,11.381503194910948 -1358,11.544333702294445 -1359,11.467231137015702 -1360,10.11428514113035 -1361,11.529878070019981 -1362,11.534322376474098 -1363,9.619838134090843 -1364,10.725319012939437 -1365,10.260387015707924 -1366,10.308097303610586 -1367,9.999095859241091 -1368,9.876118847011828 -1369,8.792952090660833 -1370,9.627558422573976 -1371,9.921858987384095 -1372,10.98682998222356 -1373,10.81678475388124 -1374,10.721940166768455 -1375,11.219540042038558 -1376,10.579007387796379 -1377,9.005603921183091 -1378,9.680713742238682 -1379,8.580425953681702 -1380,10.369558230549718 -1381,7.103634379041738 -1382,9.043056420355075 -1383,7.375314649319141 -1384,8.259958958620379 -1385,9.081193418347542 -1386,8.053788525129118 -1387,7.64717640039506 -1388,7.883569906518696 -1389,7.008259116587431 -1390,6.6149683379598105 -1391,5.344060823088304 -1392,4.536549358782587 -1393,5.486993491693731 -1394,5.07087467113738 -1395,4.730386207133006 -1396,6.244666064969078 -1397,6.141058442280963 -1398,6.06828243291342 -1399,5.808077690517398 -1400,7.5948117379556805 -1401,7.508383689387431 -1402,8.844834855570681 -1403,10.200150451729307 -1404,9.877125417609866 -1405,8.905670135915054 -1406,9.395160054762686 -1407,9.213057381289515 -1408,10.645283355641771 -1409,10.682471844456709 -1410,12.266013033565532 -1411,11.81487572248351 -1412,13.423368934079807 -1413,12.420956376210725 -1414,12.4808301242365 -1415,12.809730036835148 -1416,14.478913019323375 -1417,14.473141533988091 -1418,14.180020006017138 -1419,14.748004918426252 -1420,14.664518796543032 -1421,14.748538924137952 -1422,13.728548099851665 -1423,14.159204023467547 -1424,14.325763384472905 -1425,15.900957876802943 -1426,16.471204335522096 -1427,16.58463056341016 -1428,16.029324097232713 -1429,16.744571024276127 -1430,17.26131187736856 -1431,16.621813643146155 -1432,16.521862705937213 -1433,16.88423803186863 -1434,15.753982989082829 -1435,15.627491685083035 -1436,16.028044324175845 -1437,14.250101585161016 -1438,14.762570738505138 -1439,15.453275761986253 -1440,14.899365181884802 -1441,15.043947722394746 -1442,14.06793940780829 -1443,12.883377232816969 -1444,13.117077340658923 -1445,11.431523347986765 -1446,10.308194864334732 -1447,10.126142499390852 -1448,11.681290307046748 -1449,11.430470670847312 -1450,11.239132262357845 -1451,11.147482257575115 -1452,9.787574227469676 -1453,9.896737687053227 -1454,10.772690602055478 -1455,11.644862316502449 -1456,11.861660806712262 -1457,11.809862429822918 -1458,12.37368783607891 -1459,13.917621712334338 -1460,13.280840863139517 -1461,15.178432958966937 -1462,15.612346780543826 -1463,13.987505980506771 -1464,14.231406935124333 -1465,12.803989118282805 -1466,12.889778278641806 -1467,12.891200386798353 -1468,13.728929931237742 -1469,12.816905194008626 -1470,11.701408030704588 -1471,11.589562339196641 -1472,11.15977828111562 -1473,10.23500728810372 -1474,10.261332087446778 -1475,9.7410046797862 -1476,11.675525478130115 -1477,11.113814002642588 -1478,11.649584777629354 -1479,10.252280336026793 -1480,9.457233581999038 -1481,7.883417834799369 -1482,7.662951237544716 -1483,7.1159433366454 -1484,6.877926873177444 -1485,5.85537204789179 -1486,3.9331281149651174 -1487,4.516158036706625 -1488,4.326586093730468 -1489,4.179793186811967 -1490,3.66706279383995 -1491,1.883969600065566 -1492,1.306034584439971 -1493,0.7619528705794075 -1494,1.117075891550594 -1495,0.8428588570543146 -1496,-2.13804907338776 -1497,-1.1805559786826183 -1498,-2.7806688648387747 -1499,-2.481587135932375 -1500,-0.6443923424899032 -1501,0.9057142110409437 -1502,1.5324566863825102 -1503,-0.07783651281018744 -1504,-0.0863987240395961 -1505,0.2039332126572514 -1506,1.0616999592135317 -1507,0.8374002460384273 -1508,0.06918825810146301 -1509,1.3764747788928315 -1510,1.0785322132532074 -1511,1.325882873323975 -1512,0.27744432878411884 -1513,0.12230571349859184 -1514,-2.570138625376369 -1515,-2.695969427100273 -1516,-1.5794882227239084 -1517,-1.5218158193635365 -1518,-2.5129392825802084 -1519,-2.4956004501254707 -1520,-3.9722514524269834 -1521,-3.0279283766910847 -1522,-3.3700674103160213 -1523,-2.260814085658913 -1524,-3.658557194171337 -1525,-3.1556539369278913 -1526,-4.147405374531621 -1527,-4.968048420374132 -1528,-5.729771951868169 -1529,-4.571501911114261 -1530,-4.075575121073556 -1531,-4.242525794420665 -1532,-4.911558559574516 -1533,-3.698667611937098 -1534,-5.652434030649734 -1535,-6.629199427577719 -1536,-7.162220607071456 -1537,-7.313554143559042 -1538,-7.735810446040383 -1539,-7.7870088310906365 -1540,-7.910353201779237 -1541,-7.137423008780467 -1542,-6.1951231676235725 -1543,-8.217538979438942 -1544,-7.496591311507527 -1545,-6.376367639599202 -1546,-6.3659474907052385 -1547,-4.862571767945329 -1548,-5.141111378113704 -1549,-5.615312721725174 -1550,-4.489696019558043 -1551,-4.011982503240474 -1552,-2.939697015384672 -1553,-2.611791475209742 -1554,-2.3175927107869194 -1555,-3.0507628654986236 -1556,-4.561470651231943 -1557,-5.392643125113573 -1558,-4.919665676948033 -1559,-4.080680179173997 -1560,-2.939952576859204 -1561,-3.6029823974262882 -1562,-2.519867533842274 -1563,-1.4803902489827774 -1564,-1.2197655500861406 -1565,-0.8847924837342542 -1566,-0.4359609043116231 -1567,-1.1402813812112402 -1568,-0.20390635116118527 -1569,-0.1093351169717887 -1570,-1.5876613991027975 -1571,-1.9876065541428953 -1572,-0.48643327231782685 -1573,-0.7269429728029463 -1574,-1.1097446347411521 -1575,1.460080785220795 -1576,1.017928990680825 -1577,-0.3313684544621993 -1578,2.0976674955140773 -1579,3.00666666357806 -1580,3.0598738882588634 -1581,3.347783716120467 -1582,4.092100734534983 -1583,1.1170504841784479 -1584,-0.23711080119768613 -1585,-0.15528587699027058 -1586,-1.0172475439383255 -1587,-2.713322312725961 -1588,-1.9173697680984556 -1589,-4.106254874522456 -1590,-4.128603794815508 -1591,-5.544790988572352 -1592,-6.930549753722218 -1593,-7.177103707833363 -1594,-8.34153085675968 -1595,-9.011090910641322 -1596,-7.679656710424059 -1597,-7.689580145650223 -1598,-6.88435431314551 -1599,-5.858254922939656 -1600,-5.717411601948805 -1601,-4.999958811538718 -1602,-5.619800777292953 -1603,-6.204464354533281 -1604,-7.476217444877831 -1605,-7.4854328210582475 -1606,-5.314102040306359 -1607,-6.028225134151828 -1608,-5.374456450885465 -1609,-4.763527054852927 -1610,-6.744258402908255 -1611,-7.317125454688088 -1612,-6.868230429768598 -1613,-6.427209074645705 -1614,-7.597326195665687 -1615,-8.923202496020018 -1616,-10.112404397308309 -1617,-9.937344766759418 -1618,-8.30755388344946 -1619,-8.811797609213816 -1620,-7.437891338480208 -1621,-6.26905268065303 -1622,-6.415551151995455 -1623,-6.356064638772666 -1624,-6.434128096830142 -1625,-6.662971314672661 -1626,-4.8629008208737075 -1627,-4.785107567822112 -1628,-4.395761775323976 -1629,-4.449878340961016 -1630,-4.900417830242118 -1631,-5.25057832350935 -1632,-5.536071210498168 -1633,-4.524516379683062 -1634,-4.463428359891133 -1635,-2.1513415850033173 -1636,-2.635041579447921 -1637,-3.612170027743105 -1638,-2.947547392038991 -1639,-1.1479411201449665 -1640,-0.6426139870831271 -1641,-0.683371253119083 -1642,-0.9956325374771454 -1643,-0.20831405475517906 -1644,-1.0238272064214473 -1645,1.253256697137763 -1646,0.7862049555534525 -1647,0.8007564597650897 -1648,-0.42997044221587777 -1649,-0.4112726485014289 -1650,-1.143985694105612 -1651,-1.3158975008187555 -1652,-0.8328119979824798 -1653,0.39267619306144186 -1654,1.3150992327977447 -1655,-0.6127237503077054 -1656,-1.2555921808810766 -1657,-1.1511846916856323 -1658,-1.3925630984961057 -1659,-0.7419994070180586 -1660,-1.035559345135343 -1661,0.029205671867858607 -1662,-0.40506374793423805 -1663,-0.6451031981362217 -1664,0.5683423070261536 -1665,-0.13095197401454106 -1666,0.8385170390991028 -1667,0.7112886533194391 -1668,0.14947072710920206 -1669,1.0564440029055837 -1670,1.2449078838857426 -1671,0.9537212567393536 -1672,-0.02380111173736843 -1673,-1.242732227074125 -1674,-0.2612496771699945 -1675,2.1175492471775708 -1676,1.8854649055439605 -1677,3.0415090170752794 -1678,5.126004692600869 -1679,5.725264738688919 -1680,5.447720969688936 -1681,5.67778302618973 -1682,5.314182380104573 -1683,3.9244533121140135 -1684,3.1487128749932287 -1685,4.968207675026439 -1686,4.273144701994414 -1687,3.2376908773528825 -1688,2.718134399391995 -1689,1.6615173757477408 -1690,1.426815740703345 -1691,0.24156032594377996 -1692,-2.175631458866534 -1693,-2.167410601213812 -1694,-3.4758420582957754 -1695,-4.792481979512464 -1696,-5.0586367335499585 -1697,-6.265097231529296 -1698,-7.486726217459635 -1699,-7.925278863630166 -1700,-8.832168060034373 -1701,-11.606539031942138 -1702,-11.714047522296338 -1703,-11.56119697509704 -1704,-11.239736801911821 -1705,-10.936824661848384 -1706,-10.093712975418347 -1707,-8.25453830865966 -1708,-7.372108186544872 -1709,-8.823972214759571 -1710,-7.679377188382121 -1711,-6.47069242404204 -1712,-7.948376882615721 -1713,-10.37974762732611 -1714,-8.517846985028742 -1715,-9.937875361675847 -1716,-10.711495651378875 -1717,-11.990707469708235 -1718,-11.358524757861339 -1719,-13.014785606218203 -1720,-12.411939241568772 -1721,-13.48360570850412 -1722,-13.536669545069408 -1723,-13.73989042560831 -1724,-14.719941665520919 -1725,-14.343814990738432 -1726,-16.545488554419315 -1727,-15.217194689023126 -1728,-13.507113039028265 -1729,-13.241355510190365 -1730,-13.626096136978473 -1731,-12.427143562889597 -1732,-9.700417394499745 -1733,-9.59924399315279 -1734,-9.762438836503286 -1735,-10.000139693576383 -1736,-11.142882317503595 -1737,-10.745951277818177 -1738,-12.618636080986185 -1739,-13.274228016196734 -1740,-14.342349375790405 -1741,-16.004060571016282 -1742,-16.642048596123175 -1743,-18.421082773976266 -1744,-18.193261186098464 -1745,-17.55724067168756 -1746,-16.673878007389206 -1747,-16.836326616045852 -1748,-16.870319758380166 -1749,-17.55967473694105 -1750,-16.661761340962663 -1751,-18.322784589863122 -1752,-18.854311095419416 -1753,-18.872049816620653 -1754,-17.69914509712889 -1755,-16.162921154527258 -1756,-14.899468470939059 -1757,-16.318688989316364 -1758,-16.185652338360374 -1759,-16.499626365923337 -1760,-18.247549792851416 -1761,-18.285146994462828 -1762,-21.129410912483173 -1763,-22.486787010543537 -1764,-21.938321188106286 -1765,-21.6512982190799 -1766,-22.42078639341406 -1767,-20.76295441225636 -1768,-20.47069343727433 -1769,-20.831473426974462 -1770,-20.244780971873947 -1771,-20.960339084438694 -1772,-20.487349303427 -1773,-20.71412400132885 -1774,-20.745649637189622 -1775,-19.537363802358374 -1776,-17.35377436180687 -1777,-17.868112642083926 -1778,-17.288747480215275 -1779,-18.04961617965012 -1780,-18.200195874854153 -1781,-19.18176734106096 -1782,-19.669278178040024 -1783,-20.025900452665635 -1784,-20.506564903922676 -1785,-20.128302247417917 -1786,-20.25680577699072 -1787,-19.81789376343317 -1788,-20.666861228743297 -1789,-21.991869894245095 -1790,-21.13681560215385 -1791,-20.281233787532003 -1792,-20.638251620082514 -1793,-19.41062833764377 -1794,-19.379668012336566 -1795,-18.056151129743203 -1796,-18.143122586636853 -1797,-18.14648179558477 -1798,-17.947537929522742 -1799,-17.922392229858772 -1800,-18.29158075536056 -1801,-16.257881536890835 -1802,-15.524881614923972 -1803,-15.779117715167068 -1804,-15.702424037791383 -1805,-17.11436808422095 -1806,-16.258630349225772 -1807,-14.852205638434512 -1808,-14.503819868051249 -1809,-13.801318862575 -1810,-13.388943345177646 -1811,-13.235874746041688 -1812,-12.671510057938185 -1813,-12.582975877312629 -1814,-12.158951993564662 -1815,-12.442144991485298 -1816,-12.533454979819796 -1817,-12.452598183188476 -1818,-11.919605115042456 -1819,-11.213979416980369 -1820,-10.237858205888905 -1821,-10.270377242659974 -1822,-9.53687138587573 -1823,-7.3240217375231715 -1824,-6.863119290359657 -1825,-6.224383720505748 -1826,-5.46834415606949 -1827,-6.0365289630616035 -1828,-5.284427074643191 -1829,-7.123953842669661 -1830,-6.897859763107936 -1831,-7.196403598547894 -1832,-7.521380940241856 -1833,-7.236154992247779 -1834,-5.387440990484251 -1835,-4.669305152415615 -1836,-4.076973205622489 -1837,-6.049702126433849 -1838,-7.435696382949116 -1839,-6.947131721923442 -1840,-8.516037079517504 -1841,-8.437699191088505 -1842,-8.361868175030766 -1843,-7.432544613293677 -1844,-5.67496603949473 -1845,-5.8570616913849465 -1846,-4.753912209632082 -1847,-5.484436277118463 -1848,-5.806431579947111 -1849,-5.721229781470724 -1850,-5.064533662559235 -1851,-6.168077130423091 -1852,-7.234124804663776 -1853,-6.173684289448429 -1854,-7.339439136540207 -1855,-6.369389316835373 -1856,-7.745994363906494 -1857,-7.227936765202726 -1858,-7.483522518275521 -1859,-8.09154543311804 -1860,-6.07722416567648 -1861,-5.291494680292237 -1862,-6.234517008320883 -1863,-7.19407233199129 -1864,-6.769510176680725 -1865,-6.448347578900263 -1866,-8.241696688369673 -1867,-8.967066258554556 -1868,-9.693654977991677 -1869,-9.334713034023007 -1870,-9.186833333412073 -1871,-10.61001882622855 -1872,-11.554984858767199 -1873,-11.64756762080245 -1874,-10.044575742372283 -1875,-11.851043810804697 -1876,-11.270239148796927 -1877,-9.815400247997715 -1878,-11.276063672968784 -1879,-12.147783741259243 -1880,-12.720016975854039 -1881,-11.347824025093113 -1882,-12.902192502888866 -1883,-12.7299141617962 -1884,-13.275194083973355 -1885,-12.678564131300682 -1886,-13.297559423143326 -1887,-12.827670840414546 -1888,-12.516838959306225 -1889,-12.225410944368715 -1890,-12.727291728004932 -1891,-11.582862368341159 -1892,-11.399017233460436 -1893,-11.812068048328339 -1894,-10.921479345484835 -1895,-11.555660512476756 -1896,-13.61695790931323 -1897,-12.779517828247277 -1898,-12.426605510295756 -1899,-11.467928854667981 -1900,-11.661966848755055 -1901,-11.924625176508385 -1902,-13.673317569128992 -1903,-13.389884272211921 -1904,-14.308633954474567 -1905,-14.339697732006789 -1906,-13.261160837122478 -1907,-11.263165438368253 -1908,-11.741081734000318 -1909,-10.485045016128554 -1910,-11.57414572736441 -1911,-11.460693843915674 -1912,-13.345676669514956 -1913,-12.776799039054662 -1914,-12.87888529282633 -1915,-12.604832282784221 -1916,-11.738157848964493 -1917,-11.76286215135348 -1918,-14.309092337231188 -1919,-14.27442011770918 -1920,-14.889673178409298 -1921,-13.997328480956476 -1922,-12.70023393497007 -1923,-11.525218099307903 -1924,-12.373729234494027 -1925,-13.09504426084997 -1926,-12.37189161183711 -1927,-12.875928911242559 -1928,-13.112541382296952 -1929,-13.004961866159025 -1930,-13.399421364371456 -1931,-13.24016092035069 -1932,-13.538860672581611 -1933,-13.539765445360493 -1934,-13.01582240420055 -1935,-13.068165417407087 -1936,-11.091065191285047 -1937,-11.09647846725809 -1938,-11.723380645037947 -1939,-11.956185508134299 -1940,-11.538084690699131 -1941,-12.129380697554579 -1942,-11.327364054546003 -1943,-13.469161203945507 -1944,-13.332569513529707 -1945,-14.662243978628968 -1946,-14.919851960398356 -1947,-16.0674115554759 -1948,-13.952714300068724 -1949,-14.40300851503841 -1950,-14.940754010841312 -1951,-15.28710079227268 -1952,-15.546202911408615 -1953,-13.95100961918987 -1954,-14.432814210024775 -1955,-12.407942591476328 -1956,-11.734108973571637 -1957,-10.368512827113673 -1958,-7.484131205323885 -1959,-7.490217431797742 -1960,-7.80269538739094 -1961,-5.7913244547164116 -1962,-5.964653430009146 -1963,-7.336787107262193 -1964,-4.802996232000865 -1965,-3.6503115574749634 -1966,-3.596925997790589 -1967,-2.546832998192406 -1968,-3.414663736967124 -1969,-4.313140398602098 -1970,-3.301111744008309 -1971,-5.166372178226781 -1972,-2.7125127093444674 -1973,-0.9593422165432641 -1974,-2.094295111636681 -1975,-2.8505971875077094 -1976,-2.6090647811180427 -1977,-3.3248665204286025 -1978,-3.0668834299390704 -1979,-6.279392172803733 -1980,-4.487442542955566 -1981,-3.9643427015330603 -1982,-3.3731219126930094 -1983,-3.1451500933896632 -1984,-2.711802179903091 -1985,-3.0958257396204987 -1986,-3.82094334023443 -1987,-5.515582986542418 -1988,-5.304076558399214 -1989,-5.386283915404625 -1990,-5.021584753659749 -1991,-6.416448348855383 -1992,-5.845111678314395 -1993,-7.022634466742581 -1994,-6.90489836374291 -1995,-4.979435432020148 -1996,-7.429962202846306 -1997,-8.45211579459812 -1998,-7.752262488464931 -1999,-7.844091605504737 -2000,-9.417080670703507 -2001,-11.146246995415861 -2002,-9.651727443903722 -2003,-9.879928174819003 -2004,-11.302318735463313 -2005,-11.10438259739329 -2006,-10.57467198417059 -2007,-11.616906249804497 -2008,-11.449171748476425 -2009,-10.439469869424979 -2010,-9.39202937223931 -2011,-9.281030290411504 -2012,-8.907607696594665 -2013,-10.896554739206273 -2014,-12.110266175405338 -2015,-11.334519130820253 -2016,-11.822293132476815 -2017,-11.835630030609561 -2018,-10.470846985166894 -2019,-11.313704507485028 -2020,-12.785700035335669 -2021,-13.358564611979077 -2022,-12.398195101386271 -2023,-13.617563748597297 -2024,-14.342350100295203 -2025,-13.832480554275353 -2026,-14.800945780267948 -2027,-14.132690753720588 -2028,-14.19545182304656 -2029,-12.819633501822112 -2030,-12.512130685422559 -2031,-14.010119174882265 -2032,-14.631308645400381 -2033,-13.656102585561996 -2034,-15.075985922826073 -2035,-14.088211997963677 -2036,-13.004279016884322 -2037,-14.260038974046997 -2038,-14.965719927053577 -2039,-14.776365281880022 -2040,-13.910940125903767 -2041,-12.463076630864903 -2042,-12.385847692680926 -2043,-10.366038081344962 -2044,-11.65084432353043 -2045,-12.220438528921502 -2046,-10.603993425358885 -2047,-11.062068411999634 -2048,-11.867380904733917 -2049,-9.539111036776287 -2050,-8.291134938743083 -2051,-9.231777737652322 -2052,-8.465020884194622 -2053,-9.076149856963108 -2054,-8.511270412590159 -2055,-7.513680738002674 -2056,-6.994492261383689 -2057,-6.887538668937774 -2058,-6.9407131984151755 -2059,-7.006936907827233 -2060,-7.580058000135151 -2061,-7.582018452243779 -2062,-7.9111052691400605 -2063,-7.311953793904067 -2064,-8.230944873914277 -2065,-8.88172685149162 -2066,-10.350192582053854 -2067,-9.810805801316365 -2068,-10.475772902133476 -2069,-11.174466862896269 -2070,-11.684646551512312 -2071,-12.070977133855676 -2072,-10.54581025075623 -2073,-9.776614207136262 -2074,-10.42128127947948 -2075,-12.912482192067275 -2076,-12.357236733706689 -2077,-12.848131533596536 -2078,-13.81881992991935 -2079,-13.749693488423686 -2080,-13.072407055225682 -2081,-12.604281254557806 -2082,-13.92043262056185 -2083,-16.436196672791787 -2084,-15.846918845109837 -2085,-17.000947580679412 -2086,-18.924723849077232 -2087,-18.982869804696605 -2088,-19.832359464784112 -2089,-19.471599194955424 -2090,-18.371946640332286 -2091,-16.564273737546703 -2092,-18.10197598037945 -2093,-18.595468423686427 -2094,-19.641108506820622 -2095,-19.04296988551576 -2096,-20.692024375368614 -2097,-22.123155308741723 -2098,-23.474200878863414 -2099,-22.936404443163003 -2100,-23.38407804232048 -2101,-23.94314580038336 -2102,-22.240139533926545 -2103,-22.274828841891576 -2104,-23.280093652377357 -2105,-23.153784936259317 -2106,-22.62256591538751 -2107,-23.847108577881645 -2108,-22.641680302115034 -2109,-20.664530048825835 -2110,-19.20947240469269 -2111,-19.968835118914214 -2112,-21.660746406137296 -2113,-22.682476232992205 -2114,-20.044449768032507 -2115,-20.685703717775503 -2116,-19.93500598095089 -2117,-19.565145918612668 -2118,-19.7437950137768 -2119,-18.607105286321556 -2120,-18.727419562738287 -2121,-18.941063700818358 -2122,-18.210532743441867 -2123,-17.88104814320086 -2124,-19.503882304143733 -2125,-18.785186446319617 -2126,-17.82199626305104 -2127,-15.651660486921987 -2128,-14.276470473889677 -2129,-12.864062776506655 -2130,-13.305895965827114 -2131,-12.753221389474733 -2132,-12.043241326042436 -2133,-11.484970581953434 -2134,-12.789338769276194 -2135,-13.696220948490321 -2136,-11.620935336691273 -2137,-10.422833509615627 -2138,-10.115856377309406 -2139,-9.343507428726404 -2140,-11.214408734928831 -2141,-11.769667656942488 -2142,-11.18458803094026 -2143,-10.756812683449112 -2144,-10.136379467734557 -2145,-10.880456408567117 -2146,-9.834026889425417 -2147,-8.757508499105922 -2148,-9.80641377481367 -2149,-8.799397793293902 -2150,-8.843461429787778 -2151,-9.80647831880371 -2152,-10.55288376373189 -2153,-9.894509995972083 -2154,-9.611139633003553 -2155,-8.188406880173215 -2156,-7.1718308378778515 -2157,-6.355701895615111 -2158,-5.575175280523478 -2159,-4.68846698201355 -2160,-5.136227736404871 -2161,-6.194741961165971 -2162,-6.203151535852682 -2163,-6.4338335781515115 -2164,-7.0099893909632405 -2165,-8.200080146833763 -2166,-7.040555163802312 -2167,-6.741538168092718 -2168,-7.320907331435527 -2169,-7.413602892149814 -2170,-5.9703095582310075 -2171,-6.437923842166042 -2172,-7.325082311049284 -2173,-7.346173447266097 -2174,-7.965564115691762 -2175,-7.262218156422791 -2176,-7.793781687105849 -2177,-7.53930292631128 -2178,-8.494158502811283 -2179,-8.358346464722363 -2180,-8.220648310100936 -2181,-7.577024633633988 -2182,-6.178645850880224 -2183,-6.492273325326957 -2184,-7.474314398806089 -2185,-8.695966163076594 -2186,-8.355782393962642 -2187,-8.605282249741423 -2188,-8.0783751521471 -2189,-7.787879190583844 -2190,-7.054107851217182 -2191,-8.915559197627287 -2192,-8.528362940357699 -2193,-10.582018464000608 -2194,-10.428751965561784 -2195,-8.106483708924367 -2196,-8.090620586459426 -2197,-9.364857111727774 -2198,-10.047193673757 -2199,-9.998253735731074 -2200,-9.720534717750013 -2201,-8.877552085013 -2202,-7.954575686520171 -2203,-8.101630536737874 -2204,-7.953888161290211 -2205,-7.609176951903378 -2206,-8.53517060562336 -2207,-8.585163509080173 -2208,-10.077542191984932 -2209,-10.775497795906237 -2210,-11.576163859555114 -2211,-12.268463751501457 -2212,-10.531894053153891 -2213,-11.798287865605058 -2214,-9.71196883130333 -2215,-9.601278109378732 -2216,-10.24716354256784 -2217,-11.986258247031188 -2218,-11.417478966605662 -2219,-10.281523491236745 -2220,-9.887671334631506 -2221,-9.027932202687937 -2222,-8.730037344333653 -2223,-9.236442529248098 -2224,-7.89401330810522 -2225,-7.912735107001319 -2226,-7.174137374275046 -2227,-8.079561395826106 -2228,-8.52439179449082 -2229,-6.927253507200888 -2230,-6.277770301362602 -2231,-7.031364603727768 -2232,-5.795774810554611 -2233,-5.481050127916772 -2234,-4.039221571009605 -2235,-3.510331004327837 -2236,-1.75418082993626 -2237,-0.9379562111586497 -2238,-1.7027167554513971 -2239,-0.44212833002426066 -2240,-0.6105535894725871 -2241,-0.7557794551827484 -2242,-0.3868879199973404 -2243,-1.231909490353603 -2244,-0.3693272979527118 -2245,1.1944226294106912 -2246,-0.16741885130679757 -2247,0.6995983545654163 -2248,1.6595661560100805 -2249,2.5144993708826764 -2250,2.9392509324018117 -2251,5.133586211797256 -2252,5.5396455838492 -2253,6.434502696997959 -2254,6.788146071234533 -2255,6.730924879581037 -2256,6.740540860784171 -2257,6.764357816013146 -2258,4.617106877007644 -2259,6.416496526391558 -2260,5.595904623503549 -2261,6.280695502661466 -2262,5.055792377458182 -2263,3.7389068773102565 -2264,3.471356646708498 -2265,5.711225766457981 -2266,6.695458494339498 -2267,6.63588475098183 -2268,5.46458151277977 -2269,7.0282975923325095 -2270,7.253101797168675 -2271,5.474938027573037 -2272,5.955381975201744 -2273,4.9935867707724055 -2274,6.180476736494721 -2275,6.958565699794631 -2276,7.815873232170268 -2277,7.4679823268941705 -2278,8.834403320740957 -2279,9.850095919484623 -2280,8.154957939354166 -2281,9.613040842443171 -2282,11.176636854000447 -2283,11.730578041351345 -2284,12.630384053737323 -2285,14.250665534294876 -2286,14.529986513430819 -2287,14.42912669466768 -2288,14.230292606555043 -2289,13.683600787048926 -2290,13.330790944077146 -2291,14.603723924378405 -2292,16.648099108052435 -2293,17.27454138737744 -2294,17.956717359834762 -2295,18.37940291095403 -2296,18.599834642875653 -2297,17.235508488550966 -2298,17.77303819975699 -2299,17.0127044493244 -2300,17.15733649867869 -2301,15.933080413921534 -2302,18.24203258231453 -2303,16.773416516307268 -2304,16.755317451399463 -2305,17.467219399295598 -2306,17.348793469348724 -2307,16.4183420864718 -2308,17.09135662860563 -2309,17.22493922905027 -2310,15.861924324307877 -2311,15.11855514012738 -2312,15.484134426919377 -2313,15.824714976369007 -2314,16.140555973483224 -2315,14.79790214980829 -2316,14.552391900112783 -2317,14.420526056801918 -2318,14.188593722968074 -2319,12.385314191290755 -2320,12.796935235406956 -2321,13.10438524173185 -2322,13.809502744468835 -2323,12.854719649964963 -2324,14.048734837111047 -2325,13.019538363281661 -2326,15.779143091577161 -2327,14.339367845951385 -2328,16.317533785147727 -2329,17.15912979771781 -2330,16.614886051492107 -2331,16.503279730306225 -2332,15.900895074504305 -2333,16.3122631250056 -2334,16.142334029839535 -2335,17.747767264718455 -2336,16.139857907004107 -2337,16.215913548989807 -2338,15.506969594327524 -2339,17.009871545610103 -2340,17.061809014777985 -2341,16.607164626619095 -2342,16.233402760655423 -2343,16.703068058650388 -2344,18.164962888713582 -2345,17.95892526897044 -2346,17.259429185188992 -2347,17.04360076361579 -2348,16.657721488883965 -2349,16.322169112140337 -2350,16.6606797633945 -2351,17.498128836291897 -2352,17.06582746256056 -2353,17.36909377895758 -2354,19.664577877795814 -2355,19.118850078716278 -2356,18.510269479267922 -2357,18.97116246596584 -2358,19.876779695499973 -2359,20.449771389937855 -2360,18.632239341414213 -2361,17.831069184941573 -2362,19.218278880346013 -2363,19.351654084681808 -2364,20.472186264334077 -2365,20.585049400555743 -2366,21.593437484165175 -2367,20.401714572258882 -2368,21.37838870002707 -2369,21.102979365129293 -2370,21.146138079711555 -2371,21.724745276681414 -2372,22.722234792297048 -2373,23.914949120933965 -2374,25.125340509113936 -2375,24.790860064699924 -2376,25.163149356988548 -2377,26.484939286141355 -2378,26.664833161577153 -2379,25.628789841158238 -2380,24.72439328290271 -2381,23.821047950870547 -2382,22.5181689851297 -2383,21.75881122188773 -2384,20.761503048405466 -2385,20.59503775146136 -2386,20.250366349154294 -2387,18.966014115833627 -2388,18.875973313497084 -2389,19.578303214813 -2390,20.85184056077798 -2391,20.424537750264875 -2392,20.450241888960054 -2393,19.891961369029513 -2394,20.565028524122933 -2395,19.742829252212463 -2396,20.346277063134256 -2397,21.34135072955692 -2398,20.522616790438917 -2399,19.897392655450474 -2400,20.253827670843542 -2401,20.370892736209896 -2402,22.486424086484856 -2403,24.07310756396935 -2404,24.256763723209467 -2405,24.360592408549433 -2406,26.036991330959 -2407,28.04750122566168 -2408,27.646018127330482 -2409,27.71130385785222 -2410,29.056348403585567 -2411,27.479391921635788 -2412,30.67638746151669 -2413,32.148446086945256 -2414,31.531411855849115 -2415,30.873994503448326 -2416,30.105760487169114 -2417,30.779076712532714 -2418,30.719879278771355 -2419,31.277784064510303 -2420,29.934225319337855 -2421,28.86417044861407 -2422,28.806407131744102 -2423,27.70897920141237 -2424,27.954810475800507 -2425,29.362541285496423 -2426,31.0594394280148 -2427,31.34547916275224 -2428,30.552678448563494 -2429,30.0760010091033 -2430,30.686261970835556 -2431,32.40907171724877 -2432,34.38780754327579 -2433,34.05357506121032 -2434,35.546112076057774 -2435,38.36076627792306 -2436,38.20145774442602 -2437,35.987129597325996 -2438,34.38616178689958 -2439,34.14477987577535 -2440,32.70068457440177 -2441,34.771917780212966 -2442,35.02494165274756 -2443,35.34681836696173 -2444,35.70960021261537 -2445,35.19621778013991 -2446,33.38908503149375 -2447,34.32698707091669 -2448,35.720046693374925 -2449,35.15864425731407 -2450,35.16499683278955 -2451,35.2809146540441 -2452,34.95808304107666 -2453,34.949794919312836 -2454,35.37104459007964 -2455,35.995273764699895 -2456,37.29098337859639 -2457,35.64769020821911 -2458,36.847224309506025 -2459,37.21052112612203 -2460,37.93332854995739 -2461,38.57193048894812 -2462,39.56672018092437 -2463,39.43103453953265 -2464,40.37038525578544 -2465,40.36462828993559 -2466,42.34464629876582 -2467,43.82698774505905 -2468,43.60848974909997 -2469,42.54152008451547 -2470,41.69942621467121 -2471,41.91353669244027 -2472,42.877424648474026 -2473,42.31220460632787 -2474,40.68839020703917 -2475,41.011197673976234 -2476,41.14518892358709 -2477,41.0600730631408 -2478,39.803984686090956 -2479,40.7194833039727 -2480,38.871550138065345 -2481,39.25699195522765 -2482,39.70579731491383 -2483,40.25328659571523 -2484,40.65036695500046 -2485,39.20362631594747 -2486,41.400833545498266 -2487,40.481167273409255 -2488,42.96632119465219 -2489,42.4836655118147 -2490,40.45408008431269 -2491,40.72462383964252 -2492,42.94039645046109 -2493,42.78529845396316 -2494,41.39707432953181 -2495,41.19311649387707 -2496,41.151710397116325 -2497,41.54528100682368 -2498,43.14714147267705 -2499,42.494297509373155 -2500,43.24853712918632 -2501,44.12532892168232 -2502,44.279856075572724 -2503,44.48879072797951 -2504,41.96742419012649 -2505,42.31477644422684 -2506,43.53252726681069 -2507,43.66895346435347 -2508,44.264512667983574 -2509,45.285639791795646 -2510,45.74125667017293 -2511,45.78651441818354 -2512,45.809105100358465 -2513,46.417202366139065 -2514,46.06413933479653 -2515,44.9467768171227 -2516,45.22482319787697 -2517,45.83564946976861 -2518,44.887291109290835 -2519,45.40951221606038 -2520,44.818438315031244 -2521,44.5443273751789 -2522,44.86723591584351 -2523,45.89874732804874 -2524,45.72423544652442 -2525,46.63837915905397 -2526,45.875166266971554 -2527,48.286675269053205 -2528,48.32845184508288 -2529,47.51187804663302 -2530,46.15603790613134 -2531,46.62018580057036 -2532,45.436820758739785 -2533,44.637071721680584 -2534,43.50922161993736 -2535,45.027438427881705 -2536,43.695437478757356 -2537,44.89976297618319 -2538,45.80244269880336 -2539,45.248090443046586 -2540,43.9006422108905 -2541,43.979919219275196 -2542,44.89806623494171 -2543,45.96903840529464 -2544,47.20961591129805 -2545,49.46541681385982 -2546,49.66213992467775 -2547,48.116003860462904 -2548,49.01248209842239 -2549,49.004110696484375 -2550,49.27510673585948 -2551,47.80488390985739 -2552,48.73424727356758 -2553,48.54946429917499 -2554,49.4914722717682 -2555,49.73875156956643 -2556,49.21555334556034 -2557,49.35053173086359 -2558,47.975441575089924 -2559,48.33245597082718 -2560,48.58707176035207 -2561,48.47570777349265 -2562,47.937226003687286 -2563,47.167180720999376 -2564,47.83205042372403 -2565,46.4069926896421 -2566,46.94588194836462 -2567,45.84137495695199 -2568,46.291274505745754 -2569,47.658886211180075 -2570,47.99070178147873 -2571,47.80738489279719 -2572,46.603949054092645 -2573,48.23255190147388 -2574,48.62795473526348 -2575,47.093242645177526 -2576,48.01823292539307 -2577,47.38273800377293 -2578,46.79038488469028 -2579,46.76226107085852 -2580,47.678753889548936 -2581,47.87677193790897 -2582,48.204497544320716 -2583,49.730791468833516 -2584,50.41994375155364 -2585,52.3032499385577 -2586,53.65872813064002 -2587,53.746531090181534 -2588,53.971244237492805 -2589,53.81739941201834 -2590,53.29589904618846 -2591,54.01734395269555 -2592,54.683032075632816 -2593,56.14545873980911 -2594,56.897767482112656 -2595,57.46260286061895 -2596,59.43023615313387 -2597,59.65778975134617 -2598,60.1031839003011 -2599,60.58463121746834 -2600,60.016584649017 -2601,58.26316108811162 -2602,58.84218325726782 -2603,58.948500124493066 -2604,57.73038225858377 -2605,58.0122614137679 -2606,59.34751893392753 -2607,59.43867930523998 -2608,59.20416514312726 -2609,58.48414007583766 -2610,58.300031453976 -2611,60.385478178799204 -2612,60.27906863547061 -2613,61.061209203900034 -2614,62.368506639579785 -2615,61.86959736199025 -2616,62.29851117136539 -2617,62.85979978982195 -2618,63.57057100640255 -2619,64.52314268682767 -2620,64.15086298857388 -2621,64.07989926625297 -2622,62.717901829372366 -2623,63.29988873133438 -2624,63.27166256953417 -2625,62.89642766917514 -2626,62.547878227100135 -2627,62.36137087778986 -2628,63.62438132869257 -2629,62.64185547023403 -2630,62.78187555513246 -2631,61.710340482788396 -2632,62.73718759196063 -2633,61.31325698698001 -2634,61.09693500455322 -2635,62.02637099593995 -2636,61.49815133833402 -2637,61.8170332888082 -2638,61.25515954618633 -2639,60.4723753155672 -2640,59.101467029002116 -2641,60.104064109301646 -2642,59.69916714640482 -2643,58.92983698728924 -2644,59.17155026888369 -2645,59.46689261724458 -2646,59.71951399633173 -2647,60.991589897649014 -2648,61.58643837911766 -2649,60.32451423601086 -2650,61.60033672654973 -2651,62.81850476490708 -2652,62.02866620674091 -2653,61.21752847515383 -2654,62.352075312626226 -2655,63.100667318944986 -2656,62.030078844780505 -2657,61.39743571408629 -2658,60.30627726433417 -2659,61.22413305962215 -2660,60.53419190186327 -2661,58.44413910160908 -2662,58.19631326516777 -2663,58.464860230794805 -2664,59.10314927463972 -2665,58.02954475423396 -2666,55.60077958906028 -2667,56.89421616332466 -2668,57.94089694455157 -2669,58.51257830444886 -2670,58.32824514474408 -2671,57.49443836543351 -2672,56.81383805092678 -2673,57.58020388333906 -2674,58.64191235414198 -2675,58.715320767934166 -2676,58.03730434317829 -2677,59.80845718701578 -2678,61.733370827580245 -2679,61.02203857377713 -2680,61.795405415017875 -2681,61.60208388842576 -2682,61.08945277932955 -2683,61.09367535466873 -2684,61.023610091881594 -2685,59.628273234493875 -2686,59.10698831608335 -2687,57.80691678516915 -2688,58.78701514830943 -2689,58.532713574117125 -2690,56.62553104420233 -2691,57.55771606150682 -2692,58.181020369737574 -2693,58.849522112667245 -2694,57.76579477084539 -2695,59.02816027040093 -2696,58.07359359840907 -2697,57.586627876162034 -2698,59.194924953672164 -2699,61.658350219346474 -2700,62.15851742285698 -2701,62.77634097396737 -2702,63.322795300030734 -2703,64.68322974416196 -2704,64.0376887439203 -2705,64.15815547952715 -2706,64.69689015299063 -2707,64.9927726258423 -2708,65.73103966953163 -2709,64.3869635305072 -2710,65.08168181925868 -2711,64.9291362065831 -2712,65.15114845685217 -2713,65.36931964234346 -2714,65.54160192844716 -2715,64.87270678249911 -2716,63.36742481358797 -2717,63.197559978101765 -2718,63.7775057117974 -2719,63.743675600798724 -2720,62.05806569843515 -2721,58.24779744704936 -2722,57.967972540320964 -2723,57.12682543007763 -2724,57.79907457192738 -2725,57.75384892405634 -2726,56.97463506870313 -2727,57.64184387298065 -2728,56.61204380195322 -2729,57.82861001873622 -2730,57.16671881149111 -2731,56.16566010361091 -2732,56.048201543637006 -2733,54.26549668324012 -2734,54.53700770968098 -2735,54.80866599636302 -2736,54.6266809320801 -2737,55.09732303017154 -2738,56.30120096913446 -2739,56.78474445656153 -2740,54.61286682183355 -2741,55.21707449106448 -2742,54.89141055668301 -2743,55.20934553199501 -2744,55.88594653009706 -2745,57.29310675496148 -2746,56.97629375997863 -2747,58.194095569204805 -2748,58.13653410843388 -2749,58.88833325472879 -2750,57.25998137973892 -2751,57.89796534607653 -2752,58.756857076263344 -2753,58.37899916811282 -2754,58.61293679316399 -2755,57.58505880654519 -2756,57.216492828179376 -2757,56.61271524249241 -2758,56.06487341952378 -2759,57.283741795511496 -2760,57.19539686905714 -2761,56.39575215676377 -2762,55.648060012499634 -2763,56.28813726107456 -2764,56.61248188019397 -2765,57.51525492102614 -2766,56.74092105793943 -2767,56.82935808318911 -2768,56.19045324077446 -2769,55.63956709384616 -2770,54.99416282531141 -2771,54.40453884646519 -2772,52.57761075176491 -2773,51.0662588108098 -2774,50.41650652694333 -2775,49.93584700629264 -2776,49.514690946160165 -2777,48.684474709342204 -2778,47.15800362617601 -2779,48.106302780680025 -2780,47.26608953865054 -2781,47.34460846665788 -2782,47.98204635637246 -2783,47.204318986776855 -2784,46.90230563245321 -2785,48.5391263641051 -2786,48.263823290552565 -2787,47.72250744831472 -2788,48.09978550648439 -2789,48.424454329681105 -2790,47.51455100149159 -2791,47.805962776779886 -2792,47.36292696297487 -2793,47.52806854585459 -2794,48.80251431002624 -2795,49.04795546547672 -2796,50.285755947920585 -2797,49.5893503577144 -2798,50.23203515073554 -2799,51.42712153923381 -2800,50.64910620596029 -2801,50.9545141823246 -2802,49.9765060838622 -2803,50.036433592036936 -2804,50.88454343428994 -2805,50.15384472489314 -2806,51.281609299891 -2807,50.74875600080773 -2808,52.076690810167904 -2809,52.427704112207216 -2810,52.10432523317653 -2811,51.28288758692281 -2812,52.27843989055519 -2813,51.95714622551057 -2814,51.962127816381816 -2815,52.201041342572466 -2816,52.76537604781742 -2817,52.035656172531 -2818,54.77250849936206 -2819,55.352266317740245 -2820,54.84961688442293 -2821,55.40859266980182 -2822,54.28985138580917 -2823,54.65916455447358 -2824,55.371905492345235 -2825,54.93605459368379 -2826,54.224174228843275 -2827,54.247869624072415 -2828,53.650072053695844 -2829,55.23432858255158 -2830,55.127424787130494 -2831,56.3960416463065 -2832,56.60425760746591 -2833,55.52114168838207 -2834,55.75983972354972 -2835,54.067241446273194 -2836,53.910600731352766 -2837,54.52465848018031 -2838,55.06146897625649 -2839,54.7548971757997 -2840,52.601018270909634 -2841,53.46569988800783 -2842,55.57244179074228 -2843,55.51826089960135 -2844,53.16914989737956 -2845,53.000429295810676 -2846,52.874383384067144 -2847,52.84650410775719 -2848,54.214580509119 -2849,53.971605643456535 -2850,53.74539622175196 -2851,54.20893729926528 -2852,53.83820956134059 -2853,54.67372287812923 -2854,53.27082305933867 -2855,52.85321690417567 -2856,54.05330326270286 -2857,54.87267210385733 -2858,55.07944560085692 -2859,54.55936659561571 -2860,54.06255011089506 -2861,55.805816632893425 -2862,56.12847298225759 -2863,56.42662113580036 -2864,55.76966601291709 -2865,55.80331820043997 -2866,55.354823266827395 -2867,55.84922968020983 -2868,54.82883657966478 -2869,55.424722842281085 -2870,55.23121237381883 -2871,55.2505635758772 -2872,54.79538230986207 -2873,55.2892639801679 -2874,53.63528751794054 -2875,52.331623447284656 -2876,52.95061805491832 -2877,52.12418902737431 -2878,51.83752542123239 -2879,49.77799691501734 -2880,50.05013661442764 -2881,49.19271249986342 -2882,47.537399671780435 -2883,48.89636813196219 -2884,50.2747226899082 -2885,50.928126669956924 -2886,50.74515920966523 -2887,51.76178724552437 -2888,51.19939866804378 -2889,50.8726432685185 -2890,48.91704897429264 -2891,48.850883871814226 -2892,49.34997649363626 -2893,49.48180693633355 -2894,51.72710241873523 -2895,51.33680323260414 -2896,52.12973098337663 -2897,51.964224212420845 -2898,53.11517479868911 -2899,53.861287737310604 -2900,53.00249892981184 -2901,51.087210344022594 -2902,52.066736538265495 -2903,50.582533800621015 -2904,51.91642222844715 -2905,52.43979808439126 -2906,52.2383737258719 -2907,52.27573563467499 -2908,52.617974011166005 -2909,55.192455393548336 -2910,55.5189726120944 -2911,55.60083508570359 -2912,55.443091892235934 -2913,55.251776878480065 -2914,55.8546524213338 -2915,55.72277074359261 -2916,54.69231972468835 -2917,55.51281588775178 -2918,54.447917287349746 -2919,55.227842096721254 -2920,54.88745677741534 -2921,54.751032023906546 -2922,55.489809562623144 -2923,55.320931592186376 -2924,53.931118061924074 -2925,54.19732379300511 -2926,51.40335578248663 -2927,50.50440068930031 -2928,51.05233524794653 -2929,51.70577641570395 -2930,50.56315547097893 -2931,51.253334758372425 -2932,53.18044050086561 -2933,52.35375236473696 -2934,53.278542275293184 -2935,54.13879667530968 -2936,53.400795076864 -2937,52.71573951054109 -2938,53.37973011867062 -2939,53.72964617445101 -2940,53.77003140756658 -2941,53.39570002312514 -2942,53.510709051298704 -2943,52.87309855125576 -2944,54.25111008058663 -2945,55.99866369032296 -2946,54.52010580094506 -2947,54.3055150457492 -2948,52.88615202540641 -2949,52.39500122601868 -2950,52.394293171398424 -2951,52.60189666992651 -2952,53.35903951832034 -2953,52.6830060971034 -2954,52.724107047526786 -2955,53.16353714793535 -2956,54.338433740065 -2957,53.80910035936827 -2958,54.8667670017819 -2959,53.97320329891311 -2960,54.209474250500854 -2961,53.80674546952532 -2962,53.03302737112948 -2963,52.95849980086777 -2964,53.30773538722334 -2965,52.75333971812394 -2966,52.22442548924401 -2967,52.96440172568317 -2968,53.570833594226876 -2969,53.99416687180128 -2970,55.908211899121504 -2971,55.5684115859496 -2972,56.04166234705186 -2973,57.88942599753384 -2974,56.637292418589226 -2975,55.83218914671645 -2976,56.32982776237447 -2977,56.411720533889245 -2978,57.537383191990266 -2979,57.552679755533596 -2980,56.49855706874156 -2981,55.59096286260051 -2982,55.94702601738345 -2983,55.39412959132429 -2984,54.57155131342425 -2985,54.677946858968454 -2986,53.49748276916353 -2987,54.76054752699403 -2988,54.3102608493162 -2989,53.73240554075707 -2990,55.71365954422931 -2991,56.01318525727751 -2992,57.37998801650429 -2993,58.19712851491917 -2994,56.89884639349263 -2995,57.10904662495355 -2996,56.51847079138878 -2997,55.728091284639135 -2998,54.27785576946038 -2999,53.45077627447918 -3000,53.12307567287277 -3001,52.36115042013209 -3002,52.18221432836258 -3003,51.50200339791566 -3004,51.4539109278574 -3005,51.27481006713958 -3006,52.19038241839444 -3007,53.37650351608161 -3008,52.98672417679628 -3009,53.19878768025888 -3010,53.93878445315472 -3011,53.321256298028516 -3012,55.64185643190649 -3013,54.953676979732165 -3014,55.84313637317801 -3015,54.92293631464196 -3016,57.92493312326052 -3017,58.597717254505625 -3018,57.82151379307675 -3019,55.349773922991844 -3020,54.450216982682434 -3021,54.85309436229268 -3022,53.13705602929113 -3023,53.20255936792133 -3024,51.25008824359231 -3025,53.17283107245442 -3026,54.22492943931602 -3027,54.48685810104104 -3028,53.66904872047141 -3029,53.38230890417101 -3030,51.80354396385473 -3031,52.92313632351394 -3032,52.00044442929093 -3033,51.15038849751514 -3034,50.235369005877686 -3035,49.944582294934186 -3036,49.36543073186088 -3037,49.37877206544915 -3038,49.75173839963492 -3039,50.07870776265407 -3040,51.299839527150546 -3041,51.034207943649974 -3042,52.590673053320266 -3043,52.857327116930165 -3044,52.87605858196363 -3045,52.45797199367493 -3046,54.15792062339777 -3047,53.433340387193034 -3048,53.52529160518056 -3049,52.445782777452735 -3050,52.43514699759415 -3051,54.48088141449453 -3052,54.810897661869966 -3053,55.993831454944974 -3054,57.116367175249124 -3055,55.704461399263295 -3056,57.23314763800553 -3057,58.22765168717535 -3058,57.13083559684305 -3059,57.65670083997779 -3060,59.054980307409124 -3061,59.537799353633346 -3062,60.34361456517527 -3063,59.49012925943313 -3064,58.590785944448506 -3065,57.89305279895264 -3066,58.11088158788595 -3067,55.97568810065745 -3068,56.904472251052454 -3069,57.78654258421064 -3070,57.47693640660281 -3071,57.67734207533821 -3072,57.67742602067755 -3073,58.391976789892446 -3074,56.57544313710779 -3075,56.42893169412758 -3076,56.805478515548515 -3077,56.09987599403837 -3078,55.861723146046444 -3079,56.612336354355314 -3080,57.266409950587644 -3081,57.877761401209156 -3082,58.2586561805084 -3083,58.415613479016656 -3084,56.703434416451614 -3085,57.97470394272062 -3086,58.373729925879296 -3087,56.56108058317062 -3088,57.07133248059587 -3089,58.21955542194427 -3090,58.59424862106548 -3091,58.97012262208461 -3092,58.02516784168723 -3093,55.90404264556863 -3094,56.153361289643726 -3095,56.783840360084376 -3096,55.27819387810212 -3097,55.23796857553339 -3098,54.094071837644435 -3099,54.80580680104055 -3100,54.2763733420453 -3101,52.773251342118556 -3102,53.01361630825607 -3103,53.285102213437995 -3104,53.09493831127834 -3105,53.27460607569052 -3106,53.08310994332001 -3107,52.52655539804033 -3108,51.750205651699844 -3109,52.58349522350467 -3110,51.98977823256726 -3111,50.315941055815095 -3112,49.44918853151936 -3113,48.73832767845086 -3114,49.59193137204458 -3115,48.80494511434737 -3116,49.45471568399605 -3117,49.10663410647862 -3118,48.21497430737818 -3119,50.14801376664931 -3120,49.51918378551198 -3121,48.0178466659757 -3122,48.494092317634205 -3123,49.21417531300379 -3124,47.85506232312619 -3125,46.12272620438755 -3126,44.81161707314537 -3127,45.963328218681234 -3128,46.58847503871132 -3129,47.8385426135219 -3130,46.87639008290736 -3131,47.7219926872305 -3132,47.56455949866133 -3133,44.68254555081761 -3134,44.92536080147415 -3135,45.897384154301726 -3136,46.51522720264303 -3137,44.34243638452453 -3138,43.98968863440784 -3139,43.669823847015465 -3140,43.12948198357268 -3141,41.64292647781375 -3142,40.71702863982968 -3143,40.75364419214521 -3144,41.29428241764631 -3145,39.020393402593065 -3146,37.434160903832115 -3147,37.581089084045395 -3148,38.49104892907732 -3149,40.45730310160922 -3150,40.15291246978766 -3151,39.32972084936313 -3152,39.17790388332233 -3153,38.75661186480296 -3154,37.68000752253882 -3155,38.57802454673343 -3156,38.069684222103646 -3157,36.90698729823876 -3158,36.61534031433637 -3159,36.36156382700621 -3160,37.08894478219244 -3161,37.26772639639201 -3162,37.19355138358908 -3163,36.61518941156872 -3164,35.649173043753294 -3165,35.03638120957423 -3166,35.851162233888715 -3167,33.76348012247295 -3168,34.05771584947424 -3169,34.50943812888203 -3170,33.293032514452406 -3171,32.33522719634243 -3172,30.806763940889958 -3173,31.672525222814603 -3174,31.55123667768427 -3175,31.290142403925287 -3176,31.563502442473673 -3177,31.938676778288894 -3178,30.80901317169882 -3179,30.84383740304339 -3180,29.34610847731224 -3181,30.05007896689855 -3182,30.7335026465592 -3183,30.29648096965154 -3184,31.249997970033 -3185,30.194174455160265 -3186,30.52792384845577 -3187,32.122239010126606 -3188,30.546033383312896 -3189,31.43673644313434 -3190,30.098011929207875 -3191,30.397909940468512 -3192,30.35223307413139 -3193,29.69518927631807 -3194,29.671059318865357 -3195,30.895337043097115 -3196,30.20789221655007 -3197,30.544269781253643 -3198,31.15477254462909 -3199,32.07329022119369 -3200,31.764365243855895 -3201,32.15150214858044 -3202,31.61643546096503 -3203,30.283443613525552 -3204,28.831883364427444 -3205,27.435202644597148 -3206,27.837457939674987 -3207,28.473696450300082 -3208,29.80949813503946 -3209,30.746575810460463 -3210,29.363166511956493 -3211,29.847599765739893 -3212,29.15326202743236 -3213,28.186434974811284 -3214,27.8548555655861 -3215,28.533628711654202 -3216,30.13899570292439 -3217,30.209821526153423 -3218,30.498149746033604 -3219,30.036928848673483 -3220,29.159978221777852 -3221,29.443410579206315 -3222,28.760710851058224 -3223,30.338798024707135 -3224,32.458873447053364 -3225,29.74843695960309 -3226,28.712090413295257 -3227,28.970081028960383 -3228,27.459696381191144 -3229,28.2008278579464 -3230,27.93144225433969 -3231,28.381859980722012 -3232,27.769825388709414 -3233,28.972442312155543 -3234,29.20191331932598 -3235,28.208956654754143 -3236,27.521460000044197 -3237,25.657637826372167 -3238,25.0174659001855 -3239,23.63541477055115 -3240,24.51004586974803 -3241,23.940636192385476 -3242,22.76979212099261 -3243,22.575009464282427 -3244,23.583298428822022 -3245,23.602218641856556 -3246,22.730319029696467 -3247,23.04625767653089 -3248,22.992391261942586 -3249,22.798463571861078 -3250,24.359399981138036 -3251,24.230507747884978 -3252,23.052402222876548 -3253,21.844138492886863 -3254,21.752019124706244 -3255,21.189420977583275 -3256,21.790434041201326 -3257,20.923584262742146 -3258,19.60767154169954 -3259,20.317031091414997 -3260,20.92890423386617 -3261,20.59872292452211 -3262,21.43291854908104 -3263,22.2617523474141 -3264,23.182503463222663 -3265,23.55381914139774 -3266,22.77555573726663 -3267,23.972233863026613 -3268,23.283714761933247 -3269,23.155662992850758 -3270,23.417544636119693 -3271,23.97423221110935 -3272,21.09290549614087 -3273,21.268315178046493 -3274,20.6852098944256 -3275,20.49048817646977 -3276,20.739576311027317 -3277,19.78457776206021 -3278,20.862458021996137 -3279,19.918206101933407 -3280,20.59909942431287 -3281,19.432235354459408 -3282,21.07408239629115 -3283,20.78589699124832 -3284,19.113107165298523 -3285,19.43572037816089 -3286,16.263513775058446 -3287,15.356101664232716 -3288,16.32322245888872 -3289,15.136178099123855 -3290,14.904025849953554 -3291,14.11999393437861 -3292,14.227331042228139 -3293,12.781306906067295 -3294,12.411099443251887 -3295,15.004145258877866 -3296,15.330620151390002 -3297,14.861967897825348 -3298,14.144934561268526 -3299,14.300770904886708 -3300,12.460424739197405 -3301,11.954439548175463 -3302,10.804194139789288 -3303,9.192485365119062 -3304,8.380762753155544 -3305,8.550979676383657 -3306,8.027546764440388 -3307,7.09366808536009 -3308,6.599538786006662 -3309,7.269402275256281 -3310,7.415501497154743 -3311,8.352300319252091 -3312,9.929420886808108 -3313,9.623319986735252 -3314,9.518667307176987 -3315,8.681716949664187 -3316,9.79831929172682 -3317,10.678270143889542 -3318,10.895321145332924 -3319,11.130208541140908 -3320,10.873876687626579 -3321,10.971805752613472 -3322,11.91734636126119 -3323,11.94266662839351 -3324,11.809050259367194 -3325,13.027270235350736 -3326,11.564066966892499 -3327,11.298199303840484 -3328,10.986046464874427 -3329,11.286183730956562 -3330,9.649530160991475 -3331,8.956474061526324 -3332,9.903391518134274 -3333,10.073494464587553 -3334,10.921636496506625 -3335,11.148629157511856 -3336,11.199518460876954 -3337,11.413467026001353 -3338,13.222309442209122 -3339,13.510301103955532 -3340,14.278205528459797 -3341,14.395208589497953 -3342,16.865752859968758 -3343,18.583636074995514 -3344,17.3350438283162 -3345,16.19319936177322 -3346,16.222960755676723 -3347,15.488286334777099 -3348,15.309735496168832 -3349,15.600708385829227 -3350,16.136752145850952 -3351,16.623547689452703 -3352,15.361612120170296 -3353,16.23171654088544 -3354,16.070192312585803 -3355,14.588789116958862 -3356,15.261717858843216 -3357,15.92859499346924 -3358,16.344730583555595 -3359,14.956889011464158 -3360,13.542380078518036 -3361,15.414619716719018 -3362,13.710062780698598 -3363,12.744042243321077 -3364,13.48361329551421 -3365,14.787499797052979 -3366,17.125859803775185 -3367,18.051191842906565 -3368,20.30387008143874 -3369,20.68269097994971 -3370,20.879766846787522 -3371,21.115441834799093 -3372,21.356956262033037 -3373,22.28236787196534 -3374,22.4710572864747 -3375,22.211720889841935 -3376,23.18503928166409 -3377,22.991950338453368 -3378,23.133576429264053 -3379,23.450381040175486 -3380,22.663011075983597 -3381,23.17987711577221 -3382,24.94096963433231 -3383,24.92390882113753 -3384,24.552648985184405 -3385,24.730886628172062 -3386,24.190239520910207 -3387,24.09628159684465 -3388,23.57396278909092 -3389,23.771484555358704 -3390,25.371591489735046 -3391,25.751449620171215 -3392,25.27410801708588 -3393,26.154595673689997 -3394,26.206241974191162 -3395,27.55352647494909 -3396,26.24257628881399 -3397,26.73755075280444 -3398,27.25919026524348 -3399,28.46361438513529 -3400,27.81380282999421 -3401,24.781704965188833 -3402,25.389803528389166 -3403,26.169380981296875 -3404,27.539268602201766 -3405,27.05634773208558 -3406,26.682751519526363 -3407,27.337635010262265 -3408,26.90657304095283 -3409,26.727263210963066 -3410,27.826711966584416 -3411,27.854607341326624 -3412,27.98418818041584 -3413,28.705320687472867 -3414,28.850416363175853 -3415,28.732895586806382 -3416,30.339017348633607 -3417,30.230862038028796 -3418,30.365788903431316 -3419,30.631491290503096 -3420,29.829914295383023 -3421,28.920275097896678 -3422,27.403577496304752 -3423,26.05995135930737 -3424,27.74117075583449 -3425,28.662391503816924 -3426,29.2948593488458 -3427,29.532633239201807 -3428,27.55717804928948 -3429,27.58240147863858 -3430,29.856969557859635 -3431,29.228902491605023 -3432,29.17578298378057 -3433,29.31952454223121 -3434,29.003345707046662 -3435,29.492480937851322 -3436,28.19319627579948 -3437,28.69532697170051 -3438,30.251613739194404 -3439,31.850137411710435 -3440,30.583033262522243 -3441,31.823201808290747 -3442,32.872183558740836 -3443,35.13350709455234 -3444,36.37806248519731 -3445,36.655644378784125 -3446,37.02313849763166 -3447,37.04704233807632 -3448,38.87015432893879 -3449,37.79915398644409 -3450,37.26351893373345 -3451,39.55851420763122 -3452,37.928108646082336 -3453,38.5556680480397 -3454,37.673068577736636 -3455,36.50089069086859 -3456,38.17301638455134 -3457,38.71179595765344 -3458,37.845888200676505 -3459,37.82975749424076 -3460,38.966872182287176 -3461,38.018976039257026 -3462,38.708154414629654 -3463,39.20364747021783 -3464,40.2929807158999 -3465,40.294378791284466 -3466,38.68867511278517 -3467,38.021396834933704 -3468,36.272773305625556 -3469,35.80381662564519 -3470,33.93489447670905 -3471,33.866406263143695 -3472,32.33929744547674 -3473,33.64303249498142 -3474,33.88793151375503 -3475,33.33131743826715 -3476,34.0121416700805 -3477,35.21305738255714 -3478,34.193953876251754 -3479,32.62876692157573 -3480,32.322533594758944 -3481,31.515871967373183 -3482,32.12232913650003 -3483,32.154727848861974 -3484,32.4609256018899 -3485,31.90149525633977 -3486,33.36105052981382 -3487,32.13129450007525 -3488,31.645448206080285 -3489,31.247123357546922 -3490,30.917913912839573 -3491,29.59956897666295 -3492,29.246842742166482 -3493,29.767635022419004 -3494,28.978321005880293 -3495,28.542701299221893 -3496,29.265364701840415 -3497,28.991072360713098 -3498,29.884420313166334 -3499,29.122747449054984 -3500,29.82602464619365 -3501,30.897251161819096 -3502,32.26841758152023 -3503,32.23508477698637 -3504,31.976243596571035 -3505,31.323933002259174 -3506,29.942660159310567 -3507,29.164555977113476 -3508,29.695833269966332 -3509,31.028006641767526 -3510,31.433707501428184 -3511,30.373655400339807 -3512,27.70452065163207 -3513,28.175021506111037 -3514,28.350616047589206 -3515,28.86938084212784 -3516,28.738278104033206 -3517,28.96866178562193 -3518,28.645528786245965 -3519,27.731431315337456 -3520,28.501181046705153 -3521,30.37740751637815 -3522,30.905291022330047 -3523,31.30359920540461 -3524,30.937329995478613 -3525,30.948822962714658 -3526,30.854400176853787 -3527,29.631795082207887 -3528,30.88238249654686 -3529,30.583010519599735 -3530,31.562398092208117 -3531,30.95533994225175 -3532,32.057344844110865 -3533,32.140160000218614 -3534,31.973978414247156 -3535,32.02043956287223 -3536,33.71246166965345 -3537,34.2894288070198 -3538,35.3692465760574 -3539,36.065636266924216 -3540,35.760894275093925 -3541,33.700983961385745 -3542,31.068333246293186 -3543,30.458168341208413 -3544,30.97587978100293 -3545,30.67620594926099 -3546,30.181043903750215 -3547,29.907300335409243 -3548,29.474765507461218 -3549,30.676770657774497 -3550,30.486485995273163 -3551,31.57455687842199 -3552,30.598810767778623 -3553,30.327524166189797 -3554,31.032334252510648 -3555,33.06194606188868 -3556,32.799455091863976 -3557,30.601409339711267 -3558,31.089973028552944 -3559,31.533862614877332 -3560,32.502861928350406 -3561,31.95589645788288 -3562,32.552384191050194 -3563,33.68620104696517 -3564,34.653369775011875 -3565,34.95166759999053 -3566,35.128613274595395 -3567,35.414265406430424 -3568,35.726706928936444 -3569,35.95392256116225 -3570,34.494785941846324 -3571,34.03049973764592 -3572,32.70764544680062 -3573,30.22119035581776 -3574,31.65111538022485 -3575,32.93182925919252 -3576,31.835034632728714 -3577,31.827719595500486 -3578,30.705406791422632 -3579,31.255713659871763 -3580,31.276929539161 -3581,29.50296281475012 -3582,29.624851763670335 -3583,30.262223821103056 -3584,29.21870302298587 -3585,30.1388794329626 -3586,30.662469525193682 -3587,30.894820257163445 -3588,33.128181023942304 -3589,32.742227332441985 -3590,32.85200750961188 -3591,32.002735101198105 -3592,33.27907717788233 -3593,34.51929730289986 -3594,35.429857655969556 -3595,38.00386780985311 -3596,39.024493702944426 -3597,38.01947139615742 -3598,38.85554856184288 -3599,39.73055782687042 -3600,38.93269298961559 -3601,38.352135796969954 -3602,37.50369947798057 -3603,38.5746323422686 -3604,38.0334316363698 -3605,36.803405168595056 -3606,37.52199092687683 -3607,37.35916921341741 -3608,36.3641115605567 -3609,35.465733390270245 -3610,35.68746021497111 -3611,35.062179328696814 -3612,36.724902575995316 -3613,36.11193986025999 -3614,35.913332539123594 -3615,37.621210545628536 -3616,36.74439135701896 -3617,36.99071788176295 -3618,37.32306213645829 -3619,38.20643425141885 -3620,38.31581849398149 -3621,38.91989425777562 -3622,37.26472442083714 -3623,37.21927459213176 -3624,38.1039794005904 -3625,37.817256830121245 -3626,37.85924698219752 -3627,37.730233595568016 -3628,37.54256261601074 -3629,37.307759852319464 -3630,35.43161844366308 -3631,37.93763696039909 -3632,36.936768546872145 -3633,37.16127570544626 -3634,36.90687474966668 -3635,37.94271573462009 -3636,37.441736945151305 -3637,37.42153978589844 -3638,37.172007255787285 -3639,36.0035582828398 -3640,33.940540902564884 -3641,33.99033704634912 -3642,35.15452894219756 -3643,35.66928963191883 -3644,34.46670371227438 -3645,34.26057072966705 -3646,34.42706821313596 -3647,34.19006485908203 -3648,36.570697424963676 -3649,38.19721308773568 -3650,39.34094403374456 -3651,39.232272623287685 -3652,39.89213146114213 -3653,38.590472706376445 -3654,40.09645721046314 -3655,38.96573176760969 -3656,37.35843615268858 -3657,36.66322319143367 -3658,35.65454566037082 -3659,36.40275090216017 -3660,37.14333344018765 -3661,37.77670451717408 -3662,37.427035182129245 -3663,38.8746843838514 -3664,38.19403349501075 -3665,37.59531528499238 -3666,37.07581083306422 -3667,36.579723021335646 -3668,34.555745454785836 -3669,32.65128748490464 -3670,31.36224555408132 -3671,31.10916843728798 -3672,29.637958690092685 -3673,30.496233072780573 -3674,29.20208183656712 -3675,29.421497816372245 -3676,30.108464379585286 -3677,33.54538206222709 -3678,34.48515699559857 -3679,34.40122883686906 -3680,34.035626647812705 -3681,33.535523191631725 -3682,34.08623411439647 -3683,34.244711768590065 -3684,32.36446404724984 -3685,32.28755093449643 -3686,32.61079387015812 -3687,31.081571625269536 -3688,29.795694065094263 -3689,27.694550181658858 -3690,27.3424575175022 -3691,27.312577901823424 -3692,26.21920993326431 -3693,25.167921300918472 -3694,25.30769536468967 -3695,25.087630763450882 -3696,27.306706843067367 -3697,24.81700408766328 -3698,25.318997837592722 -3699,26.522209059387873 -3700,29.16668469212475 -3701,28.806345553180158 -3702,27.91060153576268 -3703,26.555014116405427 -3704,25.780708262022806 -3705,25.949470280448082 -3706,25.672185991667956 -3707,26.763786266672074 -3708,26.94155344611696 -3709,26.84600940960757 -3710,25.80244958733863 -3711,25.762250822503646 -3712,25.924196056142545 -3713,24.87512923376663 -3714,24.41663779926019 -3715,23.11654129267319 -3716,23.829627693189586 -3717,23.843860055830415 -3718,24.748140673710928 -3719,25.104649874481343 -3720,25.2131087996349 -3721,25.7491349917677 -3722,25.812790734491657 -3723,25.715553461585635 -3724,25.373244534037752 -3725,24.76053697081123 -3726,23.326190311644837 -3727,23.53588159863323 -3728,23.488955201235633 -3729,21.988735334041138 -3730,21.561873772042894 -3731,22.63261021276228 -3732,19.660612154610266 -3733,19.5951094859239 -3734,20.431826153939017 -3735,19.865080563712482 -3736,19.739232952771996 -3737,20.195639749790192 -3738,20.88780186067529 -3739,22.69833409344116 -3740,22.31455175122048 -3741,23.083634290457343 -3742,22.60256386196191 -3743,23.77410624483941 -3744,22.383851969916183 -3745,22.25858160998791 -3746,22.92631711900159 -3747,21.89911898628011 -3748,20.934997976499943 -3749,22.157317886765387 -3750,23.04367561713794 -3751,24.521809994779762 -3752,24.464244543060886 -3753,22.89964162662747 -3754,23.790050864321454 -3755,23.216477627184094 -3756,23.163901360131213 -3757,23.45501073397648 -3758,23.01972426479719 -3759,21.405525381885596 -3760,21.250656890111458 -3761,22.57053179925769 -3762,22.598454756700047 -3763,22.61720344956758 -3764,21.07224426334992 -3765,21.292208151584305 -3766,21.845292503786435 -3767,21.46267119329884 -3768,21.647610711858235 -3769,21.80113899038192 -3770,21.305294565800054 -3771,20.214968021859175 -3772,19.73959852590014 -3773,21.528757832182297 -3774,22.68484106821735 -3775,23.89244472952763 -3776,25.59095811455731 -3777,27.158751319160796 -3778,27.229661602484825 -3779,26.23824703511578 -3780,26.041514835792846 -3781,23.682086325214946 -3782,22.49040769365496 -3783,22.061370444160435 -3784,21.015121708377702 -3785,21.824508049135932 -3786,23.225326987292988 -3787,21.417517937360486 -3788,21.295242564030232 -3789,21.931972369238157 -3790,21.801336466643946 -3791,22.037104391076742 -3792,22.489599931814485 -3793,23.36839716410649 -3794,23.06144638152167 -3795,23.121914982087034 -3796,23.285614537837247 -3797,21.941563309051368 -3798,22.160357052450966 -3799,20.9559544562112 -3800,21.402530829991612 -3801,21.44649476401162 -3802,22.041331809739347 -3803,23.675772056231715 -3804,24.757208964646246 -3805,24.734450794807337 -3806,25.280136534600356 -3807,25.61814331021839 -3808,23.996589860468323 -3809,24.549253366280016 -3810,24.87270107912195 -3811,24.387725800205576 -3812,24.87095999178159 -3813,22.947866459809205 -3814,23.14523524493084 -3815,23.392276473580687 -3816,23.365236568707196 -3817,24.336440776087368 -3818,25.426772739698666 -3819,24.644945888093805 -3820,24.44957283317954 -3821,24.70675210193505 -3822,26.03950898034448 -3823,24.505177099307566 -3824,25.312368706262212 -3825,24.97446203507234 -3826,22.828840359474608 -3827,24.424144224455297 -3828,23.57968786406779 -3829,22.48920629663047 -3830,21.875753078875572 -3831,21.425259470929316 -3832,21.430740853308485 -3833,21.709503949074495 -3834,22.349255364748906 -3835,23.146436472658387 -3836,22.59166722754914 -3837,23.320211214200803 -3838,23.49538853685759 -3839,24.128540478078524 -3840,23.057808898467755 -3841,25.17581277364253 -3842,26.7259308971849 -3843,26.778040966781937 -3844,26.595432570373447 -3845,26.79431453886317 -3846,27.36529889584574 -3847,27.745218011535346 -3848,28.08237631730072 -3849,28.003136195351573 -3850,28.307771808754573 -3851,29.046992871334677 -3852,28.086942402071397 -3853,28.21287839248035 -3854,30.429470928727014 -3855,29.392586117065157 -3856,29.092353551977382 -3857,26.863960664595247 -3858,26.121785534558278 -3859,27.816577442857163 -3860,29.913211328848323 -3861,29.915955720423852 -3862,28.591413483419913 -3863,27.968954071213062 -3864,26.449073844400967 -3865,25.703753178557065 -3866,26.604287767470534 -3867,26.21263086377484 -3868,25.284244368807315 -3869,24.89903651195897 -3870,25.27545218832256 -3871,25.475255669077168 -3872,25.275906040279793 -3873,23.57252740330582 -3874,23.678624498739413 -3875,26.05738525266789 -3876,24.05000612287836 -3877,25.10536205979524 -3878,27.101662306769423 -3879,27.834108995693764 -3880,27.594091536200548 -3881,27.784471186582476 -3882,25.753964479341395 -3883,26.231642205202746 -3884,27.493067963482687 -3885,28.37064372797652 -3886,28.580361384080827 -3887,29.071138244357886 -3888,28.020419021636027 -3889,25.843441673252222 -3890,26.472344891652757 -3891,25.031620109417055 -3892,25.33882949334645 -3893,24.53823272482078 -3894,25.213423330820177 -3895,24.677990629609774 -3896,23.71474955955588 -3897,23.95093657084556 -3898,25.448896270922152 -3899,26.30090200668411 -3900,25.008583947149504 -3901,24.946030534474396 -3902,26.926758995407067 -3903,26.924025220342724 -3904,24.36585583176676 -3905,25.04080929296299 -3906,25.872847676032524 -3907,25.49958384890165 -3908,23.122374926277153 -3909,21.64219491940889 -3910,22.04147910025326 -3911,22.06162215838847 -3912,21.918329210163698 -3913,22.610604075778397 -3914,23.893924097015642 -3915,23.888144196998184 -3916,23.032411487112277 -3917,22.62184585017394 -3918,22.59282158659944 -3919,22.995175060891043 -3920,23.56860031866292 -3921,22.536660469087543 -3922,22.598369281707814 -3923,22.314571254435688 -3924,23.04462391879189 -3925,22.644286688468558 -3926,22.810379775131594 -3927,22.572609309805078 -3928,23.295422265631654 -3929,23.156640926830406 -3930,22.676476012752975 -3931,22.791201754728434 -3932,22.985777591767526 -3933,23.767567681522916 -3934,24.964356532815852 -3935,27.04700687741282 -3936,28.323708398409924 -3937,27.807528314447353 -3938,28.968311661882836 -3939,28.718744428028614 -3940,28.853338132212563 -3941,28.410658777870978 -3942,29.40873495253955 -3943,28.62687215413355 -3944,28.29518605767774 -3945,29.042164110709887 -3946,28.88851076808431 -3947,29.85098502722596 -3948,29.016634550221646 -3949,28.277200461137717 -3950,27.334552046340495 -3951,28.174885290108957 -3952,29.223318172285357 -3953,27.956932424789603 -3954,28.111446872448624 -3955,28.195029879219152 -3956,28.053262205176523 -3957,28.854828630730722 -3958,28.510735731861242 -3959,29.590398862159418 -3960,29.891558046895845 -3961,30.78776868341592 -3962,30.114480187264345 -3963,28.073953082600852 -3964,27.07232292178305 -3965,28.225161297726146 -3966,29.08055608778461 -3967,27.504145405466446 -3968,27.10924215672944 -3969,26.30398336583276 -3970,26.33252329367913 -3971,26.222714994213117 -3972,25.765371409786557 -3973,26.462171167104003 -3974,26.328728278116238 -3975,25.058084919825777 -3976,24.995533080483067 -3977,27.331063426760476 -3978,26.5375496612135 -3979,27.328601696812196 -3980,27.96735978385348 -3981,29.28267742723392 -3982,30.12482852233668 -3983,29.59415183548842 -3984,29.183895489091608 -3985,28.136405847928355 -3986,28.016743534887617 -3987,29.73910020129707 -3988,30.41031507403927 -3989,30.015619329781444 -3990,30.66635229728146 -3991,30.580679999488144 -3992,30.447830351826447 -3993,30.471125169194842 -3994,32.135082144584395 -3995,30.68009398687387 -3996,30.438438638853544 -3997,30.51073051480365 -3998,31.74903408614351 -3999,32.088960634844945 -4000,33.50298047110862 -4001,34.38066665685251 -4002,33.27070118651933 -4003,33.099672793029406 -4004,31.207562261367872 -4005,32.1434129430446 -4006,31.45384985682167 -4007,30.78489097600653 -4008,30.06039467544627 -4009,30.88678822383939 -4010,32.4941587342564 -4011,32.65945570481714 -4012,31.61664990972272 -4013,32.0312639862484 -4014,31.709875957023936 -4015,30.85895483789532 -4016,31.19939493325201 -4017,32.96392404325115 -4018,32.81621883179829 -4019,32.78495577695207 -4020,33.49145334389546 -4021,33.54967009715763 -4022,32.742531608489436 -4023,31.50554384808154 -4024,30.912154761307367 -4025,31.036168063005604 -4026,30.294114898432728 -4027,27.730663569984458 -4028,28.113767257697532 -4029,27.291824784563595 -4030,28.31409209256211 -4031,29.959829866552873 -4032,29.10710035271346 -4033,30.186538821183603 -4034,30.769338203725507 -4035,32.84482635204664 -4036,33.26290740940864 -4037,34.13609148678867 -4038,34.0654190934272 -4039,34.57210627422571 -4040,35.55975547355971 -4041,34.64193375461841 -4042,34.15190619959001 -4043,34.67826985895974 -4044,35.714572410350954 -4045,34.80018993470561 -4046,35.111325062482344 -4047,35.9944206083465 -4048,35.11095598944262 -4049,34.93454717588902 -4050,33.83463939843188 -4051,33.57459323687122 -4052,33.13066356834399 -4053,33.26161126849772 -4054,32.20705694944392 -4055,30.62719231225789 -4056,30.25189367939884 -4057,30.72706809753761 -4058,29.734312348689098 -4059,28.98655833312763 -4060,30.76957118838605 -4061,30.507024826170756 -4062,31.03173915808754 -4063,31.275832777367842 -4064,30.56860807641788 -4065,29.8866135857781 -4066,29.839881476967374 -4067,29.455312668447096 -4068,29.420647896496003 -4069,29.1679531695978 -4070,30.28775806001491 -4071,30.966642738711315 -4072,31.710225754643734 -4073,30.85358891103959 -4074,30.627965466484195 -4075,28.107861351028735 -4076,28.417554664653736 -4077,30.18002515020375 -4078,30.08275069265419 -4079,29.741030588516562 -4080,28.93418492754331 -4081,30.040854875974123 -4082,31.03185638714335 -4083,30.729406369033487 -4084,31.820434464087523 -4085,33.41275961257175 -4086,32.016496696837564 -4087,32.70031326540811 -4088,33.157205700391636 -4089,31.49167522224144 -4090,32.9348245638803 -4091,31.13384108012099 -4092,31.932200069029896 -4093,33.73823695546593 -4094,32.297429352379126 -4095,32.677733662824444 -4096,33.6706328020744 -4097,33.504925789074186 -4098,32.73723967861697 -4099,33.12776479082437 -4100,32.532469395390535 -4101,33.71575409709479 -4102,34.24999965001242 -4103,34.60111370138286 -4104,34.532057902510154 -4105,35.84563163464267 -4106,35.481919124038775 -4107,33.65245949620452 -4108,34.01574122300476 -4109,34.82485605342109 -4110,33.33667998414781 -4111,32.47137954159924 -4112,34.00014964556151 -4113,34.74026389948607 -4114,33.47711691474427 -4115,32.79005127875262 -4116,31.459765577566067 -4117,30.971037700307253 -4118,30.699592124536704 -4119,29.755587303734636 -4120,28.215489484796375 -4121,26.810950721480186 -4122,25.637193406920577 -4123,25.187865676032928 -4124,25.250534005552367 -4125,24.03327643903345 -4126,25.218305991188938 -4127,26.784892443532048 -4128,24.892488047173703 -4129,23.98288981660864 -4130,25.03153399125246 -4131,23.20327057401307 -4132,23.712751723266408 -4133,24.13125128106694 -4134,23.35024912172205 -4135,23.4644326443883 -4136,23.75276146202497 -4137,25.048560125974696 -4138,23.578463795562737 -4139,23.889004145248865 -4140,24.379922070717654 -4141,24.212429783791507 -4142,23.604221963600615 -4143,22.332790173776026 -4144,23.12347119373099 -4145,22.934174391066097 -4146,22.84365665123057 -4147,21.356362551795637 -4148,20.413869317814942 -4149,20.630883819540337 -4150,20.45613537652428 -4151,20.788559499809363 -4152,21.960678390924794 -4153,21.7606290094099 -4154,19.903096624022872 -4155,19.855981423096367 -4156,19.997133033099598 -4157,20.06928425921568 -4158,21.330015526655163 -4159,19.987915935205223 -4160,20.713222543438697 -4161,20.23638677354119 -4162,21.151894099146148 -4163,23.091204966986247 -4164,22.953323630476405 -4165,23.641829669961023 -4166,23.8249872751644 -4167,25.437270484840585 -4168,24.561328254277782 -4169,23.155745535856873 -4170,22.363272746409564 -4171,20.586181384243876 -4172,17.421629055005557 -4173,17.285830575415712 -4174,17.13835664007913 -4175,17.106021639144846 -4176,18.58588091833549 -4177,18.716862226955055 -4178,18.101992979807527 -4179,17.211489288924827 -4180,16.159476142840166 -4181,16.16009738686247 -4182,16.987031671469392 -4183,16.91451577134775 -4184,16.37444510178852 -4185,17.11575803692057 -4186,16.196688387338465 -4187,17.398086430585128 -4188,17.595866042755006 -4189,18.79245759543462 -4190,19.269263105984695 -4191,19.254559446651886 -4192,20.65631959880237 -4193,21.425813657078706 -4194,21.923820009533976 -4195,20.97033729276205 -4196,22.706519970291527 -4197,23.33938506145326 -4198,21.99078132551827 -4199,21.19293918990616 -4200,22.11040812593371 -4201,23.42156775439062 -4202,24.71172559758671 -4203,23.74140753487921 -4204,23.30691250679103 -4205,22.009543379577998 -4206,21.08608883870033 -4207,18.550377541537323 -4208,19.232709964938127 -4209,19.39604927670935 -4210,19.70622563388721 -4211,18.782150166281458 -4212,18.315967587540545 -4213,19.925189422903657 -4214,19.889129931498715 -4215,21.707042692147382 -4216,22.183964801217822 -4217,21.979884833957566 -4218,22.799169160673966 -4219,21.111102349694907 -4220,21.402198306366707 -4221,20.763369715246952 -4222,21.62926373671597 -4223,22.59253342475147 -4224,22.242610603452324 -4225,20.92912497267043 -4226,19.241594822482394 -4227,18.948457980188184 -4228,18.867855633073614 -4229,19.059982240065807 -4230,20.971217304430304 -4231,20.984869559709853 -4232,21.159032018608073 -4233,22.014875116386673 -4234,22.054653623818552 -4235,22.639823102219307 -4236,21.964690109557306 -4237,22.915645430439394 -4238,22.91181655015192 -4239,22.27232248755125 -4240,21.594283287445982 -4241,21.897795063275172 -4242,22.3877754861628 -4243,22.265299289681348 -4244,22.7162566315538 -4245,22.850119591085054 -4246,21.50398867739346 -4247,22.38035900061113 -4248,21.66664072219401 -4249,19.947713195694234 -4250,19.893625998001365 -4251,18.570401158103863 -4252,18.184392149411444 -4253,17.08056018667008 -4254,16.949399520773415 -4255,16.63301560326685 -4256,16.387307033181173 -4257,14.887149546973411 -4258,17.93602594242161 -4259,17.18985851454665 -4260,15.68952825956711 -4261,16.646821329675824 -4262,14.367788899642916 -4263,15.166328490583245 -4264,15.644991512730302 -4265,15.510529383106846 -4266,16.22658408511356 -4267,16.962385994503876 -4268,17.54572018984527 -4269,19.54392797483784 -4270,18.425002299410348 -4271,16.96243302557886 -4272,17.31174353377523 -4273,16.967979885841114 -4274,16.630561117845996 -4275,16.721852734242532 -4276,16.423370936982135 -4277,16.84280151803263 -4278,17.09482314098363 -4279,16.140847989668767 -4280,17.584161016890636 -4281,18.095653886604772 -4282,19.138646532397566 -4283,19.213696790969717 -4284,18.400876520308426 -4285,18.388649978102343 -4286,19.260633583548678 -4287,18.7393175684099 -4288,17.2527220463378 -4289,18.541570752071987 -4290,18.906792904477552 -4291,18.983401769280974 -4292,18.652602292282165 -4293,18.313464655577466 -4294,18.46494145142402 -4295,19.323623501542126 -4296,17.77664716556166 -4297,17.637968323051652 -4298,17.91545120136007 -4299,17.170825236648234 -4300,18.282871870742913 -4301,19.472568868578094 -4302,19.421810209804573 -4303,20.457531458555568 -4304,22.03765277868034 -4305,20.700543745969597 -4306,21.34059933411493 -4307,21.97264067368743 -4308,21.529926415596456 -4309,21.217030055205807 -4310,21.019440792215484 -4311,20.823808341552937 -4312,21.692570710647594 -4313,20.426593952940134 -4314,20.48085063108347 -4315,20.63813957362214 -4316,18.866018857563905 -4317,20.258469018701934 -4318,20.393698620234257 -4319,19.506312927939252 -4320,19.933946997131805 -4321,19.716472116640603 -4322,19.352643543170007 -4323,18.549412586913977 -4324,19.35100694508984 -4325,20.10231236301498 -4326,19.71531651877518 -4327,19.860568117526302 -4328,18.469714992491532 -4329,19.461025549799114 -4330,18.655843432621587 -4331,18.218571364471135 -4332,18.179464370327487 -4333,17.976224375909073 -4334,18.17781143335446 -4335,19.120161757250777 -4336,18.993775269768488 -4337,19.377393593425587 -4338,18.47662690501641 -4339,18.331752443567076 -4340,17.938204286590608 -4341,18.527503943137692 -4342,19.099669688675526 -4343,19.216737129939784 -4344,19.0094040555191 -4345,18.565234821897203 -4346,17.02114659008138 -4347,16.388297943284044 -4348,18.171651422959755 -4349,18.70709716719028 -4350,17.89428381180643 -4351,16.678412789427252 -4352,16.859871396370973 -4353,16.2199352725823 -4354,16.934682694593484 -4355,17.560079664498687 -4356,17.748325084213256 -4357,18.111702539515985 -4358,17.84293948911868 -4359,18.190682479413173 -4360,17.6134268940658 -4361,17.88202785149943 -4362,19.009859046827955 -4363,18.04959029650002 -4364,18.653054045631748 -4365,18.52849129687306 -4366,18.159943707112443 -4367,16.117347931394402 -4368,16.978269185209324 -4369,17.50357063222378 -4370,17.617856333121228 -4371,17.929520376808686 -4372,20.186688174088353 -4373,20.48779524367462 -4374,22.96766019153319 -4375,25.107397368669933 -4376,23.60703478084494 -4377,22.873927319755513 -4378,22.516081926834136 -4379,23.024895622547433 -4380,22.27962005866326 -4381,22.882949861365454 -4382,24.334750851170096 -4383,24.06494675610653 -4384,24.497939351036287 -4385,26.31659196569258 -4386,27.003799179063474 -4387,27.16305823235388 -4388,25.71887075377092 -4389,25.628261037907652 -4390,25.13745900300853 -4391,25.355712021329822 -4392,25.58398362753359 -4393,25.462678519994746 -4394,26.24018401764463 -4395,26.23139723125821 -4396,26.596729922870242 -4397,25.439728056163148 -4398,24.347889223049158 -4399,26.06208106713273 -4400,24.89144546435152 -4401,26.508370629188207 -4402,25.160821574353157 -4403,24.80594680936653 -4404,24.193212595033298 -4405,24.973074431537455 -4406,24.260709921801123 -4407,24.75931011954964 -4408,24.7807787470921 -4409,24.668396834687933 -4410,26.279592018033057 -4411,25.864435123132235 -4412,27.05113984243063 -4413,24.84190245753054 -4414,23.55076431043554 -4415,24.830913429004152 -4416,23.443968291893395 -4417,21.91987820970334 -4418,21.086043304497252 -4419,21.68175970122352 -4420,21.47244017562201 -4421,22.74744801388755 -4422,22.81256680671964 -4423,23.62765002740811 -4424,23.89119861520804 -4425,23.143074764345318 -4426,22.946924203247097 -4427,22.49408829627617 -4428,22.479844969601313 -4429,22.42184061065651 -4430,21.971478067417387 -4431,20.23505304407454 -4432,19.36901166026145 -4433,19.107186936466707 -4434,18.272955362840722 -4435,17.82263913291051 -4436,17.372266629688873 -4437,17.83631248672052 -4438,17.21096085716635 -4439,17.71786532705505 -4440,17.537506087016908 -4441,17.30364558074887 -4442,17.71922082012203 -4443,19.01993506288784 -4444,18.723647563656602 -4445,17.484591125612475 -4446,17.58771374127839 -4447,18.32603252609314 -4448,19.773834323154418 -4449,20.44841904835928 -4450,21.073394467002235 -4451,21.668940965506405 -4452,20.559231440414784 -4453,20.74593463312485 -4454,22.81488693351722 -4455,24.42960634895083 -4456,23.64333208956266 -4457,22.60999224995961 -4458,21.63930742624261 -4459,22.36906659627127 -4460,22.71104975215399 -4461,23.008839835624524 -4462,23.927044867163673 -4463,22.91049687439812 -4464,22.98991585896222 -4465,22.606488562901777 -4466,20.788100057784852 -4467,20.354595391563667 -4468,20.50096667408436 -4469,20.731666544062726 -4470,21.153319535824682 -4471,21.82989649526754 -4472,21.498540258851907 -4473,22.277735019589517 -4474,20.987791435487306 -4475,21.51454084831475 -4476,23.772522137922966 -4477,24.066380967729458 -4478,22.396895387182116 -4479,21.848150426408345 -4480,21.586252653699074 -4481,20.40176317682433 -4482,18.79927932782905 -4483,16.63431246831824 -4484,16.88498196428827 -4485,14.969988254527106 -4486,15.648606159238833 -4487,15.794336110726434 -4488,14.146196507895572 -4489,15.456734643368453 -4490,15.48377996656301 -4491,15.493534510541256 -4492,15.270795049939705 -4493,17.837543353789698 -4494,18.98587084099561 -4495,19.289082174818468 -4496,19.161705644368055 -4497,19.980094757329194 -4498,20.284146796715255 -4499,21.177003825214406 -4500,21.073012160659097 -4501,21.254858184118447 -4502,21.927750509865128 -4503,21.93400237725266 -4504,21.748632902677105 -4505,23.28628192558598 -4506,22.87057951594063 -4507,21.675272843773687 -4508,21.535513162381868 -4509,19.633093429228726 -4510,18.67690047041949 -4511,18.786224567595276 -4512,18.425682514795998 -4513,16.443894077715367 -4514,16.778985632546057 -4515,16.96317040185065 -4516,17.859986929107784 -4517,17.344090378828763 -4518,16.8897427205784 -4519,16.137236779833987 -4520,14.319882238247457 -4521,15.044393598989092 -4522,14.410775203292546 -4523,15.68095034609538 -4524,15.390137141798391 -4525,15.836047406916666 -4526,13.953769235050496 -4527,14.86536391227344 -4528,15.710762423377153 -4529,15.571847927030504 -4530,15.75631578174497 -4531,14.347018480024497 -4532,13.033188358394595 -4533,12.637775662743692 -4534,13.234563477812122 -4535,11.926164765793809 -4536,11.251861053880788 -4537,8.039139712926488 -4538,8.42225458158559 -4539,8.450780302904016 -4540,7.6880853017153274 -4541,7.287903500418495 -4542,6.202397838568267 -4543,6.3236655261284405 -4544,6.6150196926036795 -4545,5.858836088191849 -4546,8.708606576425563 -4547,10.07242158450063 -4548,11.06518094790621 -4549,11.400942909302355 -4550,10.520271773905137 -4551,13.458939199503064 -4552,13.179302051815057 -4553,13.121922557584481 -4554,12.453208433855119 -4555,12.057071679942572 -4556,12.285423010960896 -4557,11.856714921333852 -4558,11.020912682974805 -4559,9.911844616445075 -4560,8.936528353833937 -4561,8.677499443725116 -4562,9.18506894409282 -4563,8.980575180148756 -4564,8.047956438022872 -4565,8.045164469522685 -4566,8.260590862291771 -4567,7.93960731052658 -4568,10.230760154511641 -4569,10.61073891421998 -4570,10.701453120745887 -4571,10.496914965661311 -4572,10.132067044688556 -4573,11.318046634781064 -4574,9.780659213193074 -4575,10.620586772943124 -4576,11.552320885126194 -4577,14.18426731410137 -4578,14.14141842871606 -4579,13.163011372847837 -4580,12.34109563441182 -4581,12.971614378450475 -4582,12.173945544305884 -4583,12.778144704439157 -4584,12.68884908377348 -4585,10.234060350400675 -4586,9.666431724760875 -4587,9.474542427983756 -4588,8.191640526387399 -4589,7.659773296216331 -4590,7.024957944152197 -4591,7.140561909668194 -4592,8.667973191303712 -4593,8.15450677497402 -4594,8.184380310460565 -4595,7.964388697716639 -4596,8.230757509732719 -4597,8.308883177209596 -4598,9.306700437874467 -4599,8.347979029795466 -4600,8.294196167008367 -4601,8.746505998547939 -4602,7.768228902572867 -4603,8.392050905857406 -4604,8.672524141629314 -4605,8.19227683598218 -4606,6.649705907668008 -4607,7.359575001715712 -4608,6.55480447150854 -4609,5.852604271704139 -4610,4.955200448874241 -4611,6.657950363980667 -4612,9.830978803289955 -4613,8.668392168218142 -4614,7.9675910089580055 -4615,9.268701369669722 -4616,7.98496869421762 -4617,7.037004048391334 -4618,6.61869686637869 -4619,7.1592880603741875 -4620,6.557950509556118 -4621,7.3014681816802485 -4622,5.960216233657141 -4623,6.969452486834946 -4624,7.312462397927399 -4625,7.93494556579274 -4626,6.349142292235186 -4627,6.742488630897776 -4628,7.769236071668235 -4629,7.910661293034973 -4630,8.566844386697083 -4631,9.853883004995298 -4632,10.464505459561057 -4633,10.903301082218032 -4634,10.508305783898056 -4635,10.689708427956806 -4636,9.431132246977985 -4637,10.193743094131825 -4638,9.734056630063966 -4639,10.666053468657907 -4640,10.678323425844704 -4641,10.584901227586913 -4642,9.377492039569137 -4643,9.26810341167715 -4644,8.93732914388989 -4645,10.059299329982938 -4646,9.458356568470435 -4647,7.4937000465911545 -4648,7.523026141588258 -4649,7.268411594226232 -4650,8.97924801925392 -4651,8.387849864169755 -4652,7.471222722539224 -4653,7.9835553177085625 -4654,9.518396252453106 -4655,8.2512144663165 -4656,7.805463764291974 -4657,7.9867512284840965 -4658,7.939855564629674 -4659,6.337354226791945 -4660,6.482467625789475 -4661,7.11116770605728 -4662,8.855683690403962 -4663,9.938125332486262 -4664,8.255881500184163 -4665,9.817245660096283 -4666,9.310694153192914 -4667,8.646095195332508 -4668,9.535782772658845 -4669,8.597805241578298 -4670,8.356552773053778 -4671,8.247266915386929 -4672,9.57527383947728 -4673,8.354078989767594 -4674,8.186664194116855 -4675,7.99106307687815 -4676,8.534022412714254 -4677,7.207860332944811 -4678,8.291121645626022 -4679,7.266378817287298 -4680,7.476208125101779 -4681,7.367214484906471 -4682,6.195534824211978 -4683,5.887043640670937 -4684,5.829342379093168 -4685,4.95370621266863 -4686,3.926844706927284 -4687,4.50046051243103 -4688,4.593252538698053 -4689,4.52861726629262 -4690,4.733842253735355 -4691,5.344448375230179 -4692,3.996773648823927 -4693,2.331008334282582 -4694,1.4468497824719282 -4695,1.0156399826951301 -4696,-1.6335068625782918 -4697,-1.503887807489236 -4698,0.6404869210380928 -4699,0.5208543343817635 -4700,0.7551385680129238 -4701,1.8664574502021365 -4702,1.9368972265464994 -4703,2.6538576018339137 -4704,2.958325282037552 -4705,3.0884506702112784 -4706,4.192065612150215 -4707,2.696608029267791 -4708,3.4867291720027938 -4709,1.6552591815382074 -4710,0.9321706313881775 -4711,0.730147683023938 -4712,2.368685624208851 -4713,0.3602649968270595 -4714,-0.7455747777898476 -4715,-2.249115231131878 -4716,-2.2756036949881437 -4717,-2.1409759516779934 -4718,-1.377524074016402 -4719,-1.2261955563849867 -4720,-1.8543839374419346 -4721,-1.5256154423319983 -4722,-0.6947696403774413 -4723,-0.01415743361171018 -4724,-0.5141884733418712 -4725,-0.39169657056077956 -4726,1.3065692349158158 -4727,1.8907116830528112 -4728,0.6242339969036701 -4729,2.2200531413339992 -4730,1.1875987196379452 -4731,3.604507823322431 -4732,3.694707738994624 -4733,1.4963660077934295 -4734,0.2595546187851929 -4735,-0.7533059430632414 -4736,0.3515362598600995 -4737,0.16940442673063733 -4738,-0.8240769817588418 -4739,-0.2584901198384324 -4740,-0.3186707695961735 -4741,-1.5372545306334178 -4742,-0.7011737463252872 -4743,-0.6307027834632012 -4744,-0.7841329247954659 -4745,-0.9895126165551844 -4746,-2.1826397385817673 -4747,-3.1920446936385005 -4748,-2.9513593771303754 -4749,-1.8776447624201034 -4750,-1.4354168000491838 -4751,-3.325463137260457 -4752,-4.026199252213357 -4753,-3.3457269368386973 -4754,-2.896840187322366 -4755,-2.788497712555371 -4756,-0.03283376270310301 -4757,0.8816636286609894 -4758,2.5102573758781213 -4759,2.1218001816053444 -4760,0.7569233739515906 -4761,-0.8574219131347303 -4762,-2.6152139922300153 -4763,-1.1185239882921665 -4764,-2.3095672404268606 -4765,-1.9189924295397018 -4766,-3.359892231341251 -4767,-2.267720135934857 -4768,-2.4539054838868006 -4769,-3.1797650777934567 -4770,-3.0743050578698177 -4771,-2.694172553135546 -4772,-3.304089557486762 -4773,-3.765035388558074 -4774,-4.1070145302117425 -4775,-3.9632083679880377 -4776,-5.584762129245771 -4777,-4.127645723163531 -4778,-3.46949550982301 -4779,-3.4896862425903357 -4780,-4.260211500009339 -4781,-4.937694089451586 -4782,-4.477055280154614 -4783,-4.198613473451543 -4784,-3.755134891732801 -4785,-3.025267171708048 -4786,-3.5032071359029477 -4787,-2.5567595300700976 -4788,-3.0391470027818412 -4789,-3.6392016971736636 -4790,-3.221733781782001 -4791,-3.556860266433819 -4792,-4.4800375586695225 -4793,-5.077651082146759 -4794,-4.808308216552224 -4795,-3.6138876314480894 -4796,-3.134128998679529 -4797,-5.0387649875398886 -4798,-6.124485137956114 -4799,-5.124126562583837 -4800,-4.9470892156416895 -4801,-4.88631747345545 -4802,-4.100303717176543 -4803,-3.7839215125346293 -4804,-4.606572674016543 -4805,-3.720795833910142 -4806,-4.382469426821988 -4807,-3.543697646319099 -4808,-3.900519325206334 -4809,-2.5421077667437397 -4810,-3.041254481335362 -4811,-2.392225155715446 -4812,-3.514313543931501 -4813,-3.934247369828234 -4814,-4.43208539990373 -4815,-4.4574692104566 -4816,-5.2688274956715535 -4817,-6.522352671859723 -4818,-7.302789115951936 -4819,-6.7894146207131305 -4820,-7.671512039651135 -4821,-8.123349798444497 -4822,-9.056635358948146 -4823,-8.783744805727247 -4824,-9.435624627229046 -4825,-8.408842910077077 -4826,-7.940406893571061 -4827,-9.087272520949936 -4828,-9.133466711951415 -4829,-9.813126507841211 -4830,-9.448202854527562 -4831,-11.267918554751809 -4832,-10.683392864994739 -4833,-10.93368377050809 -4834,-10.424475884288194 -4835,-10.538638707815027 -4836,-9.812512336271874 -4837,-11.271916557279 -4838,-11.986332380129772 -4839,-14.680130354260111 -4840,-15.60079486116336 -4841,-14.341591835502946 -4842,-14.066140695546137 -4843,-13.530608783889566 -4844,-14.779409413068354 -4845,-14.459972003157139 -4846,-13.816671582047402 -4847,-14.767649565556066 -4848,-14.314880799348597 -4849,-15.477236968170539 -4850,-15.722003627363334 -4851,-15.049961400769067 -4852,-13.820851516324911 -4853,-12.691780068315321 -4854,-12.642994029241079 -4855,-12.540105630483469 -4856,-12.643072832573463 -4857,-13.103773523899534 -4858,-12.386886148069136 -4859,-11.44968673119622 -4860,-11.887153908101618 -4861,-12.360917887245193 -4862,-13.710579673260671 -4863,-14.018236172819412 -4864,-13.166894376508942 -4865,-12.627779712845479 -4866,-12.816754553477976 -4867,-12.911174119056437 -4868,-12.945380509403215 -4869,-12.686225355510613 -4870,-13.2913091891527 -4871,-12.768617163514355 -4872,-13.141637973906224 -4873,-13.476769423541617 -4874,-13.630145664633082 -4875,-12.216203717446385 -4876,-12.830490012390335 -4877,-13.054705947836835 -4878,-12.321801175423023 -4879,-13.522514079557688 -4880,-13.149428332958623 -4881,-12.231095551112947 -4882,-11.023080895003616 -4883,-11.110161058524655 -4884,-10.932468964822853 -4885,-11.076482927165571 -4886,-10.145940170737147 -4887,-10.187210812610312 -4888,-10.495533318789542 -4889,-10.491943365597185 -4890,-9.360709604943994 -4891,-8.096941072728306 -4892,-7.30029162038602 -4893,-8.951335005497612 -4894,-9.639847787301349 -4895,-9.14057816596566 -4896,-8.885728472553192 -4897,-9.247617534303142 -4898,-9.311318919514902 -4899,-8.490266027351618 -4900,-8.357688969493344 -4901,-8.74100899659923 -4902,-7.793029878140541 -4903,-8.843181140818878 -4904,-9.086481832278198 -4905,-9.773939256029275 -4906,-10.340725236724191 -4907,-9.410173854511863 -4908,-12.066795688391172 -4909,-12.242504004788845 -4910,-11.689170310616035 -4911,-10.813647243207338 -4912,-10.687945627325638 -4913,-10.016964814869814 -4914,-10.881367426920432 -4915,-9.082717455590632 -4916,-10.130835771486435 -4917,-9.999136024844772 -4918,-10.64716820063388 -4919,-11.148446503451856 -4920,-12.927157719036964 -4921,-10.983830048806965 -4922,-10.702310492706559 -4923,-11.011784251269699 -4924,-13.03248147345066 -4925,-13.418893650893436 -4926,-14.372216161935757 -4927,-15.039032509909347 -4928,-14.632915498904973 -4929,-16.524839684152763 -4930,-16.20925195891879 -4931,-15.887314095688664 -4932,-14.034210289485669 -4933,-13.318075086691744 -4934,-13.784356385822598 -4935,-13.917159560132937 -4936,-14.089353089847124 -4937,-13.116635417602081 -4938,-14.194225827211254 -4939,-13.879092991222464 -4940,-14.724079073548557 -4941,-14.284212712716862 -4942,-15.049295806721288 -4943,-15.93379677022159 -4944,-16.71772403306345 -4945,-16.659327897500265 -4946,-16.944214380561974 -4947,-17.607148340758197 -4948,-17.646582138158912 -4949,-17.59304453768095 -4950,-18.31664870119048 -4951,-17.56162249159942 -4952,-16.72651764298514 -4953,-15.611942842882183 -4954,-13.61748828467856 -4955,-13.066006680822497 -4956,-13.375303989569552 -4957,-13.62782896902401 -4958,-13.597162732954299 -4959,-13.921055678111749 -4960,-13.87617507328507 -4961,-13.115704870823784 -4962,-13.99435629602666 -4963,-14.686352745292009 -4964,-14.775656168018282 -4965,-15.825992493745385 -4966,-13.661943537511103 -4967,-14.691901894105863 -4968,-15.388660113177473 -4969,-14.351555281985211 -4970,-14.352050658023256 -4971,-12.305240622446817 -4972,-12.919125013362425 -4973,-12.18851265770709 -4974,-12.320472607127224 -4975,-11.14256965890034 -4976,-11.599125706905161 -4977,-11.536006377541982 -4978,-12.823813959449058 -4979,-13.955895615907039 -4980,-14.360429022210784 -4981,-11.901708884874541 -4982,-13.259184601846169 -4983,-13.046079486394161 -4984,-13.67134352283716 -4985,-12.277792397691469 -4986,-11.908481626412392 -4987,-11.878274812454384 -4988,-12.490078893900817 -4989,-11.653869297753372 -4990,-11.900932734717577 -4991,-12.67750657996181 -4992,-13.554149756233173 -4993,-13.547905321458613 -4994,-14.527989871994874 -4995,-13.298182099559117 -4996,-13.776773373440832 -4997,-13.592988176668975 -4998,-12.586236212280124 -4999,-13.17345550296638 -5000,-14.260855212122339 -5001,-13.897523953766669 -5002,-14.038036830030322 -5003,-13.57485956076013 -5004,-14.136696025637562 -5005,-11.875170971554008 -5006,-12.072238087195258 -5007,-11.787294597554023 -5008,-11.9568571516033 -5009,-13.368290056554692 -5010,-13.616122887428338 -5011,-11.71113219400457 -5012,-12.413014468870518 -5013,-11.449497389712672 -5014,-11.034127362226386 -5015,-11.385445013978792 -5016,-10.776168499861651 -5017,-11.339054211370545 -5018,-10.014105290457696 -5019,-9.4424731585371 -5020,-9.096598191228425 -5021,-9.679759327807673 -5022,-10.448978824484247 -5023,-10.549306368542819 -5024,-10.650099663345706 -5025,-11.876536426858886 -5026,-11.58906414431404 -5027,-12.80653063006566 -5028,-13.120985478805746 -5029,-11.965786658913286 -5030,-12.78409506939926 -5031,-12.361125668055639 -5032,-12.389944664997875 -5033,-14.095709503343311 -5034,-15.924478496186628 -5035,-15.070933760172563 -5036,-16.57898637140945 -5037,-16.61116603158347 -5038,-17.29492177523254 -5039,-16.954954004454844 -5040,-15.926607349939314 -5041,-16.672131056085544 -5042,-18.387441934367672 -5043,-18.177344560792903 -5044,-17.689813562899445 -5045,-16.757171419110456 -5046,-17.709039680454612 -5047,-18.517934643686605 -5048,-18.55834620332402 -5049,-19.138403722463256 -5050,-18.718959866886987 -5051,-16.702577971160974 -5052,-15.779054866662692 -5053,-17.637045906911155 -5054,-17.663864940670088 -5055,-17.114610997653593 -5056,-16.100374413487078 -5057,-14.438053536513035 -5058,-16.60034504710506 -5059,-17.657483626750697 -5060,-18.0588479383892 -5061,-17.18768930988316 -5062,-17.184427089245276 -5063,-15.691934905160196 -5064,-15.589470570553503 -5065,-15.060089108500785 -5066,-15.484942770581252 -5067,-14.937730665812758 -5068,-14.074799198405424 -5069,-14.234456693997297 -5070,-14.151132270961101 -5071,-13.875963577421139 -5072,-12.667388937043913 -5073,-12.539127331493894 -5074,-13.459273488647568 -5075,-11.136499733133917 -5076,-11.453640636826707 -5077,-13.295867161674222 -5078,-13.665703307598815 -5079,-15.865307386468832 -5080,-13.762875580593343 -5081,-12.834356814271542 -5082,-12.286874142965132 -5083,-11.51127574593832 -5084,-11.674065064128394 -5085,-11.208534822055338 -5086,-12.420781093596101 -5087,-11.157234959062258 -5088,-10.534319535221439 -5089,-10.750069709413363 -5090,-12.30545966880999 -5091,-11.653670475553762 -5092,-13.355655824586208 -5093,-12.377844842631893 -5094,-11.547875568629447 -5095,-9.364714158332216 -5096,-7.492849825096467 -5097,-7.445190330020841 -5098,-6.480283852619346 -5099,-4.356088336549201 -5100,-4.621266703298384 -5101,-4.211231762630526 -5102,-2.9560422720036135 -5103,-3.4443855436594317 -5104,-4.663501473438158 -5105,-3.6340680373267364 -5106,-2.9908185599825163 -5107,-2.9043082862569984 -5108,-1.836171168820008 -5109,-0.6848738250971491 -5110,-0.273986362397289 -5111,-0.5336213201952192 -5112,-0.4687552335056391 -5113,-0.37896998910925406 -5114,-1.4902024057842636 -5115,-2.507465084943937 -5116,-1.6101348163186289 -5117,-0.9360719620609174 -5118,1.0160687874918493 -5119,1.5657565950207142 -5120,3.113555513089632 -5121,3.663742066916399 -5122,3.500524320670394 -5123,1.7966883336670711 -5124,1.6559646435729731 -5125,1.721750616922927 -5126,1.4301251865983011 -5127,1.3927738664691218 -5128,2.288017012109847 -5129,1.7370552464013247 -5130,0.2032930279184184 -5131,0.20717411773102484 -5132,0.39174541813818253 -5133,1.1774337329588067 -5134,0.9747138937487014 -5135,1.369510079003576 -5136,1.3861385222199871 -5137,2.2129865515422895 -5138,2.179055993431545 -5139,2.475179849849555 -5140,2.2856518856175065 -5141,1.1696222330166648 -5142,0.4259737945446306 -5143,2.2298617027900747 -5144,-0.5082035466953276 -5145,-1.0662890491067303 -5146,1.041366965543981 -5147,1.919299524844652 -5148,2.692843274666632 -5149,2.9239384952001375 -5150,1.9751258439736106 -5151,1.9682354485578006 -5152,2.854403476351736 -5153,2.269619742357542 -5154,2.6245745328110606 -5155,1.7558150597178677 -5156,2.423277557628729 -5157,3.4537810437236685 -5158,5.37091694098428 -5159,4.856526035099281 -5160,5.784420104745931 -5161,7.192336012927351 -5162,7.597551695435152 -5163,7.175476326748242 -5164,8.006359909006843 -5165,8.046243419729404 -5166,9.269803308893161 -5167,8.461132684966433 -5168,6.435148130532371 -5169,5.738339106804295 -5170,5.66689584561441 -5171,5.556728372858369 -5172,6.819242372419253 -5173,6.226263269178519 -5174,7.120863454653694 -5175,7.14442917645269 -5176,6.123758793713783 -5177,6.196770460249038 -5178,6.094749805900706 -5179,7.917204122111076 -5180,7.825141214246718 -5181,5.463420737149304 -5182,5.194306369132992 -5183,5.862379460788001 -5184,5.806668584237676 -5185,7.837211682319213 -5186,7.479712454458492 -5187,6.525001352418364 -5188,6.295556656460722 -5189,6.422030069009003 -5190,7.458662661430838 -5191,6.1332431144486526 -5192,4.045964537584135 -5193,4.656497806576487 -5194,3.3528380453351856 -5195,4.246961864133045 -5196,4.1598827772273586 -5197,5.065181910086598 -5198,6.488916352756803 -5199,6.151552609433134 -5200,6.33064953704389 -5201,4.398581369864714 -5202,4.499268403509 -5203,2.6318357623798816 -5204,3.0438331949076742 -5205,3.7652960291378377 -5206,5.2568760783381485 -5207,5.0685423425534255 -5208,5.976926133330625 -5209,6.997663586835229 -5210,7.435137921468775 -5211,6.525587834668712 -5212,6.366842107007522 -5213,5.532752412823117 -5214,4.7515285175237265 -5215,5.297863382240491 -5216,3.6957236249510936 -5217,4.275970746120508 -5218,4.731942259081474 -5219,4.218784299134997 -5220,4.545353221994459 -5221,5.151020129946341 -5222,4.993430147541109 -5223,5.22053847977914 -5224,4.448389346733583 -5225,3.950693371528423 -5226,3.681803151807096 -5227,5.0908277312346515 -5228,4.94039740059609 -5229,4.797746876630812 -5230,5.6479506230318695 -5231,5.909845892443381 -5232,5.0067995041270565 -5233,4.827907474267118 -5234,4.845788407676237 -5235,3.705220878065498 -5236,5.180662685068528 -5237,4.432808839176372 -5238,4.648194670197869 -5239,5.090310107998308 -5240,3.8462597056390297 -5241,5.267345413233454 -5242,5.69467727798139 -5243,5.863893186561026 -5244,6.139605974213118 -5245,5.65213944461876 -5246,6.517638659444955 -5247,6.9723591888520815 -5248,7.257722026493808 -5249,9.20744098742226 -5250,9.221456253213889 -5251,9.375871337577822 -5252,10.032767346545556 -5253,9.63634319528651 -5254,10.470572691805323 -5255,9.95027826953886 -5256,10.109957151690834 -5257,9.09557359345164 -5258,7.755399057945548 -5259,8.445066266717719 -5260,8.993671258490854 -5261,10.021411052748379 -5262,11.47566812011704 -5263,11.575521773519629 -5264,12.483941850022827 -5265,12.028398493529478 -5266,12.387151673572298 -5267,11.884171782388604 -5268,11.93316591373057 -5269,11.561339494272557 -5270,11.263472928847818 -5271,9.063848359330908 -5272,9.896408560585124 -5273,9.13965903921695 -5274,7.577309973192122 -5275,6.611367743721255 -5276,7.750799904936303 -5277,7.874558214720805 -5278,8.844451241443805 -5279,8.215015587958732 -5280,6.76215198728659 -5281,5.235985245489116 -5282,5.640872882130483 -5283,5.106074433954372 -5284,6.637278196246603 -5285,6.276395359526731 -5286,8.120535771265239 -5287,8.70778388750331 -5288,8.032263940592406 -5289,8.429036344676224 -5290,7.538938540798284 -5291,6.1678065395134425 -5292,7.063625535791172 -5293,7.701237451577973 -5294,7.591727966691153 -5295,7.660826881702136 -5296,7.450074661345748 -5297,9.096114075714494 -5298,8.983885578783326 -5299,9.894307260413914 -5300,10.784104139327429 -5301,11.264610414142393 -5302,10.406422516755306 -5303,9.306133035796034 -5304,9.849369497119417 -5305,9.506885019810278 -5306,8.831944134747818 -5307,10.99877061482487 -5308,11.790039448147873 -5309,11.540047629947628 -5310,11.674374078027089 -5311,12.619543238050369 -5312,11.359080196052014 -5313,9.38220750054707 -5314,9.808140068855838 -5315,9.781457372721363 -5316,10.816192534953368 -5317,12.536092031768952 -5318,11.753046763893087 -5319,12.43561835940309 -5320,11.188342890588855 -5321,10.587797940099854 -5322,10.10651515432875 -5323,10.933403037386151 -5324,10.837819901869409 -5325,10.387871068621326 -5326,10.062204437541109 -5327,11.2328222587484 -5328,12.513809052488877 -5329,11.713715940444072 -5330,11.09004117807683 -5331,10.750723229601318 -5332,12.170134852430586 -5333,10.309019636152943 -5334,10.184990713347853 -5335,10.277760386352968 -5336,10.591131599737007 -5337,9.311630293298109 -5338,9.205152377652768 -5339,9.18490365132023 -5340,9.629886788332843 -5341,10.634390195462311 -5342,12.021524343649581 -5343,12.000940561610173 -5344,11.835644352386247 -5345,13.517007859749025 -5346,13.248713063953417 -5347,10.79680216833034 -5348,11.325840723068332 -5349,10.71953724588746 -5350,10.775785870048468 -5351,11.797498621910123 -5352,12.754286760999902 -5353,14.308362821338374 -5354,15.498745485735144 -5355,15.797867657548005 -5356,14.21466211589899 -5357,15.072435017493596 -5358,14.717718748609222 -5359,14.044007446096348 -5360,13.813215574563888 -5361,13.66708061322593 -5362,12.637977808600644 -5363,12.384909059341602 -5364,12.042446969603196 -5365,12.807556179269255 -5366,12.61858127657596 -5367,13.375758342646614 -5368,14.440235550107657 -5369,14.551789293469792 -5370,14.79447169807493 -5371,13.731624810012413 -5372,12.690642311134548 -5373,11.806972196358373 -5374,11.328353620109212 -5375,10.175139667693113 -5376,9.690865150732117 -5377,8.785053485436102 -5378,8.99326664929463 -5379,9.344193565399925 -5380,9.787689998652642 -5381,11.97268857762814 -5382,10.912066578225007 -5383,12.576702829893357 -5384,11.54796696495776 -5385,10.74488640916223 -5386,9.559518505617392 -5387,9.837126295538958 -5388,8.60564056525549 -5389,9.29647126441992 -5390,7.630882563251385 -5391,6.972605371629845 -5392,6.600015750291442 -5393,6.737920648693259 -5394,8.032510160316244 -5395,7.240981435886081 -5396,7.38870454523812 -5397,8.531987181991514 -5398,9.041174926627583 -5399,8.297587405506476 -5400,8.805000554279744 -5401,11.288646649904518 -5402,13.432443849461885 -5403,13.771603228087509 -5404,14.2565096183062 -5405,14.130969178213503 -5406,13.932880589256945 -5407,11.980298707142008 -5408,10.589598479291094 -5409,11.119403026153009 -5410,12.008753103108242 -5411,11.941972940276148 -5412,10.700500856476893 -5413,11.635029160565667 -5414,13.009835030380254 -5415,10.656481508705411 -5416,9.092931858627132 -5417,10.48088516730557 -5418,9.71796698153538 -5419,10.364979332760743 -5420,9.44937609480893 -5421,7.999071861640679 -5422,7.235248934277373 -5423,5.822727565320114 -5424,5.080223214058134 -5425,5.260932615501447 -5426,3.8832536534880786 -5427,6.387041619067476 -5428,6.980951566424602 -5429,5.632834108581411 -5430,5.691825461084746 -5431,5.586950941411462 -5432,4.1987064717687925 -5433,5.027945618222499 -5434,5.961273320671917 -5435,6.553034569814003 -5436,7.358756563948029 -5437,7.301522490058862 -5438,6.440393658763588 -5439,6.242227799256186 -5440,4.712422323550824 -5441,6.1087210439961925 -5442,7.5629901347173885 -5443,7.304863493172727 -5444,7.184047630282302 -5445,6.6396739171529 -5446,7.821320214911531 -5447,6.171533810503255 -5448,6.749291822172119 -5449,6.22410754411349 -5450,5.437066801279057 -5451,4.202293715725709 -5452,4.060784277702494 -5453,2.1243112709673064 -5454,-0.06029692050589475 -5455,1.1386304286607105 -5456,0.7756950233595126 -5457,0.06563461699546091 -5458,0.8334681418315759 -5459,2.013751554535881 -5460,0.9145349958356923 -5461,1.9656342289231923 -5462,3.8192573690104217 -5463,5.7316475500901625 -5464,5.843554576183078 -5465,6.975353818066264 -5466,6.055911005834894 -5467,5.276619339350757 -5468,5.187412849383629 -5469,5.4250346638145865 -5470,5.690835987788245 -5471,5.234166252164258 -5472,4.934291766643523 -5473,4.845400532686157 -5474,4.8610293832970095 -5475,5.406849442301988 -5476,6.410697503293831 -5477,7.224899577268438 -5478,4.929467923952074 -5479,4.780720077192131 -5480,4.193617498274969 -5481,4.083190585776713 -5482,3.349411380732697 -5483,2.9011077042846463 -5484,2.33890149626163 -5485,3.044476140446527 -5486,2.7973395548340045 -5487,2.033097636559838 -5488,0.6044248505461634 -5489,-0.5695833670557662 -5490,0.03825287022812729 -5491,-0.09487250461235505 -5492,1.2711421424321199 -5493,0.9316661506515946 -5494,2.239474538753 -5495,2.079039856838929 -5496,0.6686233990606789 -5497,-1.4993779421678357 -5498,-0.23429008760965453 -5499,-1.2816991232819779 -5500,-1.3915747945771992 -5501,-1.3524964352418827 -5502,-3.457976302230615 -5503,-3.541226128963583 -5504,-5.297614913785726 -5505,-5.997495345090574 -5506,-6.929411874002184 -5507,-7.104685597064092 -5508,-6.603378374066245 -5509,-7.784770383945373 -5510,-9.173942599785686 -5511,-9.914428504469862 -5512,-10.95115147167867 -5513,-10.41734486220983 -5514,-9.987653314683472 -5515,-11.319401740093591 -5516,-12.00529922144195 -5517,-12.249761388278209 -5518,-11.571780730525026 -5519,-9.629104918141755 -5520,-10.000596592835885 -5521,-8.467040003590842 -5522,-7.881689494073421 -5523,-8.287209032209864 -5524,-7.956737924832636 -5525,-8.973908247769657 -5526,-9.25651396108043 -5527,-8.476284834695313 -5528,-9.692415642106454 -5529,-8.610301930175732 -5530,-7.344806176210373 -5531,-7.0964506426742044 -5532,-8.232982879499536 -5533,-8.50180916849452 -5534,-9.129013965030998 -5535,-9.47700062571123 -5536,-9.710718341719007 -5537,-9.825673500628836 -5538,-8.810177795937399 -5539,-6.618534659567615 -5540,-5.287192612998959 -5541,-5.793261430276325 -5542,-5.80939323933097 -5543,-7.0123759432594746 -5544,-7.039593222017859 -5545,-7.691997838260488 -5546,-8.334116602505325 -5547,-7.768339289822588 -5548,-8.717676306702401 -5549,-9.20318077744053 -5550,-10.235785267446579 -5551,-9.315309435826437 -5552,-10.932920236953965 -5553,-9.684107522939835 -5554,-10.454287156347297 -5555,-8.884231560388448 -5556,-8.292877579792503 -5557,-8.669528769266932 -5558,-8.023289652007666 -5559,-7.484389617367779 -5560,-6.113273645077359 -5561,-5.332597241719118 -5562,-5.105293025733298 -5563,-4.22516528146971 -5564,-3.423095649849825 -5565,-3.6715417025134287 -5566,-4.877080505425732 -5567,-4.15355025912955 -5568,-4.987095865866679 -5569,-4.388963255061891 -5570,-5.494676589870903 -5571,-3.219753780626804 -5572,-3.5703226843553795 -5573,-4.737774098491705 -5574,-4.195037335878395 -5575,-4.290526407236829 -5576,-3.3166975515992663 -5577,-3.3591121145319396 -5578,-2.9406137377864585 -5579,-1.9699861146077833 -5580,-2.2665280666086804 -5581,-1.8338893464753765 -5582,-1.4657486846004169 -5583,-0.8726350791573287 -5584,-0.4475842227039336 -5585,-1.6739396063636618 -5586,-1.963362548830152 -5587,-2.242656175023709 -5588,-2.00278040265333 -5589,-3.2819409785561646 -5590,-6.1617654117548195 -5591,-5.226703104736587 -5592,-5.284423583137573 -5593,-4.753476469636355 -5594,-3.2451322089219037 -5595,-1.425544300412914 -5596,-1.6441161678056915 -5597,-0.7646012656068787 -5598,-0.9669068668713611 -5599,0.09197488902671858 -5600,-0.47453394130461224 -5601,-0.48012503558383895 -5602,-1.3259264603527745 -5603,-1.081617331206426 -5604,-0.33716885218725756 -5605,-1.270857868845638 -5606,-1.466917499036138 -5607,-1.3717623086332649 -5608,-1.4496996819706947 -5609,-0.7331563376351138 -5610,-0.6948439787009726 -5611,-1.1695903862847206 -5612,-1.0302252832999546 -5613,-0.29241326037630333 -5614,1.641121478452642 -5615,0.48852818004978227 -5616,1.9776306622745063 -5617,3.9535660149755163 -5618,3.1356495604565615 -5619,3.7292425383708383 -5620,5.07905670769974 -5621,2.9085854866058867 -5622,2.0524899429087475 -5623,1.662820586927543 -5624,2.400969101598327 -5625,0.9324409757534795 -5626,2.190216627209635 -5627,0.6191004866647212 -5628,-0.052735726205397904 -5629,-0.3269465568149642 -5630,0.5085867450384853 -5631,0.35984615163503775 -5632,-0.9008390960342998 -5633,-2.067165503194559 -5634,-2.1309139470191423 -5635,-0.8115834164416078 -5636,-0.1593691704602922 -5637,-0.581389179398095 -5638,-0.6692109048099749 -5639,-0.30371357734810706 -5640,0.16365351549214746 -5641,-0.10571029877710392 -5642,-0.6062722992551997 -5643,0.173529839017728 -5644,0.6351260242838779 -5645,0.35591544208577275 -5646,0.4162775065691662 -5647,1.6537676539659447 -5648,1.3674233879587674 -5649,0.7135356225158263 -5650,-0.9621022271480861 -5651,-0.2705612046726763 -5652,-0.23463890112797334 -5653,0.25013449825639966 -5654,1.699931127329449 -5655,1.8267157520231792 -5656,2.2124829713776957 -5657,3.4191108683705496 -5658,3.736055564857662 -5659,4.505790416162515 -5660,4.30268566908403 -5661,3.9001415082653916 -5662,2.8067917557357323 -5663,1.9591940336629472 -5664,0.5770023065974788 -5665,1.3804246415282733 -5666,2.069606771893393 -5667,0.752330201132114 -5668,0.4855094382713554 -5669,-0.2244870427698208 -5670,-1.4747878534302652 -5671,-1.3124454231678149 -5672,-0.845111034270153 -5673,-1.779740085690276 -5674,-1.4873192950603764 -5675,-1.6136950207363419 -5676,-1.3641148372238094 -5677,-1.6295423775656208 -5678,-2.2446827984243116 -5679,-0.2961933279898923 -5680,1.1553470081295092 -5681,1.7207515493353986 -5682,2.5018311908845816 -5683,2.147672340122418 -5684,2.9822812787691557 -5685,3.386707178488294 -5686,5.179854954156388 -5687,4.33717023815769 -5688,4.249826887988119 -5689,3.6679999965962176 -5690,3.60549578074049 -5691,3.420128200675078 -5692,1.9199824733592765 -5693,3.717723072534473 -5694,4.797640378847265 -5695,5.340884814748767 -5696,4.878358011653004 -5697,3.875888898875419 -5698,4.768413476841272 -5699,4.287179437556841 -5700,5.1834658026376434 -5701,5.063897320508361 -5702,4.510460315980863 -5703,4.4546815303377345 -5704,2.5966872720071077 -5705,1.0905234952374514 -5706,2.0482913119329718 -5707,2.5910702389482143 -5708,1.1570745931592856 -5709,2.388601315559767 -5710,3.162561864509716 -5711,1.9374327948682168 -5712,2.319239843964676 -5713,1.6811974856256477 -5714,0.03736338465526523 -5715,0.4310012102655141 -5716,0.36354395164764775 -5717,0.8713312178355441 -5718,-1.53548190567477 -5719,-1.0487966274065381 -5720,-3.9295426298092604 -5721,-4.686863675881059 -5722,-4.0259008081431755 -5723,-3.295528469093199 -5724,-2.624301993618146 -5725,-2.553993581960557 -5726,-2.7707439887582304 -5727,-3.652657223714905 -5728,-4.99483867428172 -5729,-4.913377935416613 -5730,-5.314277658611241 -5731,-4.532449433689569 -5732,-3.1974359945086896 -5733,-3.075488228509457 -5734,-2.8877473149073785 -5735,-2.201783820736976 -5736,-2.2480144075389172 -5737,-1.2413954234215914 -5738,-0.23196446918923175 -5739,1.0471589436465605 -5740,1.3502333306902141 -5741,3.5364395374788504 -5742,2.4465236736629716 -5743,1.3358407769263125 -5744,0.4387763317183815 -5745,-0.733638479699104 -5746,1.223673746818134 -5747,2.2410887546164715 -5748,1.9518560921065413 -5749,2.1261109200219295 -5750,2.2162062852933992 -5751,2.97720014174635 -5752,3.3329565282716107 -5753,2.345403323456182 -5754,1.1500171543017434 -5755,2.0400231318568967 -5756,1.9365662169054159 -5757,-0.11455169455424441 -5758,0.1408115170532539 -5759,-0.561689954634225 -5760,1.0424609317142552 -5761,1.0932696865278695 -5762,0.11629719228063307 -5763,1.3642917304236515 -5764,1.03092711414617 -5765,2.876892072868273 -5766,3.444019494656526 -5767,2.2206568797832857 -5768,1.866216657655484 -5769,1.6856662864548468 -5770,2.8218640691803127 -5771,2.1202912979820745 -5772,2.4421027861624034 -5773,2.289212663780226 -5774,2.8910306122326372 -5775,2.738574863501523 -5776,1.7765131321032546 -5777,0.6003210617807491 -5778,0.6100585157122627 -5779,1.1089141719016735 -5780,0.3191557220530483 -5781,-0.3280283257956196 -5782,1.3393350670974247 -5783,2.08261617257564 -5784,2.60589561109799 -5785,2.233527545474454 -5786,2.947318647780818 -5787,3.17553445941063 -5788,2.383093658022086 -5789,2.657201748920872 -5790,2.811003981672989 -5791,4.5476900787399925 -5792,4.634706381000989 -5793,4.398709005649515 -5794,4.356978830084882 -5795,5.849855987742123 -5796,5.320897076092044 -5797,4.764918294946019 -5798,4.351460001744585 -5799,2.953206511590355 -5800,3.631471578002602 -5801,4.718051493210323 -5802,4.37878902637181 -5803,3.699214990215998 -5804,1.5943007814530774 -5805,0.9127654020669811 -5806,1.3733867497538377 -5807,-0.3149376716505068 -5808,-0.9216505867884384 -5809,0.44163190046602474 -5810,-0.0010412843218794432 -5811,1.2878294590070805 -5812,1.3174020644341211 -5813,1.9600782589420689 -5814,3.3203292208642954 -5815,3.4530146641596504 -5816,4.140054618665528 -5817,4.97239118020949 -5818,5.151006326421759 -5819,4.6487037289670985 -5820,5.204054173826757 -5821,3.959460234903004 -5822,4.867039061966401 -5823,4.2058179670593825 -5824,2.972217192554233 -5825,3.8067507200511805 -5826,4.055802910826749 -5827,4.6479449402477915 -5828,3.1987024132604405 -5829,2.6562093954326857 -5830,3.2534455996791984 -5831,4.315103257099599 -5832,3.9995284489810965 -5833,5.620620633814872 -5834,4.883954722513622 -5835,4.646998344588134 -5836,6.765205599528313 -5837,6.531893074167673 -5838,5.745106126616174 -5839,6.691788534451897 -5840,5.614211379158913 -5841,5.959492413902038 -5842,5.7533190097133105 -5843,8.02573077922698 -5844,6.434260258769423 -5845,4.491327462813477 -5846,2.907738712230345 -5847,1.283445529163183 -5848,0.7461218336700405 -5849,2.0130299936756755 -5850,1.9898078033605644 -5851,3.6292851269775257 -5852,3.6929443231618997 -5853,3.5889959219771606 -5854,4.123440730426441 -5855,5.7331118306308 -5856,6.251184412442022 -5857,6.512485139090396 -5858,6.6766333238588444 -5859,5.57551691235735 -5860,7.009430769089268 -5861,6.998492349525095 -5862,5.790698255899126 -5863,7.052059003659415 -5864,8.213785986885775 -5865,8.918118391999206 -5866,8.436708526152533 -5867,8.683241687753446 -5868,9.27778991819466 -5869,9.098578603626605 -5870,10.410904475052064 -5871,12.167072915829186 -5872,11.462865655758925 -5873,10.652090969806512 -5874,11.801331668231398 -5875,11.330091437344588 -5876,12.097715340090838 -5877,13.485564723581332 -5878,14.365802632779962 -5879,13.05418915735174 -5880,14.240968751813973 -5881,14.438747705832382 -5882,14.57116647997911 -5883,14.85015063446268 -5884,13.86681956938726 -5885,13.6763244265407 -5886,14.98286666230657 -5887,14.73806100892278 -5888,14.262033861418937 -5889,14.120268744390565 -5890,15.495842084287021 -5891,14.09071732615759 -5892,14.404826932057857 -5893,13.694066236208725 -5894,15.540950615413639 -5895,14.563193239618181 -5896,15.304338427119308 -5897,14.112691837714435 -5898,13.725661182894346 -5899,12.744616283744692 -5900,13.642507594759719 -5901,14.69429287468614 -5902,13.306696844368565 -5903,11.485806728842109 -5904,10.841429591210748 -5905,11.189309707974111 -5906,12.884379195563087 -5907,13.283437775918063 -5908,13.331039952327712 -5909,14.861630381426812 -5910,14.834453165374546 -5911,15.19945076613695 -5912,15.566113673317233 -5913,15.709321623473052 -5914,15.628898204084026 -5915,16.482279027399468 -5916,17.562256383920428 -5917,16.93954226256496 -5918,17.384732387551384 -5919,17.457792408829597 -5920,16.258806121264634 -5921,17.53423880263332 -5922,17.88065317299999 -5923,17.994945523310804 -5924,19.187034616210163 -5925,19.7157183854037 -5926,19.163673059995215 -5927,19.12157756755356 -5928,19.01076146992776 -5929,19.35454323670454 -5930,18.719095699494197 -5931,17.41963365908286 -5932,17.34624684129748 -5933,17.539493573734113 -5934,17.73806260320247 -5935,17.546523643411295 -5936,18.27466478929933 -5937,17.607728943535953 -5938,17.724456966845185 -5939,17.773971398601095 -5940,18.048943136214575 -5941,19.402674395805256 -5942,19.89071459862709 -5943,20.212815128445953 -5944,21.2274012243003 -5945,23.046587028719102 -5946,23.087411160208394 -5947,25.548077483631108 -5948,24.788133534016872 -5949,24.470943752393847 -5950,24.24792450927422 -5951,24.55715351217617 -5952,25.551755601474724 -5953,24.85087191260295 -5954,23.518713308748367 -5955,22.978348935423952 -5956,24.00160800562021 -5957,23.89074826526965 -5958,25.791997605139333 -5959,25.07862654586237 -5960,25.547460168041603 -5961,25.178575095772157 -5962,25.09509148134318 -5963,24.62873520482817 -5964,24.129303379995275 -5965,25.685758043401567 -5966,24.79862568564423 -5967,25.375576395546496 -5968,25.8838790355032 -5969,24.217429640216267 -5970,23.74520450202139 -5971,22.22524234114653 -5972,21.62593867402051 -5973,23.215948050985872 -5974,23.028957964881346 -5975,24.02198293629141 -5976,23.703736890588203 -5977,24.013562997904465 -5978,23.56925552057012 -5979,26.269734560432877 -5980,27.671884237761518 -5981,27.685765189968883 -5982,27.610679798048427 -5983,29.6792664926068 -5984,29.72148638889576 -5985,31.228919737349585 -5986,32.892033921453155 -5987,33.115665059518975 -5988,32.49217576385138 -5989,32.256040248143904 -5990,32.432042649263224 -5991,31.81828355614959 -5992,31.112437536217 -5993,31.654534006190357 -5994,33.06595212332586 -5995,33.363041805724066 -5996,32.354663648896526 -5997,31.747387926810788 -5998,31.84931537925264 -5999,31.612087373492674 -6000,31.32948812461937 -6001,31.884606537458087 -6002,32.58079516672716 -6003,33.44259564420878 -6004,34.26669194920889 -6005,35.50378279690223 -6006,35.30541688131138 -6007,33.80132577264863 -6008,33.47207861372988 -6009,33.81022115018727 -6010,33.65901413672352 -6011,34.540046928198876 -6012,34.523909927197614 -6013,35.432619731166085 -6014,35.84151240279979 -6015,36.45148476042346 -6016,36.94591209163222 -6017,35.47682584938638 -6018,36.29996851630532 -6019,37.86532386820838 -6020,38.27091186093188 -6021,37.845820932681505 -6022,37.1539646311043 -6023,39.74820260770058 -6024,39.28731922427793 -6025,41.85970203442034 -6026,43.32814691833541 -6027,43.13605145752565 -6028,42.302856062429335 -6029,43.47141715732577 -6030,43.06286007459202 -6031,44.04847136359384 -6032,44.539363906373396 -6033,44.61858961815913 -6034,44.264178367555026 -6035,46.97226150303354 -6036,45.5446778341231 -6037,45.34161695349112 -6038,46.98805172819212 -6039,48.50733939875884 -6040,48.933298961682496 -6041,49.214029895257724 -6042,51.58455435621667 -6043,49.03533279587482 -6044,48.668556886378695 -6045,48.56009592165928 -6046,47.46550982330195 -6047,46.336092227674015 -6048,45.783506506793266 -6049,44.711823443891106 -6050,46.391623128245406 -6051,45.640357931665996 -6052,45.80733580398596 -6053,44.54096903096913 -6054,44.10108075839363 -6055,44.81859718087811 -6056,45.53980176126286 -6057,45.35193272596004 -6058,46.51717471127397 -6059,48.16165546931891 -6060,49.314620586470134 -6061,49.58090969565058 -6062,48.840281632238764 -6063,46.9636245286655 -6064,48.45335577413637 -6065,46.89471171055252 -6066,46.10646644470903 -6067,45.3907535912789 -6068,44.84317864227926 -6069,46.104544827612486 -6070,45.5761505128153 -6071,44.01716185339219 -6072,43.83005252814838 -6073,43.83961791693623 -6074,44.54556599469231 -6075,44.659442626278974 -6076,43.065160235726744 -6077,43.92537492190596 -6078,43.44171742046677 -6079,45.20211720451801 -6080,44.318305198697146 -6081,44.037672942705804 -6082,43.6643372119933 -6083,42.07958662450295 -6084,42.78412804199637 -6085,43.84566557340243 -6086,44.36073164757562 -6087,43.4377393337532 -6088,43.95228533164404 -6089,44.33276120142543 -6090,45.3671973500633 -6091,46.691072765893026 -6092,46.68274234773419 -6093,46.18853473534405 -6094,45.91994130551134 -6095,46.40008074965878 -6096,45.49060664876426 -6097,44.278749027076564 -6098,44.551091847435345 -6099,44.87904977672479 -6100,45.06496605418769 -6101,46.141670579079225 -6102,47.522981820290745 -6103,45.81303217978967 -6104,46.420890479842406 -6105,45.36208880689659 -6106,44.43036481400892 -6107,43.511895300192926 -6108,43.63612324069262 -6109,43.14347395025341 -6110,42.562647322354 -6111,43.01871280133937 -6112,43.94220088289253 -6113,43.221870408047195 -6114,42.81379122647681 -6115,42.494931848933945 -6116,42.8637931781199 -6117,41.558697115135246 -6118,41.67704859024933 -6119,42.290299285224656 -6120,42.47205286381043 -6121,42.27087887900767 -6122,42.77532376122297 -6123,43.370576425093674 -6124,43.17765046373371 -6125,42.572144998904335 -6126,43.37678568632548 -6127,43.61024119245164 -6128,44.22122029011106 -6129,43.758520078443624 -6130,43.925673110798414 -6131,42.99132084572903 -6132,41.96300047638586 -6133,43.09708077977765 -6134,43.835373153047094 -6135,45.18872904574477 -6136,45.122548895494965 -6137,44.67535517505477 -6138,45.06442838551088 -6139,44.15314302503018 -6140,44.29687266680989 -6141,45.119380442167 -6142,45.39953739031073 -6143,45.20693573440093 -6144,45.22022249749947 -6145,44.30334607841617 -6146,43.95850206542599 -6147,44.99081691050452 -6148,45.86903348482699 -6149,46.489459727639385 -6150,44.713351429078706 -6151,47.30777649313991 -6152,47.616110990309785 -6153,48.32246894205656 -6154,47.96489424103552 -6155,48.95922002701827 -6156,48.456393346745486 -6157,49.65391210472176 -6158,49.208440072326006 -6159,48.96695988358481 -6160,47.82913658417431 -6161,47.89096620989674 -6162,47.18318706081188 -6163,46.57770734879617 -6164,47.04308642947455 -6165,47.60896873744116 -6166,47.40963327252374 -6167,47.216851783330576 -6168,48.519047748734515 -6169,47.59806597950559 -6170,47.41270819040989 -6171,47.518799311406276 -6172,48.58059652905326 -6173,47.84923957600441 -6174,47.6086659047262 -6175,47.210730490849585 -6176,46.866435901337425 -6177,49.274938392917626 -6178,51.3171284348981 -6179,52.28862237043419 -6180,52.27622974144543 -6181,53.70413342707627 -6182,54.89008158965201 -6183,54.369858350055345 -6184,54.6895667350437 -6185,55.980998903108585 -6186,56.8978153640776 -6187,56.009548390037466 -6188,55.54974382161482 -6189,55.76562990350992 -6190,57.18279199565362 -6191,59.24930855239372 -6192,60.20851370360601 -6193,61.09893420882642 -6194,63.22606663614041 -6195,63.41865469394153 -6196,63.83196224810876 -6197,63.52248411529404 -6198,63.74235385013573 -6199,63.829696088988335 -6200,63.18998220475282 -6201,63.8394449073322 -6202,64.43266421703849 -6203,63.70838291315331 -6204,64.0791089743082 -6205,65.00035687832859 -6206,64.48375613050091 -6207,66.1947691113436 -6208,65.37052511633352 -6209,65.91044013674838 -6210,66.973853824482 -6211,68.28521235698283 -6212,69.06591827203151 -6213,69.57485826270435 -6214,68.39151463200724 -6215,68.22283563338479 -6216,67.99730185100762 -6217,69.51562272363535 -6218,68.73533125071292 -6219,68.77842395379918 -6220,68.44847836733088 -6221,65.96506037569229 -6222,66.34738614299594 -6223,66.84765039619009 -6224,67.51014820007471 -6225,65.48704716582147 -6226,65.70102957127096 -6227,64.23968773506617 -6228,63.356266713361805 -6229,63.47505712558667 -6230,62.16185127491183 -6231,63.42121063125897 -6232,61.47840166507298 -6233,60.241376678769925 -6234,60.464537951802875 -6235,60.618381205945 -6236,61.890857279411826 -6237,63.09183967846721 -6238,62.700849995476936 -6239,61.58970678833775 -6240,60.06044467451643 -6241,59.98038171967218 -6242,60.05751738841255 -6243,61.16928860853817 -6244,60.55829141768635 -6245,61.325452167215126 -6246,59.70834551442356 -6247,59.05535924213804 -6248,58.249815255805345 -6249,58.810218106197574 -6250,59.75307261980734 -6251,59.481196660553415 -6252,61.22063504900496 -6253,60.460647265579034 -6254,60.05545500571574 -6255,60.89104956124262 -6256,60.296332169874695 -6257,59.22968300625455 -6258,59.63641650578834 -6259,59.8659284050963 -6260,60.533634111825606 -6261,60.31353687295095 -6262,61.780584519839685 -6263,64.02120698672839 -6264,63.669465465691296 -6265,63.34416234630739 -6266,64.33589599769103 -6267,63.868788955814736 -6268,63.86336973004978 -6269,65.14353485654445 -6270,65.41234381663487 -6271,66.33720892372094 -6272,66.76034257074153 -6273,66.64256097667852 -6274,66.31848169541198 -6275,65.39973614219122 -6276,63.5943460530191 -6277,63.68870343162052 -6278,64.47934172725486 -6279,64.54105035196928 -6280,63.004437218691535 -6281,61.29375458046398 -6282,60.540622901560816 -6283,61.036063253356154 -6284,61.210676242677756 -6285,61.66143779574994 -6286,60.89608727861486 -6287,62.55968683219506 -6288,62.142102795905295 -6289,61.664048022356035 -6290,61.481554666332606 -6291,63.35252094303612 -6292,63.87329144864915 -6293,63.38296370812295 -6294,62.55285402492615 -6295,63.37722553250206 -6296,64.21015941192368 -6297,62.23164414383118 -6298,63.108466333367275 -6299,63.8097645948127 -6300,65.3285169174398 -6301,64.81743880563877 -6302,65.55431087863927 -6303,65.36727751721351 -6304,64.73194644268449 -6305,64.9022370029333 -6306,63.43902391450116 -6307,65.17921386118931 -6308,65.9653126206286 -6309,67.21518452486389 -6310,66.52700585591698 -6311,68.51849321575006 -6312,69.12709219178254 -6313,68.82656000960031 -6314,68.51836071842892 -6315,68.57926465702052 -6316,68.80381456870754 -6317,67.45370566680931 -6318,67.80905467630063 -6319,67.66990319656534 -6320,67.13870496594596 -6321,67.9531372349771 -6322,67.24470401570213 -6323,67.47844665543819 -6324,67.53538984347547 -6325,68.71663366332241 -6326,68.216539993107 -6327,68.99588226179901 -6328,70.57875165466642 -6329,70.31401874630971 -6330,70.45076285195958 -6331,70.04992423512832 -6332,69.71617784772359 -6333,70.45231785344009 -6334,71.81554714878204 -6335,72.87083197690318 -6336,73.35207150812863 -6337,71.74967830222593 -6338,71.88263881890518 -6339,73.57806017447767 -6340,72.4723160306703 -6341,72.13808501607362 -6342,72.72998617203872 -6343,71.9142502962859 -6344,73.90551559698517 -6345,75.01960226825513 -6346,77.22956851794223 -6347,76.74547457417054 -6348,76.2716784228462 -6349,73.5975937126212 -6350,73.13171319248235 -6351,72.04593629796449 -6352,73.13008009612291 -6353,73.64640467636714 -6354,72.74657182305877 -6355,72.67420206645616 -6356,72.32736701269187 -6357,73.24873988643584 -6358,72.3886098684218 -6359,73.55421614565871 -6360,74.57557122245424 -6361,73.72678378051087 -6362,74.45790838518579 -6363,72.94580738909048 -6364,74.00726555838769 -6365,74.31518818631886 -6366,72.69617981819168 -6367,73.99844660713516 -6368,75.72602753890348 -6369,75.8863251043894 -6370,76.55914049448363 -6371,76.78523118872586 -6372,76.19929609074734 -6373,75.87801938486241 -6374,76.56766290765148 -6375,75.68266997435812 -6376,76.78577458008374 -6377,75.87126068345223 -6378,75.22491853973727 -6379,75.17238785790649 -6380,77.01072838827513 -6381,75.51704962435116 -6382,73.88285615240703 -6383,73.13599754031745 -6384,73.15904461518294 -6385,74.89252190073961 -6386,74.6571011970879 -6387,76.07860377929545 -6388,76.51476669461653 -6389,76.86165983846472 -6390,77.57479216229137 -6391,78.34395119025675 -6392,78.83683363469206 -6393,80.0366568375621 -6394,78.50690975247447 -6395,79.32201569935496 -6396,78.51046293336348 -6397,78.08009004947739 -6398,77.39339666986153 -6399,77.57365670033587 -6400,78.17666504201391 -6401,79.23183000373545 -6402,79.88818985747007 -6403,80.35921064099182 -6404,82.72755983234909 -6405,83.34199633998388 -6406,82.10761900102898 -6407,83.78324776676456 -6408,84.02071728570675 -6409,84.72012953399657 -6410,85.17882043886708 -6411,82.93232176408068 -6412,83.45101742372161 -6413,83.1041160585161 -6414,84.7519149783683 -6415,84.40995126827829 -6416,83.00775337706811 -6417,82.58511758969512 -6418,82.576015530953 -6419,83.18056567804396 -6420,82.4722084834181 -6421,81.24598945854163 -6422,81.56314156432168 -6423,81.01968486609 -6424,84.02170027280388 -6425,84.58406128446956 -6426,85.03200300739081 -6427,85.48905445785408 -6428,84.35429975599679 -6429,85.14849308121335 -6430,86.04251824384251 -6431,83.81461468324103 -6432,82.96290060108578 -6433,82.58773395253381 -6434,82.92274602753967 -6435,82.34840928514518 -6436,83.23452402376508 -6437,82.40068395711641 -6438,82.54854700860619 -6439,81.87907854944439 -6440,83.22963100026493 -6441,85.43994498465149 -6442,85.189319034604 -6443,84.43697781802699 -6444,83.82394909511737 -6445,84.85110127874641 -6446,85.94679602558675 -6447,86.85965538149615 -6448,87.17106632297647 -6449,86.56102299054602 -6450,86.77187547728155 -6451,87.07037485330213 -6452,87.62726046493106 -6453,88.55629787208161 -6454,89.94358490034811 -6455,89.6154315721004 -6456,90.0567717969648 -6457,88.80847600106819 -6458,87.22974667365675 -6459,88.17036788027053 -6460,88.14183578061318 -6461,86.2354563883687 -6462,86.37469031804422 -6463,86.79845254231276 -6464,87.47532587018537 -6465,87.14484905722966 -6466,88.2785223474276 -6467,90.00121316797012 -6468,89.64415702020626 -6469,90.64982349696862 -6470,91.75219894536592 -6471,93.49945734597922 -6472,93.56108983384237 -6473,92.83895316120302 -6474,91.14718719114586 -6475,91.67091903348035 -6476,90.48581393146085 -6477,91.30450435329155 -6478,93.52022589372366 -6479,95.32751922434703 -6480,95.886687560933 -6481,95.02552388088142 -6482,96.30692257836618 -6483,96.41257591593734 -6484,95.85422318279383 -6485,95.80026848218083 -6486,96.37570424822474 -6487,96.78444816751174 -6488,95.99666242781605 -6489,96.7461371638139 -6490,96.43474888875573 -6491,96.08230627395014 -6492,96.95620501956881 -6493,95.52399720500468 -6494,95.27741699254605 -6495,95.34067386008013 -6496,94.44562054345957 -6497,94.39516191303197 -6498,95.56664660320304 -6499,95.68152736146573 -6500,95.38052693780972 -6501,94.789729287123 -6502,94.7372983181352 -6503,93.83018402901872 -6504,93.82040631791864 -6505,93.77215607702519 -6506,93.02825926723457 -6507,93.0718296878412 -6508,93.85748902279384 -6509,94.0071679142652 -6510,93.75716278934318 -6511,93.48809620661723 -6512,93.52623733009645 -6513,94.27591622153409 -6514,94.70916897255513 -6515,93.51876569376029 -6516,93.50756903884276 -6517,92.20914440868104 -6518,90.99359124152336 -6519,90.38289492003568 -6520,89.49913340890824 -6521,90.27062976964362 -6522,90.9913986165273 -6523,90.89621015964204 -6524,90.70684039074679 -6525,92.65922061785669 -6526,91.10906107183007 -6527,90.06960850934931 -6528,89.11779127817945 -6529,91.2888688238136 -6530,92.49264546010141 -6531,92.45408058587793 -6532,90.5173024416259 -6533,90.43447863804116 -6534,90.86280835485016 -6535,91.63578006533733 -6536,90.14759811747439 -6537,88.6591631577975 -6538,91.38638793630858 -6539,91.65175991675106 -6540,91.13502974460614 -6541,92.0187872186135 -6542,92.26884564581444 -6543,92.1593493649412 -6544,92.75327519917437 -6545,90.861283457777 -6546,89.61199714637743 -6547,88.88375065999543 -6548,89.37525977363056 -6549,89.63191128636785 -6550,90.32671482975216 -6551,91.57563674083167 -6552,91.85414150975208 -6553,91.62902057244737 -6554,91.1253849577712 -6555,90.107946314412 -6556,90.57528806820508 -6557,90.82432897270687 -6558,91.50927985743974 -6559,90.44355241040304 -6560,88.59086970079171 -6561,88.15297184970498 -6562,88.63842278068446 -6563,89.43930569723763 -6564,89.15940738413593 -6565,90.40901701904782 -6566,89.93804742028203 -6567,89.02744700523812 -6568,89.69910141968586 -6569,89.16638615278069 -6570,89.18283067916579 -6571,88.64393936462669 -6572,88.18792723972922 -6573,86.60836192645877 -6574,86.89600346550179 -6575,85.75976497919164 -6576,85.9198476601146 -6577,83.78513839814296 -6578,85.05095524095259 -6579,84.90608025341933 -6580,84.43990046273574 -6581,84.0165964391097 -6582,84.40934050252214 -6583,82.68242363454216 -6584,81.40890411171549 -6585,80.90318888431047 -6586,81.63005965588704 -6587,81.06527941167153 -6588,80.96598851198846 -6589,81.78866487435238 -6590,82.7563966644184 -6591,84.05261691265422 -6592,83.25156663575189 -6593,82.19517894762265 -6594,82.48774003746655 -6595,84.7490863521886 -6596,83.82984058166201 -6597,84.17415243886929 -6598,82.95415433314369 -6599,83.40877027350736 -6600,82.53466187350344 -6601,83.19451801392508 -6602,84.38824765371876 -6603,84.48008183908603 -6604,82.84167981680902 -6605,82.23864447827269 -6606,82.0739986570758 -6607,81.72769137355404 -6608,81.80548060717032 -6609,80.59659297547054 -6610,80.3675512650315 -6611,80.75676248544178 -6612,80.38526348641999 -6613,80.89871291767402 -6614,81.16107228917285 -6615,81.6594605589549 -6616,84.05801050008422 -6617,84.83754563347404 -6618,86.18479985692831 -6619,88.26924677111799 -6620,88.16993126095578 -6621,88.66089216641556 -6622,89.53009244264167 -6623,89.01003649285403 -6624,89.6413470681228 -6625,88.89868721286082 -6626,89.66115245690852 -6627,90.37090320406291 -6628,89.78522569953282 -6629,91.45747724784015 -6630,90.82720694197728 -6631,87.98211011797544 -6632,89.35975764962784 -6633,89.65923854624839 -6634,88.98395356908583 -6635,88.43638164579743 -6636,86.87712152289994 -6637,86.82555208230379 -6638,86.19719874229273 -6639,86.24051941808416 -6640,84.87328901498503 -6641,84.39700016646292 -6642,86.34998868164647 -6643,88.14979424473417 -6644,85.74573650211991 -6645,84.34026757272834 -6646,85.40634943523673 -6647,86.4741231957006 -6648,89.21773240198971 -6649,90.48777343064891 -6650,89.52138122037479 -6651,89.68786158192799 -6652,91.43243773447495 -6653,91.13159515977306 -6654,91.44579372934237 -6655,92.63125779978499 -6656,93.26701176726657 -6657,92.66873881821306 -6658,92.91793410370674 -6659,92.33183247291662 -6660,93.74291785099479 -6661,92.84350322246245 -6662,90.9860262827278 -6663,91.02499942655022 -6664,90.89834588618056 -6665,88.26269441432551 -6666,87.67202313171568 -6667,86.65931014423911 -6668,87.51281016668688 -6669,86.59231190509287 -6670,85.65794438786946 -6671,87.93177133967728 -6672,86.67857902943226 -6673,87.08991278494743 -6674,85.71052426977292 -6675,86.4273292919008 -6676,86.3210830386144 -6677,85.53294630273952 -6678,85.2042179522242 -6679,84.17519588389092 -6680,83.87882424605985 -6681,82.91949247799134 -6682,80.61850967858896 -6683,78.37902740418761 -6684,79.34071318598515 -6685,81.01646107966046 -6686,79.92471059919365 -6687,82.1457718645108 -6688,82.73711900869982 -6689,82.35036743113712 -6690,81.54011215244736 -6691,80.91233004348057 -6692,79.95805956086241 -6693,80.16323133226679 -6694,81.9596426077585 -6695,82.07163498288571 -6696,83.46865629889322 -6697,83.27731089054059 -6698,81.50003739863058 -6699,82.63752147415552 -6700,83.06316645928686 -6701,82.73384619995416 -6702,82.35947308757663 -6703,81.99632879707293 -6704,82.19078283022355 -6705,82.04826530569213 -6706,83.19968832334925 -6707,82.686395216844 -6708,81.16521206969838 -6709,81.21372305065206 -6710,81.04437509051907 -6711,81.34784004200833 -6712,80.25306479008992 -6713,80.28061274236427 -6714,81.72245945688239 -6715,82.53594467937207 -6716,82.98076246643285 -6717,83.39142137642817 -6718,81.79666411287296 -6719,80.93726309716227 -6720,83.07449956806063 -6721,82.58202142345367 -6722,82.05515869084613 -6723,84.01801604795891 -6724,84.87621125593189 -6725,83.70189680020233 -6726,84.49149932360422 -6727,85.50501820913047 -6728,86.54520756263106 -6729,85.8663801743447 -6730,84.75744495656964 -6731,84.0641418795108 -6732,85.17823431524229 -6733,83.92827119574868 -6734,83.87763328041977 -6735,83.83198998713202 -6736,85.33852939431166 -6737,85.18580373342097 -6738,86.92968304966462 -6739,88.09411883035267 -6740,88.24943864187071 -6741,88.63195035736207 -6742,88.94305859804732 -6743,89.01026833421541 -6744,89.38242381174496 -6745,89.74393905136137 -6746,88.83015418193725 -6747,89.43543958593924 -6748,91.2069328079898 -6749,89.76688435087456 -6750,89.53050073305887 -6751,88.44858928798864 -6752,88.92846853909307 -6753,89.49200927348876 -6754,89.37052868076893 -6755,87.98939193671696 -6756,88.17535366360751 -6757,87.79941997698317 -6758,87.54103495218743 -6759,86.10179330501592 -6760,86.43116487936476 -6761,85.52971886064061 -6762,88.02643672475676 -6763,87.81397070301188 -6764,88.8057543579558 -6765,88.97823667616107 -6766,88.80915995423342 -6767,89.61298756449382 -6768,89.4293572899562 -6769,88.60490435464888 -6770,89.85874204333011 -6771,92.39919333041317 -6772,91.59709657441321 -6773,90.47699077050056 -6774,89.71909330932277 -6775,90.86383375322704 -6776,91.09966098642992 -6777,92.1885277809185 -6778,91.30665582725592 -6779,91.78798388694227 -6780,89.57361189511288 -6781,91.44377683530116 -6782,92.25950313122328 -6783,93.13767118733546 -6784,94.23889118338965 -6785,95.89837099223757 -6786,95.81217179147981 -6787,95.96725688030936 -6788,95.82679134990109 -6789,94.56969564001078 -6790,94.9787523954681 -6791,94.81048446980789 -6792,94.56948424844825 -6793,94.76045453876083 -6794,93.69022342234197 -6795,93.7520366108549 -6796,92.96665177851516 -6797,91.72851665397835 -6798,91.03914332911796 -6799,89.36697008549217 -6800,89.51792902457838 -6801,88.79015801933605 -6802,88.81857853538936 -6803,88.6663966449793 -6804,88.6445051282959 -6805,89.02280177434886 -6806,88.74738539130149 -6807,89.4182808768644 -6808,88.71940839369807 -6809,87.85692800784389 -6810,85.78713560760751 -6811,84.71710366586244 -6812,85.73263657619282 -6813,84.88237574403149 -6814,84.7605564224106 -6815,85.45589207518319 -6816,85.26814344652368 -6817,87.08491921572325 -6818,87.12369352177126 -6819,86.09724797163501 -6820,86.93766597866376 -6821,85.83781781753979 -6822,86.44653471812047 -6823,85.63964821241294 -6824,86.94007053401369 -6825,88.1263236618278 -6826,89.06746262269262 -6827,89.11871416183241 -6828,89.7967531561313 -6829,91.31124016245082 -6830,92.75269870829551 -6831,92.27542647176237 -6832,91.1177514925788 -6833,90.68797196291891 -6834,90.02995707846758 -6835,89.10735106908973 -6836,89.08401095995924 -6837,86.88971924973589 -6838,86.24357786994572 -6839,85.72336080775202 -6840,86.49659514946417 -6841,88.76909173790784 -6842,89.30376506443265 -6843,88.82475441381493 -6844,88.28482023754546 -6845,89.89134643619978 -6846,89.17035438801693 -6847,89.41018702100767 -6848,89.05729617311086 -6849,89.85377442188376 -6850,90.39151063843748 -6851,90.50744189366347 -6852,89.96486208148583 -6853,90.1566494214766 -6854,90.38164607190399 -6855,90.57618158401223 -6856,90.94421055881656 -6857,91.24273614875105 -6858,90.54060720199934 -6859,89.38900592214308 -6860,90.43071648319281 -6861,88.73793454701911 -6862,87.36603079659982 -6863,87.6242224286529 -6864,87.29128419055967 -6865,88.4759256661589 -6866,89.07611081745401 -6867,90.72023513861306 -6868,90.43782259343114 -6869,89.674723748359 -6870,90.11100496356912 -6871,89.08336988719071 -6872,88.70521052672706 -6873,89.0470183059328 -6874,89.08743490374921 -6875,89.38748933198006 -6876,88.32106248870555 -6877,88.10779867971291 -6878,88.59677141369382 -6879,87.67185473184057 -6880,87.09766822709355 -6881,87.56157934576628 -6882,87.19089188904863 -6883,85.84874549633236 -6884,84.530800200801 -6885,85.43118014671776 -6886,86.74322205734165 -6887,86.66926926568847 -6888,85.58728634460209 -6889,86.20659011363092 -6890,88.28809271589128 -6891,88.56500246555524 -6892,88.63336750352133 -6893,86.36818893198958 -6894,86.0826813721262 -6895,85.3263721323734 -6896,85.938453807742 -6897,85.53719083072727 -6898,85.79474565022576 -6899,84.65532264193632 -6900,83.30675438519187 -6901,84.33961491115346 -6902,84.16073789835634 -6903,83.87576297191332 -6904,84.02538927688069 -6905,84.13684410330382 -6906,82.4105877721232 -6907,83.05295670804973 -6908,82.89933403842534 -6909,81.03483105496157 -6910,82.60242319264503 -6911,84.53484232307011 -6912,83.8286627865809 -6913,83.95313355293264 -6914,82.93161460055158 -6915,82.59304274695693 -6916,81.65090250059303 -6917,80.81184862324113 -6918,82.21872685458698 -6919,80.25741350607287 -6920,82.1658554002874 -6921,82.65729196976781 -6922,82.99126238907009 -6923,83.72109390578902 -6924,83.41144495150297 -6925,83.86403772656222 -6926,85.2810052556629 -6927,85.48445837361321 -6928,84.94899500300588 -6929,86.89028377679084 -6930,86.31776247693813 -6931,88.24748296617555 -6932,88.48322875688325 -6933,88.8495274341168 -6934,88.52871311744717 -6935,88.09166432097717 -6936,88.10619698802425 -6937,86.3774003221494 -6938,86.60299979186996 -6939,86.37509509761873 -6940,86.47152291387788 -6941,86.07358531617264 -6942,84.94015321036251 -6943,83.9457105472248 -6944,84.12698951530105 -6945,85.04893648890798 -6946,83.4872663288939 -6947,83.16437040096956 -6948,83.31502438045375 -6949,83.25420565812858 -6950,84.4953447751991 -6951,82.96492115342146 -6952,82.73503439858058 -6953,83.73780094621625 -6954,83.49350669545046 -6955,81.76570859039795 -6956,79.6204621845696 -6957,81.78562360231945 -6958,81.00674992809034 -6959,82.11442801576236 -6960,82.73061751561042 -6961,85.12361039488107 -6962,83.67802614883325 -6963,84.09039205638163 -6964,82.83873914878815 -6965,81.99463226513676 -6966,81.72644357228594 -6967,82.03285878932648 -6968,81.10595394696914 -6969,81.94604587368156 -6970,81.3661045522882 -6971,82.41169261318718 -6972,82.2116693462051 -6973,81.76024527779091 -6974,81.69106199332585 -6975,80.80032927825198 -6976,80.27133974338983 -6977,78.79053374471296 -6978,79.18056598529301 -6979,80.48005709120554 -6980,81.11740070029911 -6981,81.4348813601604 -6982,81.46481364707353 -6983,81.67331047104211 -6984,81.31385596739615 -6985,80.63700291314233 -6986,81.29456462800857 -6987,81.2171864139647 -6988,80.22157627541131 -6989,78.87430195950745 -6990,79.75866712806274 -6991,77.69869111717588 -6992,77.69449320129318 -6993,77.85274048298268 -6994,78.58576064830834 -6995,76.93469540547325 -6996,76.50464246183697 -6997,78.38615461360162 -6998,78.5106659292965 -6999,77.86096772598941 -7000,77.30971873585472 -7001,78.50948038315572 -7002,78.84100344975211 -7003,78.65897507311246 -7004,79.47820899735446 -7005,78.91121396285978 -7006,76.21966374534898 -7007,75.7599796277784 -7008,74.60649849643131 -7009,75.58744389812081 -7010,75.59721676976538 -7011,75.6390041953909 -7012,74.36675983711943 -7013,73.84543981512594 -7014,73.02252408212878 -7015,73.39130810462116 -7016,71.25886041996546 -7017,72.02422111004957 -7018,71.19517721038149 -7019,72.46589228725462 -7020,72.87867461839443 -7021,73.85243364711906 -7022,73.75327899596788 -7023,74.33090981445726 -7024,73.71098442761773 -7025,73.00319328078767 -7026,72.83566117079367 -7027,71.62975997129091 -7028,73.01730371923628 -7029,72.81796993825428 -7030,73.32699343485591 -7031,73.34101369420223 -7032,74.03451273419749 -7033,75.75553341640922 -7034,75.31116579100802 -7035,75.6365744291592 -7036,76.02390780716142 -7037,75.00926810586687 -7038,75.87813362539288 -7039,75.08611506605443 -7040,75.66956168113039 -7041,75.86951889614559 -7042,76.25498149186501 -7043,76.19868165850997 -7044,76.80004150812697 -7045,77.63585549079312 -7046,78.59993453207463 -7047,79.25763364388872 -7048,78.93078846300008 -7049,78.4865643148743 -7050,77.57406798170838 -7051,77.94583081810917 -7052,78.27342095058782 -7053,78.88738422521175 -7054,78.61133294069086 -7055,77.78486467520104 -7056,79.03099012913626 -7057,78.39710436122498 -7058,78.47441589772724 -7059,80.61489828584686 -7060,80.98331379653435 -7061,81.26916991375215 -7062,80.43677345346677 -7063,81.44428920392673 -7064,78.71548714560532 -7065,78.78523576417179 -7066,78.64059561097876 -7067,80.03273427896669 -7068,80.27329017651891 -7069,78.90821203126221 -7070,78.10371608964637 -7071,78.90418752013593 -7072,78.5038042659146 -7073,79.48436526427673 -7074,78.85835863519125 -7075,79.86481412511792 -7076,78.08084272246832 -7077,76.75598660332159 -7078,76.391739626098 -7079,78.40786746687463 -7080,76.93559864183038 -7081,76.81326007030381 -7082,76.5493796179513 -7083,77.66284750345731 -7084,77.5502531109228 -7085,78.65574399696433 -7086,79.20441974373591 -7087,76.60208662177251 -7088,75.6492545578188 -7089,75.20028855066256 -7090,76.42718463075154 -7091,76.76005040199911 -7092,76.7547401254007 -7093,74.0082875546373 -7094,75.51806836426007 -7095,76.50895250768423 -7096,76.12880704367613 -7097,76.32520381407714 -7098,76.6325140031595 -7099,76.8624286451827 -7100,75.57567794247258 -7101,77.21980037214193 -7102,76.81248937377045 -7103,78.74173301135865 -7104,79.84288465253698 -7105,80.5263416518257 -7106,79.87662493424232 -7107,80.38568292067683 -7108,80.1212509917262 -7109,81.0173136727854 -7110,80.66841236525225 -7111,80.44965785361167 -7112,79.74557967579273 -7113,77.94220746689027 -7114,76.64501728745539 -7115,75.5771697143649 -7116,72.92696447853731 -7117,74.14861061617559 -7118,73.14069628280822 -7119,74.63075378278177 -7120,74.29459827199145 -7121,74.91298347837206 -7122,75.32335731469075 -7123,73.90898930218925 -7124,73.1570099693554 -7125,73.3374845744781 -7126,73.65440019278613 -7127,74.42025851423234 -7128,75.21884833389706 -7129,74.8316624182993 -7130,73.69351230461938 -7131,72.93760411559676 -7132,71.69356639087862 -7133,73.586339522062 -7134,73.64070801951208 -7135,72.76140778346087 -7136,74.58385056974613 -7137,75.6015071220244 -7138,77.65031251561058 -7139,77.38143224347571 -7140,78.92724998744329 -7141,77.279886498235 -7142,75.76213841412174 -7143,75.00825637687718 -7144,73.63072747364066 -7145,73.59547943351656 -7146,72.61565586423 -7147,73.83463188861008 -7148,76.25613737134044 -7149,75.60848437927294 -7150,77.0329889007154 -7151,77.28333095094771 -7152,76.27568517885162 -7153,75.74357915544111 -7154,76.08152354509623 -7155,77.24662619297428 -7156,76.71827018580176 -7157,75.89448032148643 -7158,75.99904135721603 -7159,75.0576921772054 -7160,76.04039174497811 -7161,75.8629622085486 -7162,76.96914956605083 -7163,76.62167365816816 -7164,76.1562316201661 -7165,75.4737378130623 -7166,77.0157130271261 -7167,78.68145737512923 -7168,78.25510292765883 -7169,79.59880279941008 -7170,79.45975123292051 -7171,78.49510126103938 -7172,78.79185665136127 -7173,78.60907548406831 -7174,79.2065614968847 -7175,78.23378598203942 -7176,79.37731327544793 -7177,79.51449909371273 -7178,79.80030523661226 -7179,79.86046566917759 -7180,79.6554630331941 -7181,79.42894001423835 -7182,79.20479830350283 -7183,79.06599774158512 -7184,79.87636168155527 -7185,80.5858111100722 -7186,81.0493398572469 -7187,81.7148756622651 -7188,82.49474983208182 -7189,81.71460940969344 -7190,82.87977891023876 -7191,82.24762248306969 -7192,82.15907794783072 -7193,82.6672061227154 -7194,83.01545412153355 -7195,82.11040765426682 -7196,81.61172504114761 -7197,83.17629967911799 -7198,81.28937465182541 -7199,81.38499482217101 -7200,79.82948536413102 -7201,79.08372647071216 -7202,78.63124275304071 -7203,77.68738803494993 -7204,78.42370466459886 -7205,78.83210964545445 -7206,80.72639342767734 -7207,80.98794275846205 -7208,82.30973705936024 -7209,82.41017245126706 -7210,81.39117810356457 -7211,82.0332158537243 -7212,81.06982907958991 -7213,80.07181022592691 -7214,80.2783665225371 -7215,79.9660039598255 -7216,79.57546699155479 -7217,80.38754275649922 -7218,80.79354383608097 -7219,80.07411026928293 -7220,81.16689244694447 -7221,80.46706427587199 -7222,81.0806541237469 -7223,80.97958097740344 -7224,81.87392402319429 -7225,80.94860175381352 -7226,80.36755137369235 -7227,82.61929754433162 -7228,82.06672473238807 -7229,82.56813331066677 -7230,82.52435504243762 -7231,83.15095795712531 -7232,84.11598171171275 -7233,84.62495957180394 -7234,85.13364053533819 -7235,84.27570531163308 -7236,83.2247224556238 -7237,82.84195555439094 -7238,82.82961463666294 -7239,81.52110199958686 -7240,81.08607667198343 -7241,80.96434068323575 -7242,81.14724902957089 -7243,80.56498135740699 -7244,78.74666978173836 -7245,77.4320869604457 -7246,77.01448713168234 -7247,75.71590874719006 -7248,77.0689799371413 -7249,76.67214851859232 -7250,77.74693914862893 -7251,76.75625841776619 -7252,76.08108200875296 -7253,76.64574784357006 -7254,76.56911020852571 -7255,78.89577091123464 -7256,79.52161544932194 -7257,80.26392928488835 -7258,79.73912589379734 -7259,80.88622472004931 -7260,82.5835995352749 -7261,82.40126007413424 -7262,82.78065490005814 -7263,80.88597499868527 -7264,81.43428553070395 -7265,81.48798358671687 -7266,82.47781851730427 -7267,82.70075556837631 -7268,83.70549698133169 -7269,82.5602802790317 -7270,83.39423922660751 -7271,83.60781713487405 -7272,84.20971452861988 -7273,84.45988215950196 -7274,86.8326236691617 -7275,86.80130799278392 -7276,85.63836371043722 -7277,85.36276341680531 -7278,85.46564700921684 -7279,86.59437851032742 -7280,88.02680685804978 -7281,88.74721812836269 -7282,87.80465037871897 -7283,87.54195495559489 -7284,87.33332161339221 -7285,87.2612655589738 -7286,87.7905037023879 -7287,87.65034114774984 -7288,87.96585042930428 -7289,88.74243439283732 -7290,90.08788318022893 -7291,89.21275545702153 -7292,89.40243898903478 -7293,88.05269178903903 -7294,89.0713886641967 -7295,91.01257627809447 -7296,90.9462415457298 -7297,89.8456849838291 -7298,90.12803527936329 -7299,89.44847094017157 -7300,89.21617168999772 -7301,89.17191431765796 -7302,89.21508316415105 -7303,88.62318057147462 -7304,90.10465182314395 -7305,90.61251802070038 -7306,90.92472976743002 -7307,90.64834621085532 -7308,90.15355820321604 -7309,91.08959808487229 -7310,91.36069900278495 -7311,91.75801528386182 -7312,92.08725404192927 -7313,92.39901477662436 -7314,92.46523781072852 -7315,91.97843452637106 -7316,92.01245143179534 -7317,92.9462987291178 -7318,93.31657079506783 -7319,90.23073208199821 -7320,91.20591820374344 -7321,91.82560079902825 -7322,92.4392647182986 -7323,93.72021890089881 -7324,93.77546216755826 -7325,94.65278091493101 -7326,95.26631807264053 -7327,94.80650573989358 -7328,95.19079589945669 -7329,94.67116631754914 -7330,94.24939485715636 -7331,95.11712399890824 -7332,96.11008869313973 -7333,97.16560966637131 -7334,94.95497739018087 -7335,94.87710211972873 -7336,95.51880674612762 -7337,96.77655177207667 -7338,95.9126889468705 -7339,96.58721897815636 -7340,97.556835200536 -7341,98.40737883245386 -7342,98.81652264649321 -7343,98.36998797731515 -7344,98.91190743270165 -7345,98.8798467940139 -7346,98.68177524271108 -7347,97.9823658401878 -7348,95.71032494161855 -7349,96.04869303961871 -7350,96.31441031239626 -7351,96.30712219090047 -7352,94.73821648372214 -7353,93.82459823645425 -7354,93.47425408458379 -7355,94.18402184482756 -7356,93.95448036379757 -7357,93.72232180368431 -7358,93.93077883506545 -7359,93.93832676072792 -7360,92.37267317962902 -7361,90.71000934000845 -7362,91.14337109604317 -7363,90.99045234078885 -7364,90.61286073840968 -7365,90.20642509021471 -7366,91.10214438163734 -7367,91.544786985108 -7368,91.71369320868881 -7369,91.45505581447419 -7370,90.93687971206442 -7371,90.61537242496338 -7372,92.5127389134126 -7373,92.24459974727732 -7374,92.226182087848 -7375,91.81857632367733 -7376,90.69269034031319 -7377,90.92877345579261 -7378,91.1240263698335 -7379,90.9562015896989 -7380,91.58298758906375 -7381,91.3906001114283 -7382,92.34752648181946 -7383,90.30872051971373 -7384,89.4382404598005 -7385,90.98716360933591 -7386,90.62914599114836 -7387,91.32647508842355 -7388,89.78154678674319 -7389,90.23705321423624 -7390,90.1040372545623 -7391,89.03298833334469 -7392,89.9674137615948 -7393,89.51792366450609 -7394,89.88532661125988 -7395,90.05627168712728 -7396,88.52359147863301 -7397,88.39529780601136 -7398,87.68575810004961 -7399,86.86242990722728 -7400,85.85741493013627 -7401,85.22961656536145 -7402,84.83095922281834 -7403,83.59582724537556 -7404,83.40755705314596 -7405,83.09581260920967 -7406,81.15589326920565 -7407,81.4037336817384 -7408,82.03370962354559 -7409,81.1737921962085 -7410,80.24442964456316 -7411,80.55100607026101 -7412,81.62731002103145 -7413,83.84704941576031 -7414,83.61638259455205 -7415,84.01108537646947 -7416,84.91812905493715 -7417,84.29149598718756 -7418,84.59860815462206 -7419,84.06406466354652 -7420,83.77976497038107 -7421,84.5366297670912 -7422,85.44631203620902 -7423,86.14828073637975 -7424,85.78956152302588 -7425,85.61419805982614 -7426,86.85355438997856 -7427,86.58962735203603 -7428,86.81996538365323 -7429,85.42982926287692 -7430,86.88428770782843 -7431,87.59106091247084 -7432,87.6358858094249 -7433,87.17932309433482 -7434,87.43449015468163 -7435,88.57114166505716 -7436,88.466168596303 -7437,87.9566698096116 -7438,90.28780799647345 -7439,89.71554630594983 -7440,88.14466845186242 -7441,87.77531753885185 -7442,86.3538058188867 -7443,83.83024602824459 -7444,84.73968506627783 -7445,82.23855057366656 -7446,83.77003417635359 -7447,84.81392234988755 -7448,85.01365421626325 -7449,85.24617818098547 -7450,84.76311532058601 -7451,83.95035928247081 -7452,83.03887423200251 -7453,82.86173041845296 -7454,84.13682155827622 -7455,81.9408043418627 -7456,82.04982677456952 -7457,82.10757629041538 -7458,81.47352838345743 -7459,81.28853774247915 -7460,80.34419058473758 -7461,78.23064862048275 -7462,76.57699575576798 -7463,76.24620011237225 -7464,76.70131309052141 -7465,76.28438435270617 -7466,75.10987289149628 -7467,75.63565895710225 -7468,76.27471907950465 -7469,75.92079525414854 -7470,77.26149363310678 -7471,78.16157966944033 -7472,78.66403481369451 -7473,78.4136712395819 -7474,79.86928166452448 -7475,81.78626373044543 -7476,80.76403673789771 -7477,80.87421296711129 -7478,81.64353203769645 -7479,81.46724235091403 -7480,81.55933387322908 -7481,81.33556973345331 -7482,82.60485802993442 -7483,82.30177753410085 -7484,81.18061231050025 -7485,81.42640509924678 -7486,82.09348963236722 -7487,81.5519979378582 -7488,83.32230331040557 -7489,83.37044365313623 -7490,82.75576483593335 -7491,80.72216137643497 -7492,79.24678339970875 -7493,81.05716998126624 -7494,82.31579577942661 -7495,81.36111165852196 -7496,81.67920006013584 -7497,80.20803080103282 -7498,79.9115063256629 -7499,81.02963925388096 -7500,80.97577389871526 -7501,81.77661055156804 -7502,81.32983383426703 -7503,84.28495972078264 -7504,82.66568150801952 -7505,82.79964061002495 -7506,82.58244081778156 -7507,82.99202112110105 -7508,85.17053911498539 -7509,84.72556607322998 -7510,84.53694169231166 -7511,85.90168703795224 -7512,85.22436366138375 -7513,85.75287071117295 -7514,87.62590181012858 -7515,89.15849138621785 -7516,88.87188537370301 -7517,88.01890146037307 -7518,87.9838836581726 -7519,86.9379395381003 -7520,88.53821945005761 -7521,89.11210006335183 -7522,89.7951565552528 -7523,87.56424049242187 -7524,87.69503055572235 -7525,88.06792123433046 -7526,87.4132277342937 -7527,87.11254563206987 -7528,88.10277888837236 -7529,88.6170686794257 -7530,89.05925081124155 -7531,89.91045599382657 -7532,91.00377417219296 -7533,91.39274734249366 -7534,91.2566269548814 -7535,91.8720824890385 -7536,90.90659440598023 -7537,92.34089550171078 -7538,92.6280161799218 -7539,93.78860247919174 -7540,91.98674592520021 -7541,90.56435443508043 -7542,90.33440480325595 -7543,91.43561154412465 -7544,92.35525954575948 -7545,92.38445279729237 -7546,92.2793753816178 -7547,93.96018751362169 -7548,92.78894783032618 -7549,95.10262019586378 -7550,95.96160512774253 -7551,96.85382323306243 -7552,97.27034061949597 -7553,97.32367517237027 -7554,98.89309214946616 -7555,99.12191880430655 -7556,98.58047804576451 -7557,97.50048915568837 -7558,97.53217648997092 -7559,98.54712503053277 -7560,97.60462404842428 -7561,99.11818673235697 -7562,100.39860451564448 -7563,101.92420505328577 -7564,101.91496823766437 -7565,102.42678505265276 -7566,103.1955743428493 -7567,101.60044202976272 -7568,101.44813503175725 -7569,103.2648243124334 -7570,103.2102343758618 -7571,105.29872954877953 -7572,105.4372508114294 -7573,104.92787466724695 -7574,105.38433920739763 -7575,105.69459543261249 -7576,104.2987227658055 -7577,102.7308257189723 -7578,102.65197626056697 -7579,102.03933578854004 -7580,104.76769718572547 -7581,105.65652786284872 -7582,104.52369348371394 -7583,102.67663664475562 -7584,102.78991344194448 -7585,103.63337612283787 -7586,103.62669542732749 -7587,103.73582245209114 -7588,103.71400376790359 -7589,103.11518791091201 -7590,103.18132214444977 -7591,104.8279277806063 -7592,104.67892747228852 -7593,104.88327390394441 -7594,105.13509265924391 -7595,105.68418039736973 -7596,106.15914397492296 -7597,106.61925850480148 -7598,107.11407890313876 -7599,106.0454882741543 -7600,106.70112498969824 -7601,104.70559790353215 -7602,106.16311844554365 -7603,106.07516882118256 -7604,105.48696427003107 -7605,105.74314342403423 -7606,105.04558928158774 -7607,104.32030134484357 -7608,105.48819200682158 -7609,105.25580764312318 -7610,103.46707153360573 -7611,101.7308608429527 -7612,103.65342988223989 -7613,105.23404255885195 -7614,105.09049668476308 -7615,104.62966284616213 -7616,104.96206549663609 -7617,104.63651905911262 -7618,103.94560578558838 -7619,103.0678600223272 -7620,102.54793224200841 -7621,101.52773220768546 -7622,102.39831772052882 -7623,104.6574091943563 -7624,103.75531817940421 -7625,102.80714908528758 -7626,103.29601413895988 -7627,103.12296960887913 -7628,103.88800586544764 -7629,104.11769068190354 -7630,103.17318618207452 -7631,103.57481017143004 -7632,105.7687110427077 -7633,105.76013982980783 -7634,106.62054762338416 -7635,107.00171147371105 -7636,106.29513994315022 -7637,106.11179303471226 -7638,107.1188095212472 -7639,107.40504315956738 -7640,108.23238173272418 -7641,108.81696641441826 -7642,110.12822266610753 -7643,109.03914119022872 -7644,109.00612551800553 -7645,108.24620442265484 -7646,109.36124178373966 -7647,109.28087740240629 -7648,109.66150502021026 -7649,108.4713749813376 -7650,108.99176922945038 -7651,108.59189826464716 -7652,108.20898527966618 -7653,105.34305344430456 -7654,104.88566224379494 -7655,103.75180564422759 -7656,103.65010613929982 -7657,103.82592765154824 -7658,102.73292845775725 -7659,103.21750670224606 -7660,103.00241330098227 -7661,102.9111424945104 -7662,101.68013525506933 -7663,101.42846430388394 -7664,101.35645101681168 -7665,100.90264764710066 -7666,102.17435562103051 -7667,102.27944301027138 -7668,101.54175901985836 -7669,102.25871742800574 -7670,101.91140874016664 -7671,101.60522752429131 -7672,101.83460466345474 -7673,102.0861471514326 -7674,102.71817488260503 -7675,101.98267028730153 -7676,102.83560286559269 -7677,103.56037316201106 -7678,105.1097386309702 -7679,109.03225600069149 -7680,109.30483911351755 -7681,110.56221750603467 -7682,108.05713727609206 -7683,110.03792002820077 -7684,111.84933973899348 -7685,111.05639910090791 -7686,111.78318099030793 -7687,111.84837619263158 -7688,112.04060229515402 -7689,111.69040161105174 -7690,112.17092030405169 -7691,112.33334829939272 -7692,112.82274341923768 -7693,110.61775303792105 -7694,109.74236104828512 -7695,109.2905615373725 -7696,109.70745405953888 -7697,110.41129105699812 -7698,110.9479297831495 -7699,110.6889469995022 -7700,111.02976142643432 -7701,112.61770951364913 -7702,113.44489085208481 -7703,114.72248297583626 -7704,116.39292016546054 -7705,117.05507054911048 -7706,116.44765362790571 -7707,118.56651608371055 -7708,117.85803283067229 -7709,117.38630860348107 -7710,117.65938839312982 -7711,117.46514516243462 -7712,117.37035140383847 -7713,117.4054012021128 -7714,117.93643602648768 -7715,120.00892553209232 -7716,120.58140997037323 -7717,119.92805062358792 -7718,120.14537566216234 -7719,120.58707684277911 -7720,120.81694383571146 -7721,119.00830318803227 -7722,120.02198119346524 -7723,118.50344508709355 -7724,117.3499588546423 -7725,117.23916737339982 -7726,116.00013773284358 -7727,115.28045247898967 -7728,115.85148935762325 -7729,116.24980541088506 -7730,115.01069813370161 -7731,115.88492969440308 -7732,116.50333221230842 -7733,117.0087148134989 -7734,118.14517259084037 -7735,118.82527159703146 -7736,117.97368949876885 -7737,117.07806189346073 -7738,115.89594249289979 -7739,115.4376843243495 -7740,115.41104872610097 -7741,115.13789972282514 -7742,115.90582588651762 -7743,116.09519796075806 -7744,114.18967842884565 -7745,114.07119400123996 -7746,114.16905884861791 -7747,115.65778839368579 -7748,114.75876606670614 -7749,113.4909429611524 -7750,113.71573755104652 -7751,113.35035813984193 -7752,112.98368876301562 -7753,111.68453214654704 -7754,112.02934471632534 -7755,112.64385320196784 -7756,112.03250320662512 -7757,110.13516028895127 -7758,111.23862309204841 -7759,108.99260715044038 -7760,109.25621860477204 -7761,109.97302808279123 -7762,109.80752267470947 -7763,108.93408352930764 -7764,108.95315644527648 -7765,109.09304350479908 -7766,109.90895414446602 -7767,111.33674347012648 -7768,110.32542258823275 -7769,112.521873752069 -7770,111.68770373527515 -7771,110.90065999803375 -7772,110.13550814726227 -7773,111.24622261041901 -7774,110.32522146838576 -7775,108.6311619813219 -7776,109.49938848343804 -7777,110.67640343697106 -7778,111.20364035283825 -7779,110.2625873693294 -7780,108.99327034341486 -7781,107.95716533655335 -7782,107.53125688090225 -7783,107.56837745977005 -7784,109.45823474171718 -7785,109.90057350557204 -7786,110.90372580402527 -7787,109.23724328262236 -7788,109.38256870594066 -7789,108.85835126850063 -7790,109.29103547682948 -7791,110.31643041341275 -7792,109.8284797589068 -7793,108.25830283702636 -7794,107.29401714140195 -7795,106.89126761768546 -7796,107.02316267997885 -7797,106.35260881877846 -7798,104.82360848756007 -7799,103.95792636020863 -7800,103.52149861082704 -7801,102.99578121877353 -7802,103.53388195286202 -7803,104.46112032422454 -7804,103.24355438800274 -7805,104.44641611010275 -7806,103.29519892932879 -7807,104.88770642828302 -7808,104.75112337302757 -7809,105.48224551607211 -7810,103.84690249629965 -7811,102.63287812512611 -7812,102.59377620407177 -7813,102.27901982048375 -7814,103.18495161452013 -7815,104.82551806726617 -7816,105.6415478596724 -7817,105.65386065821254 -7818,105.52622958112917 -7819,104.27526599534428 -7820,104.68880361210965 -7821,102.86417228773429 -7822,102.60698878252946 -7823,102.10163135955705 -7824,101.3606225253959 -7825,100.45921020616298 -7826,99.65252199898278 -7827,99.75073819534629 -7828,99.66983719865861 -7829,100.37386632454822 -7830,100.49138906780975 -7831,101.92552314835572 -7832,101.47436841282166 -7833,99.29455403176381 -7834,99.61922488020598 -7835,100.6749215952157 -7836,102.27822459636832 -7837,103.60867232091125 -7838,103.11791070159519 -7839,103.32196885778052 -7840,104.56833609714432 -7841,105.6213857453298 -7842,106.0144289980658 -7843,106.98192304716162 -7844,106.91055176311647 -7845,107.6131778945584 -7846,105.07382395520004 -7847,105.42486899277483 -7848,105.32955425721265 -7849,105.27275418659661 -7850,103.86713393949248 -7851,104.47143196886049 -7852,104.72856123030458 -7853,103.91697737098119 -7854,103.50144220464391 -7855,103.63530604709229 -7856,103.15797019012363 -7857,101.93368572810968 -7858,101.84137595914675 -7859,103.79232064655062 -7860,102.66918995599276 -7861,100.67192841317016 -7862,100.0891638243601 -7863,97.15038135871498 -7864,97.51242634453027 -7865,97.25985658874562 -7866,96.21972295519238 -7867,96.93543500570436 -7868,95.82387523762029 -7869,94.46259049912537 -7870,95.31188300869715 -7871,93.63517612347178 -7872,95.12523061156257 -7873,95.60577570826476 -7874,94.90163687674976 -7875,94.12522896621103 -7876,94.0949488716006 -7877,95.61953773371722 -7878,95.63802216445853 -7879,95.47632992961552 -7880,95.89662598013555 -7881,97.64942867767475 -7882,98.36467581848565 -7883,98.39367061029021 -7884,97.18557933672614 -7885,97.91554124550507 -7886,94.86716296191429 -7887,95.11095338343488 -7888,95.5354583880287 -7889,95.11945845169618 -7890,96.48308423937628 -7891,96.06948203157964 -7892,95.80613307537955 -7893,95.98884838392304 -7894,97.55168087224388 -7895,97.32968707853499 -7896,96.42871570456853 -7897,96.5474471768988 -7898,97.03616222556171 -7899,96.82665164841734 -7900,97.79368688538311 -7901,97.32214590929256 -7902,97.5469343432335 -7903,97.82131563552085 -7904,96.6916334893627 -7905,96.3164607168624 -7906,96.06958210204778 -7907,95.68235016948243 -7908,97.26391865943118 -7909,96.86823439786498 -7910,97.6508751137105 -7911,97.90075826893576 -7912,98.74439286848103 -7913,101.75116477560547 -7914,101.73351148493418 -7915,102.14801784385217 -7916,101.54409660378357 -7917,100.38543772074637 -7918,103.7350110511411 -7919,103.36597540715745 -7920,104.53886004223641 -7921,104.19865134404556 -7922,103.17479517421245 -7923,103.47062383499627 -7924,102.93201981000938 -7925,102.83367487677468 -7926,103.61819757966478 -7927,103.77329954487054 -7928,103.29357056274952 -7929,102.39931027624837 -7930,103.11592218787735 -7931,102.5941384622568 -7932,102.40529190664557 -7933,101.54156605996603 -7934,102.39886145003379 -7935,101.56068649121528 -7936,101.42823817858803 -7937,101.01753539662786 -7938,101.30773114218374 -7939,102.51393273428323 -7940,101.33538690259785 -7941,100.30010965663989 -7942,100.50898065548787 -7943,99.86406622507313 -7944,101.17225723389929 -7945,102.38101639997352 -7946,101.27018952716064 -7947,102.76602605986385 -7948,103.04726460996288 -7949,100.678185645725 -7950,100.01084491206755 -7951,99.17512884524176 -7952,99.6217405170092 -7953,100.8634368254685 -7954,100.76273794487075 -7955,102.21563735454532 -7956,102.4252888127583 -7957,103.52309118790882 -7958,102.58736343045737 -7959,103.05477110769121 -7960,104.30927692317981 -7961,104.81320117585312 -7962,105.25634431134041 -7963,103.85930784556803 -7964,104.07339738032063 -7965,102.89710909566078 -7966,105.01879174136127 -7967,105.29221612141298 -7968,104.26099077972054 -7969,103.48313196053172 -7970,103.35613085667215 -7971,103.7471690976009 -7972,104.58839789703403 -7973,104.83678261368637 -7974,104.64266757740612 -7975,105.24874239624509 -7976,105.58305090712274 -7977,104.60883293091892 -7978,103.9116932946794 -7979,102.53251374820829 -7980,104.00514334232813 -7981,101.27096825064136 -7982,100.37202661860765 -7983,99.84982591123985 -7984,98.21645987355853 -7985,97.45416639797926 -7986,99.3592280691547 -7987,99.67517918926308 -7988,99.95832779252837 -7989,99.29399974222223 -7990,99.6023852002323 -7991,99.77383008046012 -7992,99.06812671715937 -7993,100.011918226252 -7994,98.85502691799954 -7995,98.9225054331785 -7996,98.3834293708081 -7997,99.95855836010108 -7998,100.97269307770094 -7999,101.40513317457842 -8000,99.2657471356404 -8001,99.9946488424714 -8002,101.12951263443468 -8003,100.55560684615781 -8004,100.35475008394286 -8005,102.32392216513746 -8006,102.53967240544806 -8007,103.64539742729411 -8008,104.40243065774801 -8009,103.98617457292615 -8010,106.00830376995366 -8011,104.97599931830439 -8012,104.5912626870455 -8013,104.02015287020437 -8014,102.43728443453476 -8015,103.71150847356542 -8016,104.30865676631392 -8017,102.78396120035153 -8018,102.96896589960107 -8019,103.30029359423338 -8020,102.08404903186343 -8021,101.79615056801119 -8022,103.06755331315638 -8023,103.30771126766872 -8024,102.61014276761736 -8025,102.2154683377955 -8026,103.5150995968412 -8027,102.01879721101997 -8028,102.06653002007415 -8029,102.92522180254723 -8030,102.63280862143195 -8031,101.24816629314196 -8032,100.65269070424002 -8033,98.90229482039109 -8034,99.5705947042799 -8035,98.66736303636128 -8036,99.73858632748458 -8037,100.3685439354874 -8038,100.4682392626812 -8039,101.07953047267307 -8040,98.9407550250464 -8041,99.0563058840338 -8042,99.96867222905924 -8043,100.03420400530217 -8044,99.66274812463459 -8045,99.64100087494316 -8046,100.43276751511003 -8047,99.98513770320912 -8048,99.12351503062862 -8049,99.32763456025404 -8050,99.86774197163724 -8051,100.83002778719143 -8052,99.39300747886008 -8053,96.73299320763478 -8054,96.1193799352958 -8055,95.54606073560616 -8056,95.48137189473509 -8057,94.43385063609047 -8058,95.28099045551274 -8059,93.17308917814574 -8060,92.71420258800313 -8061,92.29382594570342 -8062,93.15610235116453 -8063,93.08091499938479 -8064,93.70307940803227 -8065,91.89890354080102 -8066,91.03770921443238 -8067,91.53852230157518 -8068,91.15556488228728 -8069,91.1835003483046 -8070,90.84224873075962 -8071,91.81630764464501 -8072,90.5796433278489 -8073,91.76723411345517 -8074,93.26859163341383 -8075,92.62074713364889 -8076,92.99982758079344 -8077,94.72922284365261 -8078,97.09725616192816 -8079,97.61575763191429 -8080,97.56589881687835 -8081,99.11914377284654 -8082,99.42097985354596 -8083,99.85818771392111 -8084,99.38499429795309 -8085,100.96426414565046 -8086,99.39927221300236 -8087,98.49837031042883 -8088,99.09868898459128 -8089,99.40442310097656 -8090,100.42134789149115 -8091,100.8185337047342 -8092,101.98806256805368 -8093,102.5503012405381 -8094,102.36101924440274 -8095,102.7816306138169 -8096,102.94873634229285 -8097,104.13571716020502 -8098,104.56286660020413 -8099,103.66676350184837 -8100,103.55204870209471 -8101,101.9618926681962 -8102,101.30748270324607 -8103,100.9679820405702 -8104,101.84443372470506 -8105,103.2222569046936 -8106,101.3523849543087 -8107,102.79447012189486 -8108,102.53946452602 -8109,102.28442840896543 -8110,101.85753362870483 -8111,101.18741434323292 -8112,100.96484972976279 -8113,99.30241279253187 -8114,99.34698397240275 -8115,98.84838593019677 -8116,97.38055422236 -8117,98.72630171771567 -8118,98.89593021561515 -8119,98.15736364361649 -8120,98.69016095590996 -8121,100.33638393982913 -8122,99.78506694678528 -8123,98.42086233801638 -8124,97.35269409244937 -8125,97.55534394612418 -8126,98.96749884470776 -8127,99.06996950229349 -8128,99.51140412936596 -8129,99.26602114270459 -8130,98.87923816720892 -8131,100.6892959928837 -8132,100.0142462102604 -8133,99.47011770925086 -8134,97.85137600841148 -8135,97.22470537350671 -8136,95.62458027379151 -8137,96.70142287160729 -8138,95.32707759126973 -8139,94.12757274791177 -8140,94.88516893798081 -8141,93.92649755608618 -8142,95.08024508274664 -8143,95.15176768744976 -8144,95.90195487217984 -8145,96.2968158939363 -8146,95.94113752695705 -8147,97.50160730445117 -8148,97.49402753284612 -8149,95.88168036755083 -8150,96.10270840557835 -8151,95.26805478725299 -8152,96.92941640435475 -8153,98.31849789164944 -8154,97.86322434253726 -8155,99.76354885166111 -8156,100.29335392241858 -8157,99.48017271838356 -8158,99.43304360310833 -8159,100.9474655056584 -8160,100.58620843171445 -8161,101.9056378022559 -8162,101.52415627563563 -8163,102.32117385888431 -8164,101.3849400348634 -8165,101.79460335189589 -8166,100.11914767022928 -8167,101.26659615643197 -8168,100.67406675214961 -8169,99.45856710081479 -8170,98.23221479289072 -8171,98.29790459721012 -8172,97.09954593929251 -8173,96.6178686542004 -8174,95.54436249218882 -8175,95.06149087918828 -8176,94.86992453828397 -8177,95.22388094845432 -8178,96.03657011221802 -8179,96.32067322562877 -8180,96.45054867605289 -8181,96.2686430171703 -8182,96.58306385104852 -8183,96.50014045075743 -8184,96.85151171589588 -8185,95.1740228118842 -8186,95.05914372092809 -8187,95.68118041558951 -8188,95.3634782754083 -8189,94.51850296585242 -8190,95.12165212795819 -8191,95.45530143014045 -8192,95.5821851911706 -8193,95.84903492245255 -8194,94.22886427377078 -8195,94.5145269775877 -8196,94.20647286282392 -8197,95.58188328881602 -8198,94.27274687482915 -8199,94.64096149784342 -8200,95.07922479607927 -8201,95.04193992675786 -8202,95.62448816977032 -8203,98.47875887127336 -8204,98.08556418702277 -8205,95.44466039906334 -8206,96.87277060608349 -8207,96.45568818341745 -8208,98.73985308755249 -8209,99.44978970376155 -8210,98.35776060461149 -8211,96.05085757366727 -8212,96.4794525490315 -8213,95.45909907995852 -8214,96.24909360587807 -8215,93.80642690951876 -8216,93.69196637207996 -8217,93.719900709986 -8218,94.04383575153136 -8219,93.66553439229102 -8220,92.11338740881936 -8221,91.49915087403338 -8222,92.30209388987423 -8223,92.64673270851011 -8224,93.43429782234819 -8225,93.85395573295608 -8226,94.3864494747995 -8227,93.01719893349933 -8228,92.07945967788899 -8229,89.89778968872638 -8230,89.8395328881947 -8231,91.893208492983 -8232,92.53602313803843 -8233,93.88923650571321 -8234,94.95471266209955 -8235,93.82468080043517 -8236,94.93204628801047 -8237,94.38307200319893 -8238,94.00047715677672 -8239,97.1930749463475 -8240,98.20583231302915 -8241,97.96970212313948 -8242,100.39788989109557 -8243,100.50356947613508 -8244,98.89420793098628 -8245,97.44792609600003 -8246,98.56645959307781 -8247,100.4312059610493 -8248,101.31933955540147 -8249,103.48760567729462 -8250,104.37489478149651 -8251,104.7621718272989 -8252,104.83566486661158 -8253,105.48269071481965 -8254,105.0536733116838 -8255,106.16543236367741 -8256,106.52721749123502 -8257,106.4207243894029 -8258,106.86944153872794 -8259,106.49121889605682 -8260,107.42023634811777 -8261,107.68489288453729 -8262,108.08328949603148 -8263,107.21721573711068 -8264,106.6788862502971 -8265,106.24083735386361 -8266,106.59994217100979 -8267,105.95760750422433 -8268,105.3214839329554 -8269,106.70656700710147 -8270,106.57815710403335 -8271,105.29863332497095 -8272,103.9955133771204 -8273,105.56664480811932 -8274,104.43363295640117 -8275,104.62626902678173 -8276,103.01089300704398 -8277,103.33268656455922 -8278,105.19827836645177 -8279,104.74641833936877 -8280,104.16210663399549 -8281,104.71270932733862 -8282,104.93823580898407 -8283,102.20740893698976 -8284,101.6055061291262 -8285,102.19398428266828 -8286,102.52408849909793 -8287,104.24524678303294 -8288,103.42418578062129 -8289,102.1552110115427 -8290,102.97082443900341 -8291,103.03438212864266 -8292,103.61463620018752 -8293,103.94140876566944 -8294,104.21555322546827 -8295,106.11933951015527 -8296,107.39749864649798 -8297,108.06859460523235 -8298,108.31440390117113 -8299,107.70963369286152 -8300,109.51285727674994 -8301,110.06399967705622 -8302,109.84076590728262 -8303,109.55916704612193 -8304,109.38835468932572 -8305,109.88022964537556 -8306,109.26009729472983 -8307,109.93203043258306 -8308,107.32565029285806 -8309,106.4725261198909 -8310,106.31513010408081 -8311,105.43899424479964 -8312,107.78305625439832 -8313,108.33278216096996 -8314,108.05965401142181 -8315,107.95939220636697 -8316,107.65056870279092 -8317,106.34340438807378 -8318,105.5912810623619 -8319,107.06621306343932 -8320,106.60484802785737 -8321,105.77908788862712 -8322,106.83639405654377 -8323,107.86651954272672 -8324,109.05877604625842 -8325,108.55495898251226 -8326,107.36728375560709 -8327,107.02140647297709 -8328,107.25537380214666 -8329,108.23104551789709 -8330,107.65689753024571 -8331,106.96551291286869 -8332,107.09748170639074 -8333,106.63470643800336 -8334,106.59376291956458 -8335,107.02690235609147 -8336,106.82919045068711 -8337,106.92427347343836 -8338,105.13589376076847 -8339,104.03988390720323 -8340,102.56247069257773 -8341,103.1785191429203 -8342,102.88821278286117 -8343,103.32947292830656 -8344,103.1291616565477 -8345,106.01309303682146 -8346,104.54068988284102 -8347,103.90532287448313 -8348,102.88677077683177 -8349,102.31224619099761 -8350,102.85414774173275 -8351,103.13767564859099 -8352,104.28507111141955 -8353,103.69347235397636 -8354,103.66888420540063 -8355,104.17629136458386 -8356,103.13049202947607 -8357,102.78433700533535 -8358,103.56535733532 -8359,104.26364469787565 -8360,104.3166897150121 -8361,105.13758443557488 -8362,104.78690095969651 -8363,104.69179765901644 -8364,102.63121414177776 -8365,103.83849012609139 -8366,102.85195585696177 -8367,102.73902377612661 -8368,101.92402027619806 -8369,101.76770888391574 -8370,101.84331556465251 -8371,102.6673474712877 -8372,103.24718514998712 -8373,104.33217718897528 -8374,105.17363810482466 -8375,106.49359935524133 -8376,108.22041055636389 -8377,108.13910527298754 -8378,107.44331930110849 -8379,107.82752345601493 -8380,106.83714602340365 -8381,106.3618923687035 -8382,105.1425371346122 -8383,103.34390124475868 -8384,102.16712004291985 -8385,100.06987391758523 -8386,98.67830888670964 -8387,99.80215357665354 -8388,99.5526270828955 -8389,98.68473819656057 -8390,99.19518454120835 -8391,98.70675364161758 -8392,98.94330472818362 -8393,99.74442911281454 -8394,99.47769187906475 -8395,98.59816722653049 -8396,98.69076517884407 -8397,98.1917006535269 -8398,98.27353483920908 -8399,97.52186694545252 -8400,96.91983540965535 -8401,96.75574607047065 -8402,95.17489527004892 -8403,94.26654462991658 -8404,96.11099014275595 -8405,94.36515595415136 -8406,94.46952794300866 -8407,96.95196207537157 -8408,96.54681743198562 -8409,97.29623498514542 -8410,97.12612892566295 -8411,97.28988261724692 -8412,97.41876417901199 -8413,96.42586361089332 -8414,95.8850526339616 -8415,96.98721885801494 -8416,96.8476912455824 -8417,98.39703275598981 -8418,99.87582686542547 -8419,98.86982945801839 -8420,99.7705089333342 -8421,98.95251109268699 -8422,98.5322789749363 -8423,98.42553400557361 -8424,97.25353576679315 -8425,98.97925651631111 -8426,98.89922801607491 -8427,98.35365453201497 -8428,97.70120651351256 -8429,98.24474947055083 -8430,98.64881172125811 -8431,96.9747677366696 -8432,98.12225074250885 -8433,99.02725300905747 -8434,97.47903033688604 -8435,98.97825774695946 -8436,98.07316606614134 -8437,96.75125229275181 -8438,96.45678892536279 -8439,98.02957026257016 -8440,98.42965001635353 -8441,97.61012884363016 -8442,96.86734787581756 -8443,97.24410200925234 -8444,97.22239886688065 -8445,95.6593219038363 -8446,95.02002977018908 -8447,94.12834589679134 -8448,95.01809237562365 -8449,96.09666316209038 -8450,95.46804434576757 -8451,95.54589904467956 -8452,94.59379299829043 -8453,94.24075209323468 -8454,93.7442156078334 -8455,94.47321135128507 -8456,93.96907085755672 -8457,94.49180211767654 -8458,95.58425997724397 -8459,96.46977545042535 -8460,96.5431059294145 -8461,97.60944925404918 -8462,97.24654450371561 -8463,96.45942061956427 -8464,96.79357961772511 -8465,96.56393858500694 -8466,96.52664466145697 -8467,96.10327155713682 -8468,95.17105615511089 -8469,95.62538766980367 -8470,94.83081468807384 -8471,95.2643561659116 -8472,95.2553214004528 -8473,94.86385269183403 -8474,96.5785421234261 -8475,96.24417903220834 -8476,94.98150859290585 -8477,94.75364274309047 -8478,95.5560613980404 -8479,95.96291892688328 -8480,95.24095619286483 -8481,95.3905054726058 -8482,96.28119514648418 -8483,96.56513672081009 -8484,97.91168989719478 -8485,99.82599677510541 -8486,99.5463195367427 -8487,99.80176178051451 -8488,100.10151097280753 -8489,97.73233782897474 -8490,97.58306425099971 -8491,98.14991884232985 -8492,99.35353270357281 -8493,98.05494902530424 -8494,97.45890171005234 -8495,97.96426632759014 -8496,96.90565196038122 -8497,97.36778420867988 -8498,96.04541466004558 -8499,95.64566299511426 -8500,94.13828613544055 -8501,95.24553970100708 -8502,96.96291817635358 -8503,97.84393697741945 -8504,96.41075309634009 -8505,96.39616143217701 -8506,97.5518014640529 -8507,98.44323098395914 -8508,97.75991051252602 -8509,99.24813977452679 -8510,99.49507122332464 -8511,100.34696103951258 -8512,100.34385041035094 -8513,100.30363917037248 -8514,99.6325706895103 -8515,98.29682408137212 -8516,98.46098723236474 -8517,97.86169170116531 -8518,97.79645953592325 -8519,97.20538754378332 -8520,97.75811271841665 -8521,96.97346257566947 -8522,95.67528215081305 -8523,96.35974431834072 -8524,95.42682139157664 -8525,95.78563457189371 -8526,98.08054644240488 -8527,97.06685952642091 -8528,97.92804914736666 -8529,99.27045019683446 -8530,99.31002275148671 -8531,99.48189596766059 -8532,99.84361944654697 -8533,99.10636838234593 -8534,100.57364070582186 -8535,100.76504596721375 -8536,101.9762920841304 -8537,101.95055367892645 -8538,101.9233443301409 -8539,101.33110267945851 -8540,101.45787065650933 -8541,101.57390672277081 -8542,101.83946695449401 -8543,102.28161509101788 -8544,103.29268569255511 -8545,103.71678317338372 -8546,102.99939311699107 -8547,103.36932987234132 -8548,103.462330632628 -8549,104.26582978787046 -8550,106.02863639357824 -8551,105.21405723028865 -8552,105.46301561466869 -8553,103.06297492903661 -8554,103.15558641836188 -8555,103.19632423077024 -8556,102.90378788016248 -8557,103.93826493121095 -8558,104.17166632312494 -8559,104.94330886424333 -8560,105.36263045156822 -8561,107.0809460901515 -8562,108.30748025626143 -8563,109.4333068696324 -8564,109.95912767122509 -8565,110.54557845515428 -8566,109.70049685872957 -8567,108.35676984598999 -8568,108.55223105238055 -8569,109.44111146225666 -8570,110.28471070350352 -8571,111.41191053147169 -8572,110.67277648704626 -8573,110.4698631805547 -8574,109.97945245007587 -8575,109.50474175255879 -8576,109.25990810644606 -8577,108.00933221310817 -8578,107.18310630593894 -8579,106.40711797836533 -8580,108.68973199033469 -8581,110.47211893397561 -8582,110.00077636975169 -8583,109.75348604991798 -8584,110.40718988259546 -8585,109.75895413200949 -8586,109.50281583534861 -8587,108.1005916165617 -8588,110.10166412779432 -8589,110.33367207630984 -8590,110.38799118331269 -8591,113.40366957705949 -8592,112.43076803233681 -8593,113.3087308187974 -8594,113.42586032555745 -8595,114.17060704258057 -8596,113.59999142075802 -8597,112.86405766314039 -8598,114.1745983970015 -8599,113.68835365760431 -8600,114.19944490917085 -8601,116.03068425566714 -8602,115.83314723904815 -8603,115.89776860224113 -8604,115.53040470906056 -8605,115.73463967352575 -8606,116.06687275759634 -8607,116.63158909141008 -8608,117.61236178330539 -8609,117.0581321363753 -8610,115.7510166615332 -8611,115.81257166958045 -8612,117.09645341719926 -8613,117.20707118202408 -8614,117.23186842154847 -8615,116.57635441172503 -8616,114.27366726861169 -8617,113.60587925242419 -8618,113.87580354011853 -8619,112.00562687315741 -8620,111.57439731161266 -8621,111.5479888189926 -8622,111.26547745678765 -8623,110.21233046625638 -8624,109.22547511462497 -8625,108.95723291793549 -8626,108.23813874075168 -8627,110.36192634764349 -8628,109.82658209728442 -8629,110.00154849860228 -8630,108.27292627830582 -8631,109.61625103773497 -8632,110.92451182179367 -8633,110.83214529052583 -8634,111.3724908329251 -8635,113.7033358449131 -8636,112.32552816261621 -8637,112.40831432511943 -8638,112.21058577555486 -8639,111.30122966724917 -8640,112.19557477978448 -8641,111.99478815986748 -8642,110.18533376309237 -8643,109.11184590789124 -8644,107.75732442670612 -8645,107.94541394424604 -8646,107.8960339152377 -8647,107.09893387805698 -8648,105.6231757738794 -8649,106.6161944719363 -8650,107.08506154340307 -8651,108.46186865362928 -8652,109.98468240683901 -8653,109.49695323455175 -8654,109.83800825018193 -8655,109.95420904807501 -8656,110.90472350597884 -8657,109.78292467377122 -8658,110.326860622137 -8659,109.62775959902035 -8660,109.26695110280272 -8661,107.74475827744125 -8662,109.42448436189014 -8663,109.15552033823099 -8664,109.2433052166661 -8665,109.32172781510818 -8666,109.91129645283984 -8667,110.61315039692512 -8668,112.5001378692475 -8669,111.42360151370798 -8670,111.84898855102799 -8671,110.97790585008612 -8672,110.49706638753139 -8673,109.54525390495698 -8674,109.7271473830266 -8675,108.30499487407369 -8676,109.7298789275088 -8677,110.05383195448115 -8678,109.5034029699602 -8679,109.23657717764453 -8680,108.37648974943603 -8681,109.13547235688985 -8682,109.75137297840004 -8683,110.96001232068558 -8684,111.89661057824584 -8685,112.39784921531293 -8686,112.32157850885238 -8687,114.59817186950976 -8688,112.51780299488132 -8689,112.74924560078564 -8690,112.96118888957419 -8691,114.35076289550426 -8692,114.44858443999888 -8693,114.90724798225108 -8694,115.0319612602231 -8695,114.08437745362588 -8696,113.80113948506397 -8697,113.69423035524449 -8698,113.3068353573174 -8699,112.01007066749317 -8700,112.24770706613012 -8701,111.84044774117193 -8702,111.11914699069878 -8703,110.6849211742523 -8704,110.884431231905 -8705,110.13468199656384 -8706,110.76619950161847 -8707,110.14586786342909 -8708,110.36561966406353 -8709,108.92551576044532 -8710,108.2824232530817 -8711,106.68646898460076 -8712,106.94394160652544 -8713,108.75441086912625 -8714,108.46740311367952 -8715,108.72126101183842 -8716,107.01170303103298 -8717,106.59500353128178 -8718,106.40551740438582 -8719,108.85919563964364 -8720,109.54212297171186 -8721,110.27418052359968 -8722,110.82442889198701 -8723,110.52712955005975 -8724,110.07301904530792 -8725,109.5367090455617 -8726,109.89509328418112 -8727,108.25938431569591 -8728,108.8315672694727 -8729,108.93154426119678 -8730,110.01069902151774 -8731,111.09577305173254 -8732,111.72006217876259 -8733,110.93152707957032 -8734,109.97831971508782 -8735,110.61659861181832 -8736,110.39871991583624 -8737,110.57746404726508 -8738,111.765643306119 -8739,109.98780391057144 -8740,110.21263078205867 -8741,110.38360667099543 -8742,111.84865807227692 -8743,113.361873999554 -8744,112.82060946972211 -8745,113.92009654236436 -8746,114.20112496466784 -8747,115.27319532405924 -8748,115.43127284282566 -8749,116.33848799140415 -8750,116.86639011061641 -8751,117.59425728392708 -8752,117.87791469721309 -8753,117.6245467092917 -8754,118.31738248408202 -8755,119.2506610513633 -8756,119.57621188838009 -8757,118.73574527954516 -8758,118.38553657448128 -8759,117.12789398982797 -8760,116.665149488633 -8761,117.93960756104367 -8762,117.2404758153402 -8763,117.21938858635498 -8764,117.89985260677621 -8765,116.3495510604952 -8766,117.19103930781351 -8767,118.72409943529586 -8768,118.01129112044633 -8769,119.0027195993953 -8770,118.38433139803203 -8771,118.44092022833571 -8772,121.73704926580213 -8773,121.17065855666921 -8774,122.48364889932542 -8775,121.39915147032913 -8776,121.47637629741122 -8777,121.30649927514308 -8778,119.61127277539035 -8779,119.34582496092825 -8780,119.8339324985355 -8781,120.28839246625034 -8782,121.0977018850359 -8783,121.98260092755918 -8784,121.39519475415995 -8785,120.5139420271997 -8786,120.30233399075819 -8787,119.43548155008162 -8788,122.78976597883967 -8789,123.48199794916391 -8790,122.8566777205797 -8791,121.70994595396438 -8792,120.37803988641696 -8793,120.72556361420675 -8794,119.1822066029483 -8795,119.18603812162412 -8796,118.60052203698 -8797,120.72620007879327 -8798,120.76625979936634 -8799,121.03005756959611 -8800,121.53594170097585 -8801,122.00937263855009 -8802,120.52403643448264 -8803,117.02665954283988 -8804,116.70137994237511 -8805,116.53067168014776 -8806,115.4827998056537 -8807,115.58671186483402 -8808,114.89268046091941 -8809,114.59062992159826 -8810,115.25303450590438 -8811,115.45130823093402 -8812,116.29619513074842 -8813,117.13074579541251 -8814,116.47406744173514 -8815,115.16162973568564 -8816,114.7409827466088 -8817,112.4629268803533 -8818,111.98821142768016 -8819,111.32692470581415 -8820,113.03875444415941 -8821,112.51920088824876 -8822,112.12295601282953 -8823,111.88458717051067 -8824,112.05876760740891 -8825,113.54350134011568 -8826,112.98786392651824 -8827,111.88804055539934 -8828,110.36589260397102 -8829,108.80428718992768 -8830,108.63030711008591 -8831,107.35380395371446 -8832,107.36964065606512 -8833,104.70365434340309 -8834,104.99572190530226 -8835,104.62647924928233 -8836,106.14585695087403 -8837,107.33030591862152 -8838,107.57618485801889 -8839,107.28764187396692 -8840,107.25931811461182 -8841,106.06253015994776 -8842,106.77114900065177 -8843,107.30737060947513 -8844,108.13457153775747 -8845,108.79130404164596 -8846,109.48989445051448 -8847,109.90303970245238 -8848,109.04894953098001 -8849,109.85425480875405 -8850,110.52542359034022 -8851,109.42530449416948 -8852,108.90849583423478 -8853,106.77101232647283 -8854,104.74597940733152 -8855,103.76363602400309 -8856,102.10120858883593 -8857,101.64658215561575 -8858,101.30204201988087 -8859,102.12199137752542 -8860,99.53756440486411 -8861,98.55854859526478 -8862,98.23474909272899 -8863,96.71861893962699 -8864,95.43375345532519 -8865,94.98772485143739 -8866,96.10626138638999 -8867,96.8242480349047 -8868,96.57729486743992 -8869,96.93797208715019 -8870,98.20498643631285 -8871,98.51467695376166 -8872,96.62854860057524 -8873,96.71237605000933 -8874,94.98752539583246 -8875,94.86021172394996 -8876,93.91061292763652 -8877,94.040172090659 -8878,93.50912227653511 -8879,92.71966704233144 -8880,91.89977862888036 -8881,89.25810714733743 -8882,90.41444453992939 -8883,90.89303475975393 -8884,91.87649765483408 -8885,90.16942864418523 -8886,87.73919570706674 -8887,90.31201997098044 -8888,89.9620270940336 -8889,91.03864572422043 -8890,92.38628578980112 -8891,91.88512950191829 -8892,91.66200985144646 -8893,92.99548123723842 -8894,93.26860627022991 -8895,94.90349726705689 -8896,96.19155470514329 -8897,94.03923544844642 -8898,91.89824511068377 -8899,91.34439930740356 -8900,93.19581106443808 -8901,93.43169723749361 -8902,93.24415649439987 -8903,91.95385229285947 -8904,91.47137954998624 -8905,91.6783447853333 -8906,92.17051660238509 -8907,90.06913421308286 -8908,91.99502297761926 -8909,91.15157660699808 -8910,89.38431027184126 -8911,89.9475324259316 -8912,88.7623094640692 -8913,88.91832286900254 -8914,91.34939146966967 -8915,91.61878038057473 -8916,92.2032395933022 -8917,91.31856919811614 -8918,91.57468949925264 -8919,92.73025994950778 -8920,91.1606061342879 -8921,93.0685231683518 -8922,92.56212630077809 -8923,90.79060167722523 -8924,88.81256248335436 -8925,88.45968870170782 -8926,88.63950969644883 -8927,88.73616757025287 -8928,87.43093817882256 -8929,87.75209616640403 -8930,88.97191840497285 -8931,90.52826924649298 -8932,91.18077991127261 -8933,91.67111113550867 -8934,91.51571912574232 -8935,91.75332578728073 -8936,90.74246352090401 -8937,89.8916990958529 -8938,89.14647491339659 -8939,89.46023358196312 -8940,89.31749023724394 -8941,89.34738249973056 -8942,89.0445183132704 -8943,89.03256909324189 -8944,87.16102258203509 -8945,86.65701753696555 -8946,87.89960734211714 -8947,86.98403316521252 -8948,85.83200715776685 -8949,87.68497678260621 -8950,87.68729413587474 -8951,88.81984044621935 -8952,88.64703791221584 -8953,89.54725302608024 -8954,90.68601514196037 -8955,90.20855813419664 -8956,90.24868792930118 -8957,89.96805881751943 -8958,90.00087289249113 -8959,90.23957288941847 -8960,90.84071266117822 -8961,91.14149636619415 -8962,91.52904501992414 -8963,92.73743030482511 -8964,90.70800767199519 -8965,88.20463714237492 -8966,88.36008384611112 -8967,88.37940149478553 -8968,90.55027910518764 -8969,88.7487655603338 -8970,88.56371780063027 -8971,88.27595345668024 -8972,88.5340698046414 -8973,87.66894880783438 -8974,86.01020652526526 -8975,86.04469692304932 -8976,86.08178630243498 -8977,85.59718743802493 -8978,85.43061414543313 -8979,86.03682479092359 -8980,86.50442421729082 -8981,86.13170835492768 -8982,85.49044791984005 -8983,84.8324624122798 -8984,85.64072945267749 -8985,85.47181905168952 -8986,82.63251734023211 -8987,81.92727673454218 -8988,82.65797729400458 -8989,84.02361102831928 -8990,83.87335918747118 -8991,85.08617522945296 -8992,85.10952517017495 -8993,85.65877342517301 -8994,87.15208954170504 -8995,87.76827908815888 -8996,87.5471370617052 -8997,87.2426253747128 -8998,88.76261621323481 -8999,89.22199477520695 -9000,89.15104149408056 -9001,88.63883015914047 -9002,87.65318837968822 -9003,87.3837820818475 -9004,88.03122729039573 -9005,87.6512985770602 -9006,88.18027671825539 -9007,89.1806688987201 -9008,89.729237047558 -9009,89.83151125934559 -9010,89.5103258246816 -9011,89.6580302247425 -9012,90.52375613624244 -9013,89.18493651416509 -9014,88.80327133736012 -9015,87.95837445480241 -9016,87.47759508861706 -9017,85.72832835674745 -9018,83.51344700405177 -9019,83.08845218384398 -9020,83.08927580318269 -9021,83.20631261223049 -9022,85.32604453019194 -9023,85.32049391631436 -9024,85.66483446953723 -9025,85.34898646868086 -9026,84.70403298382321 -9027,84.41726151126828 -9028,84.52718085089435 -9029,84.19883421639713 -9030,84.00919696131741 -9031,84.98799858090288 -9032,87.0057808817855 -9033,87.37786613373329 -9034,87.47476649727764 -9035,86.29820185031963 -9036,85.75864680090777 -9037,84.42392091609166 -9038,84.98438791424164 -9039,84.04885841553515 -9040,84.18250160258917 -9041,82.99533137789928 -9042,82.00749280197022 -9043,81.1748189602266 -9044,83.90587225485761 -9045,83.87535751911177 -9046,83.41343658727028 -9047,82.71064025183873 -9048,84.63739252945669 -9049,85.20538935996112 -9050,84.4535371269181 -9051,84.0901217967821 -9052,85.13602810960441 -9053,85.61662920136719 -9054,87.86745488685986 -9055,86.29531279564303 -9056,86.9020109296456 -9057,87.25306046951671 -9058,89.20083613767699 -9059,91.60728376399565 -9060,91.45410775581729 -9061,90.5925716193593 -9062,91.25448626704616 -9063,90.91965851434648 -9064,90.62489887280316 -9065,89.09001626286339 -9066,89.84334903287191 -9067,91.44642236529609 -9068,90.59197217926626 -9069,90.67578471050783 -9070,89.93513442149097 -9071,88.85466632397629 -9072,88.20306232421528 -9073,87.72091756359802 -9074,88.4284344623419 -9075,88.43841105058877 -9076,87.08787586427555 -9077,86.87741771925067 -9078,84.48426845481191 -9079,82.72772256002084 -9080,81.26917407438981 -9081,81.1893072262376 -9082,81.97343963488436 -9083,81.92136240048725 -9084,82.19570963614012 -9085,81.39288826975155 -9086,80.11954458306174 -9087,81.15365329813352 -9088,81.33153844596576 -9089,78.94858121841193 -9090,79.15323496467155 -9091,80.03673033200114 -9092,79.61255188058853 -9093,79.38946345386589 -9094,78.98667598326607 -9095,77.51786898676464 -9096,78.82471784724228 -9097,79.64644657608622 -9098,79.34607949683668 -9099,79.15634579693092 -9100,78.44189820249788 -9101,78.3243876299578 -9102,77.66425904021013 -9103,78.38817783983377 -9104,78.23113938260838 -9105,79.15582786614094 -9106,78.1944477932923 -9107,77.46479077409963 -9108,77.59159950137257 -9109,78.30856333640517 -9110,77.25620185354457 -9111,75.35963911861441 -9112,75.57389260937359 -9113,75.17831499908407 -9114,76.236819901585 -9115,74.95508075181169 -9116,76.22864524028317 -9117,76.22557604210897 -9118,75.9700862099971 -9119,76.93436011595601 -9120,76.115442512562 -9121,74.91161131640227 -9122,74.6095918154109 -9123,75.67777686147286 -9124,73.85680204055586 -9125,72.54523129014228 -9126,73.5022290042907 -9127,73.7464319828623 -9128,72.12125425727946 -9129,72.29672792676196 -9130,73.10925728035409 -9131,72.58046923358567 -9132,71.96171810737205 -9133,75.1627621522833 -9134,75.67712608364934 -9135,75.63061546956762 -9136,75.03072526246143 -9137,75.60012546959102 -9138,76.60285478200008 -9139,76.7983229804624 -9140,78.00825708485065 -9141,77.88404259015809 -9142,77.0307076982328 -9143,75.15199053664108 -9144,75.47586049046025 -9145,74.31390307524921 -9146,74.74237910137255 -9147,74.22110182875497 -9148,72.88361628997981 -9149,74.77198288510736 -9150,75.47625927283943 -9151,75.06193618305315 -9152,76.56448399535574 -9153,76.84739417783823 -9154,76.85311046099974 -9155,77.40038967193122 -9156,79.0619975870788 -9157,79.6509470867877 -9158,80.81585376921541 -9159,81.40026201330016 -9160,81.0003976343051 -9161,81.18834862202262 -9162,81.36933238773264 -9163,80.27664992624929 -9164,80.86008543395266 -9165,80.26763214141535 -9166,79.20007582725204 -9167,78.99618596835154 -9168,80.05215593953413 -9169,81.79667701290704 -9170,80.21803844466372 -9171,78.79181140952012 -9172,78.17139423905274 -9173,78.29116885720704 -9174,79.76730338137925 -9175,79.8688330928415 -9176,79.9214131856277 -9177,81.05554291969443 -9178,81.15785607935695 -9179,79.94406209049839 -9180,78.36406054386336 -9181,77.4911376061251 -9182,76.41960662993812 -9183,75.90742554505306 -9184,75.63666854943642 -9185,75.1096765623474 -9186,74.62135819904668 -9187,74.77859773244954 -9188,75.38447676699812 -9189,74.40815023324774 -9190,72.71779179341037 -9191,73.36660182503782 -9192,74.29277950449746 -9193,73.86558381841651 -9194,73.5468059652214 -9195,74.16932300145459 -9196,73.37200677595372 -9197,72.31329520571414 -9198,70.54978276517733 -9199,70.59023907755342 -9200,71.33678544230419 -9201,71.69436070992923 -9202,70.16941206934706 -9203,70.55844342948954 -9204,70.1832637008178 -9205,70.03794398841096 -9206,70.02715251590402 -9207,69.85919973484555 -9208,70.0338788614083 -9209,70.96159827783538 -9210,71.19738739026867 -9211,70.01596928635809 -9212,70.5425444413498 -9213,70.21414422738948 -9214,70.92145584691276 -9215,69.5180970131607 -9216,68.71179340158108 -9217,68.88680901229296 -9218,69.48329419809785 -9219,69.16569761155836 -9220,67.06975019982448 -9221,67.92729675164364 -9222,66.38194929636411 -9223,65.3775731403072 -9224,66.80007528039748 -9225,66.10231892380497 -9226,66.08899285586652 -9227,66.34500540508955 -9228,69.09070536239471 -9229,67.96841959491044 -9230,67.4986671357286 -9231,66.370126807041 -9232,67.87526223502957 -9233,68.80148909929189 -9234,68.16322791550492 -9235,68.4839540044206 -9236,67.56312093476272 -9237,67.21200323267 -9238,68.19291412766034 -9239,66.6690763422211 -9240,65.3323482296465 -9241,64.98731792600464 -9242,66.14028487451581 -9243,66.3374632419524 -9244,66.40117148505807 -9245,65.80418816745119 -9246,65.64347583966033 -9247,66.32246493826364 -9248,65.33091601899768 -9249,66.13462452619294 -9250,67.1447387352721 -9251,67.73243684744378 -9252,67.5219484974676 -9253,66.01938464599638 -9254,67.59456052783678 -9255,67.92384382201342 -9256,68.86876906858153 -9257,67.89920892579981 -9258,68.24393699185548 -9259,68.97384055593461 -9260,67.81044503714176 -9261,67.09630000750808 -9262,67.4306466849223 -9263,66.80298081450813 -9264,66.47676292124515 -9265,65.80659948940328 -9266,65.92611809018611 -9267,66.43611791308822 -9268,65.98563212518357 -9269,66.57738758136021 -9270,66.94139847368145 -9271,67.8194169454051 -9272,68.03791436153318 -9273,67.44641966879531 -9274,68.3175738953025 -9275,68.6829895955692 -9276,67.69071491133055 -9277,67.02020547569767 -9278,65.99161309615259 -9279,67.07348029036906 -9280,67.03751377257633 -9281,67.90704939478822 -9282,69.68567119437381 -9283,68.61252089099133 -9284,67.7142423758426 -9285,67.1790003060104 -9286,67.77164717805829 -9287,68.28648651920768 -9288,67.65940571251113 -9289,67.58993856556698 -9290,67.32589696464565 -9291,67.40316518656158 -9292,66.20481929256677 -9293,67.86433945114719 -9294,67.63133330284421 -9295,66.38181897794475 -9296,67.04936276877271 -9297,67.46665713096964 -9298,67.12856461226356 -9299,66.43729051912477 -9300,68.10083342118786 -9301,69.65966252669118 -9302,70.06288096769596 -9303,69.86516101851973 -9304,69.11498531828961 -9305,69.79436323236052 -9306,67.57283366170473 -9307,67.49532355127137 -9308,67.69171198951364 -9309,66.94389606640345 -9310,68.69953544992245 -9311,69.63109022496938 -9312,70.51105906749765 -9313,69.68088474343425 -9314,70.2202271990892 -9315,71.05533143041583 -9316,72.13474062356612 -9317,71.8073115384577 -9318,71.32098181855058 -9319,72.84489182342391 -9320,73.8105124734291 -9321,74.6708410599853 -9322,73.32815033492297 -9323,72.95124291192329 -9324,73.77512519429553 -9325,71.19741107103913 -9326,71.7378993289535 -9327,72.06512400254711 -9328,73.85425711424845 -9329,74.79857053137313 -9330,73.32819181702553 -9331,73.95669493248822 -9332,73.98581900098768 -9333,73.86532714586495 -9334,75.00828417956767 -9335,75.93499374571272 -9336,76.45829360159904 -9337,75.19958168875759 -9338,75.40483648096075 -9339,74.26084978922111 -9340,74.26986293902009 -9341,75.13749134304224 -9342,74.77581804590164 -9343,74.01132597710192 -9344,74.20839950858753 -9345,74.3077476242672 -9346,74.94937966385419 -9347,76.04882423794723 -9348,75.18089093776769 -9349,74.04836853099718 -9350,76.3327226566744 -9351,77.52767948583056 -9352,77.25702968335102 -9353,78.86315177594263 -9354,78.77957731720562 -9355,77.85772135690823 -9356,77.48912414287334 -9357,76.97390675041473 -9358,77.1897254013467 -9359,77.86984030772159 -9360,78.55452774660337 -9361,77.68628058233897 -9362,78.39019076041329 -9363,78.43921992802008 -9364,79.01080271564365 -9365,79.74102007230516 -9366,80.43787125755578 -9367,81.59995180255254 -9368,81.10184669765249 -9369,81.02782623840363 -9370,80.60221738251833 -9371,81.61933114152352 -9372,80.80627457353917 -9373,82.08897199934799 -9374,83.06328081213654 -9375,83.00040130694566 -9376,82.72056787347248 -9377,81.61756424054789 -9378,81.54859974953645 -9379,80.84362108984047 -9380,79.59863109352338 -9381,79.88284267749115 -9382,79.32149222408931 -9383,78.63303122232539 -9384,78.09463994488034 -9385,78.78176651016017 -9386,80.21190886893761 -9387,79.95531924793964 -9388,79.10859272042589 -9389,77.87921976644387 -9390,79.11573437288172 -9391,77.41738073645826 -9392,78.1654958421596 -9393,79.82546467501572 -9394,79.74453328321468 -9395,80.03631766274788 -9396,80.36162700922661 -9397,80.46858040904878 -9398,79.54127010878571 -9399,80.1575948960627 -9400,79.45759452806192 -9401,77.0690951423353 -9402,76.71301070573101 -9403,75.4445982946073 -9404,75.69333124635405 -9405,75.95091227024928 -9406,74.42742689303638 -9407,74.7252328127282 -9408,76.55883860313429 -9409,77.10616892991719 -9410,77.9630409059133 -9411,75.56473378701229 -9412,74.32666388806527 -9413,73.72698878612256 -9414,73.37037997132194 -9415,72.64022924271674 -9416,72.42462906767894 -9417,72.84882439137152 -9418,70.46112998067055 -9419,71.66160628588825 -9420,70.23101517323929 -9421,69.63083525789597 -9422,69.07384277447645 -9423,67.18395002209041 -9424,67.08477543541598 -9425,68.50872862851479 -9426,67.72066791257872 -9427,66.4294030103931 -9428,66.5098550245841 -9429,67.38187216572253 -9430,67.68419733751817 -9431,67.79703319052166 -9432,68.72987154362816 -9433,68.89239716501288 -9434,70.41568407746105 -9435,70.77035471012364 -9436,72.07554380793981 -9437,72.01797264509484 -9438,70.62615043208056 -9439,71.29037119604062 -9440,71.74015015427595 -9441,70.4822216523311 -9442,71.11456170550375 -9443,68.5930169434242 -9444,71.70769124438621 -9445,73.7004453353497 -9446,73.95067743185678 -9447,74.54118632077044 -9448,73.94724483948872 -9449,75.1168768950096 -9450,75.32194693201595 -9451,74.32378432977622 -9452,74.63016260081648 -9453,75.33311056337139 -9454,75.69733092915322 -9455,76.08580594213606 -9456,75.58680764898429 -9457,74.30679256857819 -9458,72.31890246492449 -9459,71.37101948554742 -9460,71.28791138127946 -9461,71.11350462864308 -9462,68.91363948569226 -9463,68.5999187213899 -9464,68.69671566246448 -9465,68.91147026670595 -9466,68.12333425042587 -9467,69.13679971513551 -9468,68.55034916566649 -9469,69.07601329922112 -9470,69.24834514089211 -9471,69.48632360907717 -9472,68.43665285805857 -9473,68.28908465727115 -9474,70.0170999128233 -9475,69.86729906064232 -9476,70.03474364848331 -9477,68.4809496801537 -9478,68.76388225563463 -9479,68.07939772432657 -9480,67.94538814003008 -9481,67.97346764177931 -9482,68.78042659308177 -9483,70.67023633716127 -9484,68.76182902237106 -9485,69.66429222662022 -9486,68.74784143125726 -9487,67.69708418833899 -9488,68.94689464093668 -9489,70.25084206353631 -9490,68.91764268456706 -9491,69.04252153727403 -9492,69.85826258314745 -9493,69.65636992838003 -9494,70.69454320640584 -9495,71.01922289394814 -9496,71.11436139151505 -9497,70.1934752725579 -9498,70.14133170889494 -9499,69.00456634515369 -9500,69.74733232176251 -9501,69.96549604965202 -9502,70.40942899096561 -9503,69.68364951628404 -9504,70.33949393358643 -9505,70.33919673409983 -9506,69.65145851425382 -9507,70.04167624647482 -9508,69.754366735557 -9509,67.76495799390128 -9510,68.37622902696042 -9511,68.22332359156378 -9512,69.89196359241548 -9513,71.225858702665 -9514,71.01922766402136 -9515,70.38710419131388 -9516,69.94164345122007 -9517,68.97142837418828 -9518,68.67722822128906 -9519,68.8528143348267 -9520,68.81729914921725 -9521,69.05253256314202 -9522,68.77267592974182 -9523,67.30299193605575 -9524,67.80272182091741 -9525,66.34480189006528 -9526,66.70428163899209 -9527,66.51319212034939 -9528,67.28624151983186 -9529,68.17280084786151 -9530,67.17701783588265 -9531,66.36032473230541 -9532,66.69017558491504 -9533,67.06478601796547 -9534,67.61143898672445 -9535,67.32617607167242 -9536,68.46972290612743 -9537,68.89151544862254 -9538,67.97164294341557 -9539,67.03106016222732 -9540,67.27957961962825 -9541,69.08611328786927 -9542,71.0713221254297 -9543,70.29486870061957 -9544,70.40295328464987 -9545,69.73460284066849 -9546,69.4170611586212 -9547,69.40576255182555 -9548,69.08930577606682 -9549,69.09164765559123 -9550,70.63598848788963 -9551,69.92553421758723 -9552,68.72561449131345 -9553,70.32911257076094 -9554,70.56229408145923 -9555,71.22475613731366 -9556,70.5617543715919 -9557,68.54506690058811 -9558,68.37157738037223 -9559,69.52566074983064 -9560,69.05449365313088 -9561,69.50148446993848 -9562,70.07065047572712 -9563,70.52588703687591 -9564,71.27947130034723 -9565,71.25879994791728 -9566,73.39351344895576 -9567,73.81364188913412 -9568,74.46161656044387 -9569,72.99091766723764 -9570,73.73850175054525 -9571,73.35638264014008 -9572,74.3788961152057 -9573,74.31912793288839 -9574,72.87848076658221 -9575,71.49215868084035 -9576,71.2643600410372 -9577,71.33750931802672 -9578,69.73146339260848 -9579,69.46746849050864 -9580,68.377767031695 -9581,71.06593513462386 -9582,71.36933770113819 -9583,72.16049088425682 -9584,74.10064809879806 -9585,73.41286131609414 -9586,74.90773781976091 -9587,74.39455732764678 -9588,75.64331449481199 -9589,77.14406010936237 -9590,76.05332053852189 -9591,74.88194914194166 -9592,74.13571396981735 -9593,75.95996912092076 -9594,74.31650339245088 -9595,74.60575726894936 -9596,74.18113189961534 -9597,76.38767367731407 -9598,76.93581910787593 -9599,77.19681006051748 -9600,78.73496087610648 -9601,80.62878775929178 -9602,79.75202885232656 -9603,80.24771811871824 -9604,79.48093848520023 -9605,76.54144482074913 -9606,74.64233421445601 -9607,73.09505772965711 -9608,72.1183686198216 -9609,71.18459799154991 -9610,71.05617692058505 -9611,70.45811109585065 -9612,70.65275284763472 -9613,72.39697269677804 -9614,72.97449396960204 -9615,72.57586139867354 -9616,72.70106200479147 -9617,73.73295819936943 -9618,74.36237606170434 -9619,74.64641194334 -9620,75.43720070719874 -9621,75.43644342850358 -9622,75.51448937285832 -9623,74.82008823967976 -9624,74.04789006023393 -9625,74.40511126966359 -9626,75.28739691911065 -9627,73.31227777513901 -9628,71.70019837548118 -9629,71.60056806482015 -9630,73.33881250645045 -9631,73.16936637329657 -9632,72.16582342766176 -9633,72.67609978342558 -9634,73.44776747063449 -9635,73.56261207890982 -9636,74.82768936348097 -9637,75.25409384328711 -9638,75.14363551216566 -9639,75.18939319696197 -9640,75.24720532119905 -9641,74.98158577814667 -9642,73.27300113469849 -9643,74.11837495453821 -9644,73.96163321373946 -9645,72.62234902133096 -9646,71.9455040387124 -9647,72.0670313077047 -9648,70.11834089909664 -9649,69.18527740943897 -9650,67.68448024642404 -9651,66.92616976597168 -9652,67.29709272878547 -9653,66.95537083051578 -9654,68.26237332631203 -9655,67.81851386757614 -9656,68.45698098692122 -9657,67.34069483582874 -9658,67.47423565750579 -9659,67.47600214277116 -9660,67.53187390238205 -9661,67.82127288103572 -9662,68.20381925702787 -9663,68.63802184318259 -9664,69.24015713662091 -9665,69.26619809384812 -9666,69.06498033193496 -9667,68.1831641204528 -9668,68.5642014615147 -9669,69.66235537850535 -9670,69.78319830499673 -9671,71.49779909288337 -9672,72.6200928740729 -9673,72.10544727862627 -9674,75.13381656440127 -9675,74.84141628446237 -9676,73.82012361979037 -9677,74.3358802269257 -9678,75.23432916479841 -9679,76.58950555851781 -9680,77.70254989321757 -9681,77.39531317713715 -9682,77.71476504228144 -9683,77.45679016913371 -9684,76.60241268349303 -9685,75.070519370031 -9686,75.16742357763778 -9687,74.65431900179685 -9688,73.28545621364735 -9689,74.15545288743458 -9690,72.92014721991893 -9691,73.43806303034539 -9692,74.49504323673766 -9693,74.00649335560907 -9694,73.71480649723887 -9695,73.22284835625334 -9696,74.23775158525265 -9697,73.72327311098661 -9698,73.84497379497577 -9699,73.86858937004847 -9700,74.00788336547139 -9701,72.66568966018525 -9702,72.97611844934158 -9703,74.04932990409486 -9704,73.45562292192706 -9705,73.4167669743072 -9706,73.68212459613255 -9707,75.10418808807508 -9708,74.66254218007681 -9709,76.07777919296407 -9710,75.87031230165324 -9711,75.39213027088589 -9712,75.74330971215178 -9713,76.84614215530158 -9714,75.44262786981967 -9715,77.34400338828046 -9716,78.7478658982658 -9717,77.53349632034123 -9718,77.79204910439019 -9719,76.89212484763547 -9720,74.8909113490023 -9721,75.04718998374133 -9722,75.44416343890663 -9723,76.24411200846718 -9724,76.51827623766869 -9725,76.40544053624417 -9726,78.06033202014684 -9727,80.10270830465205 -9728,81.1025875503771 -9729,80.37351848580367 -9730,78.59666760815841 -9731,81.13010474004996 -9732,81.78796498459684 -9733,81.55730647721128 -9734,83.26137422099258 -9735,82.81936454351434 -9736,85.74553493075588 -9737,86.49466576388356 -9738,85.4629036109712 -9739,85.16703783869701 -9740,85.16493495906663 -9741,87.68921126669368 -9742,86.67927041601656 -9743,86.42872390383444 -9744,86.94209545871433 -9745,86.71279388078311 -9746,85.82907910317344 -9747,86.75051221588613 -9748,87.36509660535953 -9749,87.97659822768203 -9750,89.74483105482017 -9751,89.94690868953066 -9752,91.92966074931145 -9753,92.02660174490045 -9754,93.3472173514599 -9755,94.53601697360716 -9756,94.34591118230688 -9757,93.69591744492661 -9758,93.91988076266479 -9759,94.20261322248189 -9760,95.58230391549985 -9761,97.01723377331714 -9762,96.59285177279757 -9763,98.16482697218449 -9764,96.72025736757652 -9765,97.06841840773562 -9766,96.05254536332082 -9767,96.47202516575538 -9768,97.20754737232787 -9769,96.62864537793918 -9770,99.07137938320085 -9771,99.02187743089036 -9772,98.94939648562546 -9773,98.8913318498188 -9774,100.42015757755159 -9775,101.4921528261519 -9776,100.29290316724546 -9777,98.74940384205212 -9778,101.79585782929327 -9779,101.30967145086424 -9780,100.7872294460126 -9781,99.19152515101815 -9782,98.83267560392902 -9783,96.84420860761256 -9784,94.86577539601463 -9785,94.51773806857263 -9786,92.82236841317008 -9787,93.5349277330323 -9788,94.13645067204742 -9789,93.2 \ No newline at end of file diff --git a/src/main/java/examples/ml/example1/Example1.java b/src/main/java/examples/ml/example1/Example1.java deleted file mode 100644 index 578b984..0000000 --- a/src/main/java/examples/ml/example1/Example1.java +++ /dev/null @@ -1,39 +0,0 @@ -package examples.ml.example1; - -import dataloader.CsvDataLoader; - - -import tech.tablesaw.api.Table; -import visualizations.ScatterChart; - -import java.io.File; -import java.io.IOException; - -public class Example1 { - - - public static void main(String[] args ) throws IOException { - - /*File file = new File("data/car_plant.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - // let's plot the data - ScatterChart plotter = new ScatterChart(); - ScatterChart.ScatterChartOptions options = plotter.new ScatterChartOptions(); - options.chartTitle = "Production vs Electricity Usage"; - options.xAxisName = "Production"; - options.yAxisName = "Electricity Usage"; - - ScatterChart.plotScatter(options, table); - - Simple1DLinearRegression regression = new Simple1DLinearRegression(); - regression.fit(table, "Production", "Electricity Usage"); - - double[] coeffs = regression.getCoeffs(); - double intercept = regression.getIntercept(); - System.out.println("Regression coefficients. Intercept: "+intercept+" Slope: "+coeffs[0]); - - - //TODO embed the regression line into the Scatter plot somehow*/ - } -} diff --git a/src/main/java/examples/ml/example1/example.md b/src/main/java/examples/ml/example1/example.md deleted file mode 100644 index f895033..0000000 --- a/src/main/java/examples/ml/example1/example.md +++ /dev/null @@ -1,69 +0,0 @@ -# Example 1: Linear Regression - -## Contents -* [Overview](#overview) - * [Linear Regression](#linear_regression) - * [How Good Is The Fit?](#how_good_is_the_fit) - * [```R^2``` Coefficient](#r2_coefficient) -* [Include files](#include_files) -* [Program structure](#prg_struct) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -This example discusses the linear regression model. In Statistics, linear regression is a mathematical approach to model -the relationship between a scalar response (or dependent variable) and one or more explanatory variables (or independent variables). -The case of one explanatory variable is called simple linear regression. For more than one explanatory variable, the process is called multiple linear regression -(checkout the wikipedia article Linear regression). - -Contrary to classification that is concerned with -class indexes, the outcome of a linear regression model or more general of a regression model is a real number. - -### Linear Regression - -![LinearRegression](linear_regression.png) - -### How Good Is The Fit? - -So we established the linear regression model but how can we measure how good it is? -One metric to do so is the so-called ```R^2``` Coefficient also called the Coefficient of determination - -#### ```R^2``` Coefficient - -The coefficient is defined as - -![R2](r2.gif) - -where SSR and SST are defined respectively as - - -![SSR](ssr.gif) - -![SST](sst.gif) - -## Import files - -``` - -``` - -## The main function - -``` -int main(){ - - - -``` - -## Results - -``` - -``` - -## Source Code - -Example1.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example1/linear_regression.png b/src/main/java/examples/ml/example1/linear_regression.png deleted file mode 100644 index dda06b8b9714c6e14863000d96f1b3f354e0abb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11122 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 HBliCRUShC@ diff --git a/src/main/java/examples/ml/example1/r2.gif b/src/main/java/examples/ml/example1/r2.gif deleted file mode 100644 index 94402d3cbde78bea77fd741acd64b51325ecc331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%ADNk%w1VO0Pn0J8u9|Ns90004G&b|NAoW@ctoR8;Qn?nFdHs;a8Y%*?vF zx)2Z$GBPrln3#x&h}_)VA^8LW00000EC2ui0961b000F35XecZy*OVaoNGo?aULj6 z!VnMwQ4oeE&$LA-Q?ew~o$r+cfs(2jj}}gaK~Ykel>nj{;32QI!fE25Xe(WcA`qJt z7TENRFtA?O?u!5_Apq6*i{TJh6mS)LeSa4W1qclV3}JbV77vL5TNIE5k``4H1d}xg z4lRx{4s;iz6=M_)0Z0a61p=WG4}cR22NScWw?w1_t49h@4Wx|?Q$)uA#uWm|5(BUk z3gMyAlXP6WUGQ69xga01UUeNCVcf0tOud&CKwh^Sl9vwG0i6*D5Sr!0=)& zmcbc9h)|Q@fJeK75Hm=j!UF*U0}uQ~+$dp8842iT06YjlGC(wrDChLJgRah%Fo3gl<8QW3P}PlW-LEJ3iRo#Q*>R diff --git a/src/main/java/examples/ml/example1/ssr.gif b/src/main/java/examples/ml/example1/ssr.gif deleted file mode 100644 index 8f049ddff40aa2b6a8626aee55b4a6a5c005481d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 885 zcmV-*1B(1dNk%w1VVVFo0J8u9|Ns9000640s&;mEh=_=on3(SF?q+6Yy1Kf|%*+rF z5Hd0{R8&+VA|gaYMBLomA^8LW00000EC2ui0Ga?c000F35XecZy*TS_9}9*gC~toDfoC=%VRczo*; z7-6z{eWFPWfdqR_zjzjMNvY27`~QG}f`f#GhKGoWii?bF3IPEMl9QB@ke852jf(}4 z4kiyUkXDHT1Ot1D4v=mp1_N=325vEn29L2Q0;v-QX=DW<69}XQq>2fU4Jre|6TB07 zS_aTe0H_rL0|W%YY1-W06ax(b2dE4O&N;9F3^fGOGiYK6trQK`dQ%cT@(26?_^aT6 z7r7w|GPyYRV~PMxK?)3*I1wU42@C>KkwJl>whI0i0R(_ZC6|s{ko2V}@XOgcC00vem$Y>#MB)S$BFc1J^!96170%-h7!IzgjwQ?BN3LvqB z0H8$uqAA&e$pe%1Fxbqw^VSK_p!#5wi8z48=Zjw(HR$cQs@Mw zQ-Dt=N?RD9G+8eT2^=V2&iwBL;{8%jXh56hU z3O;Zfj{^X?PE4C_brmEIQu>Dgn1m{-sEc~~M~oDus_LrEnCj}Qu*NFutbVjc8h5n*ap?~S z<(i~$zMiU92EYc(2Z?U-=btsjB^q0Ykf7-2EFFY`ChfFrh-rX-n=yMWwrXrs=b2p5 L3GTUML;wIg=1OHx diff --git a/src/main/java/examples/ml/example1/sst.gif b/src/main/java/examples/ml/example1/sst.gif deleted file mode 100644 index 25e778592f3cadf522db6c9826cb105a0a9229d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmV-h1El;%Nk%w1VVM9n0J8u9|Ns9000640s&;mEh=_=on3(SF?q+6Yy1Kf|%*+rF z5Hd0{R8&+VA|gaYMBLomA^8LW00000EC2ui0GR+b000F35XecZy*TS#9}9*gCwW20Dt}oDB`g7$X<#92GtPV8TS3xOLi3^(?c=XJK4+;r%O%OmdM^;o^ zDO~kv$)W*O;Y0#B3uz(-1@oLVc%*j2RX0GqNT8LY7XZBhEdmJeDO5^O9}IeYYT*Eb z$B-in)<9Ol&M3-+y(HWPU&b0!JWfzRvB6~x1ft4RO@K4QPADE^reH3g>(l=n=-$mc zu7ukETuU&GK}rP#o+KF0nVf=dF&|iNuw|h^rqn~MOTaERLjmanAbzh9-a-K17aT`k zKY7Cf^cwC?03pFaIx{)w1F&B~eud{-?fwFw2vs4&SQC$}08|C^c{BwO#NE)~M_6@b z0W;W?1D-3Ulvk5d0oWH*5d)}Z0!lj!(2#x)n8-pyEAF(CCf-G;!dVy)(42}w=%^8m z7$Bg)h$svI4{5{sV_HfoAPGPN6d}N*CJ#7yf&rK55zTMAU_)dITT-)2m_SlsKm$`^ zP?cXVz*q!IJW>EmnHsgX0St5+l3;8f)Rku+1K4=MQCXGvh<|_jA;2Y!HrlA2iSE&% zLzGr(DKn8~s_CYjcIxRIpHbG_r+(m;;%uZYB3r6{;K#wLtnL9Jmg=oH4Xm-!(c&kl l=DJ3lnE6V_k_M~?*{!__JBF7V3m`BR0beRBZ4(gy06VP2S4sc? diff --git a/src/main/java/examples/ml/example2/Example2.java b/src/main/java/examples/ml/example2/Example2.java deleted file mode 100644 index b92dd5d..0000000 --- a/src/main/java/examples/ml/example2/Example2.java +++ /dev/null @@ -1,67 +0,0 @@ -package examples.ml.example2; - -import datasets.VectorDouble; -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.errorfunctions.MSEVectorFunction; -import maths.functions.NonLinearVectorPolynomial; -import maths.functions.ScalarMonomial; -import ml.regression.NonLinearRegressor; -import tech.tablesaw.api.Table; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - -/** Category: Machine Learning - * ID: Example7 - * Description: Non-linear Regression - * Taken From: - * Details: - * TODO - */ - -public class Example2 { - - public static void main(String[] args)throws IOException { - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/car_plant.csv")); - - VectorDouble labels = new VectorDouble(dataSet, "Electricity Usage"); - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 2, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - denseMatrixSet.duplicateColumn(1); - - // assume a hypothesis of the form w0 +w1*X + w2*X^2 - // initially all weights are set o zeor - NonLinearVectorPolynomial hypothesis = new NonLinearVectorPolynomial(new ScalarMonomial(0, 0.0), - new ScalarMonomial(1, 0.0), - new ScalarMonomial(2, 0.0)); - - // the regressor - NonLinearRegressor regressor = new NonLinearRegressor(hypothesis); - - - GDInput gdInput = new GDInput(); - gdInput.showIterations = true; - gdInput.eta = 0.001; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000, 1.0e-8); - - GradientDescent gdSolver = new GradientDescent(gdInput); - - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(denseMatrixSet, labels, gdSolver); - - System.out.println(result); - System.out.println("Intercept: " + hypothesis.getCoeff(0) + " slope 1: " + hypothesis.getCoeff(1) + " slope 2" + hypothesis.getCoeff(2)); - - } -} diff --git a/src/main/java/examples/ml/example2/example.md b/src/main/java/examples/ml/example2/example.md deleted file mode 100644 index 6021b7d..0000000 --- a/src/main/java/examples/ml/example2/example.md +++ /dev/null @@ -1,130 +0,0 @@ -# Example 2: Non Linear Regression - -## Contents -* [Overview](#overview) - * [Non Linear Regression](#nolinear_regression) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - - - -### Non Linear Regression - - - -## Import files - -``` -package examples.ml.example2; - -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.errorfunctions.MSEVectorFunction; -import maths.functions.NonLinearVectorPolynomial; -import maths.functions.ScalarMonomial; -import ml.regression.NonLinearRegressor; -import tech.tablesaw.api.Table; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example2 { - - public static void main(String[] args)throws IOException { - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/car_plant.csv")); - - Vector labels = new Vector(dataSet, "Electricity Usage"); - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 2, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - denseMatrixSet.duplicateColumn(1); - - // assume a hypothesis of the form w0 +w1*X + w2*X^2 - // initially all weights are set o zeor - NonLinearVectorPolynomial hypothesis = new NonLinearVectorPolynomial(new ScalarMonomial(0, 0.0), - new ScalarMonomial(1, 0.0), - new ScalarMonomial(2, 0.0)); - - // the regressor - NonLinearRegressor regressor = new NonLinearRegressor(hypothesis); - - - GDInput gdInput = new GDInput(); - gdInput.showIterations = true; - gdInput.eta = 0.001; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000, 1.0e-8); - - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(denseMatrixSet, labels, gdSolver); - - System.out.println(result); - System.out.println("Intercept: " + hypothesis.getCoeff(0) + " slope 1: " + hypothesis.getCoeff(1) + " slope 2" + hypothesis.getCoeff(2)); - - } -} - -``` - -## Results - -``` -BatchGD: iteration: 1 - Jold: 8.224725 Jcur: 0.8990546942654579 - error |Jcur-Jold|: 7.325670305734541 - exit tolerance: 1.0E-8 -BatchGD: iteration: 2 - Jold: 0.8990546942654579 Jcur: 0.22953957530367752 - error |Jcur-Jold|: 0.6695151189617804 - exit tolerance: 1.0E-8 -BatchGD: iteration: 3 - Jold: 0.22953957530367752 Jcur: 0.16817958029206523 - error |Jcur-Jold|: 0.061359995011612295 - exit tolerance: 1.0E-8 -BatchGD: iteration: 4 - Jold: 0.16817958029206523 Jcur: 0.16238535312357452 - error |Jcur-Jold|: 0.0057942271684907065 - exit tolerance: 1.0E-8 -BatchGD: iteration: 5 - Jold: 0.16238535312357452 Jcur: 0.1616683032442727 - error |Jcur-Jold|: 7.170498793018232E-4 - exit tolerance: 1.0E-8 -BatchGD: iteration: 6 - Jold: 0.1616683032442727 Jcur: 0.16141542469742223 - error |Jcur-Jold|: 2.5287854685046574E-4 - exit tolerance: 1.0E-8 - -... - -Converged: true -Tolerance: 9.990863976405695E-9 -# Threads: 1 -Iterations: 6638 - -Intercept: 0.24271250840749334 slope 1: 0.559359716172044 slope 2-0.005371430750912633 - -``` - -## Source Code - -Example2.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example3/Example3.java b/src/main/java/examples/ml/example3/Example3.java deleted file mode 100644 index 07aa74c..0000000 --- a/src/main/java/examples/ml/example3/Example3.java +++ /dev/null @@ -1,73 +0,0 @@ -package examples.ml.example3; - -import datasets.DenseMatrixSet; -import datasets.VectorDouble; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.functions.distances.EuclideanVectorCalculator; -import ml.classifiers.KNNClassifier; -import ml.classifiers.utils.ClassificationVoter; - - -import java.util.ArrayList; -import java.util.List; - -/** Category: Machine Learning - * ID: Example1 - * Description: Classification with vanilla KNN algorithm - * Taken From: - * Details: - * TODO - */ - - -public class Example3 { - - public static void main(String[] args) { - - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder()); - dataSet.create(12, 2); - dataSet.set(0, 1.0, 3.0); - dataSet.set(1, 1.5, 2.0); - dataSet.set(2, 2.0, 1.0); - dataSet.set(3, 2.5, 4.0); - dataSet.set(4, 3.0, 1.5); - dataSet.set(5, 3.5, 2.5); - dataSet.set(6, 5.0, 5.0); - dataSet.set(7, 5.5, 4.0); - dataSet.set(8, 6.0, 6.0); - dataSet.set(9, 6.5, 4.5); - dataSet.set(10, 7.0, 1.5); - dataSet.set(11, 8.0, 2.5); - - List labels = new ArrayList<>(dataSet.m()); - - for (int i = 0; i < 6; ++i) { - labels.add(0); - } - - for (int i = 6; i < dataSet.m(); ++i) { - labels.add(1); - } - - - KNNClassifier, - EuclideanVectorCalculator, - ClassificationVoter> classifier = new KNNClassifier, - EuclideanVectorCalculator, ClassificationVoter>(2, false); - - classifier.setDistanceCalculator(new EuclideanVectorCalculator()); - classifier.setMajorityVoter(new ClassificationVoter()); - - - classifier.train(dataSet, labels); - - VectorDouble r = new VectorDouble(3.1, 2.2); - Integer classIdx = classifier.predict(r); - - System.out.println("Point " + r + " has class index " + classIdx); - - r = new VectorDouble(9.1, 6.2); - classIdx = classifier.predict(r); - } -} diff --git a/src/main/java/examples/ml/example3/example.md b/src/main/java/examples/ml/example3/example.md deleted file mode 100644 index a2413f1..0000000 --- a/src/main/java/examples/ml/example3/example.md +++ /dev/null @@ -1,102 +0,0 @@ -# Example 3: KNN Classification - -## Contents -* [Overview](#overview) - * [KNN Classification](#knn_classification) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - - - -### KNN Classification - - - -## Import files - -``` -package examples.ml.example3; - -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.functions.distances.EuclideanVectorCalculator; -import ml.classifiers.KNNClassifier; -import ml.classifiers.utils.ClassificationVoter; - -import java.util.ArrayList; -import java.util.List; - -``` - -## The main function - -``` -public class Example3 { - - public static void main(String[] args) { - - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder()); - dataSet.create(12, 2); - dataSet.set(0, 1.0, 3.0); - dataSet.set(1, 1.5, 2.0); - dataSet.set(2, 2.0, 1.0); - dataSet.set(3, 2.5, 4.0); - dataSet.set(4, 3.0, 1.5); - dataSet.set(5, 3.5, 2.5); - dataSet.set(6, 5.0, 5.0); - dataSet.set(7, 5.5, 4.0); - dataSet.set(8, 6.0, 6.0); - dataSet.set(9, 6.5, 4.5); - dataSet.set(10, 7.0, 1.5); - dataSet.set(11, 8.0, 2.5); - - List labels = new ArrayList<>(dataSet.m()); - - for (int i = 0; i < 6; ++i) { - labels.add(0); - } - - for (int i = 6; i < dataSet.m(); ++i) { - labels.add(1); - } - - - KNNClassifier, - EuclideanVectorCalculator, - ClassificationVoter> classifier = new KNNClassifier, - EuclideanVectorCalculator, ClassificationVoter>(2, false); - - classifier.setDistanceCalculator(new EuclideanVectorCalculator()); - classifier.setMajorityVoter(new ClassificationVoter()); - - - classifier.train(dataSet, labels); - - Vector r = new Vector(3.1, 2.2); - Integer classIdx = classifier.predict(r); - - System.out.println("Point " + r + " has class index " + classIdx); - - r = new Vector(9.1, 6.2); - classIdx = classifier.predict(r); - } -} - -``` - -## Results - -``` - - -``` - -## Source Code - -Example3.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example4/Example4.java b/src/main/java/examples/ml/example4/Example4.java deleted file mode 100644 index 1b1957b..0000000 --- a/src/main/java/examples/ml/example4/Example4.java +++ /dev/null @@ -1,102 +0,0 @@ -package examples.ml.example4; - -import datasets.DenseMatrixSet; -import datasets.VectorDouble; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.functions.distances.EuclideanVectorCalculator; -import ml.classifiers.ThreadedKNNClassifier; -import parallel.partitioners.MatrixRowPartitionPolicy; -import parallel.partitioners.RangePartitioner; -import tech.tablesaw.api.Table; -import tech.tablesaw.columns.Column; -import ml.classifiers.utils.ClassificationVoter; -import utils.Pair; -import utils.PairBuilder; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutorService; - -import static java.util.concurrent.Executors.newFixedThreadPool; - - -/** Category: Machine Learning - * ID: Example8 - * Description: Classification with vanilla ParallelKNN algorithm - * Taken From: - * Details: - * TODO - */ -public class Example4 { - - public static Pair, List> createDataSet() throws IOException, IllegalArgumentException { - - // load the data - Table dataSetTable = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/iris_data.csv")); - - List labels = new ArrayList<>(); - - Column species = dataSetTable.column("species"); - - for (int i = 0; i < species.size(); i++) { - - String label = (String) species.get(i); - - if(label.equals("Iris-setosa")){ - - labels.add(0); - } - else if(label.equals("Iris-versicolor")){ - - labels.add(1); - } - else if(label.equals("Iris-virginica")){ - - labels.add(2); - } - else{ - throw new IllegalArgumentException("Unknown class"); - } - } - - Table reducedDataSet = dataSetTable.removeColumns("species").first(dataSetTable.rowCount()); - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder()); - dataSet.initializeFrom(reducedDataSet); - - // partition the data set - List> partitions = RangePartitioner.partition(0, dataSet.m(), 4); - - MatrixRowPartitionPolicy partitionPolicy = new MatrixRowPartitionPolicy(partitions); - dataSet.setPartitionPolicy(partitionPolicy); - - return PairBuilder.makePair(dataSet, labels); - } - - public static void main(String[] args) throws IOException, IllegalArgumentException{ - - Pair, List> data = Example4.createDataSet(); - ExecutorService executorService = newFixedThreadPool(4); - - System.out.println("Number of rows: "+data.first.m()); - System.out.println("Number of labels: "+data.second.size()); - - - ThreadedKNNClassifier, EuclideanVectorCalculator, - ClassificationVoter> classifier = new ThreadedKNNClassifier<>(3, false, executorService); - - classifier.setDistanceCalculator(new EuclideanVectorCalculator()); - classifier.setMajorityVoter(new ClassificationVoter()); - - classifier.train(data.first, data.second); - VectorDouble point = new VectorDouble(5.9,3.0,5.1,1.8); - Integer classIdx = classifier.predict(point); - - System.out.println("Point "+ point +" has class index "+ classIdx); - executorService.shutdown(); - - } -} diff --git a/src/main/java/examples/ml/example4/example.md b/src/main/java/examples/ml/example4/example.md deleted file mode 100644 index 6738b46..0000000 --- a/src/main/java/examples/ml/example4/example.md +++ /dev/null @@ -1,132 +0,0 @@ -# Example 4: KNN Classification With Multiple Threads - -## Contents -* [Overview](#overview) - * [KNN classification with many threads](#knn_classification) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - - - -### KNN classification with many threads - - - -## Import files - -``` -package examples.ml.example4; - -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.functions.distances.EuclideanVectorCalculator; -import ml.classifiers.ThreadedKNNClassifier; -import parallel.partitioners.MatrixRowPartitionPolicy; -import parallel.partitioners.RangePartitioner; -import tech.tablesaw.api.Table; -import tech.tablesaw.columns.Column; -import ml.classifiers.utils.ClassificationVoter; -import utils.Pair; -import utils.PairBuilder; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutorService; - -import static java.util.concurrent.Executors.newFixedThreadPool; - -``` - -## The main function - -``` -public class Example4 { - - public static Pair, List> createDataSet() throws IOException, IllegalArgumentException { - - // load the data - Table dataSetTable = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/iris_data.csv")); - - List labels = new ArrayList<>(); - - Column species = dataSetTable.column("species"); - - for (int i = 0; i < species.size(); i++) { - - String label = (String) species.get(i); - - if(label.equals("Iris-setosa")){ - - labels.add(0); - } - else if(label.equals("Iris-versicolor")){ - - labels.add(1); - } - else if(label.equals("Iris-virginica")){ - - labels.add(2); - } - else{ - throw new IllegalArgumentException("Unknown class"); - } - } - - Table reducedDataSet = dataSetTable.removeColumns("species").first(dataSetTable.rowCount()); - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder()); - dataSet.initializeFrom(reducedDataSet); - - // partition the data set - List> partitions = RangePartitioner.partition(0, dataSet.m(), 4); - - MatrixRowPartitionPolicy partitionPolicy = new MatrixRowPartitionPolicy(partitions); - dataSet.setPartitionPolicy(partitionPolicy); - - return PairBuilder.makePair(dataSet, labels); - } - - public static void main(String[] args) throws IOException, IllegalArgumentException{ - - Pair, List> data = Example4.createDataSet(); - ExecutorService executorService = newFixedThreadPool(4); - - System.out.println("Number of rows: "+data.first.m()); - System.out.println("Number of labels: "+data.second.size()); - - - ThreadedKNNClassifier, EuclideanVectorCalculator, - ClassificationVoter> classifier = new ThreadedKNNClassifier<>(3, false, executorService); - - classifier.setDistanceCalculator(new EuclideanVectorCalculator()); - classifier.setMajorityVoter(new ClassificationVoter()); - - classifier.train(data.first, data.second); - Vector point = new Vector(5.9,3.0,5.1,1.8); - Integer classIdx = classifier.predict(point); - - System.out.println("Point "+ point +" has class index "+ classIdx); - executorService.shutdown(); - - } -} - -``` - -## Results - -``` - -``` - -## Source Code - -Example4.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example5/Example5.java b/src/main/java/examples/ml/example5/Example5.java deleted file mode 100644 index 5abe244..0000000 --- a/src/main/java/examples/ml/example5/Example5.java +++ /dev/null @@ -1,51 +0,0 @@ -package examples.ml.example5; - -import utils.DefaultIterativeAlgorithmController; -import base.CommonConstants; -import datastructs.IVector; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.functions.distances.DistanceCalculator; -import maths.functions.distances.EuclideanVectorCalculator; -import maths.functions.generators.IRandomGenerator; -import maths.functions.generators.UniformRandomGenerator; -import ml.clustering.KMeans; -import ml.clustering.KMeansInput; - -/** Category: Machine Learning - * ID: Example11 - * Description: Clustering with ```KMeans``` - * Taken From: - * Taken From: - * Details: - * TODO - */ - -public class Example5 { - - public static void main(String[] args){ - - //some synthetic data - DenseMatrixSet matrix = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), 6, 2, 0.0); - matrix.set(0, 1.0, 2.0); - matrix.set(1, 1.0, 4.0); - matrix.set(2, 1.0, 0.0); - matrix.set(3, 10.0, 2.0); - matrix.set(4, 10.0, 2.0); - matrix.set(5, 10.0, 0.0); - - KMeansInput input = new KMeansInput(); - input.k = 2; - input.iterationContorller = new DefaultIterativeAlgorithmController(10, CommonConstants.getTol()); - - KMeans kmeans = new KMeans<>(input); - - DistanceCalculator, Double> similarity = new EuclideanVectorCalculator(); - IRandomGenerator randomGenerator = new UniformRandomGenerator(); - - kmeans.cluster(matrix, similarity, randomGenerator); - - - } -} diff --git a/src/main/java/examples/ml/example5/example.md b/src/main/java/examples/ml/example5/example.md deleted file mode 100644 index 77b7c7d..0000000 --- a/src/main/java/examples/ml/example5/example.md +++ /dev/null @@ -1,76 +0,0 @@ -# Example 5: Clustering with KMeans - -## Contents -* [Overview](#overview) - * [KMeans algorithm](#kmeans_algorithm) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -### KMeans algorithm - - - -## Import files - -``` -package examples.ml.example5; - -import utils.DefaultIterativeAlgorithmController; -import base.CommonConstants; -import datastructs.IVector; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.functions.distances.DistanceCalculator; -import maths.functions.distances.EuclideanVectorCalculator; -import maths.functions.generators.IRandomGenerator; -import maths.functions.generators.UniformRandomGenerator; -import ml.clustering.KMeans; -import ml.clustering.KMeansInput; - -``` - -## The main function - -``` -public class Example5 { - - public static void main(String[] args){ - - //some synthetic data - DenseMatrixSet matrix = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), 6, 2, 0.0); - matrix.set(0, 1.0, 2.0); - matrix.set(1, 1.0, 4.0); - matrix.set(2, 1.0, 0.0); - matrix.set(3, 10.0, 2.0); - matrix.set(4, 10.0, 2.0); - matrix.set(5, 10.0, 0.0); - - KMeansInput input = new KMeansInput(); - input.k = 2; - input.iterationContorller = new DefaultIterativeAlgorithmController(10, CommonConstants.getTol()); - - KMeans kmeans = new KMeans<>(input); - - DistanceCalculator, Double> similarity = new EuclideanVectorCalculator(); - IRandomGenerator randomGenerator = new UniformRandomGenerator(); - - kmeans.cluster(matrix, similarity, randomGenerator); - } -} - -``` - -## Results - -``` - -``` - -## Source Code - -Example5.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example6/Example6.java b/src/main/java/examples/ml/example6/Example6.java deleted file mode 100644 index eaaa911..0000000 --- a/src/main/java/examples/ml/example6/Example6.java +++ /dev/null @@ -1,106 +0,0 @@ -package examples.ml.example6; - -import datasets.VectorDouble; -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.errorfunctions.LogisticMSEVectorFunction; -import maths.functions.LinearVectorPolynomial; -import maths.functions.SigmoidFunction; -import ml.classifiers.LogisticRegressionClassifier; -import tech.tablesaw.api.Table; -import tech.tablesaw.columns.Column; -import utils.Pair; -import utils.PairBuilder; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - - -/** Category: Machine Learning - * ID: Example6 - * Description: Classification with vanilla LogisticRegression - * Taken From: - * Details: - * TODO - */ -public class Example6 { - - public static Pair createDataSet() throws IOException, IllegalArgumentException { - - // load the data - Table dataSetTable = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/iris_dataset_reduced.csv")); - - Column species = dataSetTable.column("species"); - - VectorDouble labels = new VectorDouble(species.size()); - - for (int i = 0; i < species.size(); i++) { - - String label = (String) species.get(i); - - if(label.equals("Iris-setosa")){ - - labels.set(i, 0.0); - } - else if(label.equals("Iris-versicolor")){ - - labels.set(i, 1); - } - else{ - throw new IllegalArgumentException("Unknown class"); - } - } - - Table reducedDataSet = dataSetTable.removeColumns("species").first(dataSetTable.rowCount()); - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), reducedDataSet.columnCount() + 1, 1.0); - dataSet.setColumn(1, reducedDataSet.doubleColumn(0)); - dataSet.setColumn(2, reducedDataSet.doubleColumn(1)); - dataSet.setColumn(3, reducedDataSet.doubleColumn(2)); - dataSet.setColumn(4, reducedDataSet.doubleColumn(3)); - return PairBuilder.makePair(dataSet, labels); - } - - public static void main(String[] args) throws IOException, IllegalArgumentException{ - - Pair data = Example6.createDataSet(); - - System.out.println("Number of rows: "+data.first.m()); - System.out.println("Number of labels: "+data.second.size()); - - SigmoidFunction hypothesis = new SigmoidFunction(new LinearVectorPolynomial(4)); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = true; - gdInput.eta = 0.01; - gdInput.errF = new LogisticMSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - GradientDescent gdSolver = new GradientDescent(gdInput); - - // the classifier - LogisticRegressionClassifier, LinearVectorPolynomial> classifier = new LogisticRegressionClassifier(hypothesis, gdSolver ); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) classifier.train(data.first, data.second); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1) + - " slope2: "+hypothesis.getCoeff(2) + - " slope3: "+hypothesis.getCoeff(3)); - - // use 1.0 to account for the intercept term - VectorDouble point = new VectorDouble(1.0, 5.7,2.8,4.1,1.3); - Integer classIdx = classifier.predict(point); - - System.out.println("Point "+ point +" has class index "+ classIdx); - } -} diff --git a/src/main/java/examples/ml/example6/example.md b/src/main/java/examples/ml/example6/example.md deleted file mode 100644 index 57b336d..0000000 --- a/src/main/java/examples/ml/example6/example.md +++ /dev/null @@ -1,174 +0,0 @@ -# Example 6: Logistic Classification - - ## Contents - * [Overview](#overview) - * [Logistic classification](#logistic_classification) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - - ## Overview - - ### Logistic classification - - - - ## Import files - - ``` -package examples.ml.example6; - -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.errorfunctions.LogisticMSEVectorFunction; -import maths.functions.LinearVectorPolynomial; -import maths.functions.SigmoidFunction; -import ml.classifiers.LogisticRegressionClassifier; -import tech.tablesaw.api.Table; -import tech.tablesaw.columns.Column; -import utils.Pair; -import utils.PairBuilder; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - - - ``` - - ## The main function - - ``` - public class Example6 { - - public static Pair createDataSet() throws IOException, IllegalArgumentException { - - // load the data - Table dataSetTable = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/iris_dataset_reduced.csv")); - - Column species = dataSetTable.column("species"); - - Vector labels = new Vector(species.size()); - - for (int i = 0; i < species.size(); i++) { - - String label = (String) species.get(i); - - if(label.equals("Iris-setosa")){ - - labels.set(i, 0.0); - } - else if(label.equals("Iris-versicolor")){ - - labels.set(i, 1); - } - else{ - throw new IllegalArgumentException("Unknown class"); - } - } - - Table reducedDataSet = dataSetTable.removeColumns("species").first(dataSetTable.rowCount()); - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), reducedDataSet.columnCount() + 1, 1.0); - dataSet.setColumn(1, reducedDataSet.doubleColumn(0)); - dataSet.setColumn(2, reducedDataSet.doubleColumn(1)); - dataSet.setColumn(3, reducedDataSet.doubleColumn(2)); - dataSet.setColumn(4, reducedDataSet.doubleColumn(3)); - return PairBuilder.makePair(dataSet, labels); - } - - public static void main(String[] args) throws IOException, IllegalArgumentException{ - - Pair data = Example6.createDataSet(); - - System.out.println("Number of rows: "+data.first.m()); - System.out.println("Number of labels: "+data.second.size()); - - SigmoidFunction hypothesis = new SigmoidFunction(new LinearVectorPolynomial(4)); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = true; - gdInput.eta = 0.01; - gdInput.errF = new LogisticMSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - - // the classifier - LogisticRegressionClassifier, LinearVectorPolynomial> classifier = new LogisticRegressionClassifier(hypothesis, gdSolver ); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) classifier.train(data.first, data.second); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1) + - " slope2: "+hypothesis.getCoeff(2) + - " slope3: "+hypothesis.getCoeff(3)); - - // use 1.0 to account for the intercept term - Vector point = new Vector(1.0, 5.7,2.8,4.1,1.3); - Integer classIdx = classifier.predict(point); - - System.out.println("Point "+ point +" has class index "+ classIdx); - } - } - - - ``` - - ## Results - - ``` -... - -BatchGD: iteration: 62769 - Jold: 0.0010943436826512905 Jcur: 0.0010943336813655545 - error |Jcur-Jold|: 1.0001285735998164E-8 - exit tolerance: 1.0E-8 -BatchGD: iteration: 62770 - Jold: 0.0010943336813655545 Jcur: 0.0010943236803309794 - error |Jcur-Jold|: 1.0001034575143897E-8 - exit tolerance: 1.0E-8 -BatchGD: iteration: 62771 - Jold: 0.0010943236803309794 Jcur: 0.0010943136795475577 - error |Jcur-Jold|: 1.0000783421662204E-8 - exit tolerance: 1.0E-8 -BatchGD: iteration: 62772 - Jold: 0.0010943136795475577 Jcur: 0.0010943036790152583 - error |Jcur-Jold|: 1.0000532299405535E-8 - exit tolerance: 1.0E-8 -BatchGD: iteration: 62773 - Jold: 0.0010943036790152583 Jcur: 0.0010942936787340855 - error |Jcur-Jold|: 1.0000281172812056E-8 - exit tolerance: 1.0E-8 -BatchGD: iteration: 62774 - Jold: 0.0010942936787340855 Jcur: 0.0010942836787040298 - error |Jcur-Jold|: 1.0000030055759557E-8 - exit tolerance: 1.0E-8 -BatchGD: iteration: 62775 - Jold: 0.0010942836787040298 Jcur: 0.0010942736789250564 - error |Jcur-Jold|: 9.999778973401527E-9 - exit tolerance: 1.0E-8 - -Converged: true -Tolerance: 9.999778973401527E-9 -# Threads: 1 -Iterations: 62776 - -Intercept: -0.5245243583997479 slope1: -0.8737637329493022 slope2: -2.8232639955834893 slope3: 4.586584930820463 -Point has class index 1 - - ``` - - ## Source Code - - Example6.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example7/Example7.java b/src/main/java/examples/ml/example7/Example7.java deleted file mode 100644 index a4ceb16..0000000 --- a/src/main/java/examples/ml/example7/Example7.java +++ /dev/null @@ -1,154 +0,0 @@ -package examples.ml.example7; - -import datasets.VectorDouble; -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.errorfunctions.MSEVectorFunction; -import maths.functions.LinearVectorPolynomial; - -import maths.functions.regularizers.LassoRegularizer; -import maths.functions.regularizers.RidgeRegularizer; - -import ml.regression.LinearRegressor; -import tech.tablesaw.api.DoubleColumn; -import tech.tablesaw.api.Table; - -import utils.Pair; -import utils.PairBuilder; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - -/** Category: Machine Learning - * ID: Example7 - * Description: Linear regression with Lasso - * Taken From: - * Details: - * TODO - */ - -public class Example7 { - - public static Pair createDataSet() throws IOException, IllegalArgumentException { - - // load the data - Table dataSetTable = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/X_Y_Sinusoid_Data.csv")); - - DoubleColumn y = dataSetTable.doubleColumn("y"); - - VectorDouble labels = new VectorDouble(y); - - Table reducedDataSet = dataSetTable.removeColumns("y").first(dataSetTable.rowCount()); - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), reducedDataSet.columnCount() + 1, 1.0); - dataSet.setColumn(1, reducedDataSet.doubleColumn(0)); - return PairBuilder.makePair(dataSet, labels); - } - - public static void linearRegression(DenseMatrixSet data, VectorDouble labels){ - - System.out.println("Doing LinearRegression"); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta = 0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - GradientDescent gdSolver = new GradientDescent(gdInput); - - // the classifier - LinearRegressor> regressor = new LinearRegressor(hypothesis); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(data, labels, gdSolver); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1)); - - } - - public static void ridgeRegression(DenseMatrixSet data, VectorDouble labels){ - - System.out.println("Doing Ridge LinearRegression"); - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - RidgeRegularizer ridgeRegularizer = new RidgeRegularizer(0.001, 1, hypothesis); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta = 0.01; - gdInput.errF = new MSEVectorFunction(hypothesis, ridgeRegularizer); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - GradientDescent gdSolver = new GradientDescent(gdInput); - - // the classifier - LinearRegressor> regressor = new LinearRegressor(hypothesis); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(data, labels, gdSolver); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1)); - - } - - public static void lassoRegression(DenseMatrixSet data, VectorDouble labels){ - - System.out.println("Doing Lasso LinearRegression"); - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - LassoRegularizer lassoRegularizer = new LassoRegularizer(0.0001, 1, hypothesis); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta = 0.01; - gdInput.errF = new MSEVectorFunction(hypothesis, lassoRegularizer); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - GradientDescent gdSolver = new GradientDescent(gdInput); - - // the classifier - LinearRegressor> regressor = new LinearRegressor(hypothesis); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(data, labels, gdSolver); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1)); - - } - - - public static void main(String[] args) throws IOException, IllegalArgumentException{ - - Pair data = Example7.createDataSet(); - - System.out.println("Number of rows: "+data.first.m()); - System.out.println("Number of labels: "+data.second.size()); - - Example7.linearRegression(data.first, data.second); - Example7.ridgeRegression(data.first, data.second); - Example7.lassoRegression(data.first, data.second); - - - } - -} - - diff --git a/src/main/java/examples/ml/example7/example.md b/src/main/java/examples/ml/example7/example.md deleted file mode 100644 index afb572e..0000000 --- a/src/main/java/examples/ml/example7/example.md +++ /dev/null @@ -1,207 +0,0 @@ -# Example 7: Linear regression with regularization ```LassoRegularizer``` and ```RidgeRegularizer``` - - ## Contents - * [Overview](#overview) - * [Logistic classification](#logistic_classification) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - - ## Overview - - ### Logistic classification - - - - ## Import files - - ``` -package examples.ml.example7; - -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.errorfunctions.MSEVectorFunction; -import maths.functions.LinearVectorPolynomial; - -import maths.functions.regularizers.LassoRegularizer; -import maths.functions.regularizers.RidgeRegularizer; - -import ml.regression.LinearRegressor; -import tech.tablesaw.api.DoubleColumn; -import tech.tablesaw.api.Table; - -import utils.Pair; -import utils.PairBuilder; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - - - - ``` - - ## The main function - - ``` - public class Example7 { - - public static Pair createDataSet() throws IOException, IllegalArgumentException { - - // load the data - Table dataSetTable = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/X_Y_Sinusoid_Data.csv")); - - DoubleColumn y = dataSetTable.doubleColumn("y"); - - Vector labels = new Vector(y); - - Table reducedDataSet = dataSetTable.removeColumns("y").first(dataSetTable.rowCount()); - DenseMatrixSet dataSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), reducedDataSet.columnCount() + 1, 1.0); - dataSet.setColumn(1, reducedDataSet.doubleColumn(0)); - return PairBuilder.makePair(dataSet, labels); - } - - public static void linearRegression(DenseMatrixSet data, Vector labels){ - - System.out.println("Doing LinearRegression"); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta = 0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - - // the classifier - LinearRegressor> regressor = new LinearRegressor(hypothesis); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(data, labels, gdSolver); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1)); - - } - - public static void ridgeRegression(DenseMatrixSet data, Vector labels){ - - System.out.println("Doing Ridge LinearRegression"); - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - RidgeRegularizer ridgeRegularizer = new RidgeRegularizer(0.001, 1, hypothesis); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta = 0.01; - gdInput.errF = new MSEVectorFunction(hypothesis, ridgeRegularizer); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - - // the classifier - LinearRegressor> regressor = new LinearRegressor(hypothesis); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(data, labels, gdSolver); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1)); - - } - - public static void lassoRegression(DenseMatrixSet data, Vector labels){ - - System.out.println("Doing Lasso LinearRegression"); - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - LassoRegularizer lassoRegularizer = new LassoRegularizer(0.0001, 1, hypothesis); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta = 0.01; - gdInput.errF = new MSEVectorFunction(hypothesis, lassoRegularizer); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(100000,1.0e-8); - - // the optimizer - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - - // the classifier - LinearRegressor> regressor = new LinearRegressor(hypothesis); - - // train the model - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(data, labels, gdSolver); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+ - " slope1: "+hypothesis.getCoeff(1)); - - } - - - public static void main(String[] args) throws IOException, IllegalArgumentException{ - - Pair data = Example7.createDataSet(); - - System.out.println("Number of rows: "+data.first.m()); - System.out.println("Number of labels: "+data.second.size()); - - Example7.linearRegression(data.first, data.second); - Example7.ridgeRegression(data.first, data.second); - Example7.lassoRegression(data.first, data.second); - - - } - - } - ``` - - ## Results - - ``` -Number of rows: 20 -Number of labels: 20 -Doing LinearRegression - -Converged: true -Tolerance: 9.993163019306195E-9 -# Threads: 1 -Iterations: 5133 - -Intercept: 1.1707821773747917 slope1: -2.162486001652405 -Doing Ridge LinearRegression - -Converged: true -Tolerance: 9.873171780139245E-9 -# Threads: 1 -Iterations: 3850 - -Intercept: 1.1580261130223417 slope1: -2.1376028466785955 -Doing Lasso LinearRegression - -Converged: true -Tolerance: 9.997267735872839E-9 -# Threads: 1 -Iterations: 5092 - -Intercept: 1.170591014094624 slope1: -2.162113100936771 - - ``` - - ## Source Code - - Example7.java \ No newline at end of file diff --git a/src/main/java/examples/ml/example8/Example8.java b/src/main/java/examples/ml/example8/Example8.java deleted file mode 100644 index bc5bcd4..0000000 --- a/src/main/java/examples/ml/example8/Example8.java +++ /dev/null @@ -1,65 +0,0 @@ -package examples.ml.example8; - -import maths.ConfusionMatrix; -import java.util.ArrayList; -import java.util.List; - -public class Example8 { - - public static void main(String[] args){ - - final int SIZE = 165; - final int N_CLASSES = 2; - - List actual = new ArrayList<>(); - - for(int i=0; i< SIZE; ++i){ - - if(i < 60){ - actual.add(0); - } - else{ - actual.add(1); - } - } - - List predicted = new ArrayList<>(); - - for(int i=0; i< SIZE; ++i){ - - if(i < 50){ - predicted.add(0); - } - else if(i>=50 && i<65){ - predicted.add(1); - } - else if(i>=65 && i<70){ - predicted.add(0); - } - else{ - predicted.add(1); - } - } - - ConfusionMatrix confusionMatrix = new ConfusionMatrix(actual, predicted, N_CLASSES); - - // let's compute some metrics - System.out.println("TP: "+confusionMatrix.getClassCounts(1)); - System.out.println("TN: "+confusionMatrix.getClassCounts(0)); - System.out.println("FP: "+confusionMatrix.getClassCountsAsOtherClass(0,1)); - System.out.println("FN: "+confusionMatrix.getClassCountsAsOtherClass(1,0)); - System.out.println("Accuracy is: " + confusionMatrix.accuracy()); - System.out.println("Misclassification Rate: " + confusionMatrix.misclassificationRate()); - System.out.println("TP Rate or Recall: " + confusionMatrix.recallClass(1)); - System.out.println("TN Rate or Specificity: " + confusionMatrix.recallClass(0)); - System.out.println("False Positive Rate: " + (double)confusionMatrix.getClassCountsAsOtherClass(0,1)/60.0); - System.out.println("Precision: " + (double)confusionMatrix.getClassCounts(1)/ - (double) (confusionMatrix.getClassCountsAsOtherClass(0,1) + confusionMatrix.getClassCounts(1))); - System.out.println("Prevalence: " + (double)(confusionMatrix.getClassCountsAsOtherClass(1,0) + - confusionMatrix.getClassCounts(1))/(double) confusionMatrix.totalCount()); - - - } - - -} diff --git a/src/main/java/examples/ml/example8/confusion_matrix2.png b/src/main/java/examples/ml/example8/confusion_matrix2.png deleted file mode 100644 index 48bd1a95dd5e3e12a1bca22233eae4e0082c60a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7832 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 diff --git a/src/main/java/examples/ml/example8/confusion_matrix_simple2.png b/src/main/java/examples/ml/example8/confusion_matrix_simple2.png deleted file mode 100644 index c1c8673df568111b5b19e13f1ddbc947707cd732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5076 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 Rn+Mthr;SVua}2Pge*h0~rF;MY diff --git a/src/main/java/examples/ml/example8/example.md b/src/main/java/examples/ml/example8/example.md deleted file mode 100644 index 53c2b92..0000000 --- a/src/main/java/examples/ml/example8/example.md +++ /dev/null @@ -1,166 +0,0 @@ -# Example 8: Classification performance assessment using the ```ConfusionMatrix``` class - -## Contents - * [Acknowledgements](#acknowledgement) - * [Overview](#overview) - * [Confusion matrix](#confusion_matrix) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - - ## Acknowledgements - - This example was largely taken from Simple guide to confusion matrix terminology - - ## Overview - - Example 3 introduced the K-Nearest Neighbors and Example 6 discussed logistic regression. - More often than not we want to be able to quantify the performance of a classifier. - This example introduces various metrics one can do so. - - ### Confusion matrix - - The confusion matrix is a popular technique to assess the quality of classifier. - In very simple words the confusion matrix is a square matrix that is used to describe the - performance of a classification model on a set of test data for which the correct classification - is known. - - Let's start exploring what a confusion matrix can tell us by considering a binary classifier. - The following table shows an assumed classifier. - - Confusion Matrix - -Here is what we can immediately infer from that matrix. - -- Overall we have 165 items in the data set. -- There are two possible classes (binary classification) namely Yes and No. -- The classifier predicted Yes 110 times and No 55 times. -- In reality 60 items are under the class No and 105 under the class Yes. - -Let'now define some basic terminology that is used when we consider a confusion matrix. - -- True Positives or TP: The classifier predicts Yes and the are indeed classed as Yes -- True Negatives or TN: The classifier predicts No and they are indeed classed as No -- False Positives or FP: The classifier predicts Yes and but they are classed as No. This is also known as Type I error -- False Negatives or FN: The classifier predicts No but they are actually classes as Yes. This is also known as Type II error. - - Note that all the terms defined above, are whole numbers and not rates. - - Given this terminology here is how we could rewrite the confusion matrix as shown below - - Confusion Matrix - - The confusion matrix can be used to compute various rates. The most common ones are: - - -- Accuracy: overall it tells us how often is the classifier correct - - Accuracy = (TP + TN)/total = (100 + 50)/165 = 0.91 -- Misclassification rate: overall how often is it wrong. This is also known as the error rate. - - Misclassification rate = (FP + FN)/total = 10 + 5/165 = 0.09 -- True Positive Rate: When it's actually yes, how often does it predict yes? This is also known as sensitivity or recall - - True Positive Rate = TP/actual Yes = 100/105 = 0.95 -- False Positive Rate: When it's actually no, how often does it predict yes? - - False Positive Rate = FP/actual No = 10/60 = 0.17 -- True Negative Rate: When it's actually no, how often does it predict no? This is also known as specificity - - True Negative Rate} = TN/actual No = 50/60 = 0.83 -- Precision: When it predicts Yes how often is it correct? - -Precision = TP/Predicted Yes = 100/110 = 0.91 -- Prevalence: How often does the yes condition actually occur in our sample? - - Prevalence = actual Yes/total = 105/165 = 0.64 - -There are other terms worth mentioning but we won't do that here. Instead have a look at -the following article Simple guide to confusion matrix terminology. - - - ## Import files - - ``` -package examples.ml.example8; - -import maths.ConfusionMatrix; -import java.util.ArrayList; -import java.util.List; - -public class Example8 { - - public static void main(String[] args){ - - final int SIZE = 165; - final int N_CLASSES = 2; - - List actual = new ArrayList<>(); - - for(int i=0; i< SIZE; ++i){ - - if(i < 60){ - actual.add(0); - } - else{ - actual.add(1); - } - } - - List predicted = new ArrayList<>(); - - for(int i=0; i< SIZE; ++i){ - - if(i < 50){ - predicted.add(0); - } - else if(i>=50 && i<65){ - predicted.add(1); - } - else if(i>=65 && i<70){ - predicted.add(0); - } - else{ - predicted.add(1); - } - } - - ConfusionMatrix confusionMatrix = new ConfusionMatrix(actual, predicted, N_CLASSES); - - // let's compute some metrics - System.out.println("TP: "+confusionMatrix.getClassCounts(1)); - System.out.println("TN: "+confusionMatrix.getClassCounts(0)); - System.out.println("FP: "+confusionMatrix.getClassCountsAsOtherClass(0,1)); - System.out.println("FN: "+confusionMatrix.getClassCountsAsOtherClass(1,0)); - System.out.println("Accuracy is: " + confusionMatrix.accuracy()); - System.out.println("Misclassification Rate: " + confusionMatrix.misclassificationRate()); - System.out.println("TP Rate or Recall: " + confusionMatrix.recallClass(1)); - System.out.println("TN Rate or Specificity: " + confusionMatrix.recallClass(0)); - System.out.println("False Positive Rate: " + (double)confusionMatrix.getClassCountsAsOtherClass(0,1)/60.0); - System.out.println("Precision: " + (double)confusionMatrix.getClassCounts(1)/ - (double) (confusionMatrix.getClassCountsAsOtherClass(0,1) + confusionMatrix.getClassCounts(1))); - System.out.println("Prevalence: " + (double)(confusionMatrix.getClassCountsAsOtherClass(1,0) + - confusionMatrix.getClassCounts(1))/(double) confusionMatrix.totalCount()); - - } -} - ``` - - ## Results - - ``` -TP: 100 -TN: 50 -FP: 10 -FN: 5 -Accuracy is: 0.9090909090909091 -Misclassification Rate: 0.09090909090909094 -TP Rate or Recall: 0.9523809523809523 -TN Rate or Specificity: 0.8333333333333334 -False Positive Rate: 0.16666666666666666 -Precision: 0.9090909090909091 -Prevalence: 0.6363636363636364 - - ``` - - ## Source Code - - Example8.java diff --git a/src/main/java/examples/optimization/example1/Example1.java b/src/main/java/examples/optimization/example1/Example1.java deleted file mode 100644 index af4f08d..0000000 --- a/src/main/java/examples/optimization/example1/Example1.java +++ /dev/null @@ -1,56 +0,0 @@ -package examples.optimization.example1; - -import datasets.VectorDouble; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import optimization.GradientDescent; -import optimization.GDInput; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.functions.LinearVectorPolynomial; -import maths.errorfunctions.MSEVectorFunction; -import tech.tablesaw.api.Table; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - -/** Category: Machine Learning - * ID: Example5 - * Description: Using Batch Gradient Descent with only one feature - * Taken From: - * Details: - * TODO - */ - -public class Example1 { - - - public static void main(String[] args)throws IOException { - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/car_plant.csv")); - - VectorDouble labels = new VectorDouble(dataSet, "Electricity Usage"); - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 2, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = true; - gdInput.eta=0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000,1.0e-8); - - GradientDescent gdSolver = new GradientDescent(gdInput); - IterativeAlgorithmResult result = gdSolver.optimize(denseMatrixSet, labels, hypothesis); - - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+" slope: "+hypothesis.getCoeff(1)); - - } -} diff --git a/src/main/java/examples/optimization/example1/example.md b/src/main/java/examples/optimization/example1/example.md deleted file mode 100644 index 8fd0384..0000000 --- a/src/main/java/examples/optimization/example1/example.md +++ /dev/null @@ -1,122 +0,0 @@ -# Example 1: Gradient Descent Optimization - - -## Contents -* [Overview](#overview) -* [Gradient Descent](#gradient_descent) -* [Import files](#import_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Gradient Descent - -## Import files - -``` -package examples.optimization.example1; - -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import optimization.GradientDescent; -import optimization.GDInput; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.functions.LinearVectorPolynomial; -import maths.errorfunctions.MSEVectorFunction; -import tech.tablesaw.api.Table; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example1 { - - public static void main(String[] args)throws IOException { - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/car_plant.csv")); - - Vector labels = new Vector(dataSet, "Electricity Usage"); - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 2, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = true; - gdInput.eta=0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000,1.0e-8); - - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - IterativeAlgorithmResult result = gdSolver.optimize(denseMatrixSet, labels, hypothesis); - - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+" slope: "+hypothesis.getCoeff(1)); - - } -} - -``` - -## Results - -``` -BatchGD: iteration: 1 - Jold: 8.224725 Jcur: 2.0346766011662285 - error |Jcur-Jold|: 6.1900483988337704 - exit tolerance: 1.0E-8 -BatchGD: iteration: 2 - Jold: 2.0346766011662285 Jcur: 0.5183480014814251 - error |Jcur-Jold|: 1.5163285996848033 - exit tolerance: 1.0E-8 -BatchGD: iteration: 3 - Jold: 0.5183480014814251 Jcur: 0.14690409557648973 - error |Jcur-Jold|: 0.37144390590493537 - exit tolerance: 1.0E-8 -BatchGD: iteration: 4 - Jold: 0.14690409557648973 Jcur: 0.055913665703255976 - error |Jcur-Jold|: 0.09099042987323375 - exit tolerance: 1.0E-8 -BatchGD: iteration: 5 - Jold: 0.055913665703255976 Jcur: 0.03362373732305984 - error |Jcur-Jold|: 0.02228992838019614 - exit tolerance: 1.0E-8 -BatchGD: iteration: 6 - Jold: 0.03362373732305984 Jcur: 0.028162835522061502 - error |Jcur-Jold|: 0.005460901800998334 - exit tolerance: 1.0E-8 -BatchGD: iteration: 7 - Jold: 0.028162835522061502 Jcur: 0.026824409586410466 - error |Jcur-Jold|: 0.0013384259356510365 - exit tolerance: 1.0E-8 -BatchGD: iteration: 8 - Jold: 0.026824409586410466 Jcur: 0.026495834873692763 - error |Jcur-Jold|: 3.2857471271770244E-4 - exit tolerance: 1.0E-8 -... - -Converged: true -Tolerance: 9.995007266283551E-9 -# Threads: 1 -Iterations: 7076 - -Intercept: 0.37857734128519877 slope: 0.5049674670001678 - -``` - -## Source Code - -Example1.java \ No newline at end of file diff --git a/src/main/java/examples/optimization/example2/Example2.java b/src/main/java/examples/optimization/example2/Example2.java deleted file mode 100644 index 47b8c53..0000000 --- a/src/main/java/examples/optimization/example2/Example2.java +++ /dev/null @@ -1,92 +0,0 @@ -package examples.optimization.example2; - -import datasets.VectorDouble; -import optimization.GradientDescent; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import optimization.GDInput; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datastructs.RowType; -import maths.functions.LinearVectorPolynomial; -import maths.errorfunctions.MSEVectorFunction; -import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression; -import tech.tablesaw.api.DoubleColumn; -import tech.tablesaw.api.Table; -import utils.*; - -import java.io.File; -import java.io.IOException; -import java.util.List; - -/** Category: Machine Learning - * ID: Example6 - * Description: Batch Gradient Descent with two features - * Taken From: - * Details: - * TODO - */ - -public class Example2 { - - public static Pair loadNormalizedDataSet(File file)throws IOException{ - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(file); - - DoubleColumn y = dataSet.doubleColumn("Electricity Usage"); - ListMaths.normalize(y); - VectorDouble labels = new VectorDouble(y); - - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - ListMaths.normalize(reducedDataSet.doubleColumn(0)); - List coolingCol = ParseUtils.parseAsDouble(reducedDataSet.column(1)); - ListMaths.normalize(coolingCol); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 3, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - denseMatrixSet.setColumn(2, coolingCol); - - return PairBuilder.makePair(denseMatrixSet, labels); - - } - - public static void apacheOLS(DenseMatrixSet denseMatrixSet, VectorDouble labels)throws IOException{ - - // the object that will do the fitting for us - OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression(); - - Double[][] x = new Double[denseMatrixSet.m()][2]; - denseMatrixSet.getSubMatrix(x, 2, 1, 2); - regression.newSampleData(ListUtils.toDoubleArray(labels.getRawData()), ArrayUtils.toArray(x)); - double[] coeffs = regression.estimateRegressionParameters(); - System.out.println("Apache OLS: "); - System.out.println("Intercept: "+coeffs[0]+" slope1: "+coeffs[1]+" slope2: "+coeffs[2]); - - } - - public static void main(String[] args)throws IOException { - - Pair dataSet = Example2.loadNormalizedDataSet(new File("src/main/resources/datasets/car_plant_multi.csv")); - - System.out.println(" "); - // compute with Apache OLS for reference - Example2.apacheOLS(dataSet.first, dataSet.second); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(2); - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta=0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000,1.0e-8); - - GradientDescent gdSolver = new GradientDescent(gdInput); - IterativeAlgorithmResult result = (IterativeAlgorithmResult) gdSolver.optimize(dataSet.first, dataSet.second, hypothesis); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+" slope1: "+hypothesis.getCoeff(1)+" slope2: "+hypothesis.getCoeff(2)); - - } -} - diff --git a/src/main/java/examples/optimization/example2/example.md b/src/main/java/examples/optimization/example2/example.md deleted file mode 100644 index c61f26d..0000000 --- a/src/main/java/examples/optimization/example2/example.md +++ /dev/null @@ -1,128 +0,0 @@ -# Example 2: Gradient Descent Optimization With Two Features - - -## Contents -* [Overview](#overview) -* [Gradient Descent](#gradient_descent) -* [Import files](#import_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Gradient Descent - -## Import files - -``` -package examples.optimization.example2; - -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import optimization.GradientDescent; -import optimization.GDInput; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.functions.LinearVectorPolynomial; -import maths.errorfunctions.MSEVectorFunction; -import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression; -import tech.tablesaw.api.DoubleColumn; -import tech.tablesaw.api.Table; -import utils.*; - -import java.io.File; -import java.io.IOException; -import java.util.List; - - -``` - -## The main function - -``` -public class Example2 { - - public static Pair loadNormalizedDataSet(File file)throws IOException{ - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(file); - - DoubleColumn y = dataSet.doubleColumn("Electricity Usage"); - ListMaths.normalize(y); - Vector labels = new Vector(y); - - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - ListMaths.normalize(reducedDataSet.doubleColumn(0)); - List coolingCol = ParseUtils.parseAsDouble(reducedDataSet.column(1)); - ListMaths.normalize(coolingCol); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 3, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - denseMatrixSet.setColumn(2, coolingCol); - - return PairBuilder.makePair(denseMatrixSet, labels); - - } - - public static void apacheOLS(DenseMatrixSet denseMatrixSet, Vector labels)throws IOException{ - - // the object that will do the fitting for us - OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression(); - - Double[][] x = new Double[denseMatrixSet.m()][2]; - denseMatrixSet.getSubMatrix(x, 2, 1, 2); - regression.newSampleData(ListUtils.toDoubleArray(labels.getRawData()), ArrayUtils.toArray(x)); - double[] coeffs = regression.estimateRegressionParameters(); - System.out.println("Apache OLS: "); - System.out.println("Intercept: "+coeffs[0]+" slope1: "+coeffs[1]+" slope2: "+coeffs[2]); - - } - - public static void main(String[] args)throws IOException { - - Pair dataSet = Example2.loadNormalizedDataSet(new File("src/main/resources/datasets/car_plant_multi.csv")); - - System.out.println(" "); - // compute with Apache OLS for reference - Example2.apacheOLS(dataSet.first, dataSet.second); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(2); - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta=0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000,1.0e-8); - - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - IterativeAlgorithmResult result = (IterativeAlgorithmResult) gdSolver.optimize(dataSet.first, dataSet.second, hypothesis); - - System.out.println(" "); - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+" slope1: "+hypothesis.getCoeff(1)+" slope2: "+hypothesis.getCoeff(2)); - - } -} - -``` - -## Results - -``` -Apache OLS: -Intercept: -0.014061513598774061 slope1: 0.6550463939406858 slope2: 0.3541277607139755 - -Converged: true -Tolerance: 9.99538353734647E-9 -# Threads: 1 -Iterations: 4642 - -Intercept: -0.009501183829303421 slope1: 0.643411046969411 slope2: 0.3609262733434958 - -``` - -## Source Code - -Example2.java \ No newline at end of file diff --git a/src/main/java/examples/plotting/example1/Example1.java b/src/main/java/examples/plotting/example1/Example1.java deleted file mode 100644 index a6fe7ee..0000000 --- a/src/main/java/examples/plotting/example1/Example1.java +++ /dev/null @@ -1,29 +0,0 @@ -package examples.plotting.example1; - -import dataloader.CsvDataLoader; -import tech.tablesaw.api.Table; -import visualizations.BarChart; - -import java.io.File; -import java.io.IOException; - -/** - * Category: Plotting - * ID: PlotABar - * Description: Load a CSV file and plot a horizontal bar chart - */ -public class Example1 { - - public static void main(String[] args) throws IOException { - File file = new File("data/humans_data.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - BarChart plotter = new BarChart(); - BarChart.BarChartOptions options = plotter.new BarChartOptions(); - options.chartTitle = "height by sex"; - options.groupColName = "Sex"; - options.numberColName = "Height"; - - BarChart.plotHorizontalBar(options, table); - } -} diff --git a/src/main/java/examples/plotting/example1/example.md b/src/main/java/examples/plotting/example1/example.md deleted file mode 100644 index 98cda9e..0000000 --- a/src/main/java/examples/plotting/example1/example.md +++ /dev/null @@ -1,56 +0,0 @@ -# Example 1: Bar Plot - -## Contents -* [Overview](#overview) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Import files - -``` -import dataloader.CsvDataLoader; -import tech.tablesaw.api.Table; -import visualizations.BarChart; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example1 { - - public static void main(String[] args) throws IOException { - File file = new File("data/humans_data.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - BarChart plotter = new BarChart(); - BarChart.BarChartOptions options = plotter.new BarChartOptions(); - options.chartTitle = "height by sex"; - options.groupColName = "Sex"; - options.numberColName = "Height"; - - BarChart.plotHorizontalBar(options, table); - } -} - - - - -``` - -## Results - -``` - -``` - -## Source Code - -Example1.java \ No newline at end of file diff --git a/src/main/java/examples/plotting/example2/Example2.java b/src/main/java/examples/plotting/example2/Example2.java deleted file mode 100644 index 613a0fe..0000000 --- a/src/main/java/examples/plotting/example2/Example2.java +++ /dev/null @@ -1,34 +0,0 @@ -package examples.plotting.example2; - -import dataloader.CsvDataLoader; -import datastructs.IVector; -import tech.tablesaw.api.Table; -import visualizations.Histograms; - -import java.io.File; -import java.io.IOException; - - -/** - * Category: Plotting - * ID: PlotAHistogram - * Description: Load a CSV file and plot the distribution of a numeric sample - */ - -public class Example2 { - - public static void main(String[] args) throws IOException { - File file = new File("test_data/annual.csv"); - Table data = CsvDataLoader.TableLoader.parseFile(file); - - // Extract numeric samples from the data - IVector X = CsvDataLoader.TableLoader.buildNumericSample(data, "Mean"); - - Histograms plotter = new Histograms(); - Histograms.HistogramOptions options = plotter.new HistogramOptions(); - options.chartTitle = "distribution of mean temperature"; - options.xAxisName = "Mean"; - - Histograms.plotHistogram(options, data); - } -} diff --git a/src/main/java/examples/plotting/example2/example.md b/src/main/java/examples/plotting/example2/example.md deleted file mode 100644 index e2719e0..0000000 --- a/src/main/java/examples/plotting/example2/example.md +++ /dev/null @@ -1,56 +0,0 @@ -# Example 2: Histogram Plot - -## Contents -* [Overview](#overview) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Import files - -``` -import dataloader.CsvDataLoader; -import datastructs.NumericSample; -import tech.tablesaw.api.Table; -import visualizations.Histograms; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example2 { - - public static void main(String[] args) throws IOException { - File file = new File("test_data/annual.csv"); - Table data = CsvDataLoader.TableLoader.parseFile(file); - - // Extract numeric samples from the data - NumericSample X = CsvDataLoader.TableLoader.buildNumericSample(data, "Mean"); - - Histograms plotter = new Histograms(); - Histograms.HistogramOptions options = plotter.new HistogramOptions(); - options.chartTitle = "distribution of mean temperature"; - options.xAxisName = "Mean"; - - Histograms.plotHistogram(options, data); - } -} - -``` - -## Results - -``` - -``` - -## Source Code - -Example2.java \ No newline at end of file diff --git a/src/main/java/examples/plotting/example3/Example3.java b/src/main/java/examples/plotting/example3/Example3.java deleted file mode 100644 index 73b16d2..0000000 --- a/src/main/java/examples/plotting/example3/Example3.java +++ /dev/null @@ -1,39 +0,0 @@ -package examples.plotting.example3; - -import dataloader.CsvDataLoader; -import datastructs.IVector; -import tech.tablesaw.api.Table; -import visualizations.LineChart; - -import java.io.File; -import java.io.IOException; - - -/** - * Category: Plotting - * ID: PlotALine - * Description: Load a CSV file and plot two columns against each other - */ - -public class Example3 { - - public static void main(String[] args) throws IOException { - - - File file = new File("data/annual.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - // extract numeric samples from the data - IVector X = CsvDataLoader.TableLoader.buildNumericSample(table, "Year"); - IVector Y = CsvDataLoader.TableLoader.buildNumericSample(table, "Mean"); - - LineChart plotter = new LineChart(); - LineChart.LineChartOptions options = plotter.new LineChartOptions(); - options.chartTitle = "Per Year Mean"; - options.xAxisName = "Year"; - options.yAxisName = "Mean"; - LineChart.plotLine(X, Y, options); - - } - -} \ No newline at end of file diff --git a/src/main/java/examples/plotting/example3/example.md b/src/main/java/examples/plotting/example3/example.md deleted file mode 100644 index b6c6fc5..0000000 --- a/src/main/java/examples/plotting/example3/example.md +++ /dev/null @@ -1,61 +0,0 @@ -# Example 3: Line Plot - -## Contents -* [Overview](#overview) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Import files - -``` -import dataloader.CsvDataLoader; -import datastructs.NumericSample; -import tech.tablesaw.api.Table; -import visualizations.LineChart; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example3 { - - public static void main(String[] args) throws IOException { - - - File file = new File("data/annual.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - // extract numeric samples from the data - NumericSample X = CsvDataLoader.TableLoader.buildNumericSample(table, "Year"); - NumericSample Y = CsvDataLoader.TableLoader.buildNumericSample(table, "Mean"); - - LineChart plotter = new LineChart(); - LineChart.LineChartOptions options = plotter.new LineChartOptions(); - options.chartTitle = "Per Year Mean"; - options.xAxisName = "Year"; - options.yAxisName = "Mean"; - LineChart.plotLine(X, Y, options); - - } - -} - -``` - -## Results - -``` - -``` - -## Source Code - -Example3.java \ No newline at end of file diff --git a/src/main/java/examples/plotting/example4/Example4.java b/src/main/java/examples/plotting/example4/Example4.java deleted file mode 100644 index cc7f798..0000000 --- a/src/main/java/examples/plotting/example4/Example4.java +++ /dev/null @@ -1,30 +0,0 @@ -package examples.plotting.example4; - -import dataloader.CsvDataLoader; -import tech.tablesaw.api.Table; -import visualizations.PieChart; - -import java.io.File; -import java.io.IOException; - -/** - * Category: Plotting - * ID: PlotAPie - * Description: Load a CSV file and plot a pie chart - */ -public class Example4 { - - public static void main(String[] args) throws IOException { - - File file = new File("data/humans_data.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - PieChart plotter = new PieChart(); - PieChart.PieChartOptions options = plotter.new PieChartOptions(); - options.chartTitle = "height by sex"; - options.groupColName = "Sex"; - options.numericColName = "Height"; - - PieChart.plotPie(options, table); - } -} diff --git a/src/main/java/examples/plotting/example4/example.md b/src/main/java/examples/plotting/example4/example.md deleted file mode 100644 index d6a584e..0000000 --- a/src/main/java/examples/plotting/example4/example.md +++ /dev/null @@ -1,55 +0,0 @@ -# Example 4: Pie Plot - -## Contents -* [Overview](#overview) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Import files - -``` -import dataloader.CsvDataLoader; -import tech.tablesaw.api.Table; -import visualizations.PieChart; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example4 { - - public static void main(String[] args) throws IOException { - - File file = new File("data/humans_data.csv"); - Table table = CsvDataLoader.TableLoader.parseFile(file); - - PieChart plotter = new PieChart(); - PieChart.PieChartOptions options = plotter.new PieChartOptions(); - options.chartTitle = "height by sex"; - options.groupColName = "Sex"; - options.numericColName = "Height"; - - PieChart.plotPie(options, table); - } -} - - -``` - -## Results - -``` - -``` - -## Source Code - -Example4.java \ No newline at end of file diff --git a/src/main/java/examples/plotting/example5/Example5.java b/src/main/java/examples/plotting/example5/Example5.java deleted file mode 100644 index 934efa9..0000000 --- a/src/main/java/examples/plotting/example5/Example5.java +++ /dev/null @@ -1,30 +0,0 @@ -package examples.plotting.example5; - -import dataloader.CsvDataLoader; -import tech.tablesaw.api.Table; -import visualizations.ScatterChart; - -import java.io.File; -import java.io.IOException; - -/** - * Category: Plotting - * ID: PlotABar - * Description: Load a CSV file and plot a scatter chart with 3 numeric variables - */ -public class Example5 { - - public static void main(String[] args) throws IOException { - File file = new File("data/humans_data.csv"); - Table data = CsvDataLoader.TableLoader.parseFile(file); - - ScatterChart plotter = new ScatterChart(); - ScatterChart.ScatterChartOptions options = plotter.new ScatterChartOptions(); - options.chartTitle = "weight by age and height"; - options.xAxisName = "Age"; - options.yAxisName = "Height"; - options.sizeColName = "Weight"; - - ScatterChart.plotScatter3D(options, data); - } -} diff --git a/src/main/java/examples/plotting/example5/example.md b/src/main/java/examples/plotting/example5/example.md deleted file mode 100644 index e40a5c9..0000000 --- a/src/main/java/examples/plotting/example5/example.md +++ /dev/null @@ -1,54 +0,0 @@ -# Example 5: Scatter Plot - -## Contents -* [Overview](#overview) -* [Import files](#include_files) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview - -## Import files - -``` -import dataloader.CsvDataLoader; -import tech.tablesaw.api.Table; -import visualizations.ScatterChart; - -import java.io.File; -import java.io.IOException; - -``` - -## The main function - -``` -public class Example5 { - - public static void main(String[] args) throws IOException { - File file = new File("data/humans_data.csv"); - Table data = CsvDataLoader.TableLoader.parseFile(file); - - ScatterChart plotter = new ScatterChart(); - ScatterChart.ScatterChartOptions options = plotter.new ScatterChartOptions(); - options.chartTitle = "weight by age and height"; - options.xAxisName = "Age"; - options.yAxisName = "Height"; - options.sizeColName = "Weight"; - - ScatterChart.plotScatter3D(options, data); - } -} - -``` - -## Results - -``` - -``` - -## Source Code - -Example5.java \ No newline at end of file diff --git a/src/main/java/examples/stats/example1/Example1.java b/src/main/java/examples/stats/example1/Example1.java deleted file mode 100644 index 88ca1e9..0000000 --- a/src/main/java/examples/stats/example1/Example1.java +++ /dev/null @@ -1,67 +0,0 @@ -package examples.stats.example1; -import datasets.VectorDouble; -import datastructs.IVector; -import org.apache.commons.math3.stat.StatUtils; -import stats.utils.Resample; -import org.apache.commons.math3.distribution.NormalDistribution; - -/** - * - * Category: Statistics - * ID: MeanBootstrap - * Illustration of basic bootstrap method for the mean - * see also: https://machinelearningmastery.com/a-gentle-introduction-to-the-bootstrap-method/ - */ - - -public class Example1 { - - - public static void main(String[] args){ - - - // the size of the sample - final int SIZE = 100; - final int RESAMPLE_SIZE = 20; - - // how many bootstrap iterations to perform - final int BOOST_ITRS = 100; - - // parameters for normal distribution - final double MU = 0.8; - final double SD = 0.1; - - // create a sample - VectorDouble sample = new VectorDouble(SIZE); - - // normal distribution: - // see https://commons.apache.org/proper/commons-math/javadocs/api-3.5/org/apache/commons/math3/distribution/NormalDistribution.html - NormalDistribution dist = new NormalDistribution(MU, SD); - - for(int i=0; i resample = Resample.resample(sample, RESAMPLE_SIZE, 3); - means[itr] = ((VectorDouble)resample).getMean(); - } - - // compute the mean of means - double mean = StatUtils.mean(means); - System.out.println("Mean of means: "+mean); - - } - -} - - - diff --git a/src/main/java/examples/stats/example1/example.md b/src/main/java/examples/stats/example1/example.md deleted file mode 100644 index 962090f..0000000 --- a/src/main/java/examples/stats/example1/example.md +++ /dev/null @@ -1,14 +0,0 @@ -# Example 1: Simple Bootstrap For The Mean - -## Contents -* [Overview](#overview) - * [Linear Regression](#linear_regression) - * [How Good Is The Fit?](#how_good_is_the_fit) - * [```R^2``` Coefficient](#r2_coefficient) -* [Include files](#include_files) -* [Program structure](#prg_struct) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview \ No newline at end of file diff --git a/src/main/java/examples/stats/example2/Example2.java b/src/main/java/examples/stats/example2/Example2.java deleted file mode 100644 index 500cb16..0000000 --- a/src/main/java/examples/stats/example2/Example2.java +++ /dev/null @@ -1,67 +0,0 @@ -package examples.stats.example2; - -import dataloader.CsvDataLoader; -import datasets.VectorDouble; -import datastructs.IVector; -import org.apache.commons.math3.stat.inference.TestUtils; -import utils.ListUtils; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Map; - -/** - * - * Category: Statistics, Hypothesis Testing - * ID: HypothesisTestingForMean - * Description: Load a CSV file using the CsvDataLoader.MapLoader and create - * a NumericSample from the data set. Use the sample for hypothesis testing - */ - -public class Example2 { - - - public static void main(String[] args){ - - try { - // load data set - Map> dataSet = CsvDataLoader.MapLoader.parseFile(new File("data/robot_state.csv")); - IVector sample = CsvDataLoader.MapLoader.buildNumericSample(dataSet, "X"); - - // the mean value we assume - double mu = 2.85; - double level = 0.05; - boolean rejectH0 = TestUtils.tTest(mu, ListUtils.toDoubleArray(sample.toArray()), level ); - double pLevel = TestUtils.tTest(mu, ListUtils.toDoubleArray(sample.toArray())); - - System.out.println("p-level is: "+pLevel); - if(rejectH0){ - System.out.println("H0 hypothesis: mu="+mu+" can be rejected with confidence: "+(1.0-level)); - } - else{ - System.out.println("H0 hypothesis: mu="+mu+" can not be rejected"); - } - - // now we should not reject - mu = ((VectorDouble)sample).getMean(); - - rejectH0 = TestUtils.tTest(mu, ListUtils.toDoubleArray(sample.toArray()), level ); - pLevel = TestUtils.tTest(mu, ListUtils.toDoubleArray(sample.toArray())); - - System.out.println("p-level is: "+pLevel); - if(rejectH0){ - System.out.println("H0 hypothesis: mu="+mu+" can be rejected with confidence: "+(1.0-level)); - } - else{ - System.out.println("H0 hypothesis: mu="+mu+" can not be rejected"); - } - } - catch(IOException exception) - { - System.out.println(exception.toString()); - } - - - } -} diff --git a/src/main/java/examples/stats/example2/example.md b/src/main/java/examples/stats/example2/example.md deleted file mode 100644 index 33e208d..0000000 --- a/src/main/java/examples/stats/example2/example.md +++ /dev/null @@ -1,14 +0,0 @@ -# Example 2: Hypothesis Testing For The Mean - -## Contents -* [Overview](#overview) - * [Linear Regression](#linear_regression) - * [How Good Is The Fit?](#how_good_is_the_fit) - * [```R^2``` Coefficient](#r2_coefficient) -* [Include files](#include_files) -* [Program structure](#prg_struct) -* [The main function](#m_func) -* [Results](#results) -* [Source Code](#source_code) - -## Overview \ No newline at end of file diff --git a/src/main/java/examples/stats/example3/Example3.java b/src/main/java/examples/stats/example3/Example3.java deleted file mode 100644 index a806acc..0000000 --- a/src/main/java/examples/stats/example3/Example3.java +++ /dev/null @@ -1,111 +0,0 @@ -package examples.stats.example3; - -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.errorfunctions.MSEVectorFunction; -import maths.errorfunctions.SSEVectorFunction; -import maths.functions.LinearVectorPolynomial; -import ml.regression.LinearRegressor; - -import tech.tablesaw.api.Table; -import utils.ListMaths; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - -/** Category: Statistics - * ID: Example1 - * Description: Goodness of fit of regression line - * Taken From: - * Details: - * TODO - */ - -public class Example3 { - - public static void main(String[] args)throws IOException { - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/car_plant.csv")); - - VectorDouble labels = new VectorDouble(dataSet, "Electricity Usage"); - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 2, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - LinearRegressor regressor = new LinearRegressor(hypothesis); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta=0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000,1.0e-8); - - GradientDescent gdSolver = new GradientDescent(gdInput); - - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(denseMatrixSet, labels, gdSolver); - - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+" slope: "+hypothesis.getCoeff(1)); - - // let's see the max error over the dateset - VectorDouble errors = regressor.getErrors(denseMatrixSet, labels); - double maxError = ListMaths.max(errors.getRawData()); - - System.out.println("Maximum error over dataset: "+maxError); - - // let's get an estimate of the error variance. - //The error variance sigma^2 can be estimated by considering the deviations between the observed - //data values y_i and their fitted values \hat(y)_i . Specifically, the sum of squares for error SSE is defined - //to be the sum of the squares of these deviations - VectorDouble yhat = regressor.predict(denseMatrixSet); - - double sseError = SSEVectorFunction.error(labels, yhat); - double sigma2_hat = sseError/ (yhat.size()-2); - System.out.println("Estimate of error variance: "+ sigma2_hat); - - // interval estimation - double Sxx = ListMaths.sxx(denseMatrixSet.getColumn(1).getRawData()); - System.out.println("Estimate of Sxx: "+Sxx); - - // standard error for the slope - double se_slope = Math.sqrt(sigma2_hat)/Math.sqrt(Sxx); - System.out.println("Standard error for the slope: "+se_slope); - - // t-statistic - double t = hypothesis.getCoeff(1)/se_slope; - System.out.println("t-statistic: "+t); - - //The two-sided p-value is calculated as - //p-value = 2 × P(X > 6.37) approx 0 - //where the random variable X has a t-distribution with 10 degrees of freedom. This low p-value - //indicates that the null hypothesis is not plausible and so the slope parameter is known to be - //nonzero. In other words, it has been established that the distribution of electricity usage does - //depend on the level of production. - - // The proportion of the total variability in the dependent variable y that is accounted for by - // the regression line is given by the coefficient of determination. - // This coefficient takes a value between 0 and 1, and the closer it is to one the smaller is the - // sum of squares for error SSE in relation to - // the sum of squares for regression SSR. Thus, larger values of R^2 tend to indicate that the data - // points are closer to the fitted regression line. Nevertheless, a low - // value of R^2 should not necessarily be interpreted as implying that the fitted regression line is - // not appropriate or is not useful. A fitted regression line may be accurate and informative even - // though a small value of R^2 is obtained because of a large error variance sigma62. - double sst = ListMaths.sse(labels.getRawData()); - double r_sqr = 1.0- sseError/sst; - - System.out.println("Coefficient of determination: "+r_sqr); - - - } -} diff --git a/src/main/java/examples/stats/example3/example.md b/src/main/java/examples/stats/example3/example.md deleted file mode 100644 index a41a1e8..0000000 --- a/src/main/java/examples/stats/example3/example.md +++ /dev/null @@ -1,148 +0,0 @@ -# Example 6: Goodness of fit of regression line - - ## Contents - * [Overview](#overview) - * [Goodness of fit of regression line](#goodness_of_fit) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - - ## Overview - - ### Goodness of fit of regression line - - - ## Import files - - ``` -package examples.stats.example3; - -import optimization.GradientDescent; -import optimization.GDInput; -import utils.DefaultIterativeAlgorithmController; -import utils.IterativeAlgorithmResult; -import datasets.DenseMatrixSet; -import datastructs.RowBuilder; -import datasets.VectorDouble; -import datastructs.RowType; -import maths.errorfunctions.MSEVectorFunction; -import maths.errorfunctions.SSEVectorFunction; -import maths.functions.LinearVectorPolynomial; -import ml.regression.LinearRegressor; - -import tech.tablesaw.api.Table; -import utils.ListMaths; -import utils.TableDataSetLoader; - -import java.io.File; -import java.io.IOException; - ``` - - ## The main function - - ``` - public class Example3 { - - public static void main(String[] args)throws IOException { - - // load the data - Table dataSet = TableDataSetLoader.loadDataSet(new File("src/main/resources/datasets/car_plant.csv")); - - Vector labels = new Vector(dataSet, "Electricity Usage"); - Table reducedDataSet = dataSet.removeColumns("Electricity Usage").first(dataSet.rowCount()); - - DenseMatrixSet denseMatrixSet = new DenseMatrixSet(RowType.Type.DOUBLE_VECTOR, new RowBuilder(), reducedDataSet.rowCount(), 2, 1.0); - denseMatrixSet.setColumn(1, reducedDataSet.doubleColumn(0)); - - LinearVectorPolynomial hypothesis = new LinearVectorPolynomial(1); - LinearRegressor regressor = new LinearRegressor(hypothesis); - - GDInput gdInput = new GDInput(); - gdInput.showIterations = false; - gdInput.eta=0.01; - gdInput.errF = new MSEVectorFunction(hypothesis); - gdInput.iterationContorller = new DefaultIterativeAlgorithmController(10000,1.0e-8); - - BatchGradientDescent gdSolver = new BatchGradientDescent(gdInput); - - IterativeAlgorithmResult result = (IterativeAlgorithmResult) regressor.train(denseMatrixSet, labels, gdSolver); - - System.out.println(result); - System.out.println("Intercept: "+hypothesis.getCoeff(0)+" slope: "+hypothesis.getCoeff(1)); - - // let's see the max error over the dateset - Vector errors = regressor.getErrors(denseMatrixSet, labels); - double maxError = ListMaths.max(errors.getRawData()); - - System.out.println("Maximum error over dataset: "+maxError); - - // let's get an estimate of the error variance. - //The error variance sigma^2 can be estimated by considering the deviations between the observed - //data values y_i and their fitted values \hat(y)_i . Specifically, the sum of squares for error SSE is defined - //to be the sum of the squares of these deviations - Vector yhat = regressor.predict(denseMatrixSet); - - double sseError = SSEVectorFunction.error(labels, yhat); - double sigma2_hat = sseError/ (yhat.size()-2); - System.out.println("Estimate of error variance: "+ sigma2_hat); - - // interval estimation - double Sxx = ListMaths.sxx(denseMatrixSet.getColumn(1).getRawData()); - System.out.println("Estimate of Sxx: "+Sxx); - - // standard error for the slope - double se_slope = Math.sqrt(sigma2_hat)/Math.sqrt(Sxx); - System.out.println("Standard error for the slope: "+se_slope); - - // t-statistic - double t = hypothesis.getCoeff(1)/se_slope; - System.out.println("t-statistic: "+t); - - //The two-sided p-value is calculated as - //p-value = 2 × P(X > 6.37) approx 0 - //where the random variable X has a t-distribution with 10 degrees of freedom. This low p-value - //indicates that the null hypothesis is not plausible and so the slope parameter is known to be - //nonzero. In other words, it has been established that the distribution of electricity usage does - //depend on the level of production. - - // The proportion of the total variability in the dependent variable y that is accounted for by - // the regression line is given by the coefficient of determination. - // This coefficient takes a value between 0 and 1, and the closer it is to one the smaller is the - // sum of squares for error SSE in relation to - // the sum of squares for regression SSR. Thus, larger values of R^2 tend to indicate that the data - // points are closer to the fitted regression line. Nevertheless, a low - // value of R^2 should not necessarily be interpreted as implying that the fitted regression line is - // not appropriate or is not useful. A fitted regression line may be accurate and informative even - // though a small value of R^2 is obtained because of a large error variance sigma62. - double sst = ListMaths.sse(labels.getRawData()); - double r_sqr = 1.0- sseError/sst; - - System.out.println("Coefficient of determination: "+r_sqr); - - } - } - - ``` - - ## Results - - ``` -Converged: true -Tolerance: 9.995007266283551E-9 -# Threads: 1 -Iterations: 7076 - -Intercept: 0.37857734128519877 slope: 0.5049674670001678 -Maximum error over dataset: 0.2780755638140122 -Estimate of error variance: 0.02992964035512725 -Estimate of Sxx: 4.8723000000000525 -Standard error for the slope: 0.07837611613854814 -t-statistic: 6.442874333138931 -Coefficient of determination: 0.8019860710106865 - - ``` - - ## Source Code - - Example3.java \ No newline at end of file diff --git a/src/main/java/examples/stats/example4/Example4.java b/src/main/java/examples/stats/example4/Example4.java deleted file mode 100644 index ea09fcf..0000000 --- a/src/main/java/examples/stats/example4/Example4.java +++ /dev/null @@ -1,51 +0,0 @@ -package examples.stats.example4; - -import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; -import utils.ListMaths; -import utils.ListUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class Example4 { - - public static List getNormalSample(double mu, double sd, int n){ - - List sample = new ArrayList<>(n); - - Random rnd = new Random(); - for(int i=0; i means = new ArrayList(); - - for( int itr=0; itr < N_SIM; ++itr){ - List sample = Example4.getNormalSample(MU, SIGMA, N); - - double mean = ListMaths.sum(sample)/((double)sample.size()); - //System.out.println(mean); - means.add(mean); - } - - double[] vals = ListUtils.toDoubleArray(means); - DescriptiveStatistics stats = new DescriptiveStatistics(vals ); - - System.out.println("Standard deviation of means is: "+stats.getStandardDeviation()); - System.out.println("sigma/sqrt(N) is: " + SIGMA/Math.sqrt(N)); - - } -} diff --git a/src/main/java/examples/stats/example4/example.md b/src/main/java/examples/stats/example4/example.md deleted file mode 100644 index c777769..0000000 --- a/src/main/java/examples/stats/example4/example.md +++ /dev/null @@ -1,85 +0,0 @@ -# Example 4: Simulate the standard error for the mean - - ## Contents - * [Overview](#overview) - * [Standard error for the mean](#standard_error_for_mean) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - - ## Overview - - ### Standard error for the mean - - - ## Import files - - ``` -package examples.stats.example4; - -import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; -import utils.ListMaths; -import utils.ListUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - ``` - - ## The main function - - ``` - public class Example4 { - - public static List getNormalSample(double mu, double sd, int n){ - - List sample = new ArrayList<>(n); - - Random rnd = new Random(); - for(int i=0; i means = new ArrayList(); - - for( int itr=0; itr < N_SIM; ++itr){ - List sample = Example4.getNormalSample(MU, SIGMA, N); - - double mean = ListMaths.sum(sample)/((double)sample.size()); - //System.out.println(mean); - means.add(mean); - } - - double[] vals = ListUtils.toDoubleArray(means); - DescriptiveStatistics stats = new DescriptiveStatistics(vals ); - - System.out.println("Standard deviation of means is: "+stats.getStandardDeviation()); - System.out.println("sigma/sqrt(N) is: " + SIGMA/Math.sqrt(N)); - } - } - ``` - - ## Results - - ``` -Standard deviation of means is: 0.3081356365887988 -sigma/sqrt(N) is: 0.31622776601683794 - - ``` - - ## Source Code - - Example4.java \ No newline at end of file diff --git a/src/main/java/examples/stats/example5/Example5.java b/src/main/java/examples/stats/example5/Example5.java deleted file mode 100644 index 0217c2f..0000000 --- a/src/main/java/examples/stats/example5/Example5.java +++ /dev/null @@ -1,26 +0,0 @@ -package examples.stats.example5; - -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; -import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; -import utils.ListUtils; -import java.util.List; - -public class Example5 { - - public static void main(String[] args){ - - final int SIZE = 20; - final double MU = 1.0; - final double STD = 0.3; - - AbstractRealDistribution normalDistribution = new NormalDistribution(MU, STD); - List values = ListUtils.randomSample(SIZE, normalDistribution); - DescriptiveStatistics stats = new DescriptiveStatistics(ListUtils.toDoubleArray(values)); - - System.out.println("Mean is: "+ stats.getMean()); - System.out.println("Median is: "+stats.getPercentile(50)); - System.out.println("Min is: "+stats.getMin()); - System.out.println("Max is: "+stats.getMax()); - } -} diff --git a/src/main/java/examples/stats/example5/example.md b/src/main/java/examples/stats/example5/example.md deleted file mode 100644 index 3a0aee8..0000000 --- a/src/main/java/examples/stats/example5/example.md +++ /dev/null @@ -1,62 +0,0 @@ -# Calculate Descriptive Statistics Metrics - -## Contents - * [Overview](#overview) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - -## Overview - -## Import files - - ``` -package examples.stats.example5; - -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; -import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; -import utils.ListUtils; -import java.util.List; - ``` - -## The main function - -``` -public class Example5 { - - public static void main(String[] args){ - - final int SIZE = 20; - final double MU = 1.0; - final double STD = 0.3; - - /// populate the list using the NormalDistribution - AbstractRealDistribution normalDistribution = new NormalDistribution(MU, STD); - - List values = ListUtils.randomSample(SIZE, normalDistribution); - - DescriptiveStatistics stats = new DescriptiveStatistics(ListUtils.toDoubleArray(values)); - - System.out.println("Mean is: "+ stats.getMean()); - System.out.println("Median is: "+stats.getPercentile(50)); - System.out.println("Min is: "+stats.getMin()); - System.out.println("Max is: "+stats.getMax()); - } -} - -``` - -## Results - -``` -Mean is: 1.0282365100654927 -Median is: 1.016467404051775 -Min is: 0.520894109764956 -Max is: 1.6848924957278655 -``` - - ## Source Code - - Example5.java \ No newline at end of file diff --git a/src/main/java/examples/stats/example6/Example6.java b/src/main/java/examples/stats/example6/Example6.java deleted file mode 100644 index ab2a5f0..0000000 --- a/src/main/java/examples/stats/example6/Example6.java +++ /dev/null @@ -1,88 +0,0 @@ -package examples.stats.example6; - -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; - -import utils.ListMaths; -import utils.ListUtils; - -import java.util.List; - -public class Example6 { - - public static void main(String[] arg){ - - final int SIZE = 20; - final double MU = 1.0; - final double STD = 0.3; - final double ALPHA = 0.05; - - AbstractRealDistribution normalDistribution = new NormalDistribution(MU, STD); - List values = ListUtils.randomSample(SIZE, normalDistribution); - - AbstractRealDistribution standardNormalDistribution = new NormalDistribution(); - - //compute the z-score - double xbar = ListMaths.sum(values)/(double)values.size(); - double z = (xbar - MU)/(0.3/Math.sqrt((double) SIZE)); - - System.out.println("Sample mean: " + xbar); - System.out.println("z-score computed: "+z); - System.out.println("Significance level: "+ALPHA); - - // test the hypothesis - // H_0: \mu = 1.0 - // H_a: \mu > 1.0 - - double p_value = 1.0 - standardNormalDistribution.cumulativeProbability(z); - - System.out.println(); - System.out.println("Upper tail test"); - - // we reject H_0 if p-value < ALPHA - if(p_value < ALPHA){ - System.out.println("The null hypothesis is rejected " + - "with p-value " + p_value + " and significance level " + ALPHA); - } - else{ - System.out.println("With p-value " + p_value + " and significance level " + ALPHA + " cannot reject H0"); - } - - System.out.println(); - - // test the hypothesis - // H_0: \mu = 1.0 - // H_a: \mu < 1.0 - - p_value = standardNormalDistribution.cumulativeProbability(z); - - System.out.println("Lower tail test"); - - // we reject H_0 if p-value < ALPHA - if(p_value < ALPHA){ - System.out.println("The null hypothesis is rejected " + - "with p-value " + p_value + " and significance level " + ALPHA); - } - else{ - System.out.println("With p-value " + p_value + " and significance level " + ALPHA + " cannot reject H0"); - } - - System.out.println(); - System.out.println("Two sided test"); - - // test the hypothesis - // H_0: \mu = 1.0 - // H_a: \mu != 1.0 - - p_value = 2.0*(1.0 - standardNormalDistribution.cumulativeProbability(Math.abs(z))); - - // we reject H_0 if p-value < ALPHA - if(p_value < ALPHA){ - System.out.println("The null hypothesis is rejected " + - "with p-value " + p_value + " and significance level " + ALPHA); - } - else{ - System.out.println("With p-value " + p_value + " and significance level " + ALPHA + " cannot reject H0"); - } - } -} diff --git a/src/main/java/examples/stats/example6/example.md b/src/main/java/examples/stats/example6/example.md deleted file mode 100644 index 04eccfd..0000000 --- a/src/main/java/examples/stats/example6/example.md +++ /dev/null @@ -1,129 +0,0 @@ -# Hypothesis tests on the mean of a normal distribution with known variance - -## Contents - * [Overview](#overview) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - -## Overview - -## Import files - - ``` -package examples.stats.example6; - -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; - -import utils.ListMaths; -import utils.ListUtils; - -import java.util.List; - ``` - -## The main function - -``` -public class Example6 { - - public static void main(String[] arg){ - - final int SIZE = 20; - final double MU = 1.0; - final double STD = 0.3; - final double ALPHA = 0.05; - - AbstractRealDistribution normalDistribution = new NormalDistribution(MU, STD); - List values = ListUtils.randomSample(SIZE, normalDistribution); - - AbstractRealDistribution standardNormalDistribution = new NormalDistribution(); - - //compute the z-score - double xbar = ListMaths.sum(values)/(double)values.size(); - double z = (xbar - MU)/(0.3/Math.sqrt((double) SIZE)); - - System.out.println("Sample mean: " + xbar); - System.out.println("z-score computed: "+z); - System.out.println("Significance level: "+ALPHA); - - // test the hypothesis - // H_0: \mu = 1.0 - // H_a: \mu > 1.0 - - double p_value = 1.0 - standardNormalDistribution.cumulativeProbability(z); - - System.out.println(); - System.out.println("Upper tail test"); - - // we reject H_0 if p-value < ALPHA - if(p_value < ALPHA){ - System.out.println("The null hypothesis is rejected " + - "with p-value " + p_value + " and significance level " + ALPHA); - } - else{ - System.out.println("With p-value " + p_value + " and significance level " + ALPHA + " cannot reject H0"); - } - - System.out.println(); - - // test the hypothesis - // H_0: \mu = 1.0 - // H_a: \mu < 1.0 - - p_value = standardNormalDistribution.cumulativeProbability(z); - - System.out.println("Lower tail test"); - - // we reject H_0 if p-value < ALPHA - if(p_value < ALPHA){ - System.out.println("The null hypothesis is rejected " + - "with p-value " + p_value + " and significance level " + ALPHA); - } - else{ - System.out.println("With p-value " + p_value + " and significance level " + ALPHA + " cannot reject H0"); - } - - System.out.println(); - System.out.println("Two sided test"); - - // test the hypothesis - // H_0: \mu = 1.0 - // H_a: \mu != 1.0 - - p_value = 2.0*(1.0 - standardNormalDistribution.cumulativeProbability(Math.abs(z))); - - // we reject H_0 if p-value < ALPHA - if(p_value < ALPHA){ - System.out.println("The null hypothesis is rejected " + - "with p-value " + p_value + " and significance level " + ALPHA); - } - else{ - System.out.println("With p-value " + p_value + " and significance level " + ALPHA + " cannot reject H0"); - } - } -} - -``` - -## Results - -``` -Sample mean: 0.9828392170518672 -z-score computed: -0.2558178481276285 -Significance level: 0.05 - -Upper tail test -With p-value 0.6009542542169531 and significance level 0.05 cannot reject H0 - -Lower tail test -With p-value 0.39904574578304686 and significance level 0.05 cannot reject H0 - -Two sided test -With p-value 0.7980914915660937 and significance level 0.05 cannot reject H0 -``` - - ## Source Code - - Example6.java \ No newline at end of file diff --git a/src/main/java/examples/stats/example7/Example7.java b/src/main/java/examples/stats/example7/Example7.java deleted file mode 100644 index 3d7dff9..0000000 --- a/src/main/java/examples/stats/example7/Example7.java +++ /dev/null @@ -1,22 +0,0 @@ -package examples.stats.example7; - -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; - -public class Example7 { - - public static void main(String[] args){ - final double ALPHA = 0.05; - final double SIGMA = 2.0; - int n = 25; - final double z_ALPHA_HALF = 1.96; - final double DELTA = 1.0; - - AbstractRealDistribution normalDistribution = new NormalDistribution(); - double beta = normalDistribution.cumulativeProbability(z_ALPHA_HALF - Math.sqrt(n)/SIGMA)- - normalDistribution.cumulativeProbability(-z_ALPHA_HALF - Math.sqrt(n)/SIGMA); - - System.out.println("beta is "+beta); - System.out.println("Power of test: " + (1.0- beta)); - } -} diff --git a/src/main/java/examples/stats/example7/example.md b/src/main/java/examples/stats/example7/example.md deleted file mode 100644 index 6182e5b..0000000 --- a/src/main/java/examples/stats/example7/example.md +++ /dev/null @@ -1,52 +0,0 @@ -# Type II error and the sample size - -## Contents - * [Overview](#overview) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - -## Overview - -## Import files - - ``` -package examples.stats.example7; - -import org.apache.commons.math3.distribution.AbstractRealDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; - ``` - -## The main function - -``` -public class Example7 { - - public static void main(String[] args){ - final double ALPHA = 0.05; - final double SIGMA = 2.0; - int n = 25; - final double z_ALPHA_HALF = 1.96; - final double DELTA = 1.0; - - AbstractRealDistribution normalDistribution = new NormalDistribution(); - double beta = normalDistribution.cumulativeProbability(z_ALPHA_HALF - Math.sqrt(n)/SIGMA)- - normalDistribution.cumulativeProbability(-z_ALPHA_HALF - Math.sqrt(n)/SIGMA); - - System.out.println("beta is "+beta); - System.out.println("Power of test: " + (1.0- beta)); - } -} -``` - -## Results - -``` -beta is 0.29459441823305144 -Power of test: 0.7054055817669486 -``` - - ## Source Code - - Example7.java diff --git a/src/main/java/examples/stats/example8/Example8.java b/src/main/java/examples/stats/example8/Example8.java deleted file mode 100644 index 9ff23ed..0000000 --- a/src/main/java/examples/stats/example8/Example8.java +++ /dev/null @@ -1,41 +0,0 @@ -package examples.stats.example8; - -import io.CSVFileWriter; -import org.apache.commons.math3.distribution.UniformIntegerDistribution; -import stats.Statistics; -import utils.ListUtils; - -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; - -public class Example8 { - - public static void main(String[] args){ - - String path = Paths.get("src/main/java/examples/stats/example8") - .toAbsolutePath() - .toString(); - - System.out.println("Path is: "+path); - - final int N_SIMS = 1000; - List avg = new ArrayList<>(N_SIMS); - - for(int i =0; i sample = ListUtils.randomSample(i+1, - new UniformIntegerDistribution(1,6)); - - double mean = Statistics.calculate(ListUtils.toDoubleArray(sample), - Statistics.Metrics.MEAN); - - avg.add(mean); - - if(i==10 || i == 100 || i == 500 || i==999) { - CSVFileWriter writer = new CSVFileWriter(new String(path + "/" + "averages" + i + ".csv")); - writer.writeDoubleRow(avg); - } - } - } -} diff --git a/src/main/java/examples/stats/example8/example.md b/src/main/java/examples/stats/example8/example.md deleted file mode 100644 index f369df0..0000000 --- a/src/main/java/examples/stats/example8/example.md +++ /dev/null @@ -1,37 +0,0 @@ -# Example 8: Simulate The Central Limit Theorem - - ## Contents - * [Overview](#overview) - * [Central Limit Theorem](#goodness_of_fit) - * [Import files](#include_files) - * [The main function](#m_func) - * [Results](#results) - * [Source Code](#source_code) - - ## Overview - - ### Central Limit Theorem - - - ## Import files - - ``` - - ``` - - ## The main function - - ``` - - - ``` - - ## Results - - ``` - - ``` - - ## Source Code - - Example8.java \ No newline at end of file