From f2c545ce2c8f23e422186bd90085648568232d84 Mon Sep 17 00:00:00 2001 From: Henri Saudubray Date: Wed, 20 Aug 2025 18:20:46 +0200 Subject: [PATCH] feat: a LOT of stuff (final report, examples, simulation of a single assert, move from node instances to node definitions, etc.) --- doc/data/middle.csv | 101 + doc/data/sincos_discrete.csv | 1001 --- doc/data/xsmall.csv | 10001 ++++++++++++++++++++++++ doc/remarques.typ | 120 + doc/rep.typ | 1076 +-- doc/sources.bib | 88 + exm/builtins/ball_assert.ml | 83 + exm/builtins/main.ml | 74 +- exm/zelus/ballcos/ball.zci | Bin 0 -> 17762 bytes exm/zelus/ballcos/ball.zls | 41 + exm/zelus/ballcos/dune | 17 + exm/zelus/ballcos/main.ml | 4 + exm/zelus/ballcos/solve.zli | 27 + exm/zelus/ballcos/tmp/ball.ml | 172 + exm/zelus/ballcos/tmp/dune | 8 + exm/zelus/ballcos/tmp/main_b.ml | 31 + exm/zelus/ballcos/ztypes.ml | 16 + exm/zelus/brusselator/brusselator.zls | 28 + exm/zelus/brusselator/dune.bak | 17 + exm/zelus/brusselator/main.ml | 6 + exm/zelus/odes/dune | 17 + exm/zelus/odes/main.ml | 9 + exm/zelus/odes/odes.zls | 37 + exm/zelus/odes/solve.zli | 26 + exm/zelus/odes/ztypes.ml | 16 + exm/zelus/parallel/dune | 12 + exm/zelus/parallel/parallel.zls | 34 + exm/zelus/parallel/solve.zli | 27 + exm/zelus/parallel/ztypes.ml | 16 + exm/zelus/sincos/main.ml | 8 +- exm/zelus/sincos/sincosz.zls | 12 +- exm/zelus/solve/time.zls | 44 +- exm/zelus/vdp/dune | 17 + exm/zelus/vdp/solve.zli | 27 + exm/zelus/vdp/vdp.zls | 54 + exm/zelus/vdp/ztypes.ml | 16 + exm/zelus_2024/ball/ball.ml | 122 +- src/lib/hsim/sim.ml | 205 +- src/lib/hsim/solver.ml | 28 +- src/lib/hsim/types.ml | 19 +- src/lib/hsim/utils.ml | 53 +- src/lib/solvers/statefulZ.ml | 6 +- src/lib/std/lift.ml | 381 +- src/lib/std/output.ml | 8 +- src/lib/std/runtime.ml | 5 +- src/lib/std/solve.ml | 105 +- src/lib/std/solve.mli | 37 +- src/lib/std/solve.zli | 11 +- src/lib/std/ztypes.ml | 12 +- 49 files changed, 12377 insertions(+), 1898 deletions(-) create mode 100644 doc/data/middle.csv delete mode 100644 doc/data/sincos_discrete.csv create mode 100644 doc/data/xsmall.csv create mode 100644 exm/builtins/ball_assert.ml create mode 100644 exm/zelus/ballcos/ball.zci create mode 100644 exm/zelus/ballcos/ball.zls create mode 100644 exm/zelus/ballcos/dune create mode 100644 exm/zelus/ballcos/main.ml create mode 100644 exm/zelus/ballcos/solve.zli create mode 100644 exm/zelus/ballcos/tmp/ball.ml create mode 100644 exm/zelus/ballcos/tmp/dune create mode 100644 exm/zelus/ballcos/tmp/main_b.ml create mode 100644 exm/zelus/ballcos/ztypes.ml create mode 100644 exm/zelus/brusselator/brusselator.zls create mode 100644 exm/zelus/brusselator/dune.bak create mode 100644 exm/zelus/brusselator/main.ml create mode 100644 exm/zelus/odes/dune create mode 100644 exm/zelus/odes/main.ml create mode 100644 exm/zelus/odes/odes.zls create mode 100644 exm/zelus/odes/solve.zli create mode 100644 exm/zelus/odes/ztypes.ml create mode 100644 exm/zelus/parallel/dune create mode 100644 exm/zelus/parallel/parallel.zls create mode 100644 exm/zelus/parallel/solve.zli create mode 100644 exm/zelus/parallel/ztypes.ml create mode 100644 exm/zelus/vdp/dune create mode 100644 exm/zelus/vdp/solve.zli create mode 100644 exm/zelus/vdp/vdp.zls create mode 100644 exm/zelus/vdp/ztypes.ml diff --git a/doc/data/middle.csv b/doc/data/middle.csv new file mode 100644 index 0000000..c636adb --- /dev/null +++ b/doc/data/middle.csv @@ -0,0 +1,101 @@ +0.1,1.,1. +0.2,1.09,0.9 +0.3,1.1606355,0.706355 +0.4,1.20740674526,0.467712452587 +0.5,1.23139725894,0.23990513678 +0.6,1.23688017859,0.0548291965681 +0.7,1.22854167208,-0.0833850651095 +0.8,1.21004121057,-0.185004615107 +0.9,1.18373429159,-0.263069189855 +1.,1.15086755111,-0.328667404789 +1.1,1.1118247,-0.390428511056 +1.2,1.06627366782,-0.455510321832 +1.3,1.01317876753,-0.530949002857 +1.4,0.950656415679,-0.625223518541 +1.5,0.875618537104,-0.750378785745 +1.6,0.783071598116,-0.925469389886 +1.7,0.664795417332,-1.18276180784 +1.8,0.506869445305,-1.57925972026 +1.9,0.285198697436,-2.21670747869 +2.,-0.0411442507765,-3.26342948213 +2.1,-0.529971005861,-4.88826755084 +2.2,-1.18926322222,-6.59292216359 +2.3,-1.70007492651,-5.10811704286 +2.4,-1.71110375487,-0.110288283653 +2.5,-1.6943904386,0.167133162707 +2.6,-1.67636818234,0.180222562559 +2.7,-1.65789428106,0.184739012827 +2.8,-1.63899329307,0.189009879909 +2.9,-1.61963873086,0.193545622084 +3.,-1.59979623066,0.19842500202 +3.1,-1.57942644945,0.203697812082 +3.2,-1.5584846181,0.20941831349 +3.3,-1.53691956293,0.215650551743 +3.4,-1.5146724274,0.222471355336 +3.5,-1.4916750512,0.229973761947 +3.6,-1.46784790356,0.2382714764 +3.7,-1.44309742078,0.247504827798 +3.8,-1.41731253591,0.257848848732 +3.9,-1.39036009703,0.269524388767 +4.,-1.36207873371,0.282813633255 +4.1,-1.3322705209,0.298082128026 +4.2,-1.30068946176,0.315810591386 +4.3,-1.26702528703,0.336641747347 +4.4,-1.23088021532,0.361450717085 +4.5,-1.1917348921,0.391453232213 +4.6,-1.14889727973,0.428376123701 +4.7,-1.10142396201,0.474733177166 +4.8,-1.04799551139,0.534284506253 +4.9,-0.986712969524,0.612825418644 +5.,-0.914754444531,0.719585249924 +5.1,-0.827775684935,0.869787595966 +5.2,-0.718829259023,1.08946425911 +5.3,-0.576368481233,1.42460777791 +5.4,-0.380576409527,1.95792071706 +5.5,-0.0972616434138,2.83314766113 +5.6,0.327343067813,4.24604711227 +5.7,0.938227766901,6.10884699088 +5.8,1.57630039075,6.38072623847 +5.9,1.72492948547,1.48629094717 +6.,1.70950968622,-0.1541979925 +6.1,1.6918164813,-0.176932049138 +6.2,1.67367963513,-0.18136846171 +6.3,1.6551400682,-0.185395669303 +6.4,1.63617378367,-0.189662845297 +6.5,1.61674960397,-0.194241796996 +6.6,1.59683206882,-0.199175351464 +6.7,1.57638103454,-0.204510342852 +6.8,1.55535084938,-0.210301851627 +6.9,1.53368929463,-0.216615547499 +7.,1.51133625499,-0.223530396355 +7.1,1.48822203852,-0.231142164754 +7.2,1.46426523263,-0.239568058841 +7.3,1.43936993788,-0.248952947563 +7.4,1.41342215567,-0.259477822069 +7.5,1.38628500991,-0.271371457617 +7.6,1.35779233631,-0.28492673593 +7.7,1.32773994949,-0.300523868279 +7.8,1.29587354655,-0.318664029389 +7.9,1.26187164466,-0.34001901883 +8.,1.22532103041,-0.365506142586 +8.1,1.18568065733,-0.396403730709 +8.2,1.14222727487,-0.434533824692 +8.3,1.09397137632,-0.482558985489 +8.4,1.03952350195,-0.544478743691 +8.5,0.976874889936,-0.626486120115 +8.6,0.903025524298,-0.738493656375 +8.7,0.813331641428,-0.896938828698 +8.8,0.700324127342,-1.13007514087 +8.9,0.551522102003,-1.48802025338 +9.,0.345434892204,-2.060872098 +9.1,0.0451454340179,-3.00289458186 +9.2,-0.405434196095,-4.50579630113 +9.3,-1.04021686075,-6.34782664655 +9.4,-1.63855504333,-5.9833818258 +9.5,-1.7164488535,-0.778938101736 +9.6,-1.70137983829,0.150690152195 +9.7,-1.68357260618,0.178072321076 +9.8,-1.66526259017,0.183100160094 +9.9,-1.64653268832,0.187299018484 +10.,-1.62736154517,0.191711431492 + diff --git a/doc/data/sincos_discrete.csv b/doc/data/sincos_discrete.csv deleted file mode 100644 index 92fd817..0000000 --- a/doc/data/sincos_discrete.csv +++ /dev/null @@ -1,1001 +0,0 @@ -0.0000000000e+00,0.0000000000e+00,1.0000000000e+00 -1.0000000000e-01,9.9880025199e-02,9.9550209979e-01 -2.0000000000e-01,1.9886154962e-01,9.8104841125e-01 -3.0000000000e-01,2.9595423026e-01,9.5677345681e-01 -4.0000000000e-01,3.9018561464e-01,9.2291006930e-01 -5.0000000000e-01,4.8061087966e-01,8.7978716289e-01 -6.0000000000e-01,5.6632230388e-01,8.2782654125e-01 -7.0000000000e-01,6.4645837847e-01,7.6753877409e-01 -8.0000000000e-01,7.2021246529e-01,6.9951818215e-01 -9.0000000000e-01,7.8684091515e-01,6.2443697999e-01 -1.0000000000e+00,8.4567056453e-01,5.4303863433e-01 -1.1000000000e+00,8.9610553520e-01,4.5613050345e-01 -1.2000000000e+00,9.3763326811e-01,3.6457583053e-01 -1.3000000000e+00,9.6982973037e-01,2.6928517038e-01 -1.4000000000e+00,9.9236374263e-01,1.7120733464e-01 -1.5000000000e+00,1.0050003824e+00,7.1319945516e-02 -1.6000000000e+00,1.0076034290e+00,-2.9380308005e-02 -1.7000000000e+00,1.0001368234e+00,-1.2988761419e-01 -1.8000000000e+00,9.8266512958e-01,-2.2919708378e-01 -1.9000000000e+00,9.5535298938e-01,-3.2631479607e-01 -2.0000000000e+00,9.1846357692e-01,-4.2026774534e-01 -2.1000000000e+00,8.7235606641e-01,-5.1011358816e-01 -2.2000000000e+00,8.1748213783e-01,-5.9495009404e-01 -2.3000000000e+00,7.5438155437e-01,-6.7392420442e-01 -2.4000000000e+00,6.8367685490e-01,-7.4624060926e-01 -2.5000000000e+00,6.0606721377e-01,-8.1116975496e-01 -2.6000000000e+00,5.2232152836e-01,-8.6805520293e-01 -2.7000000000e+00,4.3327080270e-01,-9.1632026467e-01 -2.8000000000e+00,3.3979990274e-01,-9.5547384625e-01 -2.9000000000e+00,2.4283876485e-01,-9.8511544308e-01 -3.0000000000e+00,1.4335314504e-01,-1.0049392341e+00 -3.1000000000e+00,4.2335000875e-02,-1.0147372334e+00 -3.2000000000e+00,-5.9207398179e-02,-1.0144014676e+00 -3.3000000000e+00,-1.6025953335e-01,-1.0039251546e+00 -3.4000000000e+00,-2.5981077170e-01,-9.8340287317e-01 -3.5000000000e+00,-3.5686447253e-01,-9.5302971876e-01 -3.6000000000e+00,-4.5044796407e-01,-9.1309945368e-01 -3.7000000000e+00,-5.3962229052e-01,-8.6400166945e-01 -3.8000000000e+00,-6.2349163182e-01,-8.0621798819e-01 -3.9000000000e+00,-7.0121230165e-01,-7.4031734023e-01 -4.0000000000e+00,-7.7200123329e-01,-6.6695036435e-01 -4.1000000000e+00,-8.3514386798e-01,-5.8684298553e-01 -4.2000000000e+00,-8.9000136638e-01,-5.0078923377e-01 -4.3000000000e+00,-9.3601707034e-01,-4.0964337487e-01 -4.4000000000e+00,-9.7272214957e-01,-3.1431143127e-01 -4.5000000000e+00,-9.9974037608e-01,-2.1574217701e-01 -4.6000000000e+00,-1.0167919777e+00,-1.1491769627e-01 -4.7000000000e+00,-1.0236965313e+00,-1.2843599585e-02 -4.8000000000e+00,-1.0203748655e+00,8.9461004982e-02 -4.9000000000e+00,-1.0068499537e+00,1.9097368558e-01 -5.0000000000e+00,-9.8324678657e-01,2.9067890375e-01 -5.1000000000e+00,-9.4979122441e-01,3.8757817287e-01 -5.2000000000e+00,-9.0680784059e-01,4.8070005635e-01 -5.3000000000e+00,-8.5471677567e-01,5.6910990543e-01 -5.4000000000e+00,-7.9402963321e-01,6.5191923896e-01 -5.5000000000e+00,-7.2534445714e-01,7.2829467105e-01 -5.6000000000e+00,-6.4933984005e-01,7.9746629696e-01 -5.7000000000e+00,-5.6676822042e-01,8.5873545272e-01 -5.8000000000e+00,-4.7844843486e-01,9.1148177048e-01 -5.9000000000e+00,-3.8525759934e-01,9.5516945817e-01 -6.0000000000e+00,-2.8812239955e-01,9.8935273999e-01 -6.1000000000e+00,-1.8800987715e-01,1.0136804026e+00 -6.2000000000e+00,-8.5917803329e-02,1.0278994006e+00 -6.3000000000e+00,1.7135264410e-02,1.0318574840e+00 -6.4000000000e+00,1.2012014321e-01,1.0255048214e+00 -6.5000000000e+00,2.2200730219e-01,1.0088946001e+00 -6.6000000000e+00,3.2177715358e-01,9.8218259794e-01 -6.7000000000e+00,4.1843025469e-01,9.4562572842e-01 -6.8000000000e+00,5.1099731874e-01,8.9957957387e-01 -6.9000000000e+00,5.9854893430e-01,8.4449492965e-01 -7.0000000000e+00,6.8020489577e-01,7.8091339308e-01 -7.1000000000e+00,7.5514305141e-01,7.0946204044e-01 -7.2000000000e+00,8.2260757980e-01,6.3084724397e-01 -7.3000000000e+00,8.8191661162e-01,5.4584769022e-01 -7.4000000000e+00,9.3246911976e-01,4.5530666839e-01 -7.5000000000e+00,9.7375100822e-01,3.6012370525e-01 -7.6000000000e+00,1.0053403381e+00,2.6124562953e-01 -7.7000000000e+00,1.0269116377e+00,1.5965715445e-01 -7.8000000000e+00,1.0382392522e+00,5.6371072256e-02 -7.9000000000e+00,1.0391996998e+00,-4.7581841873e-02 -8.0000000000e+00,1.0297730076e+00,-1.5116311569e-01 -8.1000000000e+00,1.0100430156e+00,-2.5333695304e-01 -8.2000000000e+00,9.8019664167e-01,-3.5308059056e-01 -8.3000000000e+00,9.4052211671e-01,-4.4939453456e-01 -8.4000000000e+00,8.9140620464e-01,-5.4131257551e-01 -8.5000000000e+00,8.3333043481e-01,-6.2791147974e-01 -8.6000000000e+00,7.6686638325e-01,-7.0832026139e-01 -8.7000000000e+00,6.9267004923e-01,-7.8172894122e-01 -8.8000000000e+00,6.1147538212e-01,-8.4739670443e-01 -8.9000000000e+00,5.2408702268e-01,-9.0465937519e-01 -9.0000000000e+00,4.3137233036e-01,-9.5293613262e-01 -9.1000000000e+00,3.3425277572e-01,-9.9173540022e-01 -9.2000000000e+00,2.3369478333e-01,-1.0206598490e+00 -9.3000000000e+00,1.3070011608e-01,-1.0394104637e+00 -9.4000000000e+00,2.6295896688e-02,-1.0477896301e+00 -9.5000000000e+00,-7.8475634285e-02,-1.0457032117e+00 -9.6000000000e+00,-1.8256752185e-01,-1.0331615947e+00 -9.7000000000e+00,-2.8493855746e-01,-1.0102796882e+00 -9.8000000000e+00,-3.8456369298e-01,-9.7727588070e-01 -9.9000000000e+00,-4.8044430346e-01,-9.3446995997e-01 -1.0000000000e+01,-5.7161819607e-01,-8.8228001820e-01 -1.0100000000e+01,-6.5716926492e-01,-8.2121837090e-01 -1.0200000000e+01,-7.3623669472e-01,-7.5188652987e-01 -1.0300000000e+01,-8.0802362109e-01,-6.7496927967e-01 -1.0400000000e+01,-8.7180516014e-01,-5.9122791557e-01 -1.0500000000e+01,-9.2693572663e-01,-5.0149271004e-01 -1.0600000000e+01,-9.7285556675e-01,-4.0665468214e-01 -1.0700000000e+01,-1.0090964394e+00,-3.0765675144e-01 -1.0800000000e+01,-1.0352863884e+00,-2.0548436428e-01 -1.0900000000e+01,-1.0511535570e+00,-1.0115568556e-01 -1.1000000000e+01,-1.0565290056e+00,4.2885463849e-03 -1.1100000000e+01,-1.0513485035e+00,1.0979540064e-01 -1.1200000000e+01,-1.0356532754e+00,2.1431026690e-01 -1.1300000000e+01,-1.0095896955e+00,3.1678739595e-01 -1.1400000000e+01,-9.7340792869e-01,4.1620036208e-01 -1.1500000000e+01,-9.2745953431e-01,5.1155234283e-01 -1.1600000000e+01,-8.7219405299e-01,6.0188611310e-01 -1.1700000000e+01,-8.0815461103e-01,6.8629365342e-01 -1.1800000000e+01,-7.3597258484e-01,7.6392527596e-01 -1.1900000000e+01,-6.5636137778e-01,8.3399817662e-01 -1.2000000000e+01,-5.7010937090e-01,8.9580432700e-01 -1.2100000000e+01,-4.7807211709e-01,9.4871762686e-01 -1.2200000000e+01,-3.8116385594e-01,9.9220024475e-01 -1.2300000000e+01,-2.8034843350e-01,1.0258080826e+00 -1.2400000000e+01,-1.7662971708e-01,1.0491953088e+00 -1.2500000000e+01,-7.1041600360e-02,1.0621179136e+00 -1.2600000000e+01,3.5362301644e-02,1.0644362501e+00 -1.2700000000e+01,1.4151916502e-01,1.0561165344e+00 -1.2800000000e+01,2.4636757201e-01,1.0372312899e+00 -1.2900000000e+01,3.4885812263e-01,1.0079587278e+00 -1.3000000000e+01,4.4796393673e-01,9.6858107190e-01 -1.3100000000e+01,5.4269094151e-01,9.1948184161e-01 -1.3200000000e+01,6.3208784132e-01,8.6114211912e-01 -1.3300000000e+01,7.1525566985e-01,7.9413583829e-01 -1.3400000000e+01,7.9135682876e-01,7.1912414021e-01 -1.3500000000e+01,8.5962352196e-01,6.3684885159e-01 -1.3600000000e+01,9.1936550048e-01,5.4812514997e-01 -1.3700000000e+01,9.6997703999e-01,4.5383348839e-01 -1.3800000000e+01,1.0109430803e+00,3.5491085945e-01 -1.3900000000e+01,1.0418444648e+00,2.5234148548e-01 -1.4000000000e+01,1.0623622263e+00,1.4714702726e-01 -1.4100000000e+01,1.0722808758e+00,4.0376408683e-02 -1.4200000000e+01,1.0714906602e+00,-6.6904641270e-02 -1.4300000000e+01,1.0599887648e+00,-1.7362422501e-01 -1.4400000000e+01,1.0378794492e+00,-2.7871498511e-01 -1.4500000000e+01,1.0053731112e+00,-3.8112477846e-01 -1.4600000000e+01,9.6278429084e-01,-4.7982720892e-01 -1.4700000000e+01,9.1052862946e-01,-5.7383191325e-01 -1.4800000000e+01,8.4911881659e-01,-6.6219449702e-01 -1.4900000000e+01,7.7915956184e-01,-7.4402602105e-01 -1.5000000000e+01,7.0134164215e-01,-8.1850194292e-01 -1.5100000000e+01,6.1643508275e-01,-8.8487042375e-01 -1.5200000000e+01,5.2528153904e-01,-9.4245991649e-01 -1.5300000000e+01,4.2878595488e-01,-9.9068595919e-01 -1.5400000000e+01,3.2790757988e-01,-1.0290571046e+00 -1.5500000000e+01,2.2365043477e-01,-1.0571799258e+00 -1.5600000000e+01,1.1705331981e-01,-1.0747630470e+00 -1.5700000000e+01,9.1794654397e-03,-1.0816201586e+00 -1.5800000000e+01,-9.8894071577e-02,-1.0776719843e+00 -1.5900000000e+01,-2.0608716086e-01,-1.0629471809e+00 -1.6000000000e+01,-3.1132739259e-01,-1.0375821597e+00 -1.6100000000e+01,-4.1356080530e-01,-1.0018198309e+00 -1.6200000000e+01,-5.1176244003e-01,-9.5600728162e-01 -1.6300000000e+01,-6.0494661502e-01,-9.0059241086e-01 -1.6400000000e+01,-6.9217681820e-01,-8.3611955291e-01 -1.6500000000e+01,-7.7257511796e-01,-7.6322413256e-01 -1.6600000000e+01,-8.4533099777e-01,-6.8262640432e-01 -1.6700000000e+01,-9.0970952576e-01,-5.9512433751e-01 -1.6800000000e+01,-9.6505877692e-01,-5.0158571728e-01 -1.6900000000e+01,-1.0108164329e+00,-4.0293953982e-01 -1.7000000000e+01,-1.0465154929e+00,-3.0016678718e-01 -1.7100000000e+01,-1.0717890369e+00,-1.9429067313e-01 -1.7200000000e+01,-1.0863739941e+00,-8.6366457058e-02 -1.7300000000e+01,-1.0901138762e+00,2.2529072551e-02 -1.7400000000e+01,-1.0829604484e+00,1.3130834045e-01 -1.7500000000e+01,-1.0649743200e+00,2.3888384552e-01 -1.7600000000e+01,-1.0363244473e+00,3.4417903174e-01 -1.7700000000e+01,-9.9728655298e-01,4.4613906071e-01 -1.7800000000e+01,-9.4824047696e-01,5.4374137777e-01 -1.7900000000e+01,-8.8966648340e-01,6.3600596605e-01 -1.8000000000e+01,-8.2214056043e-01,7.2200518546e-01 -1.8100000000e+01,-7.4632875811e-01,8.0087309808e-01 -1.8200000000e+01,-6.6298062061e-01,8.7181418597e-01 -1.8300000000e+01,-5.7292177708e-01,9.3411137385e-01 -1.8400000000e+01,-4.7704576454e-01,9.8713327564e-01 -1.8500000000e+01,-3.7630516385e-01,1.0303405917e+00 -1.8600000000e+01,-2.7170213651e-01,1.0632915917e+00 -1.8700000000e+01,-1.6427845644e-01,1.0856466285e+00 -1.8800000000e+01,-5.5105135725e-02,1.0971716347e+00 -1.8900000000e+01,5.4728252195e-02,1.0977405685e+00 -1.9000000000e+01,1.6412444562e-01,1.0873367818e+00 -1.9100000000e+01,2.7198945540e-01,1.0660532957e+00 -1.9200000000e+01,3.7724350401e-01,1.0340919806e+00 -1.9300000000e+01,4.7883183346e-01,9.9176164743e-01 -1.9400000000e+01,5.7573527399e-01,9.3947506691e-01 -1.9500000000e+01,6.6698046754e-01,8.7774494814e-01 -1.9600000000e+01,7.5164964349e-01,8.0717891305e-01 -1.9700000000e+01,8.2888984858e-01,7.2847351751e-01 -1.9800000000e+01,8.9792153804e-01,6.4240737736e-01 -1.9900000000e+01,9.5804644160e-01,5.4983346724e-01 -2.0000000000e+01,1.0086546249e+00,4.5167066844e-01 -2.0100000000e+01,1.0492306748e+00,3.4889464950e-01 -2.0200000000e+01,1.0793589463e+00,2.4252816994e-01 -2.0300000000e+01,1.0987278172e+00,1.3363090369e-01 -2.0400000000e+01,1.1071329071e+00,2.3288883149e-02 -2.0500000000e+01,1.1044792280e+00,-8.7396330585e-02 -2.0600000000e+01,1.0907822430e+00,-1.9731864374e-01 -2.0700000000e+01,1.0661678222e+00,-3.0537848208e-01 -2.0800000000e+01,1.0308710952e+00,-4.1049378909e-01 -2.0900000000e+01,9.8523420991e-01,-5.1161085996e-01 -2.1000000000e+01,9.2970301917e-01,-6.0771490308e-01 -2.1100000000e+01,8.6482272793e-01,-6.9784022307e-01 -2.1200000000e+01,7.9123254253e-01,-7.8107992324e-01 -2.1300000000e+01,7.0965937510e-01,-8.5659502998e-01 -2.1400000000e+01,6.2091066487e-01,-9.2362294728e-01 -2.1500000000e+01,5.2586638741e-01,-9.8148515628e-01 -2.1600000000e+01,4.2547033073e-01,-1.0295940820e+00 -2.1700000000e+01,3.2072072479e-01,-1.0674590579e+00 -2.1800000000e+01,2.1266031737e-01,-1.0946913277e+00 -2.1900000000e+01,1.0236599509e-01,-1.1110080332e+00 -2.2000000000e+01,-9.0619472952e-03,-1.1162351481e+00 -2.2100000000e+01,-1.2051078228e-01,-1.1103093263e+00 -2.2200000000e+01,-2.3086646029e-01,-1.0932786457e+00 -2.2300000000e+01,-3.3902474468e-01,-1.0653022396e+00 -2.2400000000e+01,-4.4390225975e-01,-1.0266488164e+00 -2.2500000000e+01,-5.4444734133e-01,-9.7769408359e-01 -2.2600000000e+01,-6.3965058123e-01,-9.1891709900e-01 -2.2700000000e+01,-7.2855495975e-01,-8.5089558542e-01 -2.2800000000e+01,-8.1026546475e-01,-7.7430025424e-01 -2.2900000000e+01,-8.8395810046e-01,-6.8988819393e-01 -2.3000000000e+01,-9.4888819532e-01,-5.9849538833e-01 -2.3100000000e+01,-1.0043979254e+00,-5.0102843894e-01 -2.3200000000e+01,-1.0499229768e+00,-3.9845557292e-01 -2.3300000000e+01,-1.0849982807e+00,-2.9179702613e-01 -2.3400000000e+01,-1.1092627611e+00,-1.8211489661e-01 -2.3500000000e+01,-1.1224630483e+00,-7.0502569448e-02 -2.3600000000e+01,-1.1244561199e+00,4.1926181624e-02 -2.3700000000e+01,-1.1152108405e+00,1.5404830744e-01 -2.3800000000e+01,-1.0948083846e+00,2.6474270037e-01 -2.3900000000e+01,-1.0634415381e+00,3.7290140316e-01 -2.4000000000e+01,-1.0214128826e+00,4.7744069748e-01 -2.4100000000e+01,-9.6913188053e-01,5.7731196133e-01 -2.4200000000e+01,-9.0711088879e-01,6.7151218638e-01 -2.4300000000e+01,-8.3596014044e-01,7.5909405001e-01 -2.4400000000e+01,-7.5638174230e-01,8.3917544061e-01 -2.4500000000e+01,-6.6916274855e-01,9.1094834071e-01 -2.4600000000e+01,-5.7516737806e-01,9.7368697816e-01 -2.4700000000e+01,-4.7532845268e-01,1.0267551635e+00 -2.4800000000e+01,-3.7063814112e-01,1.0696127391e+00 -2.4900000000e+01,-2.6213810042e-01,1.1018210746e+00 -2.5000000000e+01,-1.5090911271e-01,1.1230475534e+00 -2.5100000000e+01,-3.8060320643e-02,1.1330690036e+00 -2.5200000000e+01,7.5281831510e-02,1.1317740380e+00 -2.5300000000e+01,1.8798484078e-01,1.1191642801e+00 -2.5400000000e+01,2.9892146023e-01,1.0953544603e+00 -2.5500000000e+01,4.0698097242e-01,1.0605713822e+00 -2.5600000000e+01,5.1108030900e-01,1.0151517682e+00 -2.5700000000e+01,6.1017490496e-01,9.5953900270e-01 -2.5800000000e+01,7.0326917890e-01,8.9427880713e-01 -2.5900000000e+01,7.8942653410e-01,8.2001388699e-01 -2.6000000000e+01,8.6777878002e-01,7.3747760424e-01 -2.6100000000e+01,9.3753487936e-01,6.4748673715e-01 -2.6200000000e+01,9.9798893265e-01,5.5093339904e-01 -2.6300000000e+01,1.0485273198e+00,4.4877619585e-01 -2.6400000000e+01,1.0886349263e+00,3.4203071018e-01 -2.6500000000e+01,1.1179003910e+00,2.3175940631e-01 -2.6600000000e+01,1.1360203219e+00,1.1906105640e-01 -2.6700000000e+01,1.1428024372e+00,5.0597932721e-03 -2.6800000000e+01,1.1381675982e+00,-1.0910610140e-01 -2.6900000000e+01,1.1221507137e+00,-2.2229556143e-01 -2.7000000000e+01,1.0949005055e+00,-3.3337613974e-01 -2.7100000000e+01,1.0566781351e+00,-4.4123533721e-01 -2.7200000000e+01,1.0078547057e+00,-5.4479174345e-01 -2.7300000000e+01,9.4890766270e-01,-6.4300587795e-01 -2.7400000000e+01,8.8041612743e-01,-7.3489062294e-01 -2.7500000000e+01,8.0305520961e-01,-8.1952114324e-01 -2.7600000000e+01,7.1758935498e-01,-8.9604419349e-01 -2.7700000000e+01,6.2486479304e-01,-9.6368671898e-01 -2.7800000000e+01,5.2580115978e-01,-1.0217636636e+00 -2.7900000000e+01,4.2138237817e-01,-1.0696849057e+00 -2.8000000000e+01,3.1264688695e-01,-1.1069612522e+00 -2.8100000000e+01,2.0067731468e-01,-1.1332094299e+00 -2.8200000000e+01,8.6589701730e-02,-1.1481560223e+00 -2.8300000000e+01,-2.8477622542e-02,-1.1516403126e+00 -2.8400000000e+01,-1.4337539648e-01,-1.1436160038e+00 -2.8500000000e+01,-2.5695490353e-01,-1.1241517949e+00 -2.8600000000e+01,-3.6807945562e-01,-1.0934308101e+00 -2.8700000000e+01,-4.7563576782e-01,-1.0517488821e+00 -2.8800000000e+01,-5.7854511045e-01,-9.9951170809e-01 -2.8900000000e+01,-6.7577412686e-01,-9.3723090396e-01 -2.9000000000e+01,-7.6634520858e-01,-8.6551899606e-01 -2.9100000000e+01,-8.4934632344e-01,-7.8508339924e-01 -2.9200000000e+01,-9.2394019814e-01,-6.9671944027e-01 -2.9300000000e+01,-9.8937276258e-01,-6.0130249548e-01 -2.9400000000e+01,-1.0449807710e+00,-4.9977932040e-01 -2.9500000000e+01,-1.0901985229e+00,-3.9315865715e-01 -2.9600000000e+01,-1.1245636153e+00,-2.8250121281e-01 -2.9700000000e+01,-1.1477216687e+00,-1.6890910831e-01 -2.9800000000e+01,-1.1594299771e+00,-5.3514902805e-02 -2.9900000000e+01,-1.1595600466e+00,6.2529697218e-02 -3.0000000000e+01,-1.1480989935e+00,1.7806533156e-01 -3.0100000000e+01,-1.1251497890e+00,2.9193656787e-01 -3.0200000000e+01,-1.0909303458e+00,4.0300345559e-01 -3.0300000000e+01,-1.0457714546e+00,5.1015293669e-01 -3.0400000000e+01,-9.9011359083e-01,6.1230999893e-01 -3.0500000000e+01,-9.2450262057e-01,7.0844846006e-01 -3.0600000000e+01,-8.4958445000e-01,7.9760127462e-01 -3.0700000000e+01,-7.6609866852e-01,8.7887025996e-01 -3.0800000000e+01,-6.7487124944e-01,9.5143514355e-01 -3.0900000000e+01,-5.7680637980e-01,1.0145618406e+00 -3.1000000000e+01,-4.7287750005e-01,1.0676098784e+00 -3.1100000000e+01,-3.6411764268e-01,1.1100388924e+00 -3.1200000000e+01,-2.5160916532e-01,1.1414141275e+00 -3.1300000000e+01,-1.3647298058e-01,1.1614108905e+00 -3.1400000000e+01,-1.9857389729e-02,1.1698179049e+00 -3.1500000000e+01,9.7073368649e-02,1.1665395373e+00 -3.1600000000e+01,2.1315074070e-01,1.1515968684e+00 -3.1700000000e+01,3.2721353417e-01,1.1251275992e+00 -3.1800000000e+01,4.3811953331e-01,1.0873847915e+00 -3.1900000000e+01,5.4475693575e-01,1.0387344532e+00 -3.2000000000e+01,6.4605549677e-01,9.7965199282e-01 -3.2100000000e+01,7.4099726935e-01,9.1071757661e-01 -3.2200000000e+01,8.2862683207e-01,8.3261043390e-01 -3.2300000000e+01,9.0806090239e-01,7.4610216639e-01 -3.2400000000e+01,9.7849723825e-01,6.5204912748e-01 -3.2500000000e+01,1.0392227386e+00,5.5138394676e-01 -3.2600000000e+01,1.0896206609e+00,4.4510628348e-01 -3.2700000000e+01,1.1291768827e+00,3.3427290076e-01 -3.2800000000e+01,1.1574851435e+00,2.1998715911e-01 -3.2900000000e+01,1.1742512139e+00,1.0338803351e-01 -3.3000000000e+01,1.1792959485e+00,-1.4361236374e-02 -3.3100000000e+01,1.1725571923e+00,-1.3208475002e-01 -3.3200000000e+01,1.1540905189e+00,-2.4860568791e-01 -3.3300000000e+01,1.1240687926e+00,-3.6275807445e-01 -3.3400000000e+01,1.0827805577e+00,-4.7339844415e-01 -3.3500000000e+01,1.0306272703e+00,-5.7941729458e-01 -3.3600000000e+01,9.6811939767e-01,-6.7975021113e-01 -3.3700000000e+01,8.9587142501e-01,-7.7338855235e-01 -3.3800000000e+01,8.1459581664e-01,-8.5938958832e-01 -3.3900000000e+01,7.2509599221e-01,-9.3688599041e-01 -3.4000000000e+01,6.2825838646e-01,-1.0050945767e+00 -3.4100000000e+01,5.2504367129e-01,-1.0633242251e+00 -3.4200000000e+01,4.1647722686e-01,-1.1109828739e+00 -3.4300000000e+01,3.0363895641e-01,-1.1475835397e+00 -3.4400000000e+01,1.8765254582e-01,-1.1727492901e+00 -3.4500000000e+01,6.9674274745e-02,-1.1862171218e+00 -3.4600000000e+01,-4.9118509209e-02,-1.1878407039e+00 -3.4700000000e+01,-1.6753913849e-01,-1.1775919570e+00 -3.4800000000e+01,-2.8440347851e-01,-1.1555614525e+00 -3.4900000000e+01,-3.9854176704e-01,-1.1219576258e+00 -3.5000000000e+01,-5.0881032188e-01,-1.0771048107e+00 -3.5100000000e+01,-6.1410299946e-01,-1.0214401129e+00 -3.5200000000e+01,-7.1336228967e-01,-9.5550915417e-01 -3.5300000000e+01,-8.0558993567e-01,-8.7996072588e-01 -3.5400000000e+01,-8.8985697200e-01,-7.9554040727e-01 -3.5500000000e+01,-9.6531308007e-01,-7.0308320912e-01 -3.5600000000e+01,-1.0311951668e+00,-6.0350531624e-01 -3.5700000000e+01,-1.0868350800e+00,-4.9779501031e-01 -3.5800000000e+01,-1.1316663825e+00,-3.8700286284e-01 -3.5900000000e+01,-1.1652301157e+00,-2.7223129579e-01 -3.6000000000e+01,-1.1871794956e+00,-1.5462361326e-01 -3.6100000000e+01,-1.1972834911e+00,-3.5352613744e-02 -3.6200000000e+01,-1.1954292494e+00,8.4391104046e-02 -3.6300000000e+01,-1.1816233423e+00,2.0341102483e-01 -3.6400000000e+01,-1.1559918201e+00,3.2051667155e-01 -3.6500000000e+01,-1.1187790711e+00,4.3453551167e-01 -3.6600000000e+01,-1.0703454966e+00,5.4432469611e-01 -3.6700000000e+01,-1.0111640250e+00,6.4878251312e-01 -3.6800000000e+01,-9.4181549636e-01,7.4685944241e-01 -3.6900000000e+01,-8.6298296431e-01,8.3756869868e-01 -3.7000000000e+01,-7.7544497032e-01,9.1999615847e-01 -3.7100000000e+01,-6.8006785674e-01,9.9330957074e-01 -3.7200000000e+01,-5.7779719443e-01,1.0567669581e+00 -3.7300000000e+01,-4.6964840990e-01,1.1097241241e+00 -3.7400000000e+01,-3.5669670474e-01,1.1516411907e+00 -3.7500000000e+01,-2.4006636741e-01,1.1820880994e+00 -3.7600000000e+01,-1.2091958369e-01,1.2007490200e+00 -3.7700000000e+01,-4.4485709373e-04,1.2074256218e+00 -3.7800000000e+01,1.2015484536e-01,1.2020391741e+00 -3.7900000000e+01,2.3967410385e-01,1.1846314529e+00 -3.8000000000e+01,3.5691709302e-01,1.1553644433e+00 -3.8100000000e+01,4.7070954526e-01,1.1145188411e+00 -3.8200000000e+01,5.7991051063e-01,1.0624913653e+00 -3.8300000000e+01,6.8342379537e-01,9.9979090877e-01 -3.8400000000e+01,7.8020896449e-01,9.2703356313e-01 -3.8500000000e+01,8.6929179807e-01,8.4493656763e-01 -3.8600000000e+01,9.4977409598e-01,7.5431124057e-01 -3.8700000000e+01,1.0208427326e+00,6.5605496324e-01 -3.8800000000e+01,1.0817778701e+00,5.5114229563e-01 -3.8900000000e+01,1.1319602476e+00,4.4061531166e-01 -3.9000000000e+01,1.1708774718e+00,3.2557324990e-01 -3.9100000000e+01,1.1981292462e+00,2.0716158253e-01 -3.9200000000e+01,1.2134314844e+00,8.6560611108e-02 -3.9300000000e+01,1.2166192667e+00,-3.5026297127e-02 -3.9400000000e+01,1.2076486072e+00,-1.5638471536e-01 -3.9500000000e+01,1.1865970150e+00,-2.7630128584e-01 -3.9600000000e+01,1.1536628407e+00,-3.9357584998e-01 -3.9700000000e+01,1.1091634145e+00,-5.0703345868e-01 -3.9800000000e+01,1.0535319935e+00,-6.1553614257e-01 -3.9900000000e+01,9.8731354631e-01,-7.1799432449e-01 -4.0000000000e+01,9.1115941729e-01,-8.1337775955e-01 -4.0100000000e+01,8.2582092203e-01,-9.0072589311e-01 -4.0200000000e+01,7.3214193703e-01,-9.7915753243e-01 -4.0300000000e+01,6.3105055665e-01,-1.0478797347e+00 -4.0400000000e+01,5.2354989991e-01,-1.1061958217e+00 -4.0500000000e+01,4.1070815816e-01,-1.1535124405e+00 -4.0600000000e+01,2.9364798223e-01,-1.1893455978e+00 -4.0700000000e+01,1.7353531463e-01,-1.2133256079e+00 -4.0800000000e+01,5.1567777810e-02,-1.2252009020e+00 -4.0900000000e+01,-7.1037265870e-02,-1.2248406615e+00 -4.1000000000e+01,-1.9305486347e-01,-1.2122362465e+00 -4.1100000000e+01,-3.1326470881e-01,-1.1875014042e+00 -4.1200000000e+01,-4.3046334559e-01,-1.1508712544e+00 -4.1300000000e+01,-5.4347621431e-01,-1.1027000606e+00 -4.1400000000e+01,-6.5116942237e-01,-1.0434578077e+00 -4.1500000000e+01,-7.5246111942e-01,-9.7372562033e-01 -4.1600000000e+01,-8.4633236388e-01,-8.9419006409e-01 -4.1700000000e+01,-9.3183737150e-01,-8.0563638858e-01 -4.1800000000e+01,-1.0081130428e+00,-7.0894077635e-01 -4.1900000000e+01,-1.0743876735e+00,-6.0506167537e-01 -4.2000000000e+01,-1.1299887604e+00,-4.9503030043e-01 -4.2100000000e+01,-1.1743498226e+00,-3.7994039768e-01 -4.2200000000e+01,-1.2070161707e+00,-2.6093737381e-01 -4.2300000000e+01,-1.2276495639e+00,-1.3920689799e-01 -4.2400000000e+01,-1.2360317072e+00,-1.5963089878e-02 -4.2500000000e+01,-1.2320665537e+00,1.0756358857e-01 -4.2600000000e+01,-1.2157813874e+00,2.3013861671e-01 -4.2700000000e+01,-1.1873266732e+00,3.5053575179e-01 -4.2800000000e+01,-1.1469746766e+00,4.6754929499e-01 -4.2900000000e+01,-1.0951168636e+00,5.8000616452e-01 -4.3000000000e+01,-1.0322601069e+00,6.8677765459e-01 -4.3100000000e+01,-9.5902173446e-01,7.8679076272e-01 -4.3200000000e+01,-8.7612346920e-01,8.7903897139e-01 -4.3300000000e+01,-7.8438431865e-01,9.6259237600e-01 -4.3400000000e+01,-6.8471248548e-01,1.0366070571e+00 -4.3500000000e+01,-5.7809637807e-01,1.1003336023e+00 -4.3600000000e+01,-4.6559481033e-01,1.1531246923e+00 -4.3700000000e+01,-3.4832648801e-01,1.1944416739e+00 -4.3800000000e+01,-2.2745888573e-01,1.2238600529e+00 -4.3900000000e+01,-1.0419662544e-01,1.2410738517e+00 -4.4000000000e+01,2.0230528162e-02,1.2458987870e+00 -4.4100000000e+01,1.4457993550e-01,1.2382742329e+00 -4.4200000000e+01,2.6760849096e-01,1.2182639513e+00 -4.4300000000e+01,3.8808504883e-01,1.1860555788e+00 -4.4400000000e+01,5.0480274211e-01,1.1419588747e+00 -4.4500000000e+01,6.1659107094e-01,1.0864027471e+00 -4.4600000000e+01,7.2232763959e-01,1.0199310842e+00 -4.4700000000e+01,8.2094942434e-01,9.4319743315e-01 -4.4800000000e+01,9.1146345914e-01,8.5695857603e-01 -4.4900000000e+01,9.9295683162e-01,7.6206706860e-01 -4.5000000000e+01,1.0646058889e+00,6.5946281361e-01 -4.5100000000e+01,1.1256845603e+00,5.5016375267e-01 -4.5200000000e+01,1.1755717129e+00,4.3525576877e-01 -4.5300000000e+01,1.2137574658e+00,3.1588189944e-01 -4.5400000000e+01,1.2398483980e+00,1.9323096791e-01 -4.5500000000e+01,1.2535715975e+00,6.8525745064e-02 -4.5600000000e+01,1.2547775107e+00,-5.6989239649e-02 -4.5700000000e+01,1.2434415600e+00,-1.8206011713e-01 -4.5800000000e+01,1.2196645149e+00,-3.0543620323e-01 -4.5900000000e+01,1.1836716099e+00,-4.2588250415e-01 -4.6000000000e+01,1.1358104179e+00,-5.4219207737e-01 -4.6100000000e+01,1.0765474976e+00,-6.5319812467e-01 -4.6200000000e+01,1.0064638492e+00,-7.5778569588e-01 -4.6300000000e+01,9.2624922089e-01,-8.5490288606e-01 -4.6400000000e+01,8.3669532252e-01,-9.4357141372e-01 -4.6500000000e+01,7.3868801388e-01,-1.0228964736e+00 -4.6600000000e+01,6.3319854335e-01,-1.0920757647e+00 -4.6700000000e+01,5.2127392459e-01,-1.1504076034e+00 -4.6800000000e+01,4.0402654608e-01,-1.1972980375e+00 -4.6900000000e+01,2.8262311684e-01,-1.2322668920e+00 -4.7000000000e+01,1.5827305803e-01,-1.2549526825e+00 -4.7100000000e+01,3.2216456058e-02,-1.2651163476e+00 -4.7200000000e+01,-9.4288303027e-02,-1.2626437610e+00 -4.7300000000e+01,-2.1997709431e-01,-1.2475469973e+00 -4.7400000000e+01,-3.4359268482e-01,-1.2199643376e+00 -4.7500000000e+01,-4.6389730799e-01,-1.1801590138e+00 -4.7600000000e+01,-5.7968505623e-01,-1.1285167015e+00 -4.7700000000e+01,-6.8979396727e-01,-1.0655417880e+00 -4.7800000000e+01,-7.9311768347e-01,-9.9185244849e-01 -4.7900000000e+01,-8.8861656683e-01,-9.0817458094e-01 -4.8000000000e+01,-9.7532815821e-01,-8.1533465721e-01 -4.8100000000e+01,-1.0523768756e+00,-7.1425156227e-01 -4.8200000000e+01,-1.1189828535e+00,-6.0592750116e-01 -4.8300000000e+01,-1.1744698343e+00,-4.9143806413e-01 -4.8400000000e+01,-1.2182720324e+00,-3.7192154811e-01 -4.8500000000e+01,-1.2499399000e+00,-2.4856764080e-01 -4.8600000000e+01,-1.2691447373e+00,-1.2260557964e-01 -4.8700000000e+01,-1.2756820993e+00,4.7080963623e-03 -4.8800000000e+01,-1.2694739637e+00,1.3210208004e-01 -4.8900000000e+01,-1.2505696375e+00,2.5830298955e-01 -4.9000000000e+01,-1.2191453909e+00,3.8204809538e-01 -4.9100000000e+01,-1.1755028232e+00,5.0209795354e-01 -4.9200000000e+01,-1.1200659726e+00,6.1724881865e-01 -4.9300000000e+01,-1.0533772000e+00,7.2634471263e-01 -4.9400000000e+01,-9.7609188630e-01,8.2828902787e-01 -4.9500000000e+01,-8.8897199342e-01,9.2205554868e-01 -4.9600000000e+01,-7.9287855467e-01,1.0066987799e+00 -4.9700000000e+01,-6.8876316654e-01,1.0813634793e+00 -4.9800000000e+01,-5.7765856699e-01,1.1452932967e+00 -4.9900000000e+01,-4.6066839306e-01,1.1978384340e+00 -5.0000000000e+01,-3.3895621963e-01,1.2384622469e+00 -5.0100000000e+01,-2.1373398795e-01,1.2667467231e+00 -5.0200000000e+01,-8.6249939174e-02,1.2823967789e+00 -5.0300000000e+01,4.2223827032e-02,1.2852433322e+00 -5.0400000000e+01,1.7040404488e-01,1.2752451190e+00 -5.0500000000e+01,2.9700909912e-01,1.2524892335e+00 -5.0600000000e+01,4.2077183803e-01,1.2171903856e+00 -5.0700000000e+01,5.4045225467e-01,1.1696888829e+00 -5.0800000000e+01,6.5484990946e-01,1.1104473542e+00 -5.0900000000e+01,7.6281596963e-01,1.0400462474e+00 -5.1000000000e+01,8.6326474492e-01,9.5917814486e-01 -5.1100000000e+01,9.5518460352e-01,8.6864095280e-01 -5.1200000000e+01,1.0376481587e+00,7.6933003021e-01 -5.1300000000e+01,1.1098216237e+00,6.6222933626e-01 -5.1400000000e+01,1.1709732396e+00,5.4840168305e-01 -5.1500000000e+01,1.2204806927e+00,4.2897819034e-01 -5.1600000000e+01,1.2578374448e+00,3.0514704690e-01 -5.1700000000e+01,1.2826579122e+00,1.7814169025e-01 -5.1800000000e+01,1.2946814414e+00,4.9228522113e-02 -5.1900000000e+01,1.2937750395e+00,-8.0305717863e-02 -5.2000000000e+01,1.2799348314e+00,-2.0916679431e-01 -5.2100000000e+01,1.2532862276e+00,-3.3606590615e-01 -5.2200000000e+01,1.2140828000e+00,-4.5973257523e-01 -5.2300000000e+01,1.1627038755e+00,-5.7892736464e-01 -5.2400000000e+01,1.0996508697e+00,-6.9245429952e-01 -5.2500000000e+01,1.0255423970e+00,-7.9917286576e-01 -5.2600000000e+01,9.4110820365e-01,-8.9800946641e-01 -5.2700000000e+01,8.4718198473e-01,-9.8796822054e-01 -5.2800000000e+01,7.4469315394e-01,-1.0681409961e+00 -5.2900000000e+01,6.3465764885e-01,-1.1377165754e+00 -5.3000000000e+01,5.1816786185e-01,-1.1959888618e+00 -5.3100000000e+01,3.9638179687e-01,-1.2423640423e+00 -5.3200000000e+01,2.7051155925e-01,-1.2763666367e+00 -5.3300000000e+01,1.4181129341e-01,-1.2976443683e+00 -5.3400000000e+01,1.1564688166e-02,-1.3059718090e+00 -5.3500000000e+01,-1.1892782583e-01,-1.3012527594e+00 -5.3600000000e+01,-2.4836205874e-01,-1.2835213401e+00 -5.3700000000e+01,-3.7544309478e-01,-1.2529417805e+00 -5.3800000000e+01,-4.9889824582e-01,-1.2098069077e+00 -5.3900000000e+01,-6.1748979572e-01,-1.1545353476e+00 -5.4000000000e+01,-7.3002740784e-01,-1.0876674664e+00 -5.4100000000e+01,-8.3538007137e-01,-1.0098600908e+00 -5.4200000000e+01,-9.3248746648e-01,-9.2188005831e-01 -5.4300000000e+01,-1.0203706344e+00,-8.2459666215e-01 -5.4400000000e+01,-1.0981418445e+00,-7.1897306398e-01 -5.4500000000e+01,-1.1650135598e+00,-6.0605675979e-01 -5.4600000000e+01,-1.2203064095e+00,-4.8696919325e-01 -5.4700000000e+01,-1.2634560883e+00,-3.6289461949e-01 -5.4800000000e+01,-1.2940191127e+00,-2.3506832976e-01 -5.4900000000e+01,-1.3116773745e+00,-1.0476435429e-01 -5.5000000000e+01,-1.3162414469e+00,2.6717234541e-02 -5.5100000000e+01,-1.3076526062e+00,1.5806329197e-01 -5.5200000000e+01,-1.2859835497e+00,2.8796071432e-01 -5.5300000000e+01,-1.2514378006e+00,4.1510956511e-01 -5.5400000000e+01,-1.2043478044e+00,5.3823608276e-01 -5.5500000000e+01,-1.1451717347e+00,6.5610543963e-01 -5.5600000000e+01,-1.0744890386e+00,7.6753412455e-01 -5.5700000000e+01,-9.9299476647e-01,8.7140182491e-01 -5.5800000000e+01,-9.0149273887e-01,9.6666268875e-01 -5.5900000000e+01,-8.0088762078e-01,1.0523558539e+00 -5.6000000000e+01,-6.9217597898e-01,1.1276151380e+00 -5.6100000000e+01,-5.7643641209e-01,1.1916777919e+00 -5.6200000000e+01,-4.5481885075e-01,1.2438922275e+00 -5.6300000000e+01,-3.2853313392e-01,1.2837246426e+00 -5.6400000000e+01,-1.9883697501e-01,1.3107644750e+00 -5.6500000000e+01,-6.7023437350e-02,1.3247286293e+00 -5.6600000000e+01,6.5591956256e-02,1.3254644347e+00 -5.6700000000e+01,1.9768435132e-01,1.3129513017e+00 -5.6800000000e+01,3.2793279593e-01,1.2873010598e+00 -5.6900000000e+01,4.5503344923e-01,1.2487569721e+00 -5.7000000000e+01,5.7771263202e-01,1.1976914355e+00 -5.7100000000e+01,6.9473958901e-01,1.1346023867e+00 -5.7200000000e+01,8.0493883465e-01,1.0601084507e+00 -5.7300000000e+01,9.0720195887e-01,9.7494287763e-01 -5.7400000000e+01,1.0004987742e+00,8.7994632734e-01 -5.7500000000e+01,1.0838876919e+00,7.7605857379e-01 -5.7600000000e+01,1.1565252231e+00,6.6430920980e-01 -5.7700000000e+01,1.2176745087e+00,5.4580744484e-01 -5.7800000000e+01,1.2667127916e+00,4.2173109680e-01 -5.7900000000e+01,1.3031377564e+00,2.9331488687e-01 -5.8000000000e+01,1.3265726711e+00,1.6183815383e-01 -5.8100000000e+01,1.3367702785e+00,2.8612110144e-02 -5.8200000000e+01,1.3336153975e+00,-1.0503323338e-01 -5.8300000000e+01,1.3171262065e+00,-2.3776234388e-01 -5.8400000000e+01,1.2874541954e+00,-3.6824751128e-01 -5.8500000000e+01,1.2448827842e+00,-4.9518212820e-01 -5.8600000000e+01,1.1898246222e+00,-6.1729377225e-01 -5.8700000000e+01,1.1228175922e+00,-7.3335695971e-01 -5.8800000000e+01,1.0445195592e+00,-8.4220544270e-01 -5.8900000000e+01,9.5570191357e-01,-9.4274392655e-01 -5.9000000000e+01,8.5724197459e-01,-1.0339590897e+00 -5.9100000000e+01,7.5011432580e-01,-1.1149297949e+00 -5.9200000000e+01,6.3538117041e-01,-1.1848363897e+00 -5.9300000000e+01,5.1418180086e-01,-1.2429690011e+00 -5.9400000000e+01,3.8772128727e-01,-1.2887347418e+00 -5.9500000000e+01,2.5725849712e-01,-1.3216637535e+00 -5.9600000000e+01,1.2409356507e-01,-1.3414140270e+00 -5.9700000000e+01,-1.0445062223e-02,-1.3477749490e+00 -5.9800000000e+01,-1.4501387724e-01,-1.3406695387e+00 -5.9900000000e+01,-2.7826772660e-01,-1.3201553512e+00 -6.0000000000e+01,-4.0887325588e-01,-1.2864240366e+00 -6.0100000000e+01,-5.3552224996e-01,-1.2397995585e+00 -6.0200000000e+01,-6.5694473547e-01,-1.1807350880e+00 -6.0300000000e+01,-7.7192171395e-01,-1.1098086027e+00 -6.0400000000e+01,-8.7929739832e-01,-1.0277172341e+00 -6.0500000000e+01,-9.7799082961e-01,-9.3527041825e-01 -6.0600000000e+01,-1.0670067574e+00,-8.3338191653e-01 -6.0700000000e+01,-1.1454456743e+00,-7.2306078602e-01 -6.0800000000e+01,-1.2125129035e+00,-6.0540138794e-01 -6.0900000000e+01,-1.2675266473e+00,-4.8157253356e-01 -6.1000000000e+01,-1.3099249157e+00,-3.5280587488e-01 -6.1100000000e+01,-1.3392712639e+00,-2.2038365567e-01 -6.1200000000e+01,-1.3552592804e+00,-8.5625944401e-02 -6.1300000000e+01,-1.3577157809e+00,5.0122523634e-02 -6.1400000000e+01,-1.3466026719e+00,1.8550576394e-01 -6.1500000000e+01,-1.3220174671e+00,3.1917008632e-01 -6.1600000000e+01,-1.2841924482e+00,4.4977762905e-01 -6.1700000000e+01,-1.2334924778e+00,5.7601974824e-01 -6.1800000000e+01,-1.1704114847e+00,6.9663012866e-01 -6.1900000000e+01,-1.0955676559e+00,8.1039748444e-01 -6.2000000000e+01,-1.0096973807e+00,9.1617772250e-01 -6.2100000000e+01,-9.1364800863e-01,1.0129054464e+00 -6.2200000000e+01,-8.0836948956e-01,1.0996046849e+00 -6.2300000000e+01,-6.9490498063e-01,1.1753987377e+00 -6.2400000000e+01,-5.7438051183e-01,1.2395190385e+00 -6.2500000000e+01,-4.4799381281e-01,1.2913129455e+00 -6.2600000000e+01,-3.1700241181e-01,1.3302503821e+00 -6.2700000000e+01,-1.8271112491e-01,1.3559292575e+00 -6.2800000000e+01,-4.6459060101e-02,1.3680796147e+00 -6.2900000000e+01,9.0393734508e-02,1.3665664612e+00 -6.3000000000e+01,2.2647984509e-01,1.3513912532e+00 -6.3100000000e+01,3.6043815377e-01,1.3226920175e+00 -6.3200000000e+01,4.9092745097e-01,1.2807421090e+00 -6.3300000000e+01,6.1663986240e-01,1.2259476126e+00 -6.3400000000e+01,7.3631395627e-01,1.1588434176e+00 -6.3500000000e+01,8.4874739932e-01,1.0800879990e+00 -6.3600000000e+01,9.5280903477e-01,9.9045695934e-01 -6.3700000000e+01,1.0474502609e+00,8.9083539237e-01 -6.3800000000e+01,1.1317155956e+00,7.8220914522e-01 -6.3900000000e+01,1.2047523209e+00,6.6565506434e-01 -6.4000000000e+01,1.2658191098e+00,5.4233032212e-01 -6.4100000000e+01,1.3142935480e+00,4.1346092987e-01 -6.4200000000e+01,1.3496784748e+00,2.8032955118e-01 -6.4300000000e+01,1.3716070784e+00,1.4426273675e-01 -6.4400000000e+01,1.3798466924e+00,6.6177078084e-03 -6.4500000000e+01,1.3743012565e+00,-1.3123118039e-01 -6.4600000000e+01,1.3550124130e+00,-2.6790615976e-01 -6.4700000000e+01,1.3221592284e+00,-4.0203981854e-01 -6.4800000000e+01,1.2760565409e+00,-5.3228878060e-01 -6.4900000000e+01,1.2171519491e+00,-6.5734715824e-01 -6.5000000000e+01,1.1460214703e+00,-7.7595964367e-01 -6.5100000000e+01,1.0633639114e+00,-8.8693410796e-01 -6.5200000000e+01,9.6999400556e-01,-9.8915358111e-01 -6.5300000000e+01,8.6683438471e-01,-1.0815874927e+00 -6.5400000000e+01,7.5490646412e-01,-1.1633020603e+00 -6.5500000000e+01,6.3532033108e-01,-1.2334697204e+00 -6.5600000000e+01,5.0926373688e-01,-1.2913775073e+00 -6.5700000000e+01,3.7799030143e-01,-1.3364342951e+00 -6.5800000000e+01,2.4280704771e-01,-1.3681768278e+00 -6.5900000000e+01,1.0506138980e-01,-1.3862744790e+00 -6.6000000000e+01,-3.3872295742e-02,-1.3905326890e+00 -6.6100000000e+01,-1.7260638155e-01,-1.3808950460e+00 -6.6200000000e+01,-3.0975384726e-01,-1.3574439881e+00 -6.6300000000e+01,-4.4394214510e-01,-1.3204001184e+00 -6.6400000000e+01,-5.7382693474e-01,-1.2701201378e+00 -6.6500000000e+01,-6.9810554982e-01,-1.2070934155e+00 -6.6600000000e+01,-8.1553006148e-01,-1.1319372299e+00 -6.6700000000e+01,-9.2491980768e-01,-1.0453907261e+00 -6.6800000000e+01,-1.0251732627e+00,-9.4830764920e-01 -6.6900000000e+01,-1.1152791276e+00,-8.4164792471e-01 -6.7000000000e+01,-1.1943265293e+00,-7.2646816896e-01 -6.7100000000e+01,-1.2615142268e+00,-6.0391122379e-01 -6.7200000000e+01,-1.3161587299e+00,-4.7519481861e-01 -6.7300000000e+01,-1.3577012498e+00,-3.4159947262e-01 -6.7400000000e+01,-1.3857134090e+00,-2.0445575724e-01 -6.7500000000e+01,-1.3999016545e+00,-6.5131045442e-02 -6.7600000000e+01,-1.4001103270e+00,7.4984120029e-02 -6.7700000000e+01,-1.3863233547e+00,2.1448990368e-01 -6.7800000000e+01,-1.3586645536e+00,3.5199116110e-01 -6.7900000000e+01,-1.3173965300e+00,4.8611138984e-01 -6.8000000000e+01,-1.2629181940e+00,6.1550650793e-01 -6.8100000000e+01,-1.1957609085e+00,7.3887832211e-01 -6.8200000000e+01,-1.1165833098e+00,8.5498755082e-01 -6.8300000000e+01,-1.0261648514e+00,9.6266627125e-01 -6.8400000000e+01,-9.2539813283e-01,1.0608296656e+00 -6.8500000000e+01,-8.1528009064e-01,1.1484869485e+00 -6.8600000000e+01,-6.9690213679e-01,1.2247513648e+00 -6.8700000000e+01,-5.7143934334e-01,1.2888491584e+00 -6.8800000000e+01,-4.4013877978e-01,1.3401274195e+00 -6.8900000000e+01,-3.0430711905e-01,1.3780607325e+00 -6.9000000000e+01,-1.6529763531e-01,1.4022565556e+00 -6.9100000000e+01,-2.4496722934e-02,1.4124592775e+00 -6.9200000000e+01,1.1668992911e-01,1.4085529099e+00 -6.9300000000e+01,2.5685136959e-01,1.3905623864e+00 -6.9400000000e+01,3.9458548395e-01,1.3586534543e+00 -6.9500000000e+01,5.2851301907e-01,1.3131311586e+00 -6.9600000000e+01,6.5729139346e-01,1.2544369320e+00 -6.9700000000e+01,7.7962815474e-01,1.1831443189e+00 -6.9800000000e+01,8.9429394948e-01,1.0999533741e+00 -6.9900000000e+01,1.0001348753e+00,1.0056837914e+00 -7.0000000000e+01,1.0960840908e+00,9.0126682948e-01 -7.0100000000e+01,1.1811725676e+00,7.8773611460e-01 -7.0200000000e+01,1.2545388742e+00,6.6621741035e-01 -7.0300000000e+01,1.3154378953e+00,5.3791745655e-01 -7.0400000000e+01,1.3632483960e+00,4.0411198738e-01 -7.0500000000e+01,1.3974793563e+00,2.6613304784e-01 -7.0600000000e+01,1.4177750091e+00,1.2535573463e-01 -7.0700000000e+01,1.4239185325e+00,-1.6815506590e-02 -7.0800000000e+01,1.4158343558e+00,-1.5896089103e-01 -7.0900000000e+01,1.3935890564e+00,-2.9965947194e-01 -7.1000000000e+01,1.3573908363e+00,-4.3750334361e-01 -7.1100000000e+01,1.3075875828e+00,-5.7111172816e-01 -7.1200000000e+01,1.2446635305e+00,-6.9914480531e-01 -7.1300000000e+01,1.1692345574e+00,-8.2031714653e-01 -7.1400000000e+01,1.0820421597e+00,-9.3341061892e-01 -7.1500000000e+01,9.8394616594e-01,-1.0372866293e+00 -7.1600000000e+01,8.7591625960e-01,-1.1308975854e+00 -7.1700000000e+01,7.5902239635e-01,-1.2132974590e+00 -7.1800000000e+01,6.3442420858e-01,-1.2836513442e+00 -7.1900000000e+01,5.0335950320e-01,-1.3412439144e+00 -7.2000000000e+01,3.6713196641e-01,-1.3854866930e+00 -7.2100000000e+01,2.2709819765e-01,-1.4159240622e+00 -7.2200000000e+01,8.4654201605e-02,-1.4322379508e+00 -7.2300000000e+01,-5.8778527159e-02,-1.4342511512e+00 -7.2400000000e+01,-2.0176718833e-01,-1.4219292318e+00 -7.2500000000e+01,-3.4288198716e-01,-1.3953810242e+00 -7.2600000000e+01,-4.8071043005e-01,-1.3548576781e+00 -7.2700000000e+01,-6.1387146154e-01,-1.3007502936e+00 -7.2800000000e+01,-7.4102930106e-01,-1.2335861515e+00 -7.2900000000e+01,-8.6090684111e-01,-1.1540235788e+00 -7.3000000000e+01,-9.7229847218e-01,-1.0628454990e+00 -7.3100000000e+01,-1.0740822059e+00,-9.6095173006e-01 -7.3200000000e+01,-1.1652309743e+00,-8.4935010728e-01 -7.3300000000e+01,-1.2448229918e+00,-7.2914651618e-01 -7.3400000000e+01,-1.3120510746e+00,-6.0153393612e-01 -7.3500000000e+01,-1.3662308245e+00,-4.6778060211e-01 -7.3600000000e+01,-1.4068075929e+00,-3.2921740246e-01 -7.3700000000e+01,-1.4333621552e+00,-1.8722463760e-01 -7.3800000000e+01,-1.4456150368e+00,-4.3218271684e-02 -7.3900000000e+01,-1.4434294467e+00,1.0136418609e-01 -7.4000000000e+01,-1.4268127876e+00,2.4507802961e-01 -7.4100000000e+01,-1.3959167263e+00,3.8648579026e-01 -7.4200000000e+01,-1.3510358217e+00,5.2417161355e-01 -7.4300000000e+01,-1.2926047234e+00,6.5675543385e-01 -7.4400000000e+01,-1.2211939671e+00,7.8290680579e-01 -7.4500000000e+01,-1.1375044070e+00,9.0135825331e-01 -7.4600000000e+01,-1.0423603406e+00,1.0109180027e+00 -7.4700000000e+01,-9.3670139225e-01,1.1104819715e+00 -7.4800000000e+01,-8.2157323557e-01,1.1990448930e+00 -7.4900000000e+01,-6.9811724701e-01,1.2757104642e+00 -7.5000000000e+01,-5.6755919198e-01,1.3397004141e+00 -7.5100000000e+01,-4.3119705626e-01,1.3903624017e+00 -7.5200000000e+01,-2.9038814321e-01,1.4271766632e+00 -7.5300000000e+01,-1.4653556523e-01,1.4497613401e+00 -7.5400000000e+01,-1.0742637060e-03,1.4578764342e+00 -7.5500000000e+01,1.4454330321e-01,1.4514263489e+00 -7.5600000000e+01,2.8886166216e-01,1.4304609893e+00 -7.5700000000e+01,4.3043687088e-01,1.3951754084e+00 -7.5800000000e+01,5.6785096374e-01,1.3459080031e+00 -7.5900000000e+01,6.9972615204e-01,1.2831372747e+00 -7.6000000000e+01,8.2473863696e-01,1.2074771856e+00 -7.6100000000e+01,9.4163189660e-01,1.1196711578e+00 -7.6200000000e+01,1.0492293137e+00,1.0205847711e+00 -7.6300000000e+01,1.1464460177e+00,9.1119723239e-01 -7.6400000000e+01,1.2322998204e+00,7.9259170103e-01 -7.6500000000e+01,1.3059211379e+00,6.6594456554e-01 -7.6600000000e+01,1.3665617949e+00,5.3251377718e-01 -7.6700000000e+01,1.4136026258e+00,3.9362635684e-01 -7.6800000000e+01,1.4465597927e+00,2.5066519888e-01 -7.6900000000e+01,1.4650897575e+00,1.0505530329e-01 -7.7000000000e+01,1.4689928563e+00,-4.1750426875e-02 -7.7100000000e+01,1.4582154393e+00,-1.8828568112e-01 -7.7200000000e+01,1.4328505532e+00,-3.3308538574e-01 -7.7300000000e+01,1.3931371577e+00,-4.7470035027e-01 -7.7400000000e+01,1.3394578828e+00,-6.1171176988e-01 -7.7500000000e+01,1.2723353479e+00,-7.4274543847e-01 -7.7600000000e+01,1.1924270774e+00,-8.6648553022e-01 -7.7700000000e+01,1.1005190628e+00,-9.8168781131e-01 -7.7800000000e+01,9.9751803454e-01,-1.0871921492e+00 -7.7900000000e+01,8.8444251871e-01,-1.1819341939e+00 -7.8000000000e+01,7.6241276745e-01,-1.2649561129e+00 -7.8100000000e+01,6.3263966248e-01,-1.3354162729e+00 -7.8200000000e+01,4.9641270142e-01,-1.3925977692e+00 -7.8300000000e+01,3.5508718634e-01,-1.4359157165e+00 -7.8400000000e+01,2.1007074166e-01,-1.4649232281e+00 -7.8500000000e+01,6.2809295497e-02,-1.4793160205e+00 -7.8600000000e+01,-8.5227335854e-02,-1.4789355987e+00 -7.8700000000e+01,-2.3256011667e-01,-1.4637709855e+00 -7.8800000000e+01,-3.7771556739e-01,-1.4339589794e+00 -7.8900000000e+01,-5.1924049945e-01,-1.3897829346e+00 -7.9000000000e+01,-6.5571656203e-01,-1.3316700755e+00 -7.9100000000e+01,-7.8577445506e-01,-1.2601873696e+00 -7.9200000000e+01,-9.0810766621e-01,-1.1760360002e+00 -7.9300000000e+01,-1.0214855939e+00,-1.0800444911e+00 -7.9400000000e+01,-1.1247659246e+00,-9.7316055185e-01 -7.9500000000e+01,-1.2169061401e+00,-8.5644172391e-01 -7.9600000000e+01,-1.2969740387e+00,-7.3104491856e-01 -7.9700000000e+01,-1.3641571638e+00,-5.9821495180e-01 -7.9800000000e+01,-1.4177710455e+00,-4.5927218874e-01 -7.9900000000e+01,-1.4572661706e+00,-3.1559942052e-01 -8.0000000000e+01,-1.4822336108e+00,-1.6862810398e-01 -8.0100000000e+01,-1.4924092513e+00,-1.9824101194e-02 -8.0200000000e+01,-1.4876765751e+00,1.2932693926e-01 -8.0300000000e+01,-1.4680679764e+00,2.7733441340e-01 -8.0400000000e+01,-1.4337645849e+00,4.2271765735e-01 -8.0500000000e+01,-1.3850946046e+00,5.6402075838e-01 -8.0600000000e+01,-1.3225301797e+00,6.9982713331e-01 -8.0700000000e+01,-1.2466828193e+00,8.2877372837e-01 -8.0800000000e+01,-1.1582974235e+00,9.4956469825e-01 -8.0900000000e+01,-1.0582449712e+00,1.0609844268e+00 -8.1000000000e+01,-9.4751393968e-01,1.1619097592e+00 -8.1100000000e+01,-8.2720054051e-01,1.2513213212e+00 -8.1200000000e+01,-6.9849786994e-01,1.3283138136e+00 -8.1300000000e+01,-5.6268407905e-01,1.3921051754e+00 -8.1400000000e+01,-4.2110968221e-01,1.4420445253e+00 -8.1500000000e+01,-2.7518412936e-01,1.4776187986e+00 -8.1600000000e+01,-1.2636177577e-01,1.4984580144e+00 -8.1700000000e+01,2.3872611131e-02,1.5043391172e+00 -8.1800000000e+01,1.7401866344e-01,1.4951883529e+00 -8.1900000000e+01,3.2257539523e-01,1.4710821564e+00 -8.2000000000e+01,4.6805620614e-01,1.4322465371e+00 -8.2100000000e+01,6.0900375625e-01,1.3790549694e+00 -8.2200000000e+01,7.4400456323e-01,1.3120248073e+00 -8.2300000000e+01,8.7170317576e-01,1.2318122561e+00 -8.2400000000e+01,9.9081578104e-01,1.1392059523e+00 -8.2500000000e+01,1.1001431098e+00,1.0351192125e+00 -8.2600000000e+01,1.1985825089e+00,9.2058102802e-01 -8.2700000000e+01,1.2851390606e+00,7.9672589523e-01 -8.2800000000e+01,1.3589356359e+00,6.6478257990e-01 -8.2900000000e+01,1.4192217798e+00,5.2606192864e-01 -8.3000000000e+01,1.4653813406e+00,3.8194384745e-01 -8.3100000000e+01,1.4969387626e+00,2.3386357692e-01 -8.3200000000e+01,1.5135639814e+00,8.3297400558e-02 -8.3300000000e+01,1.5150758681e+00,-6.8252071440e-02 -8.3400000000e+01,1.5014441894e+00,-2.1927089632e-01 -8.3500000000e+01,1.4727900607e+00,-3.6824892119e-01 -8.3600000000e+01,1.4293848864e+00,-5.1369488266e-01 -8.3700000000e+01,1.3716477980e+00,-6.5415133281e-01 -8.3800000000e+01,1.3001416115e+00,-7.8820924202e-01 -8.3900000000e+01,1.2155673453e+00,-9.1452213242e-01 -8.4000000000e+01,1.1187573510e+00,-1.0318196002e+00 -8.4100000000e+01,1.0106671245e+00,-1.1389200910e+00 -8.4200000000e+01,8.9236587719e-01,-1.2347428000e+00 -8.4300000000e+01,7.6502596255e-01,-1.3183185764e+00 -8.4400000000e+01,6.2991125948e-01,-1.3887997234e+00 -8.4500000000e+01,4.8836463013e-01,-1.4454685933e+00 -8.4600000000e+01,3.4179457524e-01,-1.4877448914e+00 -8.4700000000e+01,1.9166122011e-01,-1.5151916141e+00 -8.4800000000e+01,3.9461770468e-02,-1.5275195609e+00 -8.4900000000e+01,-1.1328441687e-01,-1.5245903730e+00 -8.5000000000e+01,-2.6505099974e-01,-1.5064180672e+00 -8.5100000000e+01,-4.1431990131e-01,-1.4731690485e+00 -8.5200000000e+01,-5.5959649343e-01,-1.4251605990e+00 -8.5300000000e+01,-6.9942456078e-01,-1.3628578570e+00 -8.5400000000e+01,-8.3240089599e-01,-1.2868693156e+00 -8.5500000000e+01,-9.5718937950e-01,-1.1979408833e+00 -8.5600000000e+01,-1.0725344028e+00,-1.0969485654e+00 -8.5700000000e+01,-1.1772735004e+00,-9.8488983707e-01 -8.5800000000e+01,-1.2703490635e+00,-8.6287379398e-01 -8.5900000000e+01,-1.3508190164e+00,-7.3211017729e-01 -8.6000000000e+01,-1.4178663502e+00,-5.9389738137e-01 -8.6100000000e+01,-1.4708074143e+00,-4.4960956342e-01 -8.6200000000e+01,-1.5090988839e+00,-3.0068298287e-01 -8.6300000000e+01,-1.5323433316e+00,-1.4860170627e-01 -8.6400000000e+01,-1.5402933463e+00,5.1171799463e-03 -8.6500000000e+01,-1.5328541565e+00,1.5893870163e-01 -8.6600000000e+01,-1.5100847300e+00,3.1132532299e-01 -8.6700000000e+01,-1.4721973384e+00,4.6075231363e-01 -8.6800000000e+01,-1.4195555890e+00,6.0572300297e-01 -8.6900000000e+01,-1.3526709408e+00,7.4478376935e-01 -8.7000000000e+01,-1.2721977403e+00,8.7653861393e-01 -8.7100000000e+01,-1.1789268229e+00,9.9966317307e-01 -8.7200000000e+01,-1.0737777448e+00,1.1129180287e+00 -8.7300000000e+01,-9.5778971894e-01,1.2151611826e+00 -8.7400000000e+01,-8.3211134682e-01,1.3053595702e+00 -8.7500000000e+01,-6.9798924625e-01,1.3825994954e+00 -8.7600000000e+01,-5.5675568784e-01,1.4460958843e+00 -8.7700000000e+01,-4.0981536295e-01,1.4952002615e+00 -8.7800000000e+01,-2.5863141455e-01,1.5294073687e+00 -8.7900000000e+01,-1.0471086974e-01,1.5483603591e+00 -8.8000000000e+01,5.0410380994e-02,1.5518545131e+00 -8.8100000000e+01,2.0518290800e-01,1.5398394362e+00 -8.8200000000e+01,3.5805921745e-01,1.5124197181e+00 -8.8300000000e+01,5.0750922237e-01,1.4698540414e+00 -8.8400000000e+01,6.5203555523e-01,1.4125527507e+00 -8.8500000000e+01,7.9018856870e-01,1.3410739017e+00 -8.8600000000e+01,9.2058087447e-01,1.2561178310e+00 -8.8700000000e+01,1.0419012742e+00,1.1585202974e+00 -8.8800000000e+01,1.1529279427e+00,1.0492442632e+00 -8.8900000000e+01,1.2525407313e+00,9.2937039521e-01 -8.9000000000e+01,1.3397324666e+00,8.0008638010e-01 -8.9100000000e+01,1.4136191314e+00,6.6267515889e-01 -8.9200000000e+01,1.4734488252e+00,5.1850219768e-01 -8.9300000000e+01,1.5186094120e+00,3.6900192074e-01 -8.9400000000e+01,1.5486347796e+00,2.1566344058e-01 -8.9500000000e+01,1.5632096447e+00,6.0015727143e-02 -8.9600000000e+01,1.5621728561e+00,-9.6387636317e-02 -8.9700000000e+01,1.5455191589e+00,-2.5198395858e-01 -8.9800000000e+01,1.5133994039e+00,-4.0521705242e-01 -8.9900000000e+01,1.4661191950e+00,-5.5455279715e-01 -9.0000000000e+01,1.4041359898e+00,-6.9849449614e-01 -9.0100000000e+01,1.3280546783e+00,-8.3559787564e-01 -9.0200000000e+01,1.2386216840e+00,-9.6448557451e-01 -9.0300000000e+01,1.1367176438e+00,-1.0838609797e+00 -9.0400000000e+01,1.0233487393e+00,-1.1925212680e+00 -9.0500000000e+01,8.9963676451e-01,-1.2893695242e+00 -9.0600000000e+01,7.6680802755e-01,-1.3734258115e+00 -9.0700000000e+01,6.2618119690e-01,-1.4438370844e+00 -9.0800000000e+01,4.7915421199e-01,-1.4998858430e+00 -9.0900000000e+01,3.2719038837e-01,-1.5409974409e+00 -9.1000000000e+01,1.7180385543e-01,-1.5667459724e+00 -9.1100000000e+01,1.4544471623e-02,-1.5768586788e+00 -9.1200000000e+01,-1.4301763253e-01,-1.5712188280e+00 -9.1300000000e+01,-2.9930772962e-01,-1.5498670378e+00 -9.1400000000e+01,-4.5276223211e-01,-1.5130010269e+00 -9.1500000000e+01,-6.0184433347e-01,-1.4609737961e+00 -9.1600000000e+01,-7.4505939728e-01,-1.3942902546e+00 -9.1700000000e+01,-8.8096994022e-01,-1.3136023248e+00 -9.1800000000e+01,-1.0082100586e+00,-1.2197025728e+00 -9.1900000000e+01,-1.1254991541e+00,-1.1135164263e+00 -9.2000000000e+01,-1.2316548199e+00,-9.9609305661e-01 -9.2100000000e+01,-1.3256047591e+00,-8.6859501499e-01 -9.2200000000e+01,-1.4063976131e+00,-7.3228672455e-01 -9.2300000000e+01,-1.4732125935e+00,-5.8852194290e-01 -9.2400000000e+01,-1.5253678168e+00,-4.3873031897e-01 -9.2500000000e+01,-1.5623272599e+00,-2.8440317780e-01 -9.2600000000e+01,-1.5837062643e+00,-1.2707867460e-01 -9.2700000000e+01,-1.5892755328e+00,3.1673534183e-02 -9.2800000000e+01,-1.5789635766e+00,1.9026795005e-01 -9.2900000000e+01,-1.5528575884e+00,3.4711906562e-01 -9.3000000000e+01,-1.5112027289e+00,5.0065721376e-01 -9.3100000000e+01,-1.4543998347e+00,6.4934427422e-01 -9.3200000000e+01,-1.3830015669e+00,7.9168908061e-01 -9.3300000000e+01,-1.2977070386e+00,9.2626237348e-01 -9.3400000000e+01,-1.1993549726e+00,1.0517111495e+00 -9.3500000000e+01,-1.0889154575e+00,1.1667722626e+00 -9.3600000000e+01,-9.6748038144e-01,1.2702851407e+00 -9.3700000000e+01,-8.3625263937e-01,1.3612034898e+00 -9.3800000000e+01,-6.9653421959e-01,1.4386058670e+00 -9.3900000000e+01,-5.4971328793e-01,1.5017050168e+00 -9.4000000000e+01,-3.9725039750e-01,1.5498558745e+00 -9.4100000000e+01,-2.4066396106e-01,1.5825621572e+00 -9.4200000000e+01,-8.1515130442e-02,1.5994814730e+00 -9.4300000000e+01,7.8607766308e-02,1.6004288982e+00 -9.4400000000e+01,2.3810507510e-01,1.5853789831e+00 -9.4500000000e+01,3.9538179501e-01,1.5544661657e+00 -9.4600000000e+01,5.4886352695e-01,1.5079835884e+00 -9.4700000000e+01,6.9701223239e-01,1.4463803258e+00 -9.4800000000e+01,8.3834164430e-01,1.3702570521e+00 -9.4900000000e+01,9.7143217613e-01,1.2803601880e+00 -9.5000000000e+01,1.0949451790e+00,1.1775745854e+00 -9.5100000000e+01,1.2076364041e+00,1.0629148204e+00 -9.5200000000e+01,1.3083685351e+00,9.3751518111e-01 -9.5300000000e+01,1.3961226639e+00,8.0261844912e-01 -9.5400000000e+01,1.4700085944e+00,6.5956358458e-01 -9.5500000000e+01,1.5292738699e+00,5.0977243794e-01 -9.5600000000e+01,1.5733114326e+00,3.5473561973e-01 -9.5700000000e+01,1.6016658374e+00,1.9599766878e-01 -9.5800000000e+01,1.6140379564e+00,3.5141666621e-02 -9.5900000000e+01,1.6102881253e+00,-1.2622654884e-01 -9.6000000000e+01,1.5904376991e+00,-2.8649441295e-01 -9.6100000000e+01,1.5546689998e+00,-4.4405874714e-01 -9.6200000000e+01,1.5033236550e+00,-5.9734179408e-01 -9.6300000000e+01,1.4368993417e+00,-7.4480701484e-01 -9.6400000000e+01,1.3560449685e+00,-8.8497448968e-01 -9.6500000000e+01,1.2615543392e+00,-1.0164357684e+00 -9.6600000000e+01,1.1543583635e+00,-1.1378680209e+00 -9.6700000000e+01,1.0355158882e+00,-1.2480473465e+00 -9.6800000000e+01,9.0620324065e-01,-1.3458611071e+00 -9.6900000000e+01,7.6770258761e-01,-1.4303191607e+00 -9.7000000000e+01,6.2138922417e-01,-1.5005638816e+00 -9.7100000000e+01,4.6871791914e-01,-1.5558788664e+00 -9.7200000000e+01,3.1120845234e-01,-1.5956962361e+00 -9.7300000000e+01,1.5043048750e-01,-1.6196024617e+00 -9.7400000000e+01,-1.2012068502e-02,-1.6273426523e+00 -9.7500000000e+01,-1.7449706454e-01,-1.6188232618e+00 -9.7600000000e+01,-3.3540030233e-01,-1.5941131851e+00 -9.7700000000e+01,-4.9311177034e-01,-1.5534432324e+00 -9.7800000000e+01,-6.4605175200e-01,-1.4972039837e+00 -9.7900000000e+01,-7.9268664731e-01,-1.4259420443e+00 -9.8000000000e+01,-9.3154434919e-01,-1.3403547370e+00 -9.8100000000e+01,-1.0612290206e+00,-1.2412832821e+00 -9.8200000000e+01,-1.1804351238e+00,-1.1297045324e+00 -9.8300000000e+01,-1.2879605616e+00,-1.0067213442e+00 -9.8400000000e+01,-1.3827187968e+00,-8.7355167876e-01 -9.8500000000e+01,-1.4637498293e+00,-7.3151654221e-01 -9.8600000000e+01,-1.5302299193e+00,-5.8202688397e-01 -9.8700000000e+01,-1.5814799576e+00,-4.2656958223e-01 -9.8800000000e+01,-1.6169723992e+00,-2.6669265680e-01 -9.8900000000e+01,-1.6363366880e+00,-1.0398985586e-01 -9.9000000000e+01,-1.6393631183e+00,5.9915229766e-02 -9.9100000000e+01,-1.6260050919e+00,2.2338536661e-01 -9.9200000000e+01,-1.5963797472e+00,3.8478603108e-01 -9.9300000000e+01,-1.5507669520e+00,5.4250175129e-01 -9.9400000000e+01,-1.4896066684e+00,6.9495227479e-01 -9.9500000000e+01,-1.4134947155e+00,8.4060840038e-01 -9.9600000000e+01,-1.3231769691e+00,9.7800731548e-01 -9.9700000000e+01,-1.2195420558e+00,1.1057672852e+00 -9.9800000000e+01,-1.1036126131e+00,1.2226015456e+00 -9.9900000000e+01,-9.7653520048e-01,1.3273312614e+00 -1.0000000000e+02,-8.3956896276e-01,1.4188974183e+00 diff --git a/doc/data/xsmall.csv b/doc/data/xsmall.csv new file mode 100644 index 0000000..bf34597 --- /dev/null +++ b/doc/data/xsmall.csv @@ -0,0 +1,10001 @@ +0.001,1.,1. +0.002,1.000999,0.999 +0.003,1.00199698902,0.997989016005 +0.004,1.00299395609,0.996967069385 +0.005,1.00398989027,0.99593418199 +0.006,1.00498478064,0.994890376146 +0.007,1.00597861632,0.993835674657 +0.008,1.00697138642,0.992770100802 +0.009,1.0079630801,0.991693678331 +0.01,1.00895368653,0.990606431469 +0.011,1.00994319491,0.989508384911 +0.012,1.01093159448,0.988399563819 +0.013,1.01191887447,0.987279993825 +0.014,1.01290502417,0.986149701025 +0.015,1.01389003288,0.985008711978 +0.016,1.01487388994,0.983857053708 +0.017,1.01585658469,0.982694753696 +0.018,1.01683810653,0.981521839885 +0.019,1.01781844487,0.980338340671 +0.02,1.01879758916,0.979144284907 +0.021,1.01977552886,0.977939701898 +0.022,1.02075225348,0.976724621399 +0.023,1.02172775255,0.975499073614 +0.024,1.02270201564,0.974263089195 +0.025,1.02367503234,0.973016699234 +0.026,1.02464679228,0.97175993527 +0.027,1.02561728511,0.970492829277 +0.028,1.02658650052,0.96921541367 +0.029,1.02755442824,0.967927721298 +0.03,1.02852105803,0.966629785441 +0.031,1.02948637967,0.965321639813 +0.032,1.03045038299,0.964003318551 +0.033,1.03141305784,0.962674856222 +0.034,1.03237439413,0.961336287812 +0.035,1.03333438178,0.95998764873 +0.036,1.03429301075,0.9586289748 +0.037,1.03525027106,0.957260302263 +0.038,1.03620615272,0.95588166777 +0.039,1.03716064583,0.954493108384 +0.04,1.03811374049,0.953094661572 +0.041,1.03906542686,0.951686365206 +0.042,1.04001569512,0.95026825756 +0.043,1.04096453549,0.948840377303 +0.044,1.04191193826,0.947402763501 +0.045,1.04285789371,0.945955455613 +0.046,1.04380239221,0.944498493485 +0.047,1.04474542412,0.94303191735 +0.048,1.04568697989,0.941555767824 +0.049,1.04662704998,0.940070085903 +0.05,1.04756562489,0.938574912958 +0.051,1.04850269518,0.937070290735 +0.052,1.04943825144,0.93555626135 +0.053,1.05037228431,0.934032867286 +0.054,1.05130478446,0.932500151389 +0.055,1.05223574262,0.930958156867 +0.056,1.05316514955,0.929406927282 +0.057,1.05409299605,0.927846506552 +0.058,1.05501927299,0.926276938945 +0.059,1.05594397126,0.924698269076 +0.06,1.0568670818,0.9231105419 +0.061,1.0577885956,0.921513802717 +0.062,1.0587085037,0.91990809716 +0.063,1.05962679717,0.918293471194 +0.064,1.06054346714,0.916669971115 +0.065,1.06145850479,0.915037643544 +0.066,1.06237190132,0.913396535423 +0.067,1.06328364802,0.911746694013 +0.068,1.06419373618,0.910088166889 +0.069,1.06510215719,0.908421001936 +0.07,1.06600890243,0.906745247349 +0.071,1.06691396338,0.905060951621 +0.072,1.06781733155,0.903368163549 +0.073,1.06871899848,0.901666932224 +0.074,1.06961895579,0.899957307028 +0.075,1.07051719512,0.898239337631 +0.076,1.0714137082,0.896513073989 +0.077,1.07230848677,0.894778566336 +0.078,1.07320152263,0.893035865182 +0.079,1.07409280765,0.89128502131 +0.08,1.07498233374,0.889526085773 +0.081,1.07587009285,0.887759109884 +0.082,1.07675607699,0.88598414522 +0.083,1.07764027824,0.884201243613 +0.084,1.07852268869,0.882410457147 +0.085,1.07940330053,0.880611838154 +0.086,1.08028210597,0.878805439211 +0.087,1.08115909728,0.876991313135 +0.088,1.0820342668,0.875169512977 +0.089,1.08290760689,0.873340092021 +0.09,1.08377910999,0.871503103781 +0.091,1.08464876859,0.86965860199 +0.092,1.08551657524,0.867806640604 +0.093,1.08638252251,0.865947273793 +0.094,1.08724660306,0.864080555938 +0.095,1.08810880961,0.862206541627 +0.096,1.08896913489,0.86032528565 +0.097,1.08982757174,0.858436842998 +0.098,1.090684113,0.856541268852 +0.099,1.09153875162,0.854638618587 +0.1,1.09239148057,0.852728947762 +0.101,1.09324229288,0.850812312119 +0.102,1.09409118165,0.848888767574 +0.103,1.09493814002,0.84695837022 +0.104,1.0957831612,0.845021176317 +0.105,1.09662623844,0.84307724229 +0.106,1.09746736506,0.841126624724 +0.107,1.09830653444,0.839169380361 +0.108,1.09914374001,0.837205566093 +0.109,1.09997897525,0.835235238961 +0.11,1.10081223371,0.83325845615 +0.111,1.10164350898,0.831275274982 +0.112,1.10247279473,0.829285752915 +0.113,1.10330008468,0.827289947538 +0.114,1.1041253726,0.825287916564 +0.115,1.10494865232,0.823279717831 +0.116,1.10576991772,0.821265409292 +0.117,1.10658916277,0.819245049014 +0.118,1.10740638147,0.817218695175 +0.119,1.10822156787,0.815186406056 +0.12,1.10903471611,0.813148240038 +0.121,1.10984582037,0.811104255601 +0.122,1.11065487488,0.809054511315 +0.123,1.11146187395,0.806999065837 +0.124,1.11226681193,0.804937977911 +0.125,1.11306968323,0.802871306358 +0.126,1.11387048234,0.800799110074 +0.127,1.11466920379,0.798721448027 +0.128,1.11546584217,0.796638379252 +0.129,1.11626039213,0.794549962845 +0.13,1.11705284839,0.792456257962 +0.131,1.11784320571,0.790357323812 +0.132,1.11863145893,0.788253219655 +0.133,1.11941760294,0.786144004796 +0.134,1.12020163268,0.784029738583 +0.135,1.12098354316,0.7819104804 +0.136,1.12176332945,0.779786289666 +0.137,1.12254098667,0.777657225827 +0.138,1.12331651002,0.775523348358 +0.139,1.12408989474,0.773384716751 +0.14,1.12486113613,0.771241390518 +0.141,1.12563022956,0.769093429184 +0.142,1.12639717045,0.76694089228 +0.143,1.12716195429,0.764783839346 +0.144,1.12792457662,0.76262232992 +0.145,1.12868503304,0.760456423539 +0.146,1.12944331922,0.758286179731 +0.147,1.13019943088,0.756111658015 +0.148,1.1309533638,0.753932917894 +0.149,1.13170511382,0.751750018851 +0.15,1.13245467684,0.749563020349 +0.151,1.13320204882,0.747371981823 +0.152,1.13394722578,0.745176962677 +0.153,1.1346902038,0.742978022282 +0.154,1.13543097902,0.740775219969 +0.155,1.13616954764,0.738568615028 +0.156,1.13690590591,0.736358266704 +0.157,1.13764005014,0.734144234191 +0.158,1.13837197672,0.731926576632 +0.159,1.13910168207,0.729705353109 +0.16,1.13982916269,0.727480622648 +0.161,1.14055441514,0.725252444208 +0.162,1.14127743601,0.723020876681 +0.163,1.14199822199,0.720785978885 +0.164,1.1427167698,0.718547809566 +0.165,1.14343307623,0.716306427389 +0.166,1.14414713812,0.714061890939 +0.167,1.14485895238,0.711814258712 +0.168,1.14556851597,0.709563589116 +0.169,1.14627582591,0.707309940467 +0.17,1.14698087928,0.705053370984 +0.171,1.14768367322,0.702793938785 +0.172,1.14838420492,0.700531701887 +0.173,1.14908247164,0.698266718198 +0.174,1.14977847068,0.695999045519 +0.175,1.15047219943,0.693728741534 +0.176,1.15116365529,0.691455863815 +0.177,1.15185283576,0.689180469811 +0.178,1.15253973838,0.686902616848 +0.179,1.15322436074,0.684622362128 +0.18,1.1539067005,0.682339762721 +0.181,1.15458675538,0.680054875566 +0.182,1.15526452313,0.677767757466 +0.183,1.1559400016,0.675478465085 +0.184,1.15661318865,0.673187054946 +0.185,1.15728408224,0.670893583425 +0.186,1.15795268034,0.668598106752 +0.187,1.15861898102,0.666300681006 +0.188,1.15928298239,0.664001362111 +0.189,1.15994468259,0.661700205836 +0.19,1.16060407986,0.659397267789 +0.191,1.16126117246,0.657092603415 +0.192,1.16191595873,0.654786267996 +0.193,1.16256843705,0.652478316644 +0.194,1.16321860585,0.6501688043 +0.195,1.16386646364,0.647857785733 +0.196,1.16451200895,0.645545315534 +0.197,1.1651552404,0.643231448117 +0.198,1.16579615664,0.640916237712 +0.199,1.16643475638,0.638599738367 +0.2,1.16707103838,0.636282003942 +0.201,1.16770500147,0.633963088107 +0.202,1.16833664451,0.631643044343 +0.203,1.16896596644,0.629321925934 +0.204,1.16959296623,0.626999785969 +0.205,1.1702176429,0.624676677336 +0.206,1.17083999556,0.622352652724 +0.207,1.17146002332,0.620027764615 +0.208,1.17207772539,0.617702065288 +0.209,1.17269310099,0.615375606812 +0.21,1.17330614943,0.613048441045 +0.211,1.17391687005,0.610720619633 +0.212,1.17452526225,0.608392194006 +0.213,1.17513132546,0.606063215378 +0.214,1.1757350592,0.603733734743 +0.215,1.176336463,0.601403802873 +0.216,1.17693553647,0.599073470319 +0.217,1.17753227926,0.596742787402 +0.218,1.17812669106,0.59441180422 +0.219,1.17871877163,0.592080570639 +0.22,1.17930852077,0.589749136295 +0.221,1.17989593832,0.58741755059 +0.222,1.18048102418,0.585085862692 +0.223,1.1810637783,0.582754121531 +0.224,1.18164420068,0.580422375799 +0.225,1.18222229135,0.578090673947 +0.226,1.18279805042,0.575759064185 +0.227,1.18337147801,0.573427594479 +0.228,1.18394257433,0.571096312547 +0.229,1.18451133959,0.568765265864 +0.23,1.18507777409,0.566434501655 +0.231,1.18564187816,0.564104066892 +0.232,1.18620365217,0.5617740083 +0.233,1.18676309654,0.559444372347 +0.234,1.18732021175,0.557115205248 +0.235,1.1878749983,0.554786552962 +0.236,1.18842745676,0.55245846119 +0.237,1.18897758774,0.550130975375 +0.238,1.18952539188,0.5478041407 +0.239,1.19007086988,0.545478002085 +0.24,1.19061402248,0.543152604188 +0.241,1.19115485047,0.540827991404 +0.242,1.19169335468,0.538504207863 +0.243,1.19222953598,0.536181297428 +0.244,1.19276339528,0.533859303694 +0.245,1.19329493355,0.531538269989 +0.246,1.19382415179,0.52921823937 +0.247,1.19435105105,0.526899254625 +0.248,1.19487563241,0.524581358269 +0.249,1.195397897,0.522264592546 +0.25,1.195917846,0.519948999425 +0.251,1.19643548062,0.5176346206 +0.252,1.19695080212,0.515321497493 +0.253,1.19746381179,0.513009671247 +0.254,1.19797451097,0.510699182728 +0.255,1.19848290104,0.508390072527 +0.256,1.19898898342,0.506082380952 +0.257,1.19949275957,0.503776148036 +0.258,1.19999423098,0.50147141353 +0.259,1.2004933992,0.499168216906 +0.26,1.2009902658,0.496866597351 +0.261,1.20148483239,0.494566593775 +0.262,1.20197710064,0.492268244802 +0.263,1.20246707223,0.489971588776 +0.264,1.20295474889,0.487676663754 +0.265,1.2034401324,0.485383507511 +0.266,1.20392322455,0.483092157538 +0.267,1.20440402721,0.480802651041 +0.268,1.20488254223,0.478515024939 +0.269,1.20535877155,0.476229315867 +0.27,1.20583271711,0.473945560173 +0.271,1.2063043809,0.47166379392 +0.272,1.20677376495,0.469384052882 +0.273,1.20724087133,0.467106372548 +0.274,1.20770570211,0.464830788119 +0.275,1.20816825945,0.462557334508 +0.276,1.2086285455,0.460286046343 +0.277,1.20908656245,0.458016957961 +0.278,1.20954231256,0.455750103412 +0.279,1.20999579807,0.45348551646 +0.28,1.2104470213,0.451223230577 +0.281,1.21089598458,0.448963278951 +0.282,1.21134269028,0.446705694479 +0.283,1.21178714079,0.444450509771 +0.284,1.21222933854,0.442197757147 +0.285,1.21266928601,0.439947468642 +0.286,1.21310698569,0.437699676 +0.287,1.2135424401,0.435454410677 +0.288,1.2139756518,0.433211703844 +0.289,1.21440662339,0.43097158638 +0.29,1.21483535748,0.42873408888 +0.291,1.21526185672,0.42649924165 +0.292,1.21568612379,0.424267074708 +0.293,1.21610816141,0.422037617785 +0.294,1.21652797231,0.419810900327 +0.295,1.21694555926,0.417586951492 +0.296,1.21736092506,0.415365800152 +0.297,1.21777407254,0.413147474892 +0.298,1.21818500454,0.410932004014 +0.299,1.21859372396,0.408719415531 +0.3,1.2190002337,0.406509737176 +0.301,1.21940453669,0.404302996392 +0.302,1.21980663591,0.402099220342 +0.303,1.22020653435,0.399898435904 +0.304,1.22060423502,0.397700669672 +0.305,1.22099974097,0.395505947959 +0.306,1.22139305526,0.393314296793 +0.307,1.221784181,0.391125741925 +0.308,1.22217312131,0.388940308819 +0.309,1.22255987934,0.386758022664 +0.31,1.22294445824,0.384578908364 +0.311,1.22332686124,0.382402990546 +0.312,1.22370709153,0.380230293559 +0.313,1.22408515237,0.378060841473 +0.314,1.22446104703,0.375894658078 +0.315,1.2248347788,0.373731766891 +0.316,1.22520635099,0.37157219115 +0.317,1.22557576694,0.369415953819 +0.318,1.22594303002,0.367263077586 +0.319,1.2263081436,0.365113584866 +0.32,1.2266711111,0.362967497799 +0.321,1.22703193594,0.360824838254 +0.322,1.22739062157,0.358685627827 +0.323,1.22774717145,0.356549887844 +0.324,1.22810158909,0.35441763936 +0.325,1.228453878,0.352288903161 +0.326,1.2288040417,0.350163699765 +0.327,1.22915208375,0.348042049419 +0.328,1.22949800772,0.345923972108 +0.329,1.22984181721,0.343809487547 +0.33,1.23018351582,0.341698615188 +0.331,1.2305231072,0.339591374219 +0.332,1.23086059498,0.337487783563 +0.333,1.23119598284,0.335387861882 +0.334,1.23152927447,0.333291627575 +0.335,1.23186047357,0.331199098784 +0.336,1.23218958386,0.329110293387 +0.337,1.23251660909,0.327025229007 +0.338,1.23284155301,0.324943923008 +0.339,1.2331644194,0.322866392498 +0.34,1.23348521206,0.320792654328 +0.341,1.23380393478,0.318722725097 +0.342,1.23412059141,0.316656621149 +0.343,1.23443518576,0.314594358575 +0.344,1.23474772172,0.312535953216 +0.345,1.23505820314,0.310481420664 +0.346,1.23536663391,0.308430776258 +0.347,1.23567301795,0.306384035091 +0.348,1.23597735916,0.304341212011 +0.349,1.23627966148,0.302302321617 +0.35,1.23657992886,0.300267378265 +0.351,1.23687816526,0.298236396066 +0.352,1.23717437465,0.29620938889 +0.353,1.23746856102,0.294186370365 +0.354,1.23776072837,0.292167353879 +0.355,1.23805088072,0.29015235258 +0.356,1.2383390221,0.288141379379 +0.357,1.23862515655,0.286134446951 +0.358,1.23890928812,0.284131567733 +0.359,1.23919142087,0.282132753931 +0.36,1.23947155889,0.280138017516 +0.361,1.23974970626,0.278147370227 +0.362,1.24002586708,0.276160823572 +0.363,1.24030004547,0.274178388832 +0.364,1.24057224555,0.272200077055 +0.365,1.24084247145,0.270225899067 +0.366,1.24111072731,0.268255865466 +0.367,1.2413770173,0.266289986625 +0.368,1.24164134557,0.264328272693 +0.369,1.24190371631,0.2623707336 +0.37,1.24216413368,0.260417379052 +0.371,1.2424226019,0.258468218538 +0.372,1.24267912516,0.256523261326 +0.373,1.24293370768,0.25458251647 +0.374,1.24318635367,0.252645992806 +0.375,1.24343706737,0.250713698957 +0.376,1.24368585302,0.248785643331 +0.377,1.24393271485,0.246861834127 +0.378,1.24417765713,0.244942279331 +0.379,1.24442068412,0.24302698672 +0.38,1.24466180008,0.241115963864 +0.381,1.2449010093,0.239209218126 +0.382,1.24513831605,0.237306756664 +0.383,1.24537372464,0.23540858643 +0.384,1.24560723936,0.233514714176 +0.385,1.2458388645,0.231625146452 +0.386,1.24606860439,0.229739889605 +0.387,1.24629646334,0.227858949787 +0.388,1.24652244567,0.22598233295 +0.389,1.24674655572,0.224110044852 +0.39,1.24696879781,0.222242091053 +0.391,1.24718917629,0.220378476923 +0.392,1.24740769549,0.218519207638 +0.393,1.24762435978,0.216664288183 +0.394,1.24783917351,0.214813723353 +0.395,1.24805214102,0.212967517758 +0.396,1.2482632667,0.211125675817 +0.397,1.2484725549,0.209288201765 +0.398,1.24868001,0.207455099654 +0.399,1.24888563637,0.205626373352 +0.4,1.2490894384,0.203802026546 +0.401,1.24929142046,0.201982062742 +0.402,1.24949158695,0.200166485267 +0.403,1.24968994225,0.198355297272 +0.404,1.24988649075,0.196548501731 +0.405,1.25008123685,0.194746101443 +0.406,1.25027418495,0.192948099032 +0.407,1.25046533945,0.191154496953 +0.408,1.25065470474,0.189365297487 +0.409,1.25084228525,0.187580502748 +0.41,1.25102808536,0.18580011468 +0.411,1.2512121095,0.18402413506 +0.412,1.25139436206,0.182252565501 +0.413,1.25157484747,0.180485407451 +0.414,1.25175357013,0.178722662195 +0.415,1.25193053446,0.176964330855 +0.416,1.25210574488,0.175210414396 +0.417,1.25227920579,0.173460913621 +0.418,1.25245092162,0.171715829176 +0.419,1.25262089678,0.169975161552 +0.42,1.25278913569,0.168238911083 +0.421,1.25295564277,0.166507077952 +0.422,1.25312042243,0.164779662186 +0.423,1.2532834791,0.163056663665 +0.424,1.25344481718,0.161338082115 +0.425,1.25360444109,0.159623917117 +0.426,1.25376235526,0.157914168102 +0.427,1.2539185641,0.156208834357 +0.428,1.25407307201,0.154507915024 +0.429,1.25422588342,0.152811409102 +0.43,1.25437700274,0.151119315446 +0.431,1.25452643437,0.149431632772 +0.432,1.25467418273,0.147748359656 +0.433,1.25482025222,0.146069494536 +0.434,1.25496464726,0.144395035714 +0.435,1.25510737224,0.142724981353 +0.436,1.25524843157,0.141059329486 +0.437,1.25538782965,0.139398078009 +0.438,1.25552557087,0.137741224688 +0.439,1.25566165964,0.136088767159 +0.44,1.25579610034,0.134440702927 +0.441,1.25592889737,0.13279702937 +0.442,1.25606005512,0.131157743737 +0.443,1.25618957796,0.129522843155 +0.444,1.25631747028,0.127892324624 +0.445,1.25644373647,0.12626618502 +0.446,1.25656838089,0.124644421099 +0.447,1.25669140792,0.123027029495 +0.448,1.25681282193,0.121414006723 +0.449,1.25693262728,0.119805349181 +0.45,1.25705082833,0.118201053146 +0.451,1.25716742944,0.116601114782 +0.452,1.25728243497,0.115005530139 +0.453,1.25739584927,0.113414295151 +0.454,1.25750767667,0.111827405641 +0.455,1.25761792153,0.11024485732 +0.456,1.25772658818,0.10866664579 +0.457,1.25783368094,0.107092766543 +0.458,1.25793920416,0.105523214964 +0.459,1.25804316215,0.103957986333 +0.46,1.25814555922,0.102397075821 +0.461,1.2582463997,0.100840478497 +0.462,1.25834568789,0.0992881893284 +0.463,1.25844342809,0.0977402031777 +0.464,1.25853962461,0.0961965148082 +0.465,1.25863428173,0.0946571188834 +0.466,1.25872740374,0.0931220099681 +0.467,1.25881899492,0.0915911825297 +0.468,1.25890905955,0.0900646309394 +0.469,1.2589976019,0.0885423494731 +0.47,1.25908462623,0.0870243323126 +0.471,1.2591701368,0.0855105735468 +0.472,1.25925413787,0.0840010671727 +0.473,1.25933663368,0.0824958070963 +0.474,1.25941762847,0.0809947871341 +0.475,1.25949712647,0.0794980010138 +0.476,1.25957513191,0.0780054423756 +0.477,1.25965164901,0.0765171047731 +0.478,1.259726682,0.0750329816744 +0.479,1.25980023506,0.0735530664633 +0.48,1.25987231241,0.0720773524402 +0.481,1.25994291825,0.0706058328231 +0.482,1.26001205675,0.0691385007487 +0.483,1.2600797321,0.0676753492735 +0.484,1.26014594847,0.0662163713748 +0.485,1.26021071003,0.0647615599515 +0.486,1.26027402094,0.0633109078255 +0.487,1.26033588534,0.0618644077423 +0.488,1.2603963074,0.0604220523724 +0.489,1.26045529123,0.0589838343117 +0.49,1.26051284098,0.0575497460834 +0.491,1.26056896076,0.056119780138 +0.492,1.26062365469,0.054693928855 +0.493,1.26067692687,0.0532721845434 +0.494,1.26072878141,0.051854539443 +0.495,1.2607792224,0.0504409857251 +0.496,1.26082825391,0.0490315154937 +0.497,1.26087588003,0.0476261207862 +0.498,1.26092210483,0.0462247935746 +0.499,1.26096693235,0.044827525766 +0.5,1.26101036666,0.043434309204 +0.501,1.2610524118,0.0420451356696 +0.502,1.26109307179,0.0406599968815 +0.503,1.26113235068,0.0392788844978 +0.504,1.26117025247,0.0379017901165 +0.505,1.26120678117,0.0365287052764 +0.506,1.26124194079,0.035159621458 +0.507,1.26127573532,0.0337945300845 +0.508,1.26130816875,0.0324334225225 +0.509,1.26133924504,0.0310762900832 +0.51,1.26136896816,0.0297231240227 +0.511,1.26139734208,0.0283739155436 +0.512,1.26142437073,0.027028655795 +0.513,1.26145005807,0.0256873358741 +0.514,1.26147440802,0.0243499468268 +0.515,1.26149742449,0.0230164796482 +0.516,1.26151911142,0.0216869252839 +0.517,1.26153947269,0.0203612746305 +0.518,1.26155851221,0.0190395185368 +0.519,1.26157623386,0.0177216478041 +0.52,1.26159264151,0.0164076531872 +0.521,1.26160773904,0.0150975253955 +0.522,1.26162153029,0.0137912550934 +0.523,1.26163401913,0.0124888329013 +0.524,1.26164520938,0.0111902493963 +0.525,1.26165510487,0.00989549511295 +0.526,1.26166370943,0.00860456054406 +0.527,1.26167102687,0.00731743614151 +0.528,1.26167706098,0.00603411231692 +0.529,1.26168181556,0.00475457944246 +0.53,1.26168529439,0.00347882785156 +0.531,1.26168750124,0.00220684783964 +0.532,1.26168843987,0.000938629664891 +0.533,1.26168811403,-0.000325836451039 +0.534,1.26168652747,-0.00158656032231 +0.535,1.26168368392,-0.00284355179819 +0.536,1.2616795871,-0.00409682076233 +0.537,1.26167424072,-0.00534637713205 +0.538,1.26166764849,-0.00659223085769 +0.539,1.2616598141,-0.00783439192185 +0.54,1.26165074123,-0.00907287033877 +0.541,1.26164043355,-0.0103076761536 +0.542,1.26162889473,-0.0115388194418 +0.543,1.26161612842,-0.0127663103084 +0.544,1.26160213826,-0.0139901588872 +0.545,1.26158692789,-0.0152103753406 +0.546,1.26157050092,-0.0164269698583 +0.547,1.26155286096,-0.0176399526572 +0.548,1.26153401163,-0.0188493339804 +0.549,1.26151395651,-0.0200551240968 +0.55,1.26149269917,-0.0212573333003 +0.551,1.2614702432,-0.0224559719093 +0.552,1.26144659215,-0.023651050266 +0.553,1.26142174957,-0.0248425787358 +0.554,1.261395719,-0.0260305677069 +0.555,1.26136850398,-0.0272150275894 +0.556,1.26134010801,-0.0283959688146 +0.557,1.26131053461,-0.0295734018351 +0.558,1.26127978727,-0.0307473371234 +0.559,1.26124786948,-0.0319177851717 +0.56,1.26121478473,-0.0330847564916 +0.561,1.26118053647,-0.0342482616128 +0.562,1.26114512815,-0.0354083110834 +0.563,1.26110856324,-0.0365649154685 +0.564,1.26107084515,-0.0377180853505 +0.565,1.26103197732,-0.0388678313277 +0.566,1.26099196316,-0.0400141640146 +0.567,1.26095080606,-0.0411570940405 +0.568,1.26090850943,-0.0422966320498 +0.569,1.26086507664,-0.0434327887009 +0.57,1.26082051107,-0.044565574666 +0.571,1.26077481607,-0.0456950006301 +0.572,1.26072799499,-0.0468210772914 +0.573,1.26068005118,-0.0479438153598 +0.574,1.26063098795,-0.0490632255571 +0.575,1.26058080863,-0.0501793186161 +0.576,1.26052951653,-0.0512921052802 +0.577,1.26047711493,-0.0524015963033 +0.578,1.26042360713,-0.0535078024487 +0.579,1.26036899639,-0.054610734489 +0.58,1.26031328599,-0.0557104032056 +0.581,1.26025647917,-0.0568068193882 +0.582,1.26019857918,-0.0578999938343 +0.583,1.26013958924,-0.0589899373487 +0.584,1.26007951258,-0.0600766607434 +0.585,1.2600183524,-0.0611601748365 +0.586,1.25995611191,-0.0622404904524 +0.587,1.25989279429,-0.0633176184211 +0.588,1.25982840272,-0.0643915695778 +0.589,1.25976294037,-0.0654623547623 +0.59,1.25969641039,-0.0665299848188 +0.591,1.25962881591,-0.0675944705956 +0.592,1.25956016009,-0.0686558229442 +0.593,1.25949044604,-0.0697140527195 +0.594,1.25941967687,-0.0707691707788 +0.595,1.25934785568,-0.071821187982 +0.596,1.25927498556,-0.0728701151907 +0.597,1.2592010696,-0.0739159632681 +0.598,1.25912611086,-0.0749587430785 +0.599,1.25905011239,-0.0759984654869 +0.6,1.25897307725,-0.0770351413588 +0.601,1.25889500847,-0.0780687815597 +0.602,1.25881590907,-0.0790993969547 +0.603,1.25873578207,-0.080126998408 +0.604,1.25865463048,-0.0811515967831 +0.605,1.25857245728,-0.0821732029418 +0.606,1.25848926545,-0.0831918277441 +0.607,1.25840505797,-0.0842074820479 +0.608,1.25831983779,-0.0852201767088 +0.609,1.25823360787,-0.0862299225795 +0.61,1.25814637114,-0.0872367305094 +0.611,1.25805813052,-0.0882406113445 +0.612,1.25796888895,-0.0892415759273 +0.613,1.25787864931,-0.0902396350957 +0.614,1.25778741451,-0.0912347996835 +0.615,1.25769518743,-0.0922270805198 +0.616,1.25760197094,-0.0932164884283 +0.617,1.25750776791,-0.0942030342277 +0.618,1.25741258118,-0.0951867287308 +0.619,1.2573164136,-0.0961675827447 +0.62,1.25721926799,-0.09714560707 +0.621,1.25712114718,-0.0981208125009 +0.622,1.25702205397,-0.0990932098247 +0.623,1.25692199116,-0.100062809822 +0.624,1.25682096154,-0.101029623265 +0.625,1.25671896788,-0.101993660919 +0.626,1.25661601294,-0.102954933541 +0.627,1.25651209949,-0.103913451882 +0.628,1.25640723026,-0.10486922668 +0.629,1.25630140799,-0.105822268668 +0.63,1.25619463541,-0.10677258857 +0.631,1.25608691521,-0.107720197098 +0.632,1.2559782501,-0.108665104957 +0.633,1.25586864278,-0.109607322841 +0.634,1.25575809592,-0.110546861436 +0.635,1.25564661219,-0.111483731415 +0.636,1.25553419424,-0.112417943442 +0.637,1.25542084474,-0.113349508171 +0.638,1.2553065663,-0.114278436244 +0.639,1.25519136156,-0.115204738292 +0.64,1.25507523314,-0.116128424935 +0.641,1.25495818363,-0.117049506781 +0.642,1.25484021564,-0.117967994428 +0.643,1.25472133174,-0.118883898459 +0.644,1.25460153451,-0.119797229447 +0.645,1.25448082651,-0.120707997952 +0.646,1.2543592103,-0.121616214522 +0.647,1.25423668841,-0.12252188969 +0.648,1.25411326337,-0.123425033979 +0.649,1.25398893771,-0.124325657898 +0.65,1.25386371394,-0.12522377194 +0.651,1.25373759456,-0.126119386588 +0.652,1.25361058204,-0.12701251231 +0.653,1.25348267888,-0.127903159558 +0.654,1.25335388754,-0.128791338774 +0.655,1.25322421048,-0.129677060382 +0.656,1.25309365015,-0.130560334793 +0.657,1.25296220898,-0.131441172403 +0.658,1.25282988939,-0.132319583596 +0.659,1.25269669381,-0.133195578735 +0.66,1.25256262465,-0.134069168175 +0.661,1.25242768428,-0.13494036225 +0.662,1.25229187511,-0.135809171281 +0.663,1.25215519951,-0.136675605575 +0.664,1.25201765983,-0.137539675419 +0.665,1.25187925844,-0.138401391089 +0.666,1.25173999768,-0.139260762841 +0.667,1.25159987988,-0.140117800918 +0.668,1.25145890736,-0.140972515544 +0.669,1.25131708244,-0.141824916928 +0.67,1.25117440743,-0.142675015263 +0.671,1.25103088461,-0.143522820723 +0.672,1.25088651627,-0.144368343469 +0.673,1.25074130467,-0.14521159364 +0.674,1.25059525209,-0.146052581364 +0.675,1.25044836077,-0.146891316746 +0.676,1.25030063296,-0.147727809876 +0.677,1.25015207089,-0.148562070829 +0.678,1.25000267678,-0.149394109659 +0.679,1.24985245285,-0.150223936404 +0.68,1.24970140129,-0.151051561083 +0.681,1.24954952429,-0.151876993699 +0.682,1.24939682405,-0.152700244236 +0.683,1.24924330273,-0.153521322659 +0.684,1.24908896249,-0.154340238917 +0.685,1.24893380548,-0.155157002939 +0.686,1.24877783386,-0.155971624636 +0.687,1.24862104974,-0.156784113901 +0.688,1.24846345526,-0.157594480608 +0.689,1.24830505253,-0.158402734614 +0.69,1.24814584364,-0.159208885754 +0.691,1.2479858307,-0.160012943847 +0.692,1.24782501578,-0.160814918691 +0.693,1.24766340096,-0.161614820069 +0.694,1.2475009883,-0.162412657739 +0.695,1.24733777986,-0.163208441445 +0.696,1.24717377768,-0.16400218091 +0.697,1.2470089838,-0.164793885837 +0.698,1.24684340023,-0.16558356591 +0.699,1.246677029,-0.166371230795 +0.7,1.24650987211,-0.167156890136 +0.701,1.24634193155,-0.167940553561 +0.702,1.24617320932,-0.168722230675 +0.703,1.24600370739,-0.169501931064 +0.704,1.24583342773,-0.170279664297 +0.705,1.24566237229,-0.17105543992 +0.706,1.24549054302,-0.171829267461 +0.707,1.24531794187,-0.172601156427 +0.708,1.24514457075,-0.173371116306 +0.709,1.24497043159,-0.174139156565 +0.71,1.24479552631,-0.174905286653 +0.711,1.24461985679,-0.175669515998 +0.712,1.24444342494,-0.176431854006 +0.713,1.24426623263,-0.177192310064 +0.714,1.24408828173,-0.177950893542 +0.715,1.24390957412,-0.178707613784 +0.716,1.24373011164,-0.179462480119 +0.717,1.24354989614,-0.180215501852 +0.718,1.24336892945,-0.180966688269 +0.719,1.2431872134,-0.181716048638 +0.72,1.24300474981,-0.182463592202 +0.721,1.24282154048,-0.183209328186 +0.722,1.24263758721,-0.183953265796 +0.723,1.2424528918,-0.184695414216 +0.724,1.24226745602,-0.185435782609 +0.725,1.24208128164,-0.186174380117 +0.726,1.24189437042,-0.186911215865 +0.727,1.24170672412,-0.187646298952 +0.728,1.24151834448,-0.188379638462 +0.729,1.24132923324,-0.189111243455 +0.73,1.24113939212,-0.18984112297 +0.731,1.24094882283,-0.190569286028 +0.732,1.24075752709,-0.191295741628 +0.733,1.24056550659,-0.192020498748 +0.734,1.24037276302,-0.192743566345 +0.735,1.24017929807,-0.193464953356 +0.736,1.2399851134,-0.194184668699 +0.737,1.23979021068,-0.194902721268 +0.738,1.23959459156,-0.195619119938 +0.739,1.23939825769,-0.196333873565 +0.74,1.2392012107,-0.197046990981 +0.741,1.23900345221,-0.197758480999 +0.742,1.23880498386,-0.198468352412 +0.743,1.23860580725,-0.199176613991 +0.744,1.23840592397,-0.199883274487 +0.745,1.23820533563,-0.200588342631 +0.746,1.2380040438,-0.201291827132 +0.747,1.23780205007,-0.201993736679 +0.748,1.23759935599,-0.20269407994 +0.749,1.23739596312,-0.203392865563 +0.75,1.23719187302,-0.204090102175 +0.751,1.23698708722,-0.204785798382 +0.752,1.23678160726,-0.20547996277 +0.753,1.23657543465,-0.206172603904 +0.754,1.23636857092,-0.206863730329 +0.755,1.23616101757,-0.207553350569 +0.756,1.2359527761,-0.208241473127 +0.757,1.23574384799,-0.208928106487 +0.758,1.23553423474,-0.20961325911 +0.759,1.2353239378,-0.21029693944 +0.76,1.23511295864,-0.210979155896 +0.761,1.23490129872,-0.211659916882 +0.762,1.23468895949,-0.212339230776 +0.763,1.23447594239,-0.21301710594 +0.764,1.23426224884,-0.213693550713 +0.765,1.23404788026,-0.214368573414 +0.766,1.23383283808,-0.215042182344 +0.767,1.23361712369,-0.215714385781 +0.768,1.2334007385,-0.216385191984 +0.769,1.23318368389,-0.217054609191 +0.77,1.23296596125,-0.21772264562 +0.771,1.23274757194,-0.21838930947 +0.772,1.23252851733,-0.219054608919 +0.773,1.23230879878,-0.219718552123 +0.774,1.23208841763,-0.220381147222 +0.775,1.23186737523,-0.221042402333 +0.776,1.2316456729,-0.221702325553 +0.777,1.23142331198,-0.222360924961 +0.778,1.23120029377,-0.223018208615 +0.779,1.23097661958,-0.223674184551 +0.78,1.23075229072,-0.224328860789 +0.781,1.23052730848,-0.224982245328 +0.782,1.23030167413,-0.225634346144 +0.783,1.23007538896,-0.226285171198 +0.784,1.22984845423,-0.226934728428 +0.785,1.22962087121,-0.227583025755 +0.786,1.22939264113,-0.228230071077 +0.787,1.22916376526,-0.228875872276 +0.788,1.22893424483,-0.229520437212 +0.789,1.22870408105,-0.230163773727 +0.79,1.22847327516,-0.230805889643 +0.791,1.22824182837,-0.231446792762 +0.792,1.22800974188,-0.232086490869 +0.793,1.22777701689,-0.232724991726 +0.794,1.22754365458,-0.233362303079 +0.795,1.22730965615,-0.233998432654 +0.796,1.22707502276,-0.234633388157 +0.797,1.22683975559,-0.235267177276 +0.798,1.22660385578,-0.235899807679 +0.799,1.22636732449,-0.236531287016 +0.8,1.22613016287,-0.237161622918 +0.801,1.22589237204,-0.237790822996 +0.802,1.22565395315,-0.238418894843 +0.803,1.2254149073,-0.239045846034 +0.804,1.22517523562,-0.239671684124 +0.805,1.2249349392,-0.240296416651 +0.806,1.22469401915,-0.240920051132 +0.807,1.22445247656,-0.241542595068 +0.808,1.2242103125,-0.242164055939 +0.809,1.22396752806,-0.24278444121 +0.81,1.2237241243,-0.243403758324 +0.811,1.22348010229,-0.244022014708 +0.812,1.22323546307,-0.24463921777 +0.813,1.22299020769,-0.245255374901 +0.814,1.2227443372,-0.245870493472 +0.815,1.22249785262,-0.246484580836 +0.816,1.22225075498,-0.247097644331 +0.817,1.22200304528,-0.247709691273 +0.818,1.22175472456,-0.248320728963 +0.819,1.22150579379,-0.248930764684 +0.82,1.22125625398,-0.2495398057 +0.821,1.22100610613,-0.250147859258 +0.822,1.22075535119,-0.250754932587 +0.823,1.22050399016,-0.251361032899 +0.824,1.22025202399,-0.251966167389 +0.825,1.21999945365,-0.252570343234 +0.826,1.21974628008,-0.253173567593 +0.827,1.21949250423,-0.253775847609 +0.828,1.21923812704,-0.254377190406 +0.829,1.21898314944,-0.254977603094 +0.83,1.21872757235,-0.255577092763 +0.831,1.21847139668,-0.256175666487 +0.832,1.21821462335,-0.256773331323 +0.833,1.21795725326,-0.257370094311 +0.834,1.21769928729,-0.257965962476 +0.835,1.21744072635,-0.258560942823 +0.836,1.21718157131,-0.259155042344 +0.837,1.21692182304,-0.259748268011 +0.838,1.21666148241,-0.260340626781 +0.839,1.21640055029,-0.260932125596 +0.84,1.21613902752,-0.26152277138 +0.841,1.21587691495,-0.26211257104 +0.842,1.21561421341,-0.262701531469 +0.843,1.21535092375,-0.263289659541 +0.844,1.21508704679,-0.263876962118 +0.845,1.21482258335,-0.264463446042 +0.846,1.21455753423,-0.265049118142 +0.847,1.21429190024,-0.265633985228 +0.848,1.21402568219,-0.266218054098 +0.849,1.21375888086,-0.266801331532 +0.85,1.21349149703,-0.267383824294 +0.851,1.21322353149,-0.267965539134 +0.852,1.21295498501,-0.268546482786 +0.853,1.21268585835,-0.269126661968 +0.854,1.21241615227,-0.269706083383 +0.855,1.21214586751,-0.27028475372 +0.856,1.21187500483,-0.270862679651 +0.857,1.21160356496,-0.271439867833 +0.858,1.21133154864,-0.27201632491 +0.859,1.21105895658,-0.272592057509 +0.86,1.21078578951,-0.273167072244 +0.861,1.21051204813,-0.273741375712 +0.862,1.21023773316,-0.274314974497 +0.863,1.20996284528,-0.274887875168 +0.864,1.2096873852,-0.275460084279 +0.865,1.20941135359,-0.27603160837 +0.866,1.20913475114,-0.276602453967 +0.867,1.20885757851,-0.27717262758 +0.868,1.20857983637,-0.277742135708 +0.869,1.20830152539,-0.278310984833 +0.87,1.20802264621,-0.278879181424 +0.871,1.20774319948,-0.279446731936 +0.872,1.20746318583,-0.280013642809 +0.873,1.20718260591,-0.280579920472 +0.874,1.20690146034,-0.281145571338 +0.875,1.20661974974,-0.281710601806 +0.876,1.20633747472,-0.282275018263 +0.877,1.20605463589,-0.282838827082 +0.878,1.20577123386,-0.283402034623 +0.879,1.20548726921,-0.283964647231 +0.88,1.20520274254,-0.28452667124 +0.881,1.20491765443,-0.285088112969 +0.882,1.20463200545,-0.285648978725 +0.883,1.20434579617,-0.286209274802 +0.884,1.20405902717,-0.286769007481 +0.885,1.20377169898,-0.28732818303 +0.886,1.20348381218,-0.287886807704 +0.887,1.20319536729,-0.288444887746 +0.888,1.20290636486,-0.289002429386 +0.889,1.20261680542,-0.289559438842 +0.89,1.2023266895,-0.29011592232 +0.891,1.20203601761,-0.290671886011 +0.892,1.20174479028,-0.291227336098 +0.893,1.201453008,-0.291782278749 +0.894,1.20116067128,-0.292336720119 +0.895,1.20086778061,-0.292890666355 +0.896,1.20057433649,-0.293444123589 +0.897,1.20028033939,-0.293997097942 +0.898,1.19998578979,-0.294549595522 +0.899,1.19969068817,-0.295101622429 +0.9,1.19939503499,-0.295653184748 +0.901,1.1990988307,-0.296204288553 +0.902,1.19880207576,-0.296754939909 +0.903,1.19850477061,-0.297305144867 +0.904,1.1982069157,-0.297854909468 +0.905,1.19790851146,-0.298404239742 +0.906,1.19760955832,-0.298953141708 +0.907,1.1973100567,-0.299501621374 +0.908,1.19701000702,-0.300049684737 +0.909,1.19670940968,-0.300597337782 +0.91,1.19640826509,-0.301144586487 +0.911,1.19610657366,-0.301691436815 +0.912,1.19580433576,-0.302237894722 +0.913,1.19550155179,-0.302783966152 +0.914,1.19519822214,-0.303329657038 +0.915,1.19489434716,-0.303874973305 +0.916,1.19458992724,-0.304419920866 +0.917,1.19428496274,-0.304964505624 +0.918,1.193979454,-0.305508733473 +0.919,1.19367340139,-0.306052610297 +0.92,1.19336680525,-0.30659614197 +0.921,1.19305966592,-0.307139334356 +0.922,1.19275198372,-0.30768219331 +0.923,1.192443759,-0.308224724676 +0.924,1.19213499207,-0.308766934291 +0.925,1.19182568324,-0.309308827982 +0.926,1.19151583283,-0.309850411564 +0.927,1.19120544113,-0.310391690847 +0.928,1.19089450846,-0.310932671629 +0.929,1.1905830351,-0.311473359701 +0.93,1.19027102134,-0.312013760843 +0.931,1.18995846746,-0.312553880828 +0.932,1.18964537374,-0.313093725419 +0.933,1.18933174044,-0.313633300372 +0.934,1.18901756782,-0.314172611433 +0.935,1.18870285616,-0.314711664341 +0.936,1.1883876057,-0.315250464825 +0.937,1.18807181668,-0.315789018606 +0.938,1.18775548935,-0.316327331399 +0.939,1.18743862394,-0.316865408908 +0.94,1.18712122068,-0.317403256831 +0.941,1.1868032798,-0.317940880858 +0.942,1.18648480151,-0.318478286669 +0.943,1.18616578603,-0.31901547994 +0.944,1.18584623357,-0.319552466336 +0.945,1.18552614431,-0.320089251517 +0.946,1.18520551847,-0.320625841134 +0.947,1.18488435623,-0.321162240832 +0.948,1.18456265778,-0.321698456246 +0.949,1.18424042328,-0.322234493008 +0.95,1.18391765293,-0.32277035674 +0.951,1.18359434687,-0.323306053057 +0.952,1.18327050529,-0.323841587569 +0.953,1.18294612832,-0.324376965878 +0.954,1.18262121613,-0.324912193579 +0.955,1.18229576885,-0.325447276261 +0.956,1.18196978663,-0.325982219507 +0.957,1.1816432696,-0.326517028893 +0.958,1.18131621789,-0.327051709988 +0.959,1.18098863162,-0.327586268357 +0.96,1.18066051091,-0.328120709556 +0.961,1.18033185587,-0.328655039137 +0.962,1.18000266661,-0.329189262645 +0.963,1.17967294323,-0.32972338562 +0.964,1.17934268581,-0.330257413595 +0.965,1.17901189446,-0.3307913521 +0.966,1.17868056925,-0.331325206657 +0.967,1.17834871027,-0.331858982783 +0.968,1.17801631759,-0.332392685989 +0.969,1.17768339126,-0.332926321783 +0.97,1.17734993137,-0.333459895666 +0.971,1.17701593795,-0.333993413133 +0.972,1.17668141108,-0.334526879678 +0.973,1.17634635077,-0.335060300785 +0.974,1.17601075709,-0.335593681937 +0.975,1.17567463006,-0.336127028611 +0.976,1.17533796972,-0.336660346278 +0.977,1.17500077608,-0.337193640407 +0.978,1.17466304916,-0.337726916461 +0.979,1.17432478898,-0.3382601799 +0.98,1.17398599554,-0.338793436178 +0.981,1.17364666885,-0.339326690746 +0.982,1.1733068089,-0.33985994905 +0.983,1.17296641569,-0.340393216534 +0.984,1.17262548919,-0.340926498636 +0.985,1.17228402939,-0.341459800791 +0.986,1.17194203626,-0.341993128432 +0.987,1.17159950977,-0.342526486986 +0.988,1.17125644989,-0.343059881878 +0.989,1.17091285657,-0.343593318528 +0.99,1.17056872977,-0.344126802356 +0.991,1.17022406943,-0.344660338775 +0.992,1.1698788755,-0.345193933197 +0.993,1.16953314791,-0.345727591031 +0.994,1.16918688659,-0.346261317683 +0.995,1.16884009147,-0.346795118557 +0.996,1.16849276247,-0.347328999051 +0.997,1.16814489951,-0.347862964565 +0.998,1.16779650249,-0.348397020494 +0.999,1.16744757132,-0.34893117223 +1.,1.16709810589,-0.349465425164 +1.001,1.16674810611,-0.349999784686 +1.002,1.16639757185,-0.35053425618 +1.003,1.166046503,-0.351068845033 +1.004,1.16569489945,-0.351603556625 +1.005,1.16534276105,-0.352138396339 +1.006,1.16499008768,-0.352673369553 +1.007,1.1646368792,-0.353208481645 +1.008,1.16428313546,-0.35374373799 +1.009,1.16392885632,-0.354279143963 +1.01,1.16357404161,-0.354814704938 +1.011,1.16321869119,-0.355350426287 +1.012,1.16286280487,-0.35588631338 +1.013,1.1625063825,-0.356422371588 +1.014,1.1621494239,-0.35695860628 +1.015,1.16179192887,-0.357495022825 +1.016,1.16143389725,-0.358031626589 +1.017,1.16107532882,-0.35856842294 +1.018,1.16071622341,-0.359105417245 +1.019,1.16035658079,-0.35964261487 +1.02,1.15999640077,-0.36018002118 +1.021,1.15963568313,-0.360717641542 +1.022,1.15927442765,-0.361255481322 +1.023,1.1589126341,-0.361793545884 +1.024,1.15855030226,-0.362331840594 +1.025,1.15818743189,-0.36287037082 +1.026,1.15782402275,-0.363409141926 +1.027,1.15746007459,-0.363948159281 +1.028,1.15709558716,-0.36448742825 +1.029,1.15673056021,-0.365026954203 +1.03,1.15636499346,-0.365566742507 +1.031,1.15599888666,-0.366106798533 +1.032,1.15563223954,-0.36664712765 +1.033,1.1552650518,-0.367187735231 +1.034,1.15489732318,-0.367728626648 +1.035,1.15452905337,-0.368269807275 +1.036,1.15416024209,-0.368811282487 +1.037,1.15379088903,-0.369353057662 +1.038,1.15342099389,-0.369895138177 +1.039,1.15305055636,-0.370437529412 +1.04,1.15267957612,-0.370980236749 +1.041,1.15230805286,-0.371523265573 +1.042,1.15193598624,-0.372066621268 +1.043,1.15156337593,-0.372610309222 +1.044,1.15119022159,-0.373154334826 +1.045,1.15081652289,-0.373698703472 +1.046,1.15044227947,-0.374243420554 +1.047,1.15006749098,-0.374788491469 +1.048,1.14969215706,-0.375333921619 +1.049,1.14931627734,-0.375879716404 +1.05,1.14893985146,-0.376425881231 +1.051,1.14856287904,-0.376972421508 +1.052,1.14818535969,-0.377519342647 +1.053,1.14780729304,-0.378066650062 +1.054,1.14742867869,-0.378614349171 +1.055,1.14704951625,-0.379162445395 +1.056,1.14666980531,-0.37971094416 +1.057,1.14628954545,-0.380259850893 +1.058,1.14590873628,-0.380809171027 +1.059,1.14552737737,-0.381358909998 +1.06,1.1451454683,-0.381909073245 +1.061,1.14476300863,-0.382459666213 +1.062,1.14437999794,-0.38301069435 +1.063,1.14399643578,-0.383562163108 +1.064,1.1436123217,-0.384114077943 +1.065,1.14322765525,-0.384666444318 +1.066,1.14284243599,-0.385219267697 +1.067,1.14245666343,-0.385772553551 +1.068,1.14207033713,-0.386326307357 +1.069,1.14168345659,-0.386880534593 +1.07,1.14129602135,-0.387435240745 +1.071,1.14090803092,-0.387990431305 +1.072,1.14051948481,-0.388546111767 +1.073,1.14013038252,-0.389102287632 +1.074,1.13974072355,-0.389658964409 +1.075,1.13935050741,-0.390216147608 +1.076,1.13895973356,-0.390773842747 +1.077,1.13856840151,-0.391332055352 +1.078,1.13817651072,-0.391890790951 +1.079,1.13778406066,-0.39245005508 +1.08,1.13739105081,-0.393009853281 +1.081,1.13699748062,-0.393570191104 +1.082,1.13660334954,-0.394131074102 +1.083,1.13620865704,-0.394692507837 +1.084,1.13581340254,-0.395254497878 +1.085,1.13541758549,-0.395817049798 +1.086,1.13502120532,-0.39638016918 +1.087,1.13462426146,-0.396943861612 +1.088,1.13422675333,-0.39750813269 +1.089,1.13382868034,-0.398072988018 +1.09,1.1334300419,-0.398638433205 +1.091,1.13303083743,-0.39920447387 +1.092,1.13263106631,-0.399771115639 +1.093,1.13223072795,-0.400338364143 +1.094,1.13182982173,-0.400906225026 +1.095,1.13142834702,-0.401474703935 +1.096,1.13102630322,-0.402043806529 +1.097,1.13062368968,-0.402613538471 +1.098,1.13022050577,-0.403183905437 +1.099,1.12981675086,-0.403754913108 +1.1,1.12941242429,-0.404326567176 +1.101,1.12900752542,-0.404898873339 +1.102,1.12860205358,-0.405471837306 +1.103,1.12819600812,-0.406045464794 +1.104,1.12778938835,-0.406619761529 +1.105,1.12738219362,-0.407194733248 +1.106,1.12697442324,-0.407770385695 +1.107,1.12656607651,-0.408346724624 +1.108,1.12615715275,-0.4089237558 +1.109,1.12574765127,-0.409501484995 +1.11,1.12533757135,-0.410079917994 +1.111,1.12492691229,-0.410659060589 +1.112,1.12451567337,-0.411238918584 +1.113,1.12410385387,-0.411819497794 +1.114,1.12369145307,-0.412400804041 +1.115,1.12327847023,-0.412982843161 +1.116,1.12286490461,-0.413565620998 +1.117,1.12245075546,-0.414149143409 +1.118,1.12203602205,-0.41473341626 +1.119,1.1216207036,-0.415318445429 +1.12,1.12120479936,-0.415904236805 +1.121,1.12078830857,-0.416490796287 +1.122,1.12037123044,-0.417078129788 +1.123,1.1199535642,-0.417666243231 +1.124,1.11953530905,-0.418255142549 +1.125,1.11911646422,-0.418844833691 +1.126,1.1186970289,-0.419435322613 +1.127,1.11827700228,-0.420026615286 +1.128,1.11785638356,-0.420618717694 +1.129,1.11743517193,-0.421211635831 +1.13,1.11701336655,-0.421805375705 +1.131,1.11659096661,-0.422399943335 +1.132,1.11616797126,-0.422995344755 +1.133,1.11574437968,-0.42359158601 +1.134,1.115320191,-0.424188673159 +1.135,1.11489540439,-0.424786612274 +1.136,1.11447001898,-0.425385409439 +1.137,1.11404403391,-0.425985070755 +1.138,1.11361744831,-0.426585602332 +1.139,1.1131902613,-0.427187010298 +1.14,1.112762472,-0.427789300791 +1.141,1.11233407952,-0.428392479965 +1.142,1.11190508296,-0.428996553989 +1.143,1.11147548144,-0.429601529044 +1.144,1.11104527402,-0.430207411328 +1.145,1.11061445982,-0.430814207052 +1.146,1.1101830379,-0.431421922441 +1.147,1.10975100733,-0.432030563737 +1.148,1.10931836719,-0.432640137195 +1.149,1.10888511655,-0.433250649087 +1.15,1.10845125444,-0.433862105699 +1.151,1.10801677993,-0.434474513333 +1.152,1.10758169205,-0.435087878306 +1.153,1.10714598984,-0.435702206951 +1.154,1.10670967234,-0.436317505619 +1.155,1.10627273855,-0.436933780674 +1.156,1.10583518752,-0.437551038497 +1.157,1.10539701823,-0.438169285486 +1.158,1.1049582297,-0.438788528056 +1.159,1.10451882093,-0.439408772638 +1.16,1.1040787909,-0.440030025679 +1.161,1.10363813861,-0.440652293645 +1.162,1.10319686303,-0.441275583018 +1.163,1.10275496313,-0.441899900296 +1.164,1.10231243788,-0.442525251997 +1.165,1.10186928623,-0.443151644655 +1.166,1.10142550715,-0.443779084822 +1.167,1.10098109957,-0.444407579068 +1.168,1.10053606243,-0.445037133982 +1.169,1.10009039468,-0.44566775617 +1.17,1.09964409522,-0.446299452256 +1.171,1.099197163,-0.446932228885 +1.172,1.0987495969,-0.447566092718 +1.173,1.09830139585,-0.448201050437 +1.174,1.09785255874,-0.448837108742 +1.175,1.09740308447,-0.449474274352 +1.176,1.09695297192,-0.450112554006 +1.177,1.09650221996,-0.450751954463 +1.178,1.09605082748,-0.4513924825 +1.179,1.09559879333,-0.452034144916 +1.18,1.09514611638,-0.452676948529 +1.181,1.09469279548,-0.453320900177 +1.182,1.09423882948,-0.45396600672 +1.183,1.0937842172,-0.454612275035 +1.184,1.09332895749,-0.455259712024 +1.185,1.09287304917,-0.455908324608 +1.186,1.09241649105,-0.456558119729 +1.187,1.09195928194,-0.457209104351 +1.188,1.09150142066,-0.457861285458 +1.189,1.09104290599,-0.458514670057 +1.19,1.09058373672,-0.459169265176 +1.191,1.09012391164,-0.459825077866 +1.192,1.08966342953,-0.4604821152 +1.193,1.08920228914,-0.461140384273 +1.194,1.08874048925,-0.461799892201 +1.195,1.08827802861,-0.462460646126 +1.196,1.08781490595,-0.46312265321 +1.197,1.08735112003,-0.46378592064 +1.198,1.08688666958,-0.464450455625 +1.199,1.08642155331,-0.465116265398 +1.2,1.08595576995,-0.465783357216 +1.201,1.08548931822,-0.466451738359 +1.202,1.0850221968,-0.467121416132 +1.203,1.0845544044,-0.467792397864 +1.204,1.08408593971,-0.468464690907 +1.205,1.08361680141,-0.469138302639 +1.206,1.08314698817,-0.469813240463 +1.207,1.08267649866,-0.470489511807 +1.208,1.08220533153,-0.471167124123 +1.209,1.08173348545,-0.471846084888 +1.21,1.08126095904,-0.472526401608 +1.211,1.08078775096,-0.473208081811 +1.212,1.08031385983,-0.473891133052 +1.213,1.07983928427,-0.474575562913 +1.214,1.07936402289,-0.475261379003 +1.215,1.0788880743,-0.475948588955 +1.216,1.0784114371,-0.476637200432 +1.217,1.07793410988,-0.47732722112 +1.218,1.07745609122,-0.478018658737 +1.219,1.0769773797,-0.478711521024 +1.22,1.07649797388,-0.479405815752 +1.221,1.07601787233,-0.48010155072 +1.222,1.0755370736,-0.480798733753 +1.223,1.07505557622,-0.481497372708 +1.224,1.07457337875,-0.482197475465 +1.225,1.0740904797,-0.482899049938 +1.226,1.0736068776,-0.483602104067 +1.227,1.07312257095,-0.484306645822 +1.228,1.07263755827,-0.485012683201 +1.229,1.07215183804,-0.485720224233 +1.23,1.07166540877,-0.486429276977 +1.231,1.07117826892,-0.48713984952 +1.232,1.07069041697,-0.487851949982 +1.233,1.07020185138,-0.488565586511 +1.234,1.06971257061,-0.489280767287 +1.235,1.06922257311,-0.48999750052 +1.236,1.06873185732,-0.490715794451 +1.237,1.06824042166,-0.491435657354 +1.238,1.06774826456,-0.492157097534 +1.239,1.06725538444,-0.492880123325 +1.24,1.0667617797,-0.493604743097 +1.241,1.06626744873,-0.49433096525 +1.242,1.06577238993,-0.495058798217 +1.243,1.06527660168,-0.495788250464 +1.244,1.06478008235,-0.49651933049 +1.245,1.0642828303,-0.497252046826 +1.246,1.0637848439,-0.497986408038 +1.247,1.06328612147,-0.498722422724 +1.248,1.06278666137,-0.499460099519 +1.249,1.06228646193,-0.500199447089 +1.25,1.06178552145,-0.500940474135 +1.251,1.06128383826,-0.501683189395 +1.252,1.06078141066,-0.502427601639 +1.253,1.06027823694,-0.503173719673 +1.254,1.05977431539,-0.503921552341 +1.255,1.05926964428,-0.504671108518 +1.256,1.05876422188,-0.505422397119 +1.257,1.05825804646,-0.506175427094 +1.258,1.05775111625,-0.506930207428 +1.259,1.0572434295,-0.507686747144 +1.26,1.05673498445,-0.508445055303 +1.261,1.05622577931,-0.509205141001 +1.262,1.05571581229,-0.509967013373 +1.263,1.05520508161,-0.510730681592 +1.264,1.05469358546,-0.511496154867 +1.265,1.05418132201,-0.512263442448 +1.266,1.05366828946,-0.513032553622 +1.267,1.05315448596,-0.513803497715 +1.268,1.05263990968,-0.514576284092 +1.269,1.05212455876,-0.515350922159 +1.27,1.05160843133,-0.516127421359 +1.271,1.05109152554,-0.516905791178 +1.272,1.0505738395,-0.51768604114 +1.273,1.05005537132,-0.518468180809 +1.274,1.0495361191,-0.519252219793 +1.275,1.04901608093,-0.520038167739 +1.276,1.0484952549,-0.520826034334 +1.277,1.04797363907,-0.521615829309 +1.278,1.04745123151,-0.522407562437 +1.279,1.04692803026,-0.523201243531 +1.28,1.04640403338,-0.52399688245 +1.281,1.04587923889,-0.524794489093 +1.282,1.04535364482,-0.525594073403 +1.283,1.04482724917,-0.526395645367 +1.284,1.04430004996,-0.527199215015 +1.285,1.04377204517,-0.528004792421 +1.286,1.04324323278,-0.528812387706 +1.287,1.04271361077,-0.529622011031 +1.288,1.0421831771,-0.530433672607 +1.289,1.04165192971,-0.531247382686 +1.29,1.04111986656,-0.532063151568 +1.291,1.04058698557,-0.532880989599 +1.292,1.04005328466,-0.533700907171 +1.293,1.03951876175,-0.534522914722 +1.294,1.03898341473,-0.535347022738 +1.295,1.03844724149,-0.53617324175 +1.296,1.0379102399,-0.53700158234 +1.297,1.03737240785,-0.537832055135 +1.298,1.03683374318,-0.538664670812 +1.299,1.03629424374,-0.539499440096 +1.3,1.03575390736,-0.54033637376 +1.301,1.03521273188,-0.541175482627 +1.302,1.0346707151,-0.542016777571 +1.303,1.03412785483,-0.542860269515 +1.304,1.03358414886,-0.543705969429 +1.305,1.03303959498,-0.54455388834 +1.306,1.03249419094,-0.54540403732 +1.307,1.03194793451,-0.546256427496 +1.308,1.03140082344,-0.547111070046 +1.309,1.03085285546,-0.547967976199 +1.31,1.03030402831,-0.548827157236 +1.311,1.02975433968,-0.549688624494 +1.312,1.02920378729,-0.55055238936 +1.313,1.02865236883,-0.551418463274 +1.314,1.02810008197,-0.552286857734 +1.315,1.02754692439,-0.553157584287 +1.316,1.02699289373,-0.554030654539 +1.317,1.02643798765,-0.554906080148 +1.318,1.02588220378,-0.555783872829 +1.319,1.02532553974,-0.556664044352 +1.32,1.02476799313,-0.557546606544 +1.321,1.02420956156,-0.558431571287 +1.322,1.02365024261,-0.559318950522 +1.323,1.02309003385,-0.560208756245 +1.324,1.02252893285,-0.561101000512 +1.325,1.02196693716,-0.561995695435 +1.326,1.0214040443,-0.562892853186 +1.327,1.02084025182,-0.563792485996 +1.328,1.02027555721,-0.564694606153 +1.329,1.01970995798,-0.565599226008 +1.33,1.01914345163,-0.566506357969 +1.331,1.01857603561,-0.567416014507 +1.332,1.0180077074,-0.568328208153 +1.333,1.01743846445,-0.569242951499 +1.334,1.0168683042,-0.5701602572 +1.335,1.01629722406,-0.571080137971 +1.336,1.01572522145,-0.572002606593 +1.337,1.01515229377,-0.572927675906 +1.338,1.01457843842,-0.573855358817 +1.339,1.01400365275,-0.574785668296 +1.34,1.01342793413,-0.575718617376 +1.341,1.01285127991,-0.576654219156 +1.342,1.01227368742,-0.5775924868 +1.343,1.01169515399,-0.578533433538 +1.344,1.01111567692,-0.579477072667 +1.345,1.0105352535,-0.580423417549 +1.346,1.00995388102,-0.581372481614 +1.347,1.00937155674,-0.582324278358 +1.348,1.00878827792,-0.583278821349 +1.349,1.00820404179,-0.584236124218 +1.35,1.00761884559,-0.585196200671 +1.351,1.00703268653,-0.586159064477 +1.352,1.0064455618,-0.587124729481 +1.353,1.00585746859,-0.588093209594 +1.354,1.00526840407,-0.589064518801 +1.355,1.0046783654,-0.590038671155 +1.356,1.00408734972,-0.591015680784 +1.357,1.00349535416,-0.591995561887 +1.358,1.00290237583,-0.592978328736 +1.359,1.00230841183,-0.593963995677 +1.36,1.00171345926,-0.594952577128 +1.361,1.00111751517,-0.595944087584 +1.362,1.00052057663,-0.596938541612 +1.363,0.999922640673,-0.597935953857 +1.364,0.999323704334,-0.598936339039 +1.365,0.998723764622,-0.599939711954 +1.366,0.998122818535,-0.600946087476 +1.367,0.997520863054,-0.601955480555 +1.368,0.996917895148,-0.60296790622 +1.369,0.996313911769,-0.60398337958 +1.37,0.995708909853,-0.605001915819 +1.371,0.995102886323,-0.606023530206 +1.372,0.994495838085,-0.607048238086 +1.373,0.99388776203,-0.608076054887 +1.374,0.993278655034,-0.609106996117 +1.375,0.992668513956,-0.610141077368 +1.376,0.992057335642,-0.611178314313 +1.377,0.991445116919,-0.612218722707 +1.378,0.990831854601,-0.61326231839 +1.379,0.990217545483,-0.614309117288 +1.38,0.989602186348,-0.615359135407 +1.381,0.988985773959,-0.616412388843 +1.382,0.988368305065,-0.617468893776 +1.383,0.987749776399,-0.618528666473 +1.384,0.987130184676,-0.619591723288 +1.385,0.986509526595,-0.620658080661 +1.386,0.98588779884,-0.621727755124 +1.387,0.985264998077,-0.622800763296 +1.388,0.984641120955,-0.623877121885 +1.389,0.984016164107,-0.624956847691 +1.39,0.983390124149,-0.626039957603 +1.391,0.982762997681,-0.627126468602 +1.392,0.982134781283,-0.628216397763 +1.393,0.981505471521,-0.629309762251 +1.394,0.980875064941,-0.630406579326 +1.395,0.980243558075,-0.631506866342 +1.396,0.979610947434,-0.632610640748 +1.397,0.978977229514,-0.633717920088 +1.398,0.978342400792,-0.634828722001 +1.399,0.977706457728,-0.635943064225 +1.4,0.977069396763,-0.637060964594 +1.401,0.976431214322,-0.63818244104 +1.402,0.975791906811,-0.639307511593 +1.403,0.975151470616,-0.640436194386 +1.404,0.974509902109,-0.641568507648 +1.405,0.973867197639,-0.64270446971 +1.406,0.97322335354,-0.643844099007 +1.407,0.972578366126,-0.644987414074 +1.408,0.971932231692,-0.646134433549 +1.409,0.971284946516,-0.647285176174 +1.41,0.970636506856,-0.648439660796 +1.411,0.969986908949,-0.649597906367 +1.412,0.969336149017,-0.650759931945 +1.413,0.968684223261,-0.651925756694 +1.414,0.968031127861,-0.653095399886 +1.415,0.96737685898,-0.654268880901 +1.416,0.96672141276,-0.655446219228 +1.417,0.966064785326,-0.656627434466 +1.418,0.96540697278,-0.657812546324 +1.419,0.964747971205,-0.659001574622 +1.42,0.964087776666,-0.660194539294 +1.421,0.963426385205,-0.661391460384 +1.422,0.962763792847,-0.662592358051 +1.423,0.962099995595,-0.663797252569 +1.424,0.96143498943,-0.665006164326 +1.425,0.960768770317,-0.666219113828 +1.426,0.960101334195,-0.667436121695 +1.427,0.959432676986,-0.668657208667 +1.428,0.958762794591,-0.669882395603 +1.429,0.958091682887,-0.671111703478 +1.43,0.957419337734,-0.67234515339 +1.431,0.956745754967,-0.673582766559 +1.432,0.956070930403,-0.674824564324 +1.433,0.955394859835,-0.676070568149 +1.434,0.954717539035,-0.677320799621 +1.435,0.954038963755,-0.678575280451 +1.436,0.953359129722,-0.679834032476 +1.437,0.952678032645,-0.68109707766 +1.438,0.951995668206,-0.682364438092 +1.439,0.95131203207,-0.683636135992 +1.44,0.950627119877,-0.684912193707 +1.441,0.949940927243,-0.686192633715 +1.442,0.949253449764,-0.687477478625 +1.443,0.948564683013,-0.688766751176 +1.444,0.947874622539,-0.690060474242 +1.445,0.947183263868,-0.69135867083 +1.446,0.946490602504,-0.692661364082 +1.447,0.945796633927,-0.693968577274 +1.448,0.945101353593,-0.695280333821 +1.449,0.944404756936,-0.696596657274 +1.45,0.943706839364,-0.697917571323 +1.451,0.943007596265,-0.699243099797 +1.452,0.942307022998,-0.700573266668 +1.453,0.941605114902,-0.701908096045 +1.454,0.94090186729,-0.703247612184 +1.455,0.94019727545,-0.704591839483 +1.456,0.939491334648,-0.705940802485 +1.457,0.938784040122,-0.707294525877 +1.458,0.938075387087,-0.708653034495 +1.459,0.937365370734,-0.710016353321 +1.46,0.936653986227,-0.711384507488 +1.461,0.935941228704,-0.712757522277 +1.462,0.935227093281,-0.714135423121 +1.463,0.934511575046,-0.715518235605 +1.464,0.93379466906,-0.716905985467 +1.465,0.933076370361,-0.718298698599 +1.466,0.93235667396,-0.719696401049 +1.467,0.931635574841,-0.721099119021 +1.468,0.930913067963,-0.722506878878 +1.469,0.930189148255,-0.72391970714 +1.47,0.929463810625,-0.72533763049 +1.471,0.928737049949,-0.726760675767 +1.472,0.928008861079,-0.728188869978 +1.473,0.927279238839,-0.729622240291 +1.474,0.926548178025,-0.731060814036 +1.475,0.925815673406,-0.732504618715 +1.476,0.925081719724,-0.733953681991 +1.477,0.924346311692,-0.735408031699 +1.478,0.923609443997,-0.736867695843 +1.479,0.922871111294,-0.738332702597 +1.48,0.922131308214,-0.739803080307 +1.481,0.921390029356,-0.741278857493 +1.482,0.920647269293,-0.74276006285 +1.483,0.919903022568,-0.744246725246 +1.484,0.919157283694,-0.74573887373 +1.485,0.918410047157,-0.747236537527 +1.486,0.917661307411,-0.748739746042 +1.487,0.916911058882,-0.750248528861 +1.488,0.916159295966,-0.751762915754 +1.489,0.91540601303,-0.753282936673 +1.49,0.914651204408,-0.754808621754 +1.491,0.913894864406,-0.756340001323 +1.492,0.913136987301,-0.75787710589 +1.493,0.912377567334,-0.759419966157 +1.494,0.911616598721,-0.760968613015 +1.495,0.910854075644,-0.762523077547 +1.496,0.910089992253,-0.76408339103 +1.497,0.909324342668,-0.765649584935 +1.498,0.908557120977,-0.767221690931 +1.499,0.907788321236,-0.768799740882 +1.5,0.907017937469,-0.770383766854 +1.501,0.906245963668,-0.771973801112 +1.502,0.905472393792,-0.773569876122 +1.503,0.904697221767,-0.775172024557 +1.504,0.903920441488,-0.776780279291 +1.505,0.903142046815,-0.778394673408 +1.506,0.902362031575,-0.780015240199 +1.507,0.901580389561,-0.781642013164 +1.508,0.900797114535,-0.783275026015 +1.509,0.900012200223,-0.784914312676 +1.51,0.899225640315,-0.786559907288 +1.511,0.898437428471,-0.788211844204 +1.512,0.897647558313,-0.789870157999 +1.513,0.89685602343,-0.791534883463 +1.514,0.896062817374,-0.79320605561 +1.515,0.895267933664,-0.794883709675 +1.516,0.894471365783,-0.796567881118 +1.517,0.893673107178,-0.798258605624 +1.518,0.892873151259,-0.799955919106 +1.519,0.892071491401,-0.801659857707 +1.52,0.891268120943,-0.803370457801 +1.521,0.890463033187,-0.805087755992 +1.522,0.889656221398,-0.806811789121 +1.523,0.888847678804,-0.808542594266 +1.524,0.888037398595,-0.81028020874 +1.525,0.887225373925,-0.812024670099 +1.526,0.886411597909,-0.813776016137 +1.527,0.885596063624,-0.815534284895 +1.528,0.884778764109,-0.817299514656 +1.529,0.883959692365,-0.819071743953 +1.53,0.883138841354,-0.820851011566 +1.531,0.882316203997,-0.822637356527 +1.532,0.881491773179,-0.824430818118 +1.533,0.880665541743,-0.826231435879 +1.534,0.879837502494,-0.828039249606 +1.535,0.879007648194,-0.82985429935 +1.536,0.878175971569,-0.831676625427 +1.537,0.8773424653,-0.833506268413 +1.538,0.876507122031,-0.835343269148 +1.539,0.875669934362,-0.83718766874 +1.54,0.874830894854,-0.839039508563 +1.541,0.873989996024,-0.840898830263 +1.542,0.873147230348,-0.84276567576 +1.543,0.872302590261,-0.844640087244 +1.544,0.871456068153,-0.846522107187 +1.545,0.870607656375,-0.848411778336 +1.546,0.869757347231,-0.85030914372 +1.547,0.868905132985,-0.852214246651 +1.548,0.868051005854,-0.854127130726 +1.549,0.867194958014,-0.85604783983 +1.55,0.866336981596,-0.857976418135 +1.551,0.865477068686,-0.859912910108 +1.552,0.864615211325,-0.861857360508 +1.553,0.863751401511,-0.863809814391 +1.554,0.862885631194,-0.865770317111 +1.555,0.86201789228,-0.867738914323 +1.556,0.861148176628,-0.869715651983 +1.557,0.860276476051,-0.871700576356 +1.558,0.859402782317,-0.873693734012 +1.559,0.858527087145,-0.875695171832 +1.56,0.857649382208,-0.877704937009 +1.561,0.856769659131,-0.879723077051 +1.562,0.855887909492,-0.881749639783 +1.563,0.855004124818,-0.88378467335 +1.564,0.854118296592,-0.885828226218 +1.565,0.853230416245,-0.88788034718 +1.566,0.852340475159,-0.889941085354 +1.567,0.851448464669,-0.892010490188 +1.568,0.850554376058,-0.894088611462 +1.569,0.849658200558,-0.896175499291 +1.57,0.848759929354,-0.898271204128 +1.571,0.847859553578,-0.900375776765 +1.572,0.846957064309,-0.902489268335 +1.573,0.846052452579,-0.904611730319 +1.574,0.845145709364,-0.906743214545 +1.575,0.844236825591,-0.908883773189 +1.576,0.843325792132,-0.911033458784 +1.577,0.842412599808,-0.913192324217 +1.578,0.841497239385,-0.915360422733 +1.579,0.840579701578,-0.91753780794 +1.58,0.839659977044,-0.919724533809 +1.581,0.838738056389,-0.921920654679 +1.582,0.837813930164,-0.924126225258 +1.583,0.836887588863,-0.926341300628 +1.584,0.835959022927,-0.928565936245 +1.585,0.835028222739,-0.930800187946 +1.586,0.834095178627,-0.933044111947 +1.587,0.833159880862,-0.935297764851 +1.588,0.832222319659,-0.937561203646 +1.589,0.831282485173,-0.939834485713 +1.59,0.830340367504,-0.942117668824 +1.591,0.829395956693,-0.94441081115 +1.592,0.828449242722,-0.94671397126 +1.593,0.827500215513,-0.949027208127 +1.594,0.826548864932,-0.95135058113 +1.595,0.825595180782,-0.953684150056 +1.596,0.824639152807,-0.956027975105 +1.597,0.82368077069,-0.958382116893 +1.598,0.822720024054,-0.960746636455 +1.599,0.821756902459,-0.963121595246 +1.6,0.820791395403,-0.96550705515 +1.601,0.819823492325,-0.967903078476 +1.602,0.818853182597,-0.970309727967 +1.603,0.81788045553,-0.972727066801 +1.604,0.816905300372,-0.975155158596 +1.605,0.815927706304,-0.977594067411 +1.606,0.814947662446,-0.980043857751 +1.607,0.813965157852,-0.982504594571 +1.608,0.812980181509,-0.984976343277 +1.609,0.811992722339,-0.987459169733 +1.61,0.811002769199,-0.989953140264 +1.611,0.810010310877,-0.992458321655 +1.612,0.809015336096,-0.994974781161 +1.613,0.808017833509,-0.997502586507 +1.614,0.807017791703,-1.00004180589 +1.615,0.806015199195,-1.002592508 +1.616,0.805010044433,-1.00515476198 +1.617,0.804002315796,-1.00772863749 +1.618,0.802992001591,-1.01031420465 +1.619,0.801979090057,-1.01291153411 +1.62,0.80096356936,-1.01552069698 +1.621,0.799945427595,-1.01814176489 +1.622,0.798924652785,-1.02077480998 +1.623,0.79790123288,-1.02341990488 +1.624,0.796875155758,-1.02607712277 +1.625,0.79584640922,-1.0287465373 +1.626,0.794814980998,-1.03142822267 +1.627,0.793780858744,-1.0341222536 +1.628,0.792744030039,-1.03682870535 +1.629,0.791704482385,-1.03954765369 +1.63,0.79066220321,-1.04227917495 +1.631,0.789617179864,-1.045023346 +1.632,0.78856939962,-1.04778024423 +1.633,0.787518849672,-1.05054994762 +1.634,0.786465517138,-1.05333253468 +1.635,0.785409389053,-1.05612808449 +1.636,0.784350452376,-1.05893667669 +1.637,0.783288693985,-1.06175839149 +1.638,0.782224100675,-1.06459330967 +1.639,0.781156659163,-1.06744151259 +1.64,0.78008635608,-1.07030308219 +1.641,0.779013177979,-1.07317810101 +1.642,0.777937111327,-1.07606665217 +1.643,0.776858142508,-1.07896881937 +1.644,0.775776257821,-1.08188468695 +1.645,0.774691443481,-1.08481433981 +1.646,0.773603685618,-1.0877578635 +1.647,0.772512970273,-1.09071534417 +1.648,0.771419283405,-1.09368686858 +1.649,0.770322610881,-1.09667252414 +1.65,0.769222938482,-1.09967239885 +1.651,0.7681202519,-1.10268658139 +1.652,0.767014536739,-1.10571516105 +1.653,0.765905778512,-1.10875822777 +1.654,0.764793962639,-1.11181587216 +1.655,0.763679074454,-1.11488818546 +1.656,0.762561099194,-1.11797525957 +1.657,0.761440022007,-1.12107718709 +1.658,0.760315827946,-1.12419406125 +1.659,0.75918850197,-1.12732597598 +1.66,0.758058028944,-1.13047302589 +1.661,0.756924393638,-1.13363530626 +1.662,0.755787580725,-1.13681291308 +1.663,0.754647574782,-1.14000594304 +1.664,0.753504360288,-1.14321449353 +1.665,0.752357921626,-1.14643866263 +1.666,0.751208243077,-1.14967854916 +1.667,0.750055308824,-1.15293425265 +1.668,0.748899102951,-1.15620587337 +1.669,0.747739609438,-1.15949351229 +1.67,0.746576812167,-1.16279727115 +1.671,0.745410694915,-1.16611725241 +1.672,0.744241241355,-1.1694535593 +1.673,0.74306843506,-1.1728062958 +1.674,0.741892259493,-1.17617556663 +1.675,0.740712698016,-1.17956147731 +1.676,0.739529733882,-1.1829641341 +1.677,0.738343350237,-1.18638364408 +1.678,0.737153530122,-1.18982011508 +1.679,0.735960256467,-1.19327365573 +1.68,0.734763512091,-1.19674437547 +1.681,0.733563279707,-1.20023238454 +1.682,0.732359541913,-1.20373779398 +1.683,0.731152281197,-1.20726071566 +1.684,0.729941479935,-1.21080126227 +1.685,0.728727120387,-1.21435954733 +1.686,0.727509184702,-1.21793568519 +1.687,0.726287654911,-1.22152979105 +1.688,0.72506251293,-1.22514198097 +1.689,0.723833740558,-1.22877237183 +1.69,0.722601319477,-1.23242108142 +1.691,0.721365231249,-1.23608822838 +1.692,0.720125457316,-1.23977393221 +1.693,0.718881979003,-1.24347831332 +1.694,0.71763477751,-1.247201493 +1.695,0.716383833917,-1.25094359343 +1.696,0.715129129179,-1.25470473771 +1.697,0.713870644129,-1.25848504984 +1.698,0.712608359474,-1.26228465474 +1.699,0.711342255796,-1.26610367827 +1.7,0.710072313549,-1.2699422472 +1.701,0.70879851306,-1.27380048926 +1.702,0.707520834526,-1.27767853312 +1.703,0.706239258018,-1.28157650841 +1.704,0.704953763472,-1.28549454571 +1.705,0.703664330696,-1.28943277658 +1.706,0.702370939362,-1.29339133357 +1.707,0.701073569012,-1.29737035019 +1.708,0.699772199051,-1.30136996096 +1.709,0.69846680875,-1.30539030139 +1.71,0.697157377242,-1.30943150802 +1.711,0.695843883523,-1.31349371838 +1.712,0.694526306452,-1.31757707103 +1.713,0.693204624747,-1.32168170558 +1.714,0.691878816984,-1.32580776266 +1.715,0.6905488616,-1.32995538395 +1.716,0.689214736888,-1.3341247122 +1.717,0.687876420997,-1.33831589122 +1.718,0.686533891931,-1.34252906588 +1.719,0.685187127549,-1.34676438213 +1.72,0.683836105562,-1.35102198703 +1.721,0.682480803533,-1.35530202873 +1.722,0.681121198876,-1.35960465646 +1.723,0.679757268856,-1.3639300206 +1.724,0.678388990583,-1.36827827262 +1.725,0.677016341018,-1.37264956516 +1.726,0.675639296966,-1.37704405195 +1.727,0.674257835078,-1.38146188792 +1.728,0.672871931849,-1.38590322912 +1.729,0.671481563616,-1.39036823277 +1.73,0.670086706559,-1.39485705728 +1.731,0.668687336697,-1.39936986224 +1.732,0.667283429888,-1.40390680841 +1.733,0.665874961831,-1.40846805779 +1.734,0.664461908057,-1.41305377355 +1.735,0.663044243937,-1.4176641201 +1.736,0.661621944674,-1.42229926308 +1.737,0.660194985304,-1.42695936936 +1.738,0.658763340697,-1.43164460705 +1.739,0.657326985552,-1.43635514554 +1.74,0.655885894396,-1.44109115546 +1.741,0.654440041588,-1.44585280872 +1.742,0.652989401309,-1.45064027853 +1.743,0.65153394757,-1.45545373937 +1.744,0.650073654203,-1.46029336703 +1.745,0.648608494864,-1.46515933862 +1.746,0.647138443032,-1.47005183257 +1.747,0.645663472003,-1.47497102864 +1.748,0.644183554895,-1.47991710791 +1.749,0.642698664642,-1.48489025285 +1.75,0.641208773995,-1.48989064726 +1.751,0.639713855519,-1.49491847631 +1.752,0.638213881592,-1.49997392658 +1.753,0.636708824406,-1.505057186 +1.754,0.635198655962,-1.51016844394 +1.755,0.633683348071,-1.51530789114 +1.756,0.632162872351,-1.52047571978 +1.757,0.630637200228,-1.52567212347 +1.758,0.62910630293,-1.53089729726 +1.759,0.627570151493,-1.53615143765 +1.76,0.62602871675,-1.54143474259 +1.761,0.624481969339,-1.54674741151 +1.762,0.622929879693,-1.55208964531 +1.763,0.621372418047,-1.5574616464 +1.764,0.619809554428,-1.56286361867 +1.765,0.618241258661,-1.56829576753 +1.766,0.616667500361,-1.57375829991 +1.767,0.615088248937,-1.57925142428 +1.768,0.613503473586,-1.58477535063 +1.769,0.611913143295,-1.59033029052 +1.77,0.610317226838,-1.59591645707 +1.771,0.608715692773,-1.60153406498 +1.772,0.607108509443,-1.60718333052 +1.773,0.605495644971,-1.61286447156 +1.774,0.603877067264,-1.61857770757 +1.775,0.602252744004,-1.62432325964 +1.776,0.600622642654,-1.6301013505 +1.777,0.598986730449,-1.63591220448 +1.778,0.597344974402,-1.64175604758 +1.779,0.595697341294,-1.64763310747 +1.78,0.594043797681,-1.65354361346 +1.781,0.592384309884,-1.65948779656 +1.782,0.590718843995,-1.66546588944 +1.783,0.589047365868,-1.67147812651 +1.784,0.587369841124,-1.67752474386 +1.785,0.585686235145,-1.6836059793 +1.786,0.583996513073,-1.68972207239 +1.787,0.582300639808,-1.69587326442 +1.788,0.58059858001,-1.70205979843 +1.789,0.57889029809,-1.70828191922 +1.79,0.577175758217,-1.71453987337 +1.791,0.575454924308,-1.72083390925 +1.792,0.573727760031,-1.727164277 +1.793,0.571994228802,-1.73353122858 +1.794,0.570254293784,-1.73993501777 +1.795,0.568507917884,-1.74637590017 +1.796,0.566755063751,-1.75285413319 +1.797,0.564995693775,-1.75936997613 +1.798,0.563229770085,-1.76592369011 +1.799,0.561457254547,-1.77251553812 +1.8,0.559678108762,-1.77914578505 +1.801,0.557892294064,-1.78581469764 +1.802,0.55609977152,-1.79252254455 +1.803,0.554300501923,-1.79926959635 +1.804,0.552494445798,-1.80605612549 +1.805,0.550681563391,-1.81288240639 +1.806,0.548861814676,-1.81974871536 +1.807,0.547035159345,-1.8266553307 +1.808,0.545201556813,-1.83360253262 +1.809,0.543360966209,-1.84059060332 +1.81,0.541513346382,-1.84761982697 +1.811,0.539658655893,-1.8546904897 +1.812,0.537796853013,-1.86180287967 +1.813,0.535927895726,-1.86895728699 +1.814,0.534051741722,-1.87615400382 +1.815,0.532168348398,-1.88339332432 +1.816,0.530277672853,-1.89067554467 +1.817,0.52837967189,-1.89800096309 +1.818,0.52647430201,-1.90536987985 +1.819,0.524561519413,-1.91278259725 +1.82,0.522641279993,-1.92023941967 +1.821,0.52071353934,-1.92774065354 +1.822,0.518778252732,-1.93528660738 +1.823,0.516835375141,-1.94287759178 +1.824,0.514884861221,-1.95051391941 +1.825,0.512926665316,-1.95819590505 +1.826,0.510960741451,-1.96592386559 +1.827,0.508987043331,-1.97369812 +1.828,0.507005524341,-1.98151898939 +1.829,0.505016137544,-1.98938679699 +1.83,0.503018835676,-1.99730186814 +1.831,0.501013571146,-2.00526453034 +1.832,0.499000296032,-2.01327511321 +1.833,0.496978962084,-2.02133394852 +1.834,0.494949520714,-2.02944137018 +1.835,0.492911922999,-2.03759771427 +1.836,0.49086611968,-2.04580331901 +1.837,0.488812061156,-2.05405852481 +1.838,0.486749697481,-2.06236367421 +1.839,0.484678978369,-2.07071911195 +1.84,0.482599853185,-2.07912518492 +1.841,0.480512270942,-2.0875822422 +1.842,0.478416180307,-2.09609063505 +1.843,0.47631152959,-2.10465071688 +1.844,0.474198266747,-2.11326284332 +1.845,0.472076339375,-2.12192737217 +1.846,0.469945694712,-2.13064466339 +1.847,0.467806279632,-2.13941507916 +1.848,0.465658040649,-2.14823898381 +1.849,0.463500923905,-2.15711674387 +1.85,0.461334875177,-2.16604872806 +1.851,0.459159839869,-2.17503530726 +1.852,0.456975763015,-2.18407685454 +1.853,0.45478258927,-2.19317374515 +1.854,0.452580262913,-2.2023263565 +1.855,0.450368727845,-2.21153506819 +1.856,0.448147927583,-2.22080026195 +1.857,0.445917805261,-2.23012232171 +1.858,0.443678303628,-2.23950163352 +1.859,0.441429365042,-2.24893858562 +1.86,0.439170931474,-2.25843356835 +1.861,0.4369029445,-2.26798697421 +1.862,0.434625345302,-2.27759919782 +1.863,0.432338074666,-2.28727063593 +1.864,0.430041072979,-2.29700168738 +1.865,0.427734280225,-2.30679275313 +1.866,0.425417635989,-2.31664423621 +1.867,0.423091079447,-2.32655654175 +1.868,0.420754549371,-2.33653007692 +1.869,0.41840798412,-2.34656525096 +1.87,0.416051321644,-2.35666247514 +1.871,0.413684499482,-2.36682216276 +1.872,0.411307454753,-2.37704472911 +1.873,0.408920124161,-2.3873305915 +1.874,0.406522443992,-2.39768016919 +1.875,0.404114350108,-2.40809388339 +1.876,0.401695777951,-2.41857215726 +1.877,0.399266662535,-2.42911541588 +1.878,0.396826938449,-2.4397240862 +1.879,0.394376539852,-2.45039859706 +1.88,0.391915400473,-2.46113937914 +1.881,0.389443453608,-2.47194686493 +1.882,0.386960632119,-2.48282148872 +1.883,0.384466868433,-2.49376368659 +1.884,0.381962094536,-2.50477389632 +1.885,0.379446241979,-2.51585255744 +1.886,0.376919241868,-2.52700011113 +1.887,0.374381024868,-2.53821700021 +1.888,0.371831521198,-2.54950366915 +1.889,0.369270660634,-2.56086056395 +1.89,0.366698372502,-2.57228813219 +1.891,0.364114585679,-2.58378682293 +1.892,0.361519228593,-2.59535708669 +1.893,0.358912229217,-2.60699937542 +1.894,0.356293515075,-2.61871414245 +1.895,0.353663013232,-2.63050184244 +1.896,0.351020650301,-2.64236293134 +1.897,0.348366352435,-2.65429786634 +1.898,0.345700045329,-2.66630710582 +1.899,0.34302165422,-2.67839110929 +1.9,0.340331103882,-2.69055033737 +1.901,0.337628318631,-2.7027852517 +1.902,0.334913222316,-2.71509631488 +1.903,0.332185738325,-2.72748399045 +1.904,0.329445789582,-2.73994874279 +1.905,0.326693298545,-2.75249103707 +1.906,0.323928187206,-2.7651113392 +1.907,0.32115037709,-2.77781011574 +1.908,0.318359789257,-2.79058783384 +1.909,0.315556344295,-2.80344496118 +1.91,0.31273996233,-2.81638196586 +1.911,0.309910563013,-2.82939931638 +1.912,0.307068065532,-2.84249748151 +1.913,0.304212388601,-2.85567693022 +1.914,0.30134345047,-2.86893813162 +1.915,0.298461168915,-2.88228155485 +1.916,0.295565461246,-2.895707669 +1.917,0.292656244303,-2.90921694302 +1.918,0.289733434457,-2.9228098456 +1.919,0.286796947612,-2.93648684514 +1.92,0.283846699203,-2.95024840955 +1.921,0.280882604196,-2.96409500623 +1.922,0.277904577094,-2.97802710194 +1.923,0.274912531932,-2.99204516265 +1.924,0.271906382278,-3.00614965351 +1.925,0.26888604124,-3.02034103863 +1.926,0.265851421459,-3.03461978106 +1.927,0.262802435116,-3.04898634261 +1.928,0.259738993932,-3.06344118372 +1.929,0.256661009169,-3.07798476337 +1.93,0.25356839163,-3.09261753891 +1.931,0.250461051664,-3.10733996594 +1.932,0.247338899166,-3.12215249817 +1.933,0.244201843579,-3.13705558726 +1.934,0.241049793896,-3.1520496827 +1.935,0.237882658664,-3.16713523162 +1.936,0.234700345986,-3.18231267867 +1.937,0.23150276352,-3.19758246584 +1.938,0.228289818488,-3.21294503228 +1.939,0.225061417673,-3.22840081417 +1.94,0.221817467429,-3.24395024451 +1.941,0.218557873676,-3.25959375296 +1.942,0.21528254191,-3.27533176566 +1.943,0.211991377205,-3.29116470501 +1.944,0.208684284216,-3.30709298955 +1.945,0.205361167182,-3.32311703366 +1.946,0.202021929935,-3.33923724745 +1.947,0.198666475898,-3.3554540365 +1.948,0.195294708096,-3.37176780167 +1.949,0.191906529158,-3.38817893888 +1.95,0.188501841319,-3.40468783887 +1.951,0.185080546432,-3.42129488699 +1.952,0.181642545969,-3.43800046297 +1.953,0.178187741028,-3.45480494064 +1.954,0.17471603234,-3.47170868776 +1.955,0.171227320275,-3.48871206568 +1.956,0.167721504845,-3.50581542915 +1.957,0.164198485719,-3.52301912604 +1.958,0.160658162222,-3.54032349705 +1.959,0.157100433347,-3.55772887545 +1.96,0.15352519776,-3.5752355868 +1.961,0.149932353811,-3.59284394867 +1.962,0.146321799541,-3.6105542703 +1.963,0.142693432689,-3.62836685237 +1.964,0.139047150702,-3.64628198663 +1.965,0.135382850746,-3.66429995563 +1.966,0.131700429714,-3.68242103235 +1.967,0.127999784234,-3.70064547992 +1.968,0.124280810683,-3.71897355125 +1.969,0.120543405194,-3.7374054887 +1.97,0.116787463671,-3.75594152372 +1.971,0.113012881794,-3.77458187652 +1.972,0.109219555038,-3.79332675566 +1.973,0.105407378681,-3.8121763577 +1.974,0.101576247814,-3.83113086683 +1.975,0.0977260573594,-3.85019045447 +1.976,0.0938567020805,-3.86935527884 +1.977,0.0899680765959,-3.88862548463 +1.978,0.0860600753934,-3.9080012025 +1.979,0.0821325928447,-3.92748254873 +1.98,0.0781855232199,-3.94706962473 +1.981,0.0742187607033,-3.96676251667 +1.982,0.0702321994083,-3.98656129496 +1.983,0.0662257333945,-4.00646601383 +1.984,0.0621992566836,-4.02647671088 +1.985,0.058152663277,-4.04659340659 +1.986,0.0540858471732,-4.0668161038 +1.987,0.0499987023859,-4.08714478732 +1.988,0.0458911229626,-4.1075794233 +1.989,0.0417630030038,-4.12811995882 +1.99,0.0376142366824,-4.14876632135 +1.991,0.0334447182642,-4.16951841818 +1.992,0.0292543421283,-4.19037613593 +1.993,0.0250430027883,-4.21133933999 +1.994,0.0208105949144,-4.23240787394 +1.995,0.0165570133553,-4.25358155903 +1.996,0.0122821531618,-4.27486019357 +1.997,0.0079859096094,-4.29624355235 +1.998,0.00366817822334,-4.31773138606 +1.999,-0.000671145197346,-4.33932342069 +2.,-0.00503216455422,-4.36101935687 +2.001,-0.00941498342354,-4.38281886933 +2.002,-0.0138197050297,-4.40472160618 +2.003,-0.0182464322181,-4.42672718835 +2.004,-0.0226952674269,-4.44883520885 +2.005,-0.0271663126591,-4.47104523221 +2.006,-0.0316596694528,-4.49335679371 +2.007,-0.0361754388516,-4.51576939877 +2.008,-0.0407137213739,-4.53828252224 +2.009,-0.0452746169815,-4.56089560768 +2.01,-0.0498582250482,-4.58360806669 +2.011,-0.0544646443264,-4.60641927816 +2.012,-0.0590939729139,-4.62932858755 +2.013,-0.0637463082201,-4.65233530618 +2.014,-0.0684217469306,-4.67543871044 +2.015,-0.0731203849717,-4.69863804109 +2.016,-0.0778423174741,-4.72193250244 +2.017,-0.0825876387357,-4.74532126162 +2.018,-0.0873564421835,-4.7688034478 +2.019,-0.0921488203349,-4.79237815137 +2.02,-0.0969648647581,-4.81604442318 +2.021,-0.101804666032,-4.83980127373 +2.022,-0.106668313704,-4.86364767233 +2.023,-0.11155589625,-4.88758254633 +2.024,-0.116467501031,-4.91160478023 +2.025,-0.121403214246,-4.93571321492 +2.026,-0.126363120892,-4.9599066468 +2.027,-0.131347304719,-4.98418382694 +2.028,-0.13635584818,-5.00854346022 +2.029,-0.141388832384,-5.0329842045 +2.03,-0.146446337054,-5.05750466974 +2.031,-0.151528440471,-5.08210341713 +2.032,-0.156635219429,-5.10677895824 +2.033,-0.161766749183,-5.13152975412 +2.034,-0.166923103398,-5.15635421445 +2.035,-0.172104354094,-5.18125069662 +2.036,-0.177310571599,-5.20621750488 +2.037,-0.182541824489,-5.23125288946 +2.038,-0.187798179534,-5.25635504566 +2.039,-0.193079701647,-5.28152211295 +2.04,-0.198386453821,-5.30675217414 +2.041,-0.203718497076,-5.33204325442 +2.042,-0.209075890396,-5.35739332053 +2.043,-0.214458690676,-5.38280027986 +2.044,-0.219866952656,-5.40826197955 +2.045,-0.225300728861,-5.43377620564 +2.046,-0.230760069544,-5.45934068217 +2.047,-0.236245022614,-5.48495307033 +2.048,-0.241755633582,-5.51061096759 +2.049,-0.247291945488,-5.53631190683 +2.05,-0.252853998844,-5.56205335553 +2.051,-0.258441831559,-5.58783271488 +2.052,-0.264055478878,-5.61364731897 +2.053,-0.269694973312,-5.63949443399 +2.054,-0.275360344569,-5.66537125737 +2.055,-0.281051619486,-5.69127491704 +2.056,-0.286768821957,-5.71720247061 +2.057,-0.292511972861,-5.74315090462 +2.058,-0.298281089995,-5.76911713376 +2.059,-0.304076187995,-5.79509800018 +2.06,-0.309897278268,-5.82109027273 +2.061,-0.315744368914,-5.84709064629 +2.062,-0.321617464655,-5.87309574107 +2.063,-0.327516566757,-5.89910210198 +2.064,-0.333441672955,-5.92510619801 +2.065,-0.339392777377,-5.95110442157 +2.066,-0.345369870465,-5.97709308796 +2.067,-0.3513729389,-6.00306843483 +2.068,-0.357401965521,-6.02902662161 +2.069,-0.36345692925,-6.05496372906 +2.07,-0.369537805009,-6.08087575879 +2.071,-0.375644563642,-6.10675863286 +2.072,-0.381777171835,-6.13260819339 +2.073,-0.387935592038,-6.15842020217 +2.074,-0.394119782378,-6.18419034041 +2.075,-0.400329696587,-6.20991420844 +2.076,-0.406565283912,-6.2355873255 +2.077,-0.412826489042,-6.26120512952 +2.078,-0.419113252019,-6.28676297702 +2.079,-0.425425508162,-6.31225614305 +2.08,-0.431763187983,-6.33767982107 +2.081,-0.438126217106,-6.36302912303 +2.082,-0.444514516185,-6.38829907945 +2.083,-0.450928000825,-6.41348463948 +2.084,-0.457366581496,-6.43858067112 +2.085,-0.463830163457,-6.46358196149 +2.086,-0.470318646674,-6.48848321706 +2.087,-0.476831925738,-6.51327906409 +2.088,-0.483369889787,-6.53796404899 +2.089,-0.489932422426,-6.56253263888 +2.09,-0.496519401648,-6.58697922212 +2.091,-0.503130699757,-6.61129810896 +2.092,-0.50976618329,-6.63548353222 +2.093,-0.516425712938,-6.65952964814 +2.094,-0.523109143475,-6.68343053715 +2.095,-0.52981632368,-6.7071802049 +2.096,-0.536547096263,-6.73077258321 +2.097,-0.543301297794,-6.7542015312 +2.098,-0.550078758631,-6.77746083646 +2.099,-0.556879302847,-6.80054421635 +2.1,-0.563702748166,-6.82344531931 +2.101,-0.570548905893,-6.84615772634 +2.102,-0.577417580845,-6.86867495252 +2.103,-0.584308571294,-6.89099044863 +2.104,-0.591221668897,-6.91309760287 +2.105,-0.598156658639,-6.93498974271 +2.106,-0.605113318776,-6.95666013672 +2.107,-0.612091420773,-6.97810199667 +2.108,-0.619090729252,-6.99930847956 +2.109,-0.626111001942,-7.02027268984 +2.11,-0.633151989624,-7.04098768176 +2.111,-0.640213436086,-7.06144646171 +2.112,-0.647295078076,-7.08164199075 +2.113,-0.654396645264,-7.10156718723 +2.114,-0.661517860193,-7.12121492948 +2.115,-0.668658438252,-7.14057805867 +2.116,-0.675818087633,-7.15964938164 +2.117,-0.682996509307,-7.17842167401 +2.118,-0.690193396991,-7.19688768327 +2.119,-0.697408437123,-7.21504013201 +2.12,-0.704641308844,-7.23287172123 +2.121,-0.711891683978,-7.25037513383 +2.122,-0.719159227016,-7.26754303809 +2.123,-0.726443595107,-7.28436809136 +2.124,-0.733744438051,-7.30084294376 +2.125,-0.741061398293,-7.31696024206 +2.126,-0.748394110927,-7.33271263356 +2.127,-0.755742203697,-7.34809277021 +2.128,-0.763105297009,-7.36309331266 +2.129,-0.770483003944,-7.37770693454 +2.13,-0.777874930271,-7.39192632674 +2.131,-0.785280674473,-7.40574420185 +2.132,-0.792699827771,-7.41915329863 +2.133,-0.800131974158,-7.43214638658 +2.134,-0.807576690428,-7.44471627065 +2.135,-0.815033546224,-7.4568557959 +2.136,-0.822502104077,-7.46855785236 +2.137,-0.829981919457,-7.47981537994 +2.138,-0.83747254083,-7.49062137332 +2.139,-0.844973509717,-7.500968887 +2.14,-0.852484360757,-7.51085104039 +2.141,-0.86000462178,-7.52026102292 +2.142,-0.867533813879,-7.52919209924 +2.143,-0.875071451494,-7.53763761444 +2.144,-0.882617042493,-7.54559099934 +2.145,-0.890170088269,-7.55304577579 +2.146,-0.897730083831,-7.559995562 +2.147,-0.905296517909,-7.56643407794 +2.148,-0.91286887306,-7.5723551507 +2.149,-0.92044662578,-7.57775271992 +2.15,-0.928029246623,-7.58262084316 +2.151,-0.935616200324,-7.58695370137 +2.152,-0.943206945928,-7.59074560425 +2.153,-0.950800936924,-7.59399099567 +2.154,-0.958397621383,-7.59668445906 +2.155,-0.965996442106,-7.59882072276 +2.156,-0.973596836771,-7.60039466534 +2.157,-0.981198238092,-7.60140132091 +2.158,-0.988800073976,-7.60183588434 +2.159,-0.996401767693,-7.60169371645 +2.16,-1.00400273804,-7.60097034918 +2.161,-1.01160239953,-7.5996614906 +2.162,-1.01920016256,-7.59776302994 +2.163,-1.02679543361,-7.59527104249 +2.164,-1.0343876154,-7.59218179441 +2.165,-1.04197610715,-7.58849174743 +2.166,-1.04956030471,-7.58419756353 +2.167,-1.05713960082,-7.57929610937 +2.168,-1.06471338528,-7.57378446072 +2.169,-1.07228104519,-7.5676599067 +2.17,-1.07984196514,-7.56091995391 +2.171,-1.08739552747,-7.5535623304 +2.172,-1.09494111246,-7.54558498951 +2.173,-1.10247809857,-7.53698611354 +2.174,-1.11000586269,-7.52776411726 +2.175,-1.11752378034,-7.51791765126 +2.176,-1.12503122595,-7.50744560511 +2.177,-1.13252757306,-7.49634711035 +2.178,-1.1400121946,-7.48462154326 +2.179,-1.14748446313,-7.47226852749 +2.18,-1.15494375107,-7.45928793643 +2.181,-1.16238943096,-7.44567989541 +2.182,-1.16982087574,-7.43144478368 +2.183,-1.17723745898,-7.41658323619 +2.184,-1.18463855513,-7.40109614508 +2.185,-1.19202353979,-7.38498466104 +2.186,-1.19939178998,-7.36825019437 +2.187,-1.2067426844,-7.35089441585 +2.188,-1.21407560365,-7.33291925732 +2.189,-1.22138993057,-7.31432691208 +2.19,-1.2286850504,-7.29511983502 +2.191,-1.23596035114,-7.27530074248 +2.192,-1.24321522376,-7.2548726119 +2.193,-1.25044906244,-7.23383868122 +2.194,-1.25766126489,-7.21220244801 +2.195,-1.26485123255,-7.18996766834 +2.196,-1.27201837091,-7.16713835545 +2.197,-1.27916208969,-7.14371877812 +2.198,-1.28628180315,-7.1197134588 +2.199,-1.29337693032,-7.09512717151 +2.2,-1.30044689526,-7.06996493948 +2.201,-1.30749112729,-7.04423203254 +2.202,-1.31450906125,-7.01793396429 +2.203,-1.32150013774,-6.99107648899 +2.204,-1.32846380334,-6.96366559823 +2.205,-1.33539951086,-6.93570751741 +2.206,-1.34230671956,-6.90720870192 +2.207,-1.34918489539,-6.8781758331 +2.208,-1.35603351121,-6.84861581409 +2.209,-1.36285204697,-6.81853576528 +2.21,-1.36963998999,-6.78794301972 +2.211,-1.37639683511,-6.75684511823 +2.212,-1.38312208492,-6.72524980433 +2.213,-1.38981524993,-6.693165019 +2.214,-1.39647584883,-6.66059889526 +2.215,-1.40310340858,-6.62755975251 +2.216,-1.40969746467,-6.59405609077 +2.217,-1.41625756126,-6.56009658475 +2.218,-1.42278325134,-6.52569007774 +2.219,-1.42927409691,-6.49084557533 +2.22,-1.43572966915,-6.45557223909 +2.221,-1.44214954853,-6.41987938001 +2.222,-1.44853332498,-6.3837764519 +2.223,-1.45488059803,-6.34727304465 +2.224,-1.4611909769,-6.31037887734 +2.225,-1.4674640807,-6.2731037914 +2.226,-1.47369953844,-6.2354577435 +2.227,-1.47989698924,-6.19745079854 +2.228,-1.48605608236,-6.15909312245 +2.229,-1.49217647733,-6.12039497501 +2.23,-1.49825784404,-6.0813667026 +2.231,-1.50429986277,-6.04201873092 +2.232,-1.51030222433,-6.00236155767 +2.233,-1.51626463007,-5.96240574525 +2.234,-1.52218679198,-5.92216191343 +2.235,-1.52806843272,-5.88164073203 +2.236,-1.53390928563,-5.8408529136 +2.237,-1.53970909484,-5.79980920614 +2.238,-1.54546761522,-5.75852038585 +2.239,-1.55118461247,-5.71699724992 +2.24,-1.55685986308,-5.67525060937 +2.241,-1.56249315436,-5.63329128194 +2.242,-1.56808428445,-5.59113008503 +2.243,-1.57363306228,-5.54877782877 +2.244,-1.57913930759,-5.50624530914 +2.245,-1.58460285089,-5.46354330113 +2.246,-1.59002353344,-5.42068255211 +2.247,-1.59540120721,-5.37767377521 +2.248,-1.60073573486,-5.33452764281 +2.249,-1.60602698964,-5.29125478026 +2.25,-1.6112748554,-5.24786575956 +2.251,-1.61647922649,-5.20437109334 +2.252,-1.62164000772,-5.1607812288 +2.253,-1.62675711426,-5.11710654197 +2.254,-1.63183047159,-5.07335733197 +2.255,-1.63686001541,-5.02954381551 +2.256,-1.64184569153,-4.98567612152 +2.257,-1.64678745582,-4.9417642859 +2.258,-1.65168527406,-4.89781824652 +2.259,-1.6565391219,-4.85384783831 +2.26,-1.66134898469,-4.80986278853 +2.261,-1.6661148574,-4.76587271226 +2.262,-1.67083674451,-4.72188710803 +2.263,-1.67551465986,-4.6779153536 +2.264,-1.68014862657,-4.63396670197 +2.265,-1.68473867684,-4.59005027757 +2.266,-1.68928485192,-4.54617507257 +2.267,-1.69378720186,-4.50234994341 +2.268,-1.69824578547,-4.45858360757 +2.269,-1.70266067011,-4.4148846404 +2.27,-1.70703193158,-4.37126147223 +2.271,-1.71135965396,-4.32772238564 +2.272,-1.71564392948,-4.28427551287 +2.273,-1.71988485831,-4.24092883347 +2.274,-1.72408254848,-4.19769017208 +2.275,-1.72823711568,-4.15456719644 +2.276,-1.7323486831,-4.11156741551 +2.277,-1.73641738127,-4.06869817781 +2.278,-1.74044334794,-4.02596666993 +2.279,-1.74442672786,-3.9833799152 +2.28,-1.74836767263,-3.9409447725 +2.281,-1.75226634057,-3.89866793532 +2.282,-1.7561228965,-3.85655593086 +2.283,-1.75993751162,-3.81461511939 +2.284,-1.76371036331,-3.77285169373 +2.285,-1.76744163499,-3.73127167886 +2.286,-1.77113151592,-3.68988093169 +2.287,-1.77478020106,-3.64868514105 +2.288,-1.77838789089,-3.60768982765 +2.289,-1.78195479123,-3.56690034438 +2.29,-1.78548111311,-3.5263218766 +2.291,-1.78896707255,-3.48595944259 +2.292,-1.79241289045,-3.44581789419 +2.293,-1.79581879236,-3.40590191746 +2.294,-1.7991850084,-3.36621603357 +2.295,-1.802511773,-3.32676459969 +2.296,-1.80579932481,-3.28755181006 +2.297,-1.8090479065,-3.24858169717 +2.298,-1.81225776464,-3.209858133 +2.299,-1.81542914947,-3.17138483035 +2.3,-1.81856231481,-3.13316534436 +2.301,-1.82165751789,-3.09520307395 +2.302,-1.82471501915,-3.05750126352 +2.303,-1.82773508215,-3.02006300461 +2.304,-1.83071797339,-2.98289123767 +2.305,-1.83366396215,-2.94598875392 +2.306,-1.83657332034,-2.90935819725 +2.307,-1.83944632241,-2.87300206621 +2.308,-1.84228324513,-2.83692271603 +2.309,-1.84508436749,-2.8011223607 +2.31,-1.84784997056,-2.76560307515 +2.311,-1.85058033736,-2.73036679738 +2.312,-1.85327575269,-2.69541533073 +2.313,-1.85593650304,-2.66075034616 +2.314,-1.85856287642,-2.62637338452 +2.315,-1.86115516228,-2.59228585891 +2.316,-1.86371365134,-2.55848905705 +2.317,-1.86623863548,-2.5249841437 +2.318,-1.86873040764,-2.49177216302 +2.319,-1.87118926168,-2.45885404106 +2.32,-1.87361549227,-2.42623058821 +2.321,-1.87600939477,-2.39390250163 +2.322,-1.87837126514,-2.36187036777 +2.323,-1.88070139981,-2.33013466486 +2.324,-1.88300009557,-2.29869576536 +2.325,-1.88526764951,-2.26755393851 +2.326,-1.88750435886,-2.23670935277 +2.327,-1.88971052094,-2.20616207838 +2.328,-1.89188643303,-2.17591208978 +2.329,-1.8940323923,-2.14595926813 +2.33,-1.8961486957,-2.1163034038 +2.331,-1.8982356399,-2.08694419877 +2.332,-1.90029352117,-2.05788126915 +2.333,-1.90232263532,-2.02911414758 +2.334,-1.9043232776,-2.00064228564 +2.335,-1.90629574266,-1.97246505626 +2.336,-1.90824032442,-1.94458175611 +2.337,-1.91015731602,-1.91699160795 +2.338,-1.91204700979,-1.88969376295 +2.339,-1.91390969709,-1.86268730305 +2.34,-1.91574566833,-1.83597124318 +2.341,-1.91755521287,-1.80954453357 +2.342,-1.91933861893,-1.78340606197 +2.343,-1.92109617359,-1.75755465584 +2.344,-1.92282816267,-1.73198908453 +2.345,-1.92453487073,-1.70670806146 +2.346,-1.92621658098,-1.68171024617 +2.347,-1.92787357522,-1.65699424644 +2.348,-1.92950613384,-1.63255862033 +2.349,-1.93111453572,-1.60840187821 +2.35,-1.93269905821,-1.5845224847 +2.351,-1.93425997707,-1.56091886067 +2.352,-1.93579756645,-1.5375893851 +2.353,-1.93731209885,-1.51453239701 +2.354,-1.93880384505,-1.49174619726 +2.355,-1.9402730741,-1.46922905037 +2.356,-1.94172005328,-1.44697918629 +2.357,-1.94314504809,-1.42499480213 +2.358,-1.94454832215,-1.4032740639 +2.359,-1.94593013726,-1.38181510809 +2.36,-1.9472907533,-1.36061604336 +2.361,-1.94863042825,-1.33967495214 +2.362,-1.94994941815,-1.31898989211 +2.363,-1.95124797704,-1.29855889779 +2.364,-1.95252635703,-1.278379982 +2.365,-1.95378480816,-1.25845113728 +2.366,-1.9550235785,-1.23877033735 +2.367,-1.95624291404,-1.21933553844 +2.368,-1.95744305872,-1.20014468065 +2.369,-1.95862425441,-1.18119568924 +2.37,-1.95978674088,-1.16248647594 +2.371,-1.96093075582,-1.14401494014 +2.372,-1.96205653479,-1.12577897011 +2.373,-1.96316431124,-1.10777644417 +2.374,-1.96425431647,-1.09000523183 +2.375,-1.96532677967,-1.07246319488 +2.376,-1.96638192785,-1.05514818849 +2.377,-1.96741998592,-1.03805806218 +2.378,-1.96844117658,-1.02119066092 +2.379,-1.9694457204,-1.00454382602 +2.38,-1.9704338358,-0.988115396136 +2.381,-1.97140573901,-0.971903208154 +2.382,-1.97236164411,-0.955905098078 +2.383,-1.97330176301,-0.940118901891 +2.384,-1.97422630546,-0.92454245638 +2.385,-1.97513547906,-0.909173599935 +2.386,-1.97602948924,-0.89401017332 +2.387,-1.97690853926,-0.879050020415 +2.388,-1.97777283025,-0.864290988934 +2.389,-1.97862256118,-0.849730931118 +2.39,-1.97945792888,-0.835367704397 +2.391,-1.98027912805,-0.821199172029 +2.392,-1.98108635126,-0.807223203721 +2.393,-1.98187978893,-0.793437676212 +2.394,-1.98265962941,-0.779840473849 +2.395,-1.9834260589,-0.766429489123 +2.396,-1.98417926152,-0.753202623198 +2.397,-1.98491941931,-0.740157786405 +2.398,-1.98564671221,-0.727292898727 +2.399,-1.9863613181,-0.714605890246 +2.4,-1.9870634128,-0.702094701591 +2.401,-1.98775317008,-0.689757284344 +2.402,-1.98843076168,-0.677591601446 +2.403,-1.98909635731,-0.665595627568 +2.404,-1.98975012466,-0.653767349474 +2.405,-1.99039222943,-0.64210476636 +2.406,-1.99102283532,-0.63060589018 +2.407,-1.99164210406,-0.619268745949 +2.408,-1.99225019543,-0.608091372037 +2.409,-1.99284726725,-0.597071820439 +2.41,-1.99343347541,-0.586208157033 +2.411,-1.99400897387,-0.575498461823 +2.412,-1.9945739147,-0.564940829168 +2.413,-1.99512844807,-0.554533367992 +2.414,-1.99567272227,-0.544274201986 +2.415,-1.99620688374,-0.534161469788 +2.416,-1.99673107707,-0.524193325161 +2.417,-1.997245445,-0.514367937151 +2.418,-1.9977501285,-0.50468349023 +2.419,-1.99824526668,-0.495138184435 +2.42,-1.99873099692,-0.485730235488 +2.421,-1.99920745479,-0.476457874911 +2.422,-1.99967477414,-0.467319350125 +2.423,-2.00013308706,-0.458312924538 +2.424,-2.00058252394,-0.449436877632 +2.425,-2.00102321345,-0.440689505026 +2.426,-2.00145528257,-0.432069118542 +2.427,-2.00187885661,-0.423574046253 +2.428,-2.00229405924,-0.415202632528 +2.429,-2.00270101248,-0.406953238067 +2.43,-2.00309983672,-0.398824239923 +2.431,-2.00349065075,-0.390814031526 +2.432,-2.00387357178,-0.382921022687 +2.433,-2.00424871542,-0.375143639605 +2.434,-2.00461619574,-0.367480324865 +2.435,-2.00497612528,-0.35992953742 +2.436,-2.00532861503,-0.352489752582 +2.437,-2.00567377449,-0.345159461991 +2.438,-2.00601171167,-0.337937173591 +2.439,-2.00634253308,-0.330821411592 +2.44,-2.00666634379,-0.323810716429 +2.441,-2.00698324744,-0.316903644717 +2.442,-2.00729334621,-0.310098769197 +2.443,-2.00759674089,-0.303394678684 +2.444,-2.00789353087,-0.296789978003 +2.445,-2.00818381415,-0.290283287923 +2.446,-2.0084676874,-0.283873245092 +2.447,-2.0087452459,-0.277558501959 +2.448,-2.00901658363,-0.271337726699 +2.449,-2.00928179323,-0.265209603132 +2.45,-2.00954096606,-0.259172830637 +2.451,-2.00979419218,-0.253226124065 +2.452,-2.0100415604,-0.24736821365 +2.453,-2.01028315824,-0.241597844913 +2.454,-2.01051907202,-0.235913778567 +2.455,-2.01074938681,-0.230314790416 +2.456,-2.01097418648,-0.224799671254 +2.457,-2.01119355371,-0.219367226762 +2.458,-2.01140756999,-0.214016277401 +2.459,-2.01161631565,-0.208745658305 +2.46,-2.01181986987,-0.203554219166 +2.461,-2.01201831069,-0.198440824129 +2.462,-2.01221171504,-0.193404351673 +2.463,-2.01240015874,-0.188443694498 +2.464,-2.0125837165,-0.183557759408 +2.465,-2.01276246196,-0.178745467193 +2.466,-2.01293646771,-0.174005752507 +2.467,-2.01310580528,-0.169337563755 +2.468,-2.01327054514,-0.164739862962 +2.469,-2.01343075677,-0.160211625657 +2.47,-2.01358650861,-0.155751840749 +2.471,-2.01373786812,-0.151359510401 +2.472,-2.01388490177,-0.147033649907 +2.473,-2.01402767506,-0.142773287567 +2.474,-2.01416625252,-0.138577464562 +2.475,-2.01430069776,-0.134445234823 +2.476,-2.01443107342,-0.130375664913 +2.477,-2.01455744125,-0.126367833892 +2.478,-2.01467986209,-0.122420833197 +2.479,-2.01479839585,-0.118533766511 +2.48,-2.0149131016,-0.114705749635 +2.481,-2.01502403751,-0.110935910366 +2.482,-2.0151312609,-0.107223388364 +2.483,-2.01523482824,-0.10356733503 +2.484,-2.01533479515,-0.0999669133753 +2.485,-2.01543121645,-0.0964212978977 +2.486,-2.01552414612,-0.092929674454 +2.487,-2.01561363736,-0.0894912401344 +2.488,-2.01569974257,-0.0861052031362 +2.489,-2.01578251335,-0.0827707826392 +2.49,-2.01586200056,-0.0794872086807 +2.491,-2.01593825428,-0.0762537220308 +2.492,-2.01601132385,-0.073069574069 +2.493,-2.01608125788,-0.0699340266603 +2.494,-2.01614810423,-0.0668463520331 +2.495,-2.01621191006,-0.0638058326565 +2.496,-2.01627272183,-0.060811761119 +2.497,-2.01633058527,-0.0578634400077 +2.498,-2.01638554545,-0.0549601817881 +2.499,-2.01643764676,-0.0521013086844 +2.5,-2.01648693291,-0.0492861525614 +2.501,-2.01653344696,-0.0465140548057 +2.502,-2.01657723133,-0.0437843662093 +2.503,-2.01661832778,-0.0410964468527 +2.504,-2.01665677744,-0.0384496659899 +2.505,-2.01669262084,-0.035843401933 +2.506,-2.01672589789,-0.0332770419392 +2.507,-2.01675664787,-0.0307499820969 +2.508,-2.0167849095,-0.0282616272144 +2.509,-2.01681072089,-0.0258113907084 +2.51,-2.01683411958,-0.0233986944937 +2.511,-2.01685514255,-0.0210229688738 +2.512,-2.0168738262,-0.0186836524327 +2.513,-2.01689020639,-0.0163801919273 +2.514,-2.01690431844,-0.0141120421809 +2.515,-2.0169161971,-0.0118786659777 +2.516,-2.01692587664,-0.00967953395792 +2.517,-2.01693339076,-0.00751412451474 +2.518,-2.01693877268,-0.00538192369114 +2.519,-2.01694205511,-0.00328242507848 +2.52,-2.01694327024,-0.00121512971584 +2.521,-2.01694244979,0.000820454009723 +2.522,-2.01693962498,0.0028248104618 +2.523,-2.01693482656,0.00479841685234 +2.524,-2.01692808481,0.00674174333832 +2.525,-2.01691942956,0.00865525311743 +2.526,-2.01690889016,0.0105394025228 +2.527,-2.01689649552,0.0123946411164 +2.528,-2.01688227411,0.0142214117824 +2.529,-2.01686625396,0.0160201508181 +2.53,-2.01684846267,0.0177912880248 +2.531,-2.01682892742,0.0195352467979 +2.532,-2.01680767498,0.0212524442152 +2.533,-2.01678473169,0.0229432911246 +2.534,-2.01676012349,0.024608192231 +2.535,-2.01673387595,0.0262475461817 +2.536,-2.0167060142,0.0278617456518 +2.537,-2.01667656302,0.0294511774271 +2.538,-2.0166455468,0.0310162224873 +2.539,-2.01661298955,0.0325572560882 +2.54,-2.0165789149,0.0340746478417 +2.541,-2.01654334614,0.0355687617964 +2.542,-2.01650630618,0.0370399565161 +2.543,-2.01646781759,0.0384885851581 +2.544,-2.0164279026,0.0399149955499 +2.545,-2.01638658307,0.0413195302656 +2.546,-2.01634388054,0.0427025267007 +2.547,-2.01629981622,0.0440643171469 +2.548,-2.016254411,0.0454052288645 +2.549,-2.01620768541,0.0467255841559 +2.55,-2.01615965971,0.0480257004361 +2.551,-2.01611035382,0.0493058903039 +2.552,-2.01605978736,0.0505664616112 +2.553,-2.01600797964,0.0518077175323 +2.554,-2.01595494968,0.0530299566312 +2.555,-2.01590071621,0.054233472929 +2.556,-2.01584529766,0.05541855597 +2.557,-2.01578871217,0.0565854908872 +2.558,-2.01573097761,0.0577345584663 +2.559,-2.01567211157,0.05886603521 +2.56,-2.01561213138,0.0599801934001 +2.561,-2.01555105408,0.0610773011598 +2.562,-2.01548889645,0.062157622515 +2.563,-2.01542567504,0.0632214174542 +2.564,-2.01536140609,0.0642689419885 +2.565,-2.01529610565,0.0653004482098 +2.566,-2.01522978946,0.0663161843492 +2.567,-2.01516247307,0.0673163948339 +2.568,-2.01509417175,0.0683013203436 +2.569,-2.01502490055,0.0692711978661 +2.57,-2.01495467429,0.0702262607525 +2.571,-2.01488350755,0.0711667387705 +2.572,-2.01481141469,0.0720928581588 +2.573,-2.01473840985,0.0730048416788 +2.574,-2.01466450694,0.0739029086671 +2.575,-2.01458971967,0.0747872750864 +2.576,-2.01451406151,0.0756581535762 +2.577,-2.01443754576,0.0765157535022 +2.578,-2.01436018548,0.0773602810058 +2.579,-2.01428199354,0.0781919390523 +2.58,-2.01420298261,0.0790109274785 +2.581,-2.01412316517,0.0798174430401 +2.582,-2.01404255349,0.0806116794576 +2.583,-2.01396115966,0.0813938274624 +2.584,-2.01387899559,0.0821640748417 +2.585,-2.01379607298,0.0829226064831 +2.586,-2.01371240338,0.0836696044183 +2.587,-2.01362799813,0.0844052478661 +2.588,-2.01354286841,0.0851297132753 +2.589,-2.01345702524,0.0858431743666 +2.59,-2.01337047944,0.0865458021737 +2.591,-2.01328324167,0.0872377650843 +2.592,-2.01319532244,0.0879192288803 +2.593,-2.01310673209,0.0885903567771 +2.594,-2.01301748078,0.089251309463 +2.595,-2.01292757853,0.0899022451374 +2.596,-2.01283703521,0.0905433195488 +2.597,-2.01274586053,0.0911746860322 +2.598,-2.01265406403,0.0917964955458 +2.599,-2.01256165514,0.0924088967073 +2.6,-2.0124686431,0.0930120358296 +2.601,-2.01237503704,0.0936060569561 +2.602,-2.01228084594,0.0941911018955 +2.603,-2.01218607863,0.0947673102557 +2.604,-2.01209074381,0.0953348194776 +2.605,-2.01199485005,0.0958937648686 +2.606,-2.01189840577,0.0964442796347 +2.607,-2.01180141927,0.0969864949134 +2.608,-2.01170389873,0.097520539805 +2.609,-2.01160585219,0.0980465414038 +2.61,-2.01150728757,0.0985646248293 +2.611,-2.01140821265,0.0990749132563 +2.612,-2.01130863512,0.0995775279448 +2.613,-2.01120856254,0.10007258827 +2.614,-2.01110800232,0.100560211749 +2.615,-2.01100696181,0.101040514075 +2.616,-2.0109054482,0.101513609137 +2.617,-2.01080346859,0.101979609055 +2.618,-2.01070102997,0.102438624205 +2.619,-2.0105981392,0.102890763244 +2.62,-2.01049480307,0.103336133138 +2.621,-2.01039102823,0.103774839189 +2.622,-2.01028682125,0.104206985059 +2.623,-2.01018218857,0.104632672797 +2.624,-2.01007713657,0.105052002862 +2.625,-2.0099716715,0.105465074148 +2.626,-2.00986579951,0.105871984012 +2.627,-2.00975952668,0.106272828291 +2.628,-2.00965285898,0.106667701332 +2.629,-2.00954580229,0.10705669601 +2.63,-2.00943836238,0.107439903755 +2.631,-2.00933054497,0.107817414571 +2.632,-2.00922235565,0.10818931706 +2.633,-2.00911379995,0.108555698444 +2.634,-2.00900488331,0.108916644585 +2.635,-2.00889561107,0.109272240007 +2.636,-2.0087859885,0.109622567916 +2.637,-2.00867602079,0.109967710223 +2.638,-2.00856571304,0.110307747559 +2.639,-2.00845507028,0.110642759301 +2.64,-2.00834409746,0.110972823588 +2.641,-2.00823279944,0.111298017339 +2.642,-2.00812118103,0.111618416274 +2.643,-2.00800924693,0.111934094936 +2.644,-2.00789700181,0.112245126701 +2.645,-2.00778445022,0.112551583803 +2.646,-2.00767159668,0.112853537351 +2.647,-2.00755844563,0.113151057342 +2.648,-2.00744500141,0.113444212683 +2.649,-2.00733126834,0.113733071208 +2.65,-2.00721725064,0.11401769969 +2.651,-2.00710295248,0.114298163864 +2.652,-2.00698837795,0.114574528437 +2.653,-2.00687353109,0.114846857109 +2.654,-2.00675841588,0.115115212585 +2.655,-2.00664303622,0.115379656592 +2.656,-2.00652739597,0.115640249896 +2.657,-2.00641149892,0.115897052314 +2.658,-2.0062953488,0.116150122731 +2.659,-2.00617894928,0.116399519112 +2.66,-2.00606230398,0.11664529852 +2.661,-2.00594541646,0.116887517126 +2.662,-2.00582829023,0.117126230228 +2.663,-2.00571092874,0.117361492258 +2.664,-2.00559333539,0.117593356802 +2.665,-2.00547551351,0.117821876609 +2.666,-2.00535746641,0.118047103606 +2.667,-2.00523919732,0.118269088909 +2.668,-2.00512070943,0.118487882839 +2.669,-2.0050020059,0.11870353493 +2.67,-2.0048830898,0.118916093947 +2.671,-2.0047639642,0.119125607891 +2.672,-2.00464463207,0.119332124016 +2.673,-2.00452509638,0.11953568884 +2.674,-2.00440536004,0.119736348155 +2.675,-2.00428542589,0.11993414704 +2.676,-2.00416529676,0.120129129869 +2.677,-2.00404497542,0.120321340327 +2.678,-2.0039244646,0.120510821417 +2.679,-2.00380376698,0.120697615471 +2.68,-2.00368288522,0.120881764162 +2.681,-2.00356182191,0.121063308514 +2.682,-2.00344057962,0.12124228891 +2.683,-2.00331916087,0.121418745105 +2.684,-2.00319756816,0.121592716234 +2.685,-2.00307580392,0.121764240822 +2.686,-2.00295387056,0.121933356796 +2.687,-2.00283177046,0.122100101488 +2.688,-2.00270950595,0.122264511651 +2.689,-2.00258707932,0.122426623466 +2.69,-2.00246449285,0.122586472548 +2.691,-2.00234174876,0.122744093961 +2.692,-2.00221884924,0.122899522218 +2.693,-2.00209579644,0.123052791298 +2.694,-2.00197259251,0.123203934651 +2.695,-2.00184923952,0.123352985203 +2.696,-2.00172573955,0.123499975371 +2.697,-2.00160209461,0.123644937065 +2.698,-2.00147830671,0.123787901699 +2.699,-2.00135437781,0.123928900198 +2.7,-2.00123030985,0.124067963006 +2.701,-2.00110610473,0.124205120091 +2.702,-2.00098176433,0.124340400957 +2.703,-2.00085729049,0.124473834648 +2.704,-2.00073268504,0.124605449757 +2.705,-2.00060794977,0.12473527443 +2.706,-2.00048308643,0.124863336377 +2.707,-2.00035809677,0.124989662877 +2.708,-2.00023298249,0.125114280782 +2.709,-2.00010774527,0.12523721653 +2.71,-1.99998238677,0.125358496146 +2.711,-1.99985690863,0.12547814525 +2.712,-1.99973131244,0.125596189064 +2.713,-1.99960559979,0.125712652417 +2.714,-1.99947977223,0.125827559755 +2.715,-1.99935383129,0.12594093514 +2.716,-1.99922777849,0.126052802264 +2.717,-1.99910161531,0.126163184446 +2.718,-1.9989753432,0.126272104647 +2.719,-1.99884896362,0.126379585469 +2.72,-1.99872247797,0.126485649163 +2.721,-1.99859588765,0.126590317636 +2.722,-1.99846919404,0.126693612452 +2.723,-1.99834239848,0.126795554841 +2.724,-1.99821550232,0.126896165705 +2.725,-1.99808850685,0.12699546562 +2.726,-1.99796141338,0.127093474841 +2.727,-1.99783422316,0.127190213312 +2.728,-1.99770693746,0.127285700665 +2.729,-1.99757955751,0.127379956228 +2.73,-1.99745208451,0.127472999028 +2.731,-1.99732451966,0.127564847798 +2.732,-1.99719686414,0.12765552098 +2.733,-1.9970691191,0.127745036729 +2.734,-1.99694128569,0.12783341292 +2.735,-1.99681336502,0.12792066715 +2.736,-1.9966853582,0.128006816742 +2.737,-1.99655726633,0.128091878752 +2.738,-1.99642909046,0.128175869971 +2.739,-1.99630083165,0.128258806928 +2.74,-1.99617249094,0.128340705899 +2.741,-1.99604406936,0.128421582905 +2.742,-1.99591556791,0.12850145372 +2.743,-1.99578698757,0.128580333872 +2.744,-1.99565832933,0.128658238652 +2.745,-1.99552959415,0.128735183109 +2.746,-1.99540078297,0.128811182063 +2.747,-1.99527189672,0.128886250103 +2.748,-1.99514293632,0.128960401592 +2.749,-1.99501390267,0.129033650671 +2.75,-1.99488479665,0.129106011261 +2.751,-1.99475561916,0.129177497068 +2.752,-1.99462637104,0.129248121587 +2.753,-1.99449705314,0.129317898102 +2.754,-1.9943676663,0.129386839694 +2.755,-1.99423821134,0.129454959239 +2.756,-1.99410868907,0.129522269416 +2.757,-1.99397910029,0.129588782706 +2.758,-1.99384944578,0.129654511398 +2.759,-1.99371972631,0.129719467591 +2.76,-1.99358994264,0.129783663197 +2.761,-1.99346009553,0.129847109943 +2.762,-1.99333018572,0.129909819375 +2.763,-1.99320021391,0.129971802862 +2.764,-1.99307018084,0.130033071594 +2.765,-1.9929400872,0.130093636592 +2.766,-1.9928099337,0.130153508704 +2.767,-1.992679721,0.130212698612 +2.768,-1.99254944978,0.130271216831 +2.769,-1.99241912071,0.130329073716 +2.77,-1.99228873443,0.13038627946 +2.771,-1.99215829158,0.130442844101 +2.772,-1.99202779281,0.13049877752 +2.773,-1.99189723872,0.130554089446 +2.774,-1.99176662993,0.130608789458 +2.775,-1.99163596704,0.130662886987 +2.776,-1.99150525065,0.130716391319 +2.777,-1.99137448134,0.130769311597 +2.778,-1.99124365968,0.130821656821 +2.779,-1.99111278624,0.130873435855 +2.78,-1.99098186159,0.130924657423 +2.781,-1.99085088626,0.130975330119 +2.782,-1.99071986079,0.1310254624 +2.783,-1.99058878573,0.131075062595 +2.784,-1.99045766159,0.131124138905 +2.785,-1.99032648889,0.131172699403 +2.786,-1.99019526814,0.131220752038 +2.787,-1.99006399984,0.131268304638 +2.788,-1.98993268447,0.13131536491 +2.789,-1.98980132253,0.13136194044 +2.79,-1.98966991449,0.131408038701 +2.791,-1.98953846083,0.131453667047 +2.792,-1.98940696199,0.131498832722 +2.793,-1.98927541845,0.131543542857 +2.794,-1.98914383065,0.131587804473 +2.795,-1.98901219902,0.131631624484 +2.796,-1.98888052401,0.131675009697 +2.797,-1.98874880604,0.131717966814 +2.798,-1.98861704554,0.131760502436 +2.799,-1.98848524292,0.131802623058 +2.8,-1.98835339858,0.131844335081 +2.801,-1.98822151294,0.131885644803 +2.802,-1.98808958638,0.131926558426 +2.803,-1.9879576193,0.13196708206 +2.804,-1.98782561208,0.132007221716 +2.805,-1.98769356509,0.132046983318 +2.806,-1.98756147872,0.132086372694 +2.807,-1.98742935333,0.132125395585 +2.808,-1.98729718927,0.132164057645 +2.809,-1.9871649869,0.132202364439 +2.81,-1.98703274658,0.132240321447 +2.811,-1.98690046865,0.132277934066 +2.812,-1.98676815344,0.13231520761 +2.813,-1.98663580129,0.13235214731 +2.814,-1.98650341253,0.132388758318 +2.815,-1.98637098749,0.132425045706 +2.816,-1.98623852647,0.132461014471 +2.817,-1.9861060298,0.132496669529 +2.818,-1.98597349779,0.132532015724 +2.819,-1.98584093073,0.132567057824 +2.82,-1.98570832893,0.132601800526 +2.821,-1.98557569268,0.132636248453 +2.822,-1.98544302228,0.132670406157 +2.823,-1.985310318,0.132704278122 +2.824,-1.98517758013,0.132737868762 +2.825,-1.98504480895,0.132771182424 +2.826,-1.98491200472,0.132804223388 +2.827,-1.98477916773,0.132836995869 +2.828,-1.98464629822,0.132869504017 +2.829,-1.98451339647,0.132901751919 +2.83,-1.98438046273,0.132933743599 +2.831,-1.98424749724,0.13296548302 +2.832,-1.98411450027,0.132996974083 +2.833,-1.98398147205,0.133028220632 +2.834,-1.98384841282,0.133059226449 +2.835,-1.98371532283,0.133089995261 +2.836,-1.9835822023,0.133120530736 +2.837,-1.98344905146,0.133150836487 +2.838,-1.98331587055,0.133180916071 +2.839,-1.98318265977,0.133210772992 +2.84,-1.98304941936,0.1332404107 +2.841,-1.98291614953,0.13326983259 +2.842,-1.98278285049,0.133299042009 +2.843,-1.98264952244,0.133328042251 +2.844,-1.98251616561,0.133356836559 +2.845,-1.98238278018,0.133385428128 +2.846,-1.98224936636,0.133413820102 +2.847,-1.98211592434,0.133442015581 +2.848,-1.98198245433,0.133470017613 +2.849,-1.9818489565,0.133497829203 +2.85,-1.98171543104,0.133525453308 +2.851,-1.98158187815,0.133552892842 +2.852,-1.981448298,0.133580150672 +2.853,-1.98131469077,0.133607229625 +2.854,-1.98118105664,0.133634132481 +2.855,-1.98104739578,0.133660861979 +2.856,-1.98091370836,0.133687420818 +2.857,-1.98077999454,0.133713811653 +2.858,-1.98064625451,0.133740037102 +2.859,-1.98051248841,0.133766099739 +2.86,-1.98037869641,0.133792002103 +2.861,-1.98024487866,0.133817746691 +2.862,-1.98011103532,0.133843335964 +2.863,-1.97997716655,0.133868772344 +2.864,-1.97984327249,0.133894058219 +2.865,-1.9797093533,0.133919195938 +2.866,-1.97957540911,0.133944187814 +2.867,-1.97944144007,0.133969036128 +2.868,-1.97930744633,0.133993743122 +2.869,-1.97917342802,0.134018311007 +2.87,-1.97903938528,0.134042741961 +2.871,-1.97890531824,0.134067038125 +2.872,-1.97877122704,0.134091201612 +2.873,-1.9786371118,0.1341152345 +2.874,-1.97850297266,0.134139138837 +2.875,-1.97836880975,0.134162916639 +2.876,-1.97823462318,0.13418656989 +2.877,-1.97810041308,0.134210100548 +2.878,-1.97796617957,0.134233510538 +2.879,-1.97783192276,0.134256801756 +2.88,-1.97769764279,0.134279976071 +2.881,-1.97756333975,0.134303035321 +2.882,-1.97742901377,0.13432598132 +2.883,-1.97729466495,0.13434881585 +2.884,-1.97716029341,0.134371540669 +2.885,-1.97702589926,0.134394157507 +2.886,-1.97689148259,0.13441666807 +2.887,-1.97675704351,0.134439074035 +2.888,-1.97662258214,0.134461377055 +2.889,-1.97648809856,0.134483578759 +2.89,-1.97635359288,0.13450568075 +2.891,-1.97621906519,0.134527684608 +2.892,-1.9760845156,0.134549591887 +2.893,-1.9759499442,0.134571404119 +2.894,-1.97581535107,0.134593122813 +2.895,-1.97568073633,0.134614749454 +2.896,-1.97554610004,0.134636285507 +2.897,-1.97541144231,0.134657732412 +2.898,-1.97527676322,0.134679091588 +2.899,-1.97514206285,0.134700364433 +2.9,-1.9750073413,0.134721552325 +2.901,-1.97487259864,0.13474265662 +2.902,-1.97473783496,0.134763678652 +2.903,-1.97460305034,0.134784619737 +2.904,-1.97446824486,0.134805481172 +2.905,-1.9743334186,0.134826264231 +2.906,-1.97419857163,0.134846970172 +2.907,-1.97406370403,0.134867600233 +2.908,-1.97392881587,0.134888155632 +2.909,-1.97379390723,0.13490863757 +2.91,-1.97365897819,0.134929047231 +2.911,-1.9735240288,0.134949385778 +2.912,-1.97338905915,0.134969654359 +2.913,-1.97325406929,0.134989854104 +2.914,-1.97311905931,0.135009986126 +2.915,-1.97298402926,0.135030051521 +2.916,-1.9728489792,0.135050051369 +2.917,-1.97271390922,0.135069986733 +2.918,-1.97257881936,0.135089858661 +2.919,-1.97244370969,0.135109668184 +2.92,-1.97230858027,0.135129416319 +2.921,-1.97217343117,0.135149104066 +2.922,-1.97203826244,0.135168732411 +2.923,-1.97190307414,0.135188302325 +2.924,-1.97176786632,0.135207814765 +2.925,-1.97163263905,0.135227270673 +2.926,-1.97149739238,0.135246670976 +2.927,-1.97136212636,0.135266016589 +2.928,-1.97122684105,0.135285308411 +2.929,-1.97109153651,0.135304547329 +2.93,-1.97095621277,0.135323734218 +2.931,-1.9708208699,0.135342869936 +2.932,-1.97068550795,0.135361955332 +2.933,-1.97055012696,0.13538099124 +2.934,-1.97041472698,0.135399978482 +2.935,-1.97027930806,0.135418917868 +2.936,-1.97014387025,0.135437810196 +2.937,-1.97000841359,0.135456656252 +2.938,-1.96987293814,0.135475456809 +2.939,-1.96973744392,0.135494212629 +2.94,-1.969601931,0.135512924465 +2.941,-1.96946639941,0.135531593055 +2.942,-1.96933084919,0.135550219128 +2.943,-1.96919528038,0.135568803402 +2.944,-1.96905969304,0.135587346584 +2.945,-1.96892408719,0.13560584937 +2.946,-1.96878846288,0.135624312447 +2.947,-1.96865282014,0.135642736489 +2.948,-1.96851715902,0.135661122163 +2.949,-1.96838147955,0.135679470125 +2.95,-1.96824578177,0.13569778102 +2.951,-1.96811006571,0.135716055484 +2.952,-1.96797433142,0.135734294145 +2.953,-1.96783857892,0.13575249762 +2.954,-1.96770280825,0.135770666517 +2.955,-1.96756701945,0.135788801434 +2.956,-1.96743121255,0.135806902964 +2.957,-1.96729538758,0.135824971685 +2.958,-1.96715954457,0.135843008172 +2.959,-1.96702368355,0.135861012989 +2.96,-1.96688780457,0.135878986691 +2.961,-1.96675190764,0.135896929826 +2.962,-1.9666159928,0.135914842933 +2.963,-1.96648006007,0.135932726544 +2.964,-1.96634410949,0.135950581182 +2.965,-1.96620814108,0.135968407362 +2.966,-1.96607215487,0.135986205593 +2.967,-1.9659361509,0.136003976375 +2.968,-1.96580012918,0.1360217202 +2.969,-1.96566408974,0.136039437555 +2.97,-1.96552803261,0.136057128918 +2.971,-1.96539195782,0.136074794761 +2.972,-1.96525586538,0.136092435547 +2.973,-1.96511975533,0.136110051734 +2.974,-1.96498362769,0.136127643772 +2.975,-1.96484748247,0.136145212106 +2.976,-1.96471131972,0.136162757174 +2.977,-1.96457513944,0.136180279405 +2.978,-1.96443894166,0.136197779224 +2.979,-1.9643027264,0.13621525705 +2.98,-1.96416649369,0.136232713294 +2.981,-1.96403024354,0.136250148363 +2.982,-1.96389397598,0.136267562656 +2.983,-1.96375769102,0.136284956567 +2.984,-1.96362138869,0.136302330485 +2.985,-1.963485069,0.136319684791 +2.986,-1.96334873198,0.136337019864 +2.987,-1.96321237765,0.136354336073 +2.988,-1.96307600601,0.136371633784 +2.989,-1.9629396171,0.136388913358 +2.99,-1.96280321093,0.13640617515 +2.991,-1.96266678751,0.13642341951 +2.992,-1.96253034686,0.136440646782 +2.993,-1.962393889,0.136457857305 +2.994,-1.96225741395,0.136475051414 +2.995,-1.96212092172,0.136492229438 +2.996,-1.96198441233,0.136509391703 +2.997,-1.96184788579,0.136526538529 +2.998,-1.96171134212,0.136543670229 +2.999,-1.96157478133,0.136560787116 +3.,-1.96143820344,0.136577889494 +3.001,-1.96130160847,0.136594977666 +3.002,-1.96116499642,0.136612051928 +3.003,-1.9610283673,0.136629112574 +3.004,-1.96089172114,0.136646159891 +3.005,-1.96075505795,0.136663194164 +3.006,-1.96061837773,0.136680215673 +3.007,-1.96048168051,0.136697224693 +3.008,-1.96034496629,0.136714221496 +3.009,-1.96020823508,0.136731206351 +3.01,-1.9600714869,0.136748179521 +3.011,-1.95993472176,0.136765141266 +3.012,-1.95979793967,0.136782091842 +3.013,-1.95966114064,0.136799031502 +3.014,-1.95952432468,0.136815960495 +3.015,-1.9593874918,0.136832879066 +3.016,-1.95925064201,0.136849787456 +3.017,-1.95911377532,0.136866685903 +3.018,-1.95897689175,0.136883574643 +3.019,-1.95883999129,0.136900453905 +3.02,-1.95870307397,0.136917323918 +3.021,-1.95856613979,0.136934184907 +3.022,-1.95842918875,0.136951037092 +3.023,-1.95829222087,0.136967880691 +3.024,-1.95815523615,0.136984715919 +3.025,-1.95801823461,0.137001542987 +3.026,-1.95788121625,0.137018362105 +3.027,-1.95774418107,0.137035173478 +3.028,-1.9576071291,0.137051977308 +3.029,-1.95747006032,0.137068773794 +3.03,-1.95733297476,0.137085563134 +3.031,-1.95719587241,0.137102345521 +3.032,-1.95705875329,0.137119121147 +3.033,-1.9569216174,0.137135890199 +3.034,-1.95678446475,0.137152652862 +3.035,-1.95664729534,0.137169409321 +3.036,-1.95651010918,0.137186159754 +3.037,-1.95637290628,0.13720290434 +3.038,-1.95623568663,0.137219643253 +3.039,-1.95609845026,0.137236376666 +3.04,-1.95596119715,0.137253104748 +3.041,-1.95582392732,0.137269827668 +3.042,-1.95568664078,0.13728654559 +3.043,-1.95554933752,0.137303258678 +3.044,-1.95541201755,0.13731996709 +3.045,-1.95527468088,0.137336670986 +3.046,-1.95513732751,0.137353370521 +3.047,-1.95499995745,0.137370065848 +3.048,-1.95486257069,0.13738675712 +3.049,-1.95472516724,0.137403444484 +3.05,-1.95458774712,0.137420128088 +3.051,-1.95445031031,0.137436808077 +3.052,-1.95431285682,0.137453484594 +3.053,-1.95417538667,0.137470157779 +3.054,-1.95403789984,0.137486827771 +3.055,-1.95390039634,0.137503494706 +3.056,-1.95376287618,0.13752015872 +3.057,-1.95362533936,0.137536819946 +3.058,-1.95348778589,0.137553478513 +3.059,-1.95335021575,0.137570134552 +3.06,-1.95321262896,0.137586788189 +3.061,-1.95307502552,0.13760343955 +3.062,-1.95293740543,0.137620088758 +3.063,-1.9527997687,0.137636735936 +3.064,-1.95266211532,0.137653381203 +3.065,-1.95252444529,0.137670024677 +3.066,-1.95238675863,0.137686666476 +3.067,-1.95224905532,0.137703306715 +3.068,-1.95211133537,0.137719945506 +3.069,-1.95197359879,0.137736582962 +3.07,-1.95183584557,0.137753219193 +3.071,-1.95169807572,0.137769854308 +3.072,-1.95156028923,0.137786488412 +3.073,-1.95142248611,0.137803121613 +3.074,-1.95128466635,0.137819754015 +3.075,-1.95114682997,0.137836385719 +3.076,-1.95100897695,0.137853016827 +3.077,-1.9508711073,0.137869647439 +3.078,-1.95073322103,0.137886277653 +3.079,-1.95059531812,0.137902907566 +3.08,-1.95045739858,0.137919537273 +3.081,-1.95031946241,0.13793616687 +3.082,-1.95018150962,0.137952796448 +3.083,-1.95004354019,0.137969426099 +3.084,-1.94990555414,0.137986055914 +3.085,-1.94976755145,0.138002685982 +3.086,-1.94962953213,0.13801931639 +3.087,-1.94949149619,0.138035947225 +3.088,-1.94935344361,0.138052578572 +3.089,-1.9492153744,0.138069210516 +3.09,-1.94907728855,0.13808584314 +3.091,-1.94893918608,0.138102476525 +3.092,-1.94880106697,0.138119110751 +3.093,-1.94866293122,0.1381357459 +3.094,-1.94852477884,0.138152382048 +3.095,-1.94838660982,0.138169019274 +3.096,-1.94824842416,0.138185657653 +3.097,-1.94811022186,0.138202297262 +3.098,-1.94797200293,0.138218938173 +3.099,-1.94783376735,0.138235580461 +3.1,-1.94769551512,0.138252224197 +3.101,-1.94755724625,0.138268869453 +3.102,-1.94741896074,0.138285516298 +3.103,-1.94728065857,0.138302164802 +3.104,-1.94714233976,0.138318815034 +3.105,-1.94700400429,0.13833546706 +3.106,-1.94686565217,0.138352120946 +3.107,-1.94672728339,0.138368776759 +3.108,-1.94658889796,0.138385434563 +3.109,-1.94645049586,0.138402094422 +3.11,-1.94631207711,0.138418756398 +3.111,-1.94617364169,0.138435420553 +3.112,-1.9460351896,0.138452086949 +3.113,-1.94589672084,0.138468755645 +3.114,-1.94575823542,0.138485426702 +3.115,-1.94561973332,0.138502100177 +3.116,-1.94548121454,0.138518776129 +3.117,-1.94534267909,0.138535454615 +3.118,-1.94520412695,0.138552135691 +3.119,-1.94506555813,0.138568819413 +3.12,-1.94492697262,0.138585505835 +3.121,-1.94478837043,0.138602195012 +3.122,-1.94464975154,0.138618886996 +3.123,-1.94451111596,0.13863558184 +3.124,-1.94437246368,0.138652279597 +3.125,-1.9442337947,0.138668980317 +3.126,-1.94409510902,0.138685684051 +3.127,-1.94395640663,0.138702390849 +3.128,-1.94381768752,0.13871910076 +3.129,-1.94367895171,0.138735813833 +3.13,-1.94354019918,0.138752530114 +3.131,-1.94340142993,0.138769249653 +3.132,-1.94326264396,0.138785972494 +3.133,-1.94312384126,0.138802698684 +3.134,-1.94298502183,0.138819428269 +3.135,-1.94284618567,0.138836161294 +3.136,-1.94270733277,0.138852897801 +3.137,-1.94256846313,0.138869637836 +3.138,-1.94242957675,0.138886381441 +3.139,-1.94229067362,0.138903128659 +3.14,-1.94215175375,0.138919879531 +3.141,-1.94201281711,0.138936634098 +3.142,-1.94187386372,0.138953392403 +3.143,-1.94173489356,0.138970154484 +3.144,-1.94159590664,0.138986920382 +3.145,-1.94145690295,0.139003690136 +3.146,-1.94131788249,0.139020463785 +3.147,-1.94117884525,0.139037241366 +3.148,-1.94103979123,0.139054022918 +3.149,-1.94090072042,0.139070808479 +3.15,-1.94076163282,0.139087598083 +3.151,-1.94062252843,0.139104391769 +3.152,-1.94048340724,0.139121189571 +3.153,-1.94034426925,0.139137991526 +3.154,-1.94020511445,0.139154797668 +3.155,-1.94006594284,0.139171608031 +3.156,-1.93992675442,0.13918842265 +3.157,-1.93978754918,0.139205241559 +3.158,-1.93964832711,0.139222064789 +3.159,-1.93950908822,0.139238892375 +3.16,-1.93936983249,0.139255724349 +3.161,-1.93923055993,0.139272560742 +3.162,-1.93909127053,0.139289401586 +3.163,-1.93895196429,0.139306246912 +3.164,-1.93881264119,0.139323096751 +3.165,-1.93867330124,0.139339951133 +3.166,-1.93853394443,0.139356810089 +3.167,-1.93839457075,0.139373673648 +3.168,-1.93825518021,0.139390541839 +3.169,-1.9381157728,0.139407414691 +3.17,-1.93797634851,0.139424292232 +3.171,-1.93783690733,0.139441174492 +3.172,-1.93769744927,0.139458061497 +3.173,-1.93755797432,0.139474953275 +3.174,-1.93741848247,0.139491849854 +3.175,-1.93727897371,0.13950875126 +3.176,-1.93713944806,0.139525657519 +3.177,-1.93699990549,0.139542568659 +3.178,-1.936860346,0.139559484704 +3.179,-1.9367207696,0.139576405681 +3.18,-1.93658117627,0.139593331614 +3.181,-1.936441566,0.139610262529 +3.182,-1.93630193881,0.13962719845 +3.183,-1.93616229467,0.139644139402 +3.184,-1.93602263358,0.139661085408 +3.185,-1.93588295554,0.139678036493 +3.186,-1.93574326055,0.13969499268 +3.187,-1.9356035486,0.139711953992 +3.188,-1.93546381968,0.139728920452 +3.189,-1.93532407379,0.139745892083 +3.19,-1.93518431092,0.139762868908 +3.191,-1.93504453107,0.139779850948 +3.192,-1.93490473423,0.139796838225 +3.193,-1.9347649204,0.139813830761 +3.194,-1.93462508957,0.139830828578 +3.195,-1.93448524174,0.139847831697 +3.196,-1.9343453769,0.139864840138 +3.197,-1.93420549504,0.139881853923 +3.198,-1.93406559617,0.139898873071 +3.199,-1.93392568027,0.139915897603 +3.2,-1.93378574734,0.139932927539 +3.201,-1.93364579738,0.139949962899 +3.202,-1.93350583038,0.139967003702 +3.203,-1.93336584633,0.139984049968 +3.204,-1.93322584523,0.140001101716 +3.205,-1.93308582707,0.140018158964 +3.206,-1.93294579184,0.140035221732 +3.207,-1.93280573955,0.140052290037 +3.208,-1.93266567019,0.140069363898 +3.209,-1.93252558375,0.140086443334 +3.21,-1.93238548022,0.140103528362 +3.211,-1.9322453596,0.140120619 +3.212,-1.93210522188,0.140137715265 +3.213,-1.93196506707,0.140154817175 +3.214,-1.93182489514,0.140171924747 +3.215,-1.9316847061,0.140189037997 +3.216,-1.93154449995,0.140206156943 +3.217,-1.93140427667,0.140223281601 +3.218,-1.93126403625,0.140240411988 +3.219,-1.93112377871,0.14025754812 +3.22,-1.93098350402,0.140274690013 +3.221,-1.93084321218,0.140291837682 +3.222,-1.93070290319,0.140308991144 +3.223,-1.93056257704,0.140326150415 +3.224,-1.93042223372,0.140343315509 +3.225,-1.93028187323,0.140360486442 +3.226,-1.93014149557,0.14037766323 +3.227,-1.93000110073,0.140394845886 +3.228,-1.92986068869,0.140412034427 +3.229,-1.92972025946,0.140429228866 +3.23,-1.92957981303,0.140446429218 +3.231,-1.9294393494,0.140463635498 +3.232,-1.92929886855,0.140480847719 +3.233,-1.92915837048,0.140498065896 +3.234,-1.92901785519,0.140515290044 +3.235,-1.92887732267,0.140532520175 +3.236,-1.92873677292,0.140549756303 +3.237,-1.92859620592,0.140566998443 +3.238,-1.92845562167,0.140584246607 +3.239,-1.92831502017,0.140601500809 +3.24,-1.92817440141,0.140618761062 +3.241,-1.92803376538,0.140636027379 +3.242,-1.92789311208,0.140653299772 +3.243,-1.92775244151,0.140670578256 +3.244,-1.92761175364,0.140687862843 +3.245,-1.92747104849,0.140705153544 +3.246,-1.92733032604,0.140722450373 +3.247,-1.92718958629,0.140739753343 +3.248,-1.92704882922,0.140757062464 +3.249,-1.92690805485,0.14077437775 +3.25,-1.92676726315,0.140791699213 +3.251,-1.92662645412,0.140809026864 +3.252,-1.92648562776,0.140826360715 +3.253,-1.92634478406,0.140843700778 +3.254,-1.92620392301,0.140861047065 +3.255,-1.92606304461,0.140878399587 +3.256,-1.92592214885,0.140895758356 +3.257,-1.92578123573,0.140913123383 +3.258,-1.92564030523,0.140930494679 +3.259,-1.92549935736,0.140947872255 +3.26,-1.92535839211,0.140965256123 +3.261,-1.92521740946,0.140982646293 +3.262,-1.92507640942,0.141000042776 +3.263,-1.92493539197,0.141017445583 +3.264,-1.92479435712,0.141034854725 +3.265,-1.92465330485,0.141052270213 +3.266,-1.92451223515,0.141069692056 +3.267,-1.92437114803,0.141087120265 +3.268,-1.92423004348,0.141104554852 +3.269,-1.92408892148,0.141121995825 +3.27,-1.92394778204,0.141139443195 +3.271,-1.92380662514,0.141156896973 +3.272,-1.92366545079,0.141174357168 +3.273,-1.92352425896,0.141191823791 +3.274,-1.92338304967,0.141209296851 +3.275,-1.92324182289,0.141226776357 +3.276,-1.92310057863,0.141244262321 +3.277,-1.92295931687,0.141261754751 +3.278,-1.92281803762,0.141279253657 +3.279,-1.92267674086,0.141296759049 +3.28,-1.92253542659,0.141314270936 +3.281,-1.9223940948,0.141331789328 +3.282,-1.92225274548,0.141349314234 +3.283,-1.92211137864,0.141366845662 +3.284,-1.92196999426,0.141384383623 +3.285,-1.92182859233,0.141401928126 +3.286,-1.92168717285,0.141419479179 +3.287,-1.92154573581,0.141437036792 +3.288,-1.92140428121,0.141454600974 +3.289,-1.92126280904,0.141472171733 +3.29,-1.92112131929,0.141489749078 +3.291,-1.92097981196,0.141507333019 +3.292,-1.92083828703,0.141524923563 +3.293,-1.92069674451,0.14154252072 +3.294,-1.92055518439,0.141560124499 +3.295,-1.92041360665,0.141577734907 +3.296,-1.9202720113,0.141595351953 +3.297,-1.92013039833,0.141612975646 +3.298,-1.91998876772,0.141630605995 +3.299,-1.91984711948,0.141648243007 +3.3,-1.91970545359,0.141665886691 +3.301,-1.91956377005,0.141683537054 +3.302,-1.91942206886,0.141701194107 +3.303,-1.91928035,0.141718857856 +3.304,-1.91913861347,0.141736528309 +3.305,-1.91899685927,0.141754205475 +3.306,-1.91885508738,0.141771889362 +3.307,-1.9187132978,0.141789579978 +3.308,-1.91857149052,0.14180727733 +3.309,-1.91842966554,0.141824981427 +3.31,-1.91828782285,0.141842692276 +3.311,-1.91814596244,0.141860409886 +3.312,-1.9180040843,0.141878134263 +3.313,-1.91786218844,0.141895865417 +3.314,-1.91772027483,0.141913603354 +3.315,-1.91757834349,0.141931348082 +3.316,-1.91743639439,0.141949099608 +3.317,-1.91729442753,0.141966857941 +3.318,-1.9171524429,0.141984623088 +3.319,-1.91701044051,0.142002395056 +3.32,-1.91686842034,0.142020173853 +3.321,-1.91672638238,0.142037959486 +3.322,-1.91658432662,0.142055751963 +3.323,-1.91644225307,0.14207355129 +3.324,-1.91630016172,0.142091357476 +3.325,-1.91615805255,0.142109170528 +3.326,-1.91601592555,0.142126990453 +3.327,-1.91587378074,0.142144817257 +3.328,-1.91573161809,0.142162650949 +3.329,-1.9155894376,0.142180491535 +3.33,-1.91544723926,0.142198339023 +3.331,-1.91530502306,0.14221619342 +3.332,-1.91516278901,0.142234054732 +3.333,-1.91502053708,0.142251922968 +3.334,-1.91487826729,0.142269798133 +3.335,-1.91473597961,0.142287680234 +3.336,-1.91459367404,0.14230556928 +3.337,-1.91445135057,0.142323465276 +3.338,-1.9143090092,0.14234136823 +3.339,-1.91416664993,0.142359278149 +3.34,-1.91402427273,0.142377195038 +3.341,-1.91388187761,0.142395118906 +3.342,-1.91373946456,0.142413049759 +3.343,-1.91359703357,0.142430987604 +3.344,-1.91345458464,0.142448932447 +3.345,-1.91331211776,0.142466884295 +3.346,-1.91316963291,0.142484843156 +3.347,-1.91302713011,0.142502809035 +3.348,-1.91288460932,0.142520781939 +3.349,-1.91274207056,0.142538761875 +3.35,-1.91259951381,0.142556748849 +3.351,-1.91245693907,0.142574742869 +3.352,-1.91231434633,0.142592743941 +3.353,-1.91217173557,0.14261075207 +3.354,-1.91202910681,0.142628767265 +3.355,-1.91188646002,0.14264678953 +3.356,-1.9117437952,0.142664818874 +3.357,-1.91160111234,0.142682855301 +3.358,-1.91145841144,0.14270089882 +3.359,-1.91131569249,0.142718949435 +3.36,-1.91117295549,0.142737007154 +3.361,-1.91103020042,0.142755071983 +3.362,-1.91088742727,0.142773143929 +3.363,-1.91074463605,0.142791222997 +3.364,-1.91060182674,0.142809309194 +3.365,-1.91045899934,0.142827402526 +3.366,-1.91031615383,0.142845503 +3.367,-1.91017329022,0.142863610622 +3.368,-1.9100304085,0.142881725398 +3.369,-1.90988750865,0.142899847335 +3.37,-1.90974459067,0.142917976438 +3.371,-1.90960165456,0.142936112714 +3.372,-1.90945870031,0.14295425617 +3.373,-1.9093157279,0.142972406811 +3.374,-1.90917273733,0.142990564644 +3.375,-1.9090297286,0.143008729674 +3.376,-1.9088867017,0.143026901908 +3.377,-1.90874365662,0.143045081352 +3.378,-1.90860059335,0.143063268013 +3.379,-1.90845751189,0.143081461896 +3.38,-1.90831441223,0.143099663007 +3.381,-1.90817129436,0.143117871353 +3.382,-1.90802815827,0.143136086939 +3.383,-1.90788500396,0.143154309772 +3.384,-1.90774183142,0.143172539858 +3.385,-1.90759864064,0.143190777203 +3.386,-1.90745543162,0.143209021812 +3.387,-1.90731220435,0.143227273693 +3.388,-1.90716895881,0.14324553285 +3.389,-1.90702569502,0.14326379929 +3.39,-1.90688241294,0.143282073019 +3.391,-1.90673911259,0.143300354043 +3.392,-1.90659579395,0.143318642368 +3.393,-1.90645245701,0.143336938 +3.394,-1.90630910177,0.143355240944 +3.395,-1.90616572822,0.143373551207 +3.396,-1.90602233635,0.143391868795 +3.397,-1.90587892615,0.143410193713 +3.398,-1.90573549763,0.143428525968 +3.399,-1.90559205076,0.143446865565 +3.4,-1.90544858555,0.143465212511 +3.401,-1.90530510198,0.14348356681 +3.402,-1.90516160005,0.14350192847 +3.403,-1.90501807976,0.143520297496 +3.404,-1.90487454108,0.143538673894 +3.405,-1.90473098402,0.143557057669 +3.406,-1.90458740858,0.143575448828 +3.407,-1.90444381473,0.143593847377 +3.408,-1.90430020248,0.143612253321 +3.409,-1.90415657181,0.143630666665 +3.41,-1.90401292272,0.143649087417 +3.411,-1.90386925521,0.143667515582 +3.412,-1.90372556925,0.143685951165 +3.413,-1.90358186486,0.143704394173 +3.414,-1.90343814202,0.14372284461 +3.415,-1.90329440071,0.143741302484 +3.416,-1.90315064095,0.1437597678 +3.417,-1.9030068627,0.143778240563 +3.418,-1.90286306598,0.143796720779 +3.419,-1.90271925078,0.143815208455 +3.42,-1.90257541707,0.143833703596 +3.421,-1.90243156487,0.143852206207 +3.422,-1.90228769415,0.143870716295 +3.423,-1.90214380492,0.143889233865 +3.424,-1.90199989716,0.143907758923 +3.425,-1.90185597087,0.143926291475 +3.426,-1.90171202603,0.143944831526 +3.427,-1.90156806265,0.143963379082 +3.428,-1.90142408072,0.14398193415 +3.429,-1.90128008022,0.144000496734 +3.43,-1.90113606116,0.14401906684 +3.431,-1.90099202351,0.144037644475 +3.432,-1.90084796728,0.144056229643 +3.433,-1.90070389246,0.144074822351 +3.434,-1.90055979904,0.144093422605 +3.435,-1.90041568701,0.144112030409 +3.436,-1.90027155636,0.14413064577 +3.437,-1.90012740709,0.144149268694 +3.438,-1.89998323919,0.144167899186 +3.439,-1.89983905266,0.144186537251 +3.44,-1.89969484747,0.144205182897 +3.441,-1.89955062364,0.144223836127 +3.442,-1.89940638114,0.144242496949 +3.443,-1.89926211997,0.144261165367 +3.444,-1.89911784013,0.144279841387 +3.445,-1.89897354161,0.144298525016 +3.446,-1.89882922439,0.144317216258 +3.447,-1.89868488848,0.144335915119 +3.448,-1.89854053386,0.144354621606 +3.449,-1.89839616052,0.144373335723 +3.45,-1.89825176846,0.144392057477 +3.451,-1.89810735768,0.144410786873 +3.452,-1.89796292815,0.144429523917 +3.453,-1.89781847988,0.144448268615 +3.454,-1.89767401286,0.144467020971 +3.455,-1.89752952708,0.144485780993 +3.456,-1.89738502253,0.144504548685 +3.457,-1.89724049921,0.144523324053 +3.458,-1.8970959571,0.144542107103 +3.459,-1.8969513962,0.14456089784 +3.46,-1.89680681651,0.144579696271 +3.461,-1.896662218,0.144598502401 +3.462,-1.89651760069,0.144617316235 +3.463,-1.89637296455,0.14463613778 +3.464,-1.89622830958,0.14465496704 +3.465,-1.89608363578,0.144673804022 +3.466,-1.89593894313,0.144692648731 +3.467,-1.89579423163,0.144711501173 +3.468,-1.89564950127,0.144730361354 +3.469,-1.89550475204,0.144749229279 +3.47,-1.89535998393,0.144768104954 +3.471,-1.89521519695,0.144786988384 +3.472,-1.89507039107,0.144805879576 +3.473,-1.89492556629,0.144824778535 +3.474,-1.8947807226,0.144843685266 +3.475,-1.89463586,0.144862599776 +3.476,-1.89449097848,0.144881522069 +3.477,-1.89434607803,0.144900452153 +3.478,-1.89420115864,0.144919390031 +3.479,-1.8940562203,0.144938335711 +3.48,-1.89391126301,0.144957289197 +3.481,-1.89376628676,0.144976250495 +3.482,-1.89362129154,0.144995219612 +3.483,-1.89347627735,0.145014196552 +3.484,-1.89333124417,0.145033181322 +3.485,-1.89318619199,0.145052173927 +3.486,-1.89304112082,0.145071174372 +3.487,-1.89289603063,0.145090182664 +3.488,-1.89275092144,0.145109198808 +3.489,-1.89260579321,0.14512822281 +3.49,-1.89246064596,0.145147254675 +3.491,-1.89231547966,0.14516629441 +3.492,-1.89217029432,0.145185342019 +3.493,-1.89202508992,0.145204397509 +3.494,-1.89187986646,0.145223460885 +3.495,-1.89173462393,0.145242532154 +3.496,-1.89158936232,0.14526161132 +3.497,-1.89144408162,0.145280698389 +3.498,-1.89129878183,0.145299793367 +3.499,-1.89115346293,0.14531889626 +3.5,-1.89100812492,0.145338007074 +3.501,-1.8908627678,0.145357125814 +3.502,-1.89071739155,0.145376252486 +3.503,-1.89057199616,0.145395387095 +3.504,-1.89042658163,0.145414529648 +3.505,-1.89028114795,0.145433680149 +3.506,-1.89013569511,0.145452838606 +3.507,-1.88999022311,0.145472005023 +3.508,-1.88984473193,0.145491179406 +3.509,-1.88969922156,0.145510361761 +3.51,-1.88955369201,0.145529552094 +3.511,-1.88940814326,0.14554875041 +3.512,-1.88926257531,0.145567956716 +3.513,-1.88911698813,0.145587171016 +3.514,-1.88897138174,0.145606393317 +3.515,-1.88882575612,0.145625623624 +3.516,-1.88868011126,0.145644861944 +3.517,-1.88853444715,0.145664108281 +3.518,-1.88838876378,0.145683362642 +3.519,-1.88824306116,0.145702625033 +3.52,-1.88809733926,0.145721895458 +3.521,-1.88795159809,0.145741173925 +3.522,-1.88780583763,0.145760460438 +3.523,-1.88766005787,0.145779755003 +3.524,-1.88751425882,0.145799057627 +3.525,-1.88736844045,0.145818368314 +3.526,-1.88722260276,0.145837687072 +3.527,-1.88707674575,0.145857013905 +3.528,-1.8869308694,0.145876348819 +3.529,-1.88678497371,0.14589569182 +3.53,-1.88663905866,0.145915042915 +3.531,-1.88649312426,0.145934402108 +3.532,-1.88634717049,0.145953769405 +3.533,-1.88620119735,0.145973144813 +3.534,-1.88605520482,0.145992528336 +3.535,-1.8859091929,0.146011919982 +3.536,-1.88576316158,0.146031319755 +3.537,-1.88561711085,0.146050727662 +3.538,-1.88547104071,0.146070143708 +3.539,-1.88532495114,0.1460895679 +3.54,-1.88517884214,0.146109000242 +3.541,-1.8850327137,0.146128440741 +3.542,-1.88488656581,0.146147889403 +3.543,-1.88474039846,0.146167346233 +3.544,-1.88459421165,0.146186811238 +3.545,-1.88444800537,0.146206284423 +3.546,-1.8843017796,0.146225765793 +3.547,-1.88415553435,0.146245255356 +3.548,-1.88400926959,0.146264753116 +3.549,-1.88386298534,0.14628425908 +3.55,-1.88371668156,0.146303773253 +3.551,-1.88357035827,0.146323295642 +3.552,-1.88342401544,0.146342826252 +3.553,-1.88327765307,0.146362365089 +3.554,-1.88313127116,0.146381912158 +3.555,-1.8829848697,0.146401467467 +3.556,-1.88283844866,0.14642103102 +3.557,-1.88269200806,0.146440602824 +3.558,-1.88254554788,0.146460182884 +3.559,-1.88239906811,0.146479771207 +3.56,-1.88225256874,0.146499367798 +3.561,-1.88210604977,0.146518972663 +3.562,-1.88195951118,0.146538585809 +3.563,-1.88181295297,0.14655820724 +3.564,-1.88166637514,0.146577836963 +3.565,-1.88151977766,0.146597474985 +3.566,-1.88137316054,0.14661712131 +3.567,-1.88122652376,0.146636775944 +3.568,-1.88107986733,0.146656438895 +3.569,-1.88093319122,0.146676110167 +3.57,-1.88078649543,0.146695789766 +3.571,-1.88063977995,0.146715477699 +3.572,-1.88049304477,0.146735173972 +3.573,-1.8803462899,0.14675487859 +3.574,-1.8801995153,0.14677459156 +3.575,-1.88005272099,0.146794312886 +3.576,-1.87990590695,0.146814042577 +3.577,-1.87975907317,0.146833780636 +3.578,-1.87961221964,0.146853527071 +3.579,-1.87946534636,0.146873281887 +3.58,-1.87931845331,0.146893045091 +3.581,-1.8791715405,0.146912816687 +3.582,-1.8790246079,0.146932596683 +3.583,-1.87887765552,0.146952385085 +3.584,-1.87873068333,0.146972181898 +3.585,-1.87858369135,0.146991987128 +3.586,-1.87843667955,0.147011800781 +3.587,-1.87828964792,0.147031622864 +3.588,-1.87814259647,0.147051453382 +3.589,-1.87799552518,0.147071292342 +3.59,-1.87784843404,0.147091139749 +3.591,-1.87770132304,0.14711099561 +3.592,-1.87755419218,0.14713085993 +3.593,-1.87740704145,0.147150732716 +3.594,-1.87725987083,0.147170613974 +3.595,-1.87711268033,0.14719050371 +3.596,-1.87696546993,0.147210401929 +3.597,-1.87681823962,0.147230308639 +3.598,-1.8766709894,0.147250223844 +3.599,-1.87652371925,0.147270147551 +3.6,-1.87637642917,0.147290079767 +3.601,-1.87622911915,0.147310020497 +3.602,-1.87608178918,0.147329969748 +3.603,-1.87593443925,0.147349927525 +3.604,-1.87578706936,0.147369893834 +3.605,-1.87563967949,0.147389868683 +3.606,-1.87549226964,0.147409852076 +3.607,-1.87534483979,0.14742984402 +3.608,-1.87519738995,0.147449844522 +3.609,-1.8750499201,0.147469853586 +3.61,-1.87490243022,0.14748987122 +3.611,-1.87475492033,0.14750989743 +3.612,-1.87460739039,0.147529932221 +3.613,-1.87445984042,0.147549975601 +3.614,-1.87431227039,0.147570027574 +3.615,-1.8741646803,0.147590088147 +3.616,-1.87401707015,0.147610157327 +3.617,-1.87386943991,0.14763023512 +3.618,-1.87372178959,0.147650321531 +3.619,-1.87357411917,0.147670416567 +3.62,-1.87342642865,0.147690520235 +3.621,-1.87327871802,0.14771063254 +3.622,-1.87313098727,0.147730753488 +3.623,-1.87298323638,0.147750883086 +3.624,-1.87283546536,0.14777102134 +3.625,-1.87268767419,0.147791168257 +3.626,-1.87253986287,0.147811323841 +3.627,-1.87239203138,0.147831488101 +3.628,-1.87224417972,0.147851661042 +3.629,-1.87209630788,0.147871842669 +3.63,-1.87194841584,0.14789203299 +3.631,-1.87180050361,0.147912232011 +3.632,-1.87165257117,0.147932439738 +3.633,-1.87150461852,0.147952656177 +3.634,-1.87135664564,0.147972881335 +3.635,-1.87120865252,0.147993115217 +3.636,-1.87106063916,0.148013357831 +3.637,-1.87091260555,0.148033609182 +3.638,-1.87076455168,0.148053869276 +3.639,-1.87061647755,0.148074138121 +3.64,-1.87046838313,0.148094415722 +3.641,-1.87032026843,0.148114702085 +3.642,-1.87017213343,0.148134997218 +3.643,-1.87002397813,0.148155301125 +3.644,-1.86987580252,0.148175613815 +3.645,-1.86972760658,0.148195935292 +3.646,-1.86957939031,0.148216265563 +3.647,-1.86943115371,0.148236604636 +3.648,-1.86928289676,0.148256952515 +3.649,-1.86913461945,0.148277309207 +3.65,-1.86898632177,0.148297674719 +3.651,-1.86883800372,0.148318049058 +3.652,-1.86868966529,0.148338432229 +3.653,-1.86854130647,0.148358824238 +3.654,-1.86839292724,0.148379225093 +3.655,-1.86824452761,0.1483996348 +3.656,-1.86809610756,0.148420053365 +3.657,-1.86794766707,0.148440480794 +3.658,-1.86779920616,0.148460917094 +3.659,-1.86765072479,0.148481362271 +3.66,-1.86750222298,0.148501816332 +3.661,-1.8673537007,0.148522279284 +3.662,-1.86720515795,0.148542751131 +3.663,-1.86705659472,0.148563231882 +3.664,-1.86690801099,0.148583721543 +3.665,-1.86675940677,0.148604220119 +3.666,-1.86661078205,0.148624727618 +3.667,-1.8664621368,0.148645244046 +3.668,-1.86631347103,0.148665769409 +3.669,-1.86616478473,0.148686303714 +3.67,-1.86601607788,0.148706846968 +3.671,-1.86586735048,0.148727399176 +3.672,-1.86571860252,0.148747960346 +3.673,-1.86556983399,0.148768530483 +3.674,-1.86542104488,0.148789109595 +3.675,-1.86527223519,0.148809697688 +3.676,-1.86512340489,0.148830294768 +3.677,-1.86497455399,0.148850900842 +3.678,-1.86482568247,0.148871515917 +3.679,-1.86467679033,0.148892139999 +3.68,-1.86452787756,0.148912773094 +3.681,-1.86437894415,0.14893341521 +3.682,-1.86422999008,0.148954066352 +3.683,-1.86408101535,0.148974726527 +3.684,-1.86393201996,0.148995395743 +3.685,-1.86378300388,0.149016074005 +3.686,-1.86363396712,0.149036761319 +3.687,-1.86348490966,0.149057457694 +3.688,-1.8633358315,0.149078163135 +3.689,-1.86318673262,0.149098877648 +3.69,-1.86303761302,0.149119601241 +3.691,-1.86288847269,0.14914033392 +3.692,-1.86273931161,0.149161075692 +3.693,-1.86259012979,0.149181826563 +3.694,-1.8624409272,0.14920258654 +3.695,-1.86229170384,0.14922335563 +3.696,-1.86214245971,0.149244133839 +3.697,-1.86199319479,0.149264921174 +3.698,-1.86184390907,0.149285717642 +3.699,-1.86169460255,0.149306523249 +3.7,-1.86154527521,0.149327338002 +3.701,-1.86139592705,0.149348161907 +3.702,-1.86124655805,0.149368994972 +3.703,-1.86109716822,0.149389837203 +3.704,-1.86094775753,0.149410688606 +3.705,-1.86079832598,0.149431549189 +3.706,-1.86064887356,0.149452418959 +3.707,-1.86049940026,0.149473297921 +3.708,-1.86034990608,0.149494186082 +3.709,-1.86020039099,0.149515083451 +3.71,-1.860050855,0.149535990032 +3.711,-1.8599012981,0.149556905833 +3.712,-1.85975172026,0.149577830861 +3.713,-1.8596021215,0.149598765122 +3.714,-1.85945250179,0.149619708623 +3.715,-1.85930286113,0.149640661371 +3.716,-1.85915319951,0.149661623373 +3.717,-1.85900351691,0.149682594636 +3.718,-1.85885381334,0.149703575165 +3.719,-1.85870408877,0.149724564969 +3.72,-1.85855434321,0.149745564054 +3.721,-1.85840457664,0.149766572427 +3.722,-1.85825478905,0.149787590094 +3.723,-1.85810498043,0.149808617062 +3.724,-1.85795515077,0.149829653339 +3.725,-1.85780530008,0.149850698931 +3.726,-1.85765542832,0.149871753845 +3.727,-1.8575055355,0.149892818087 +3.728,-1.85735562161,0.149913891666 +3.729,-1.85720568664,0.149934974586 +3.73,-1.85705573057,0.149956066857 +3.731,-1.8569057534,0.149977168483 +3.732,-1.85675575512,0.149998279473 +3.733,-1.85660573572,0.150019399833 +3.734,-1.85645569519,0.150040529569 +3.735,-1.85630563352,0.15006166869 +3.736,-1.85615555071,0.150082817202 +3.737,-1.85600544673,0.150103975111 +3.738,-1.85585532159,0.150125142425 +3.739,-1.85570517527,0.150146319151 +3.74,-1.85555500777,0.150167505295 +3.741,-1.85540481906,0.150188700865 +3.742,-1.85525460916,0.150209905867 +3.743,-1.85510437804,0.150231120309 +3.744,-1.85495412569,0.150252344197 +3.745,-1.85480385212,0.150273577539 +3.746,-1.8546535573,0.150294820341 +3.747,-1.85450324122,0.15031607261 +3.748,-1.85435290389,0.150337334354 +3.749,-1.85420254528,0.150358605579 +3.75,-1.8540521654,0.150379886293 +3.751,-1.85390176422,0.150401176502 +3.752,-1.85375134174,0.150422476214 +3.753,-1.85360089796,0.150443785436 +3.754,-1.85345043286,0.150465104173 +3.755,-1.85329994642,0.150486432435 +3.756,-1.85314943865,0.150507770227 +3.757,-1.85299890953,0.150529117557 +3.758,-1.85284835906,0.150550474432 +3.759,-1.85269778722,0.150571840859 +3.76,-1.852547194,0.150593216845 +3.761,-1.8523965794,0.150614602397 +3.762,-1.8522459434,0.150635997522 +3.763,-1.852095286,0.150657402228 +3.764,-1.85194460718,0.150678816521 +3.765,-1.85179390694,0.150700240409 +3.766,-1.85164318527,0.150721673898 +3.767,-1.85149244215,0.150743116996 +3.768,-1.85134167758,0.15076456971 +3.769,-1.85119089155,0.150786032047 +3.77,-1.85104008405,0.150807504015 +3.771,-1.85088925506,0.15082898562 +3.772,-1.85073840458,0.15085047687 +3.773,-1.85058753261,0.150871977772 +3.774,-1.85043663912,0.150893488332 +3.775,-1.85028572411,0.150915008559 +3.776,-1.85013478757,0.150936538459 +3.777,-1.84998382949,0.15095807804 +3.778,-1.84983284987,0.150979627309 +3.779,-1.84968184868,0.151001186273 +3.78,-1.84953082592,0.151022754939 +3.781,-1.84937978159,0.151044333315 +3.782,-1.84922871567,0.151065921408 +3.783,-1.84907762815,0.151087519224 +3.784,-1.84892651902,0.151109126772 +3.785,-1.84877538828,0.151130744059 +3.786,-1.84862423591,0.151152371091 +3.787,-1.8484730619,0.151174007877 +3.788,-1.84832186625,0.151195654423 +3.789,-1.84817064894,0.151217310737 +3.79,-1.84801940996,0.151238976826 +3.791,-1.84786814931,0.151260652698 +3.792,-1.84771686697,0.151282338359 +3.793,-1.84756556293,0.151304033817 +3.794,-1.8474142372,0.15132573908 +3.795,-1.84726288974,0.151347454154 +3.796,-1.84711152056,0.151369179047 +3.797,-1.84696012965,0.151390913767 +3.798,-1.84680871699,0.151412658321 +3.799,-1.84665728258,0.151434412716 +3.8,-1.8465058264,0.151456176959 +3.801,-1.84635434845,0.151477951058 +3.802,-1.84620284871,0.151499735021 +3.803,-1.84605132719,0.151521528855 +3.804,-1.84589978385,0.151543332566 +3.805,-1.84574821871,0.151565146164 +3.806,-1.84559663174,0.151586969654 +3.807,-1.84544502293,0.151608803045 +3.808,-1.84529339229,0.151630646344 +3.809,-1.84514173979,0.151652499558 +3.81,-1.84499006543,0.151674362695 +3.811,-1.84483836919,0.151696235762 +3.812,-1.84468665107,0.151718118767 +3.813,-1.84453491106,0.151740011718 +3.814,-1.84438314914,0.151761914621 +3.815,-1.84423136532,0.151783827484 +3.816,-1.84407955957,0.151805750315 +3.817,-1.84392773188,0.151827683122 +3.818,-1.84377588226,0.151849625911 +3.819,-1.84362401068,0.15187157869 +3.82,-1.84347211714,0.151893541468 +3.821,-1.84332020162,0.15191551425 +3.822,-1.84316826413,0.151937497046 +3.823,-1.84301630464,0.151959489862 +3.824,-1.84286432314,0.151981492707 +3.825,-1.84271231964,0.152003505587 +3.826,-1.84256029411,0.15202552851 +3.827,-1.84240824655,0.152047561484 +3.828,-1.84225617694,0.152069604517 +3.829,-1.84210408529,0.152091657615 +3.83,-1.84195197157,0.152113720788 +3.831,-1.84179983577,0.152135794041 +3.832,-1.84164767789,0.152157877384 +3.833,-1.84149549792,0.152179970823 +3.834,-1.84134329585,0.152202074366 +3.835,-1.84119107166,0.152224188021 +3.836,-1.84103882535,0.152246311796 +3.837,-1.8408865569,0.152268445698 +3.838,-1.84073426631,0.152290589735 +3.839,-1.84058195357,0.152312743914 +3.84,-1.84042961866,0.152334908244 +3.841,-1.84027726158,0.152357082731 +3.842,-1.84012488231,0.152379267385 +3.843,-1.83997248085,0.152401462211 +3.844,-1.83982005718,0.152423667219 +3.845,-1.8396676113,0.152445882416 +3.846,-1.83951514319,0.152468107809 +3.847,-1.83936265285,0.152490343407 +3.848,-1.83921014026,0.152512589217 +3.849,-1.83905760541,0.152534845247 +3.85,-1.8389050483,0.152557111504 +3.851,-1.83875246891,0.152579387997 +3.852,-1.83859986724,0.152601674733 +3.853,-1.83844724327,0.15262397172 +3.854,-1.83829459699,0.152646278966 +3.855,-1.83814192839,0.152668596479 +3.856,-1.83798923747,0.152690924266 +3.857,-1.83783652421,0.152713262336 +3.858,-1.83768378859,0.152735610695 +3.859,-1.83753103063,0.152757969353 +3.86,-1.83737825029,0.152780338317 +3.861,-1.83722544757,0.152802717594 +3.862,-1.83707262246,0.152825107193 +3.863,-1.83691977496,0.152847507122 +3.864,-1.83676690504,0.152869917388 +3.865,-1.8366140127,0.152892337999 +3.866,-1.83646109793,0.152914768963 +3.867,-1.83630816072,0.152937210289 +3.868,-1.83615520106,0.152959661983 +3.869,-1.83600221893,0.152982124055 +3.87,-1.83584921434,0.153004596512 +3.871,-1.83569618726,0.153027079361 +3.872,-1.83554313769,0.153049572611 +3.873,-1.83539006561,0.15307207627 +3.874,-1.83523697102,0.153094590346 +3.875,-1.8350838539,0.153117114847 +3.876,-1.83493071425,0.15313964978 +3.877,-1.83477755206,0.153162195154 +3.878,-1.83462436731,0.153184750977 +3.879,-1.83447115999,0.153207317256 +3.88,-1.8343179301,0.153229894001 +3.881,-1.83416467762,0.153252481218 +3.882,-1.83401140254,0.153275078916 +3.883,-1.83385810485,0.153297687103 +3.884,-1.83370478454,0.153320305787 +3.885,-1.83355144161,0.153342934976 +3.886,-1.83339807603,0.153365574679 +3.887,-1.83324468781,0.153388224902 +3.888,-1.83309127692,0.153410885655 +3.889,-1.83293784337,0.153433556945 +3.89,-1.83278438713,0.153456238781 +3.891,-1.8326309082,0.15347893117 +3.892,-1.83247740656,0.153501634121 +3.893,-1.83232388222,0.153524347642 +3.894,-1.83217033514,0.153547071741 +3.895,-1.83201676534,0.153569806427 +3.896,-1.83186317279,0.153592551706 +3.897,-1.83170955748,0.153615307588 +3.898,-1.8315559194,0.153638074081 +3.899,-1.83140225855,0.153660851193 +3.9,-1.83124857491,0.153683638932 +3.901,-1.83109486848,0.153706437306 +3.902,-1.83094113923,0.153729246324 +3.903,-1.83078738716,0.153752065994 +3.904,-1.83063361227,0.153774896323 +3.905,-1.83047981453,0.153797737321 +3.906,-1.83032599394,0.153820588995 +3.907,-1.83017215049,0.153843451354 +3.908,-1.83001828417,0.153866324406 +3.909,-1.82986439496,0.153889208159 +3.91,-1.82971048285,0.153912102622 +3.911,-1.82955654785,0.153935007803 +3.912,-1.82940258992,0.153957923709 +3.913,-1.82924860907,0.153980850351 +3.914,-1.82909460529,0.154003787735 +3.915,-1.82894057855,0.15402673587 +3.916,-1.82878652885,0.154049694764 +3.917,-1.82863245619,0.154072664427 +3.918,-1.82847836055,0.154095644865 +3.919,-1.82832424191,0.154118636089 +3.92,-1.82817010027,0.154141638105 +3.921,-1.82801593562,0.154164650922 +3.922,-1.82786174795,0.154187674549 +3.923,-1.82770753724,0.154210708994 +3.924,-1.82755330348,0.154233754265 +3.925,-1.82739904667,0.154256810372 +3.926,-1.82724476679,0.154279877321 +3.927,-1.82709046384,0.154302955123 +3.928,-1.8269361378,0.154326043785 +3.929,-1.82678178865,0.154349143315 +3.93,-1.8266274164,0.154372253723 +3.931,-1.82647302102,0.154395375016 +3.932,-1.82631860252,0.154418507203 +3.933,-1.82616416087,0.154441650293 +3.934,-1.82600969606,0.154464804294 +3.935,-1.82585520809,0.154487969214 +3.936,-1.82570069695,0.154511145063 +3.937,-1.82554616262,0.154534331848 +3.938,-1.82539160509,0.154557529578 +3.939,-1.82523702435,0.154580738262 +3.94,-1.82508242039,0.154603957909 +3.941,-1.8249277932,0.154627188526 +3.942,-1.82477314277,0.154650430122 +3.943,-1.82461846909,0.154673682707 +3.944,-1.82446377214,0.154696946288 +3.945,-1.82430905192,0.154720220874 +3.946,-1.82415430842,0.154743506474 +3.947,-1.82399954161,0.154766803097 +3.948,-1.8238447515,0.154790110751 +3.949,-1.82368993807,0.154813429444 +3.95,-1.82353510131,0.154836759186 +3.951,-1.82338024121,0.154860099984 +3.952,-1.82322535776,0.154883451848 +3.953,-1.82307045095,0.154906814787 +3.954,-1.82291552076,0.154930188809 +3.955,-1.82276056718,0.154953573922 +3.956,-1.82260559021,0.154976970136 +3.957,-1.82245058984,0.155000377458 +3.958,-1.82229556604,0.155023795899 +3.959,-1.82214051881,0.155047225466 +3.96,-1.82198544815,0.155070666169 +3.961,-1.82183035403,0.155094118016 +3.962,-1.82167523645,0.155117581015 +3.963,-1.82152009539,0.155141055176 +3.964,-1.82136493085,0.155164540508 +3.965,-1.82120974282,0.155188037019 +3.966,-1.82105453127,0.155211544717 +3.967,-1.82089929621,0.155235063613 +3.968,-1.82074403761,0.155258593714 +3.969,-1.82058875548,0.155282135029 +3.97,-1.82043344979,0.155305687568 +3.971,-1.82027812054,0.155329251339 +3.972,-1.82012276771,0.155352826351 +3.973,-1.8199673913,0.155376412613 +3.974,-1.81981199129,0.155400010133 +3.975,-1.81965656767,0.155423618921 +3.976,-1.81950112043,0.155447238985 +3.977,-1.81934564956,0.155470870335 +3.978,-1.81919015505,0.155494512979 +3.979,-1.81903463688,0.155518166927 +3.98,-1.81887909505,0.155541832186 +3.981,-1.81872352954,0.155565508767 +3.982,-1.81856794035,0.155589196678 +3.983,-1.81841232745,0.155612895927 +3.984,-1.81825669084,0.155636606525 +3.985,-1.81810103051,0.15566032848 +3.986,-1.81794534645,0.155684061801 +3.987,-1.81778963865,0.155707806496 +3.988,-1.81763390708,0.155731562576 +3.989,-1.81747815175,0.155755330049 +3.99,-1.81732237264,0.155779108923 +3.991,-1.81716656975,0.155802899209 +3.992,-1.81701074304,0.155826700915 +3.993,-1.81685489253,0.15585051405 +3.994,-1.81669901819,0.155874338623 +3.995,-1.81654312002,0.155898174644 +3.996,-1.816387198,0.155922022121 +3.997,-1.81623125211,0.155945881064 +3.998,-1.81607528236,0.155969751481 +3.999,-1.81591928873,0.155993633382 +4.,-1.8157632712,0.156017526776 +4.001,-1.81560722977,0.156041431672 +4.002,-1.81545116442,0.15606534808 +4.003,-1.81529507515,0.156089276007 +4.004,-1.81513896193,0.156113215464 +4.005,-1.81498282476,0.15613716646 +4.006,-1.81482666364,0.156161129004 +4.007,-1.81467047853,0.156185103104 +4.008,-1.81451426944,0.156209088771 +4.009,-1.81435803636,0.156233086014 +4.01,-1.81420177926,0.156257094841 +4.011,-1.81404549815,0.156281115263 +4.012,-1.813889193,0.156305147287 +4.013,-1.81373286381,0.156329190924 +4.014,-1.81357651056,0.156353246183 +4.015,-1.81342013325,0.156377313073 +4.016,-1.81326373186,0.156401391603 +4.017,-1.81310730638,0.156425481783 +4.018,-1.81295085679,0.156449583622 +4.019,-1.8127943831,0.156473697129 +4.02,-1.81263788527,0.156497822314 +4.021,-1.81248136331,0.156521959186 +4.022,-1.81232481721,0.156546107754 +4.023,-1.81216824694,0.156570268028 +4.024,-1.8120116525,0.156594440017 +4.025,-1.81185503388,0.15661862373 +4.026,-1.81169839106,0.156642819177 +4.027,-1.81154172403,0.156667026367 +4.028,-1.81138503278,0.15669124531 +4.029,-1.81122831731,0.156715476016 +4.03,-1.81107157759,0.156739718492 +4.031,-1.81091481362,0.15676397275 +4.032,-1.81075802538,0.156788238798 +4.033,-1.81060121286,0.156812516646 +4.034,-1.81044437606,0.156836806303 +4.035,-1.81028751495,0.15686110778 +4.036,-1.81013062953,0.156885421084 +4.037,-1.80997371978,0.156909746227 +4.038,-1.8098167857,0.156934083217 +4.039,-1.80965982727,0.156958432063 +4.04,-1.80950284447,0.156982792777 +4.041,-1.80934583731,0.157007165366 +4.042,-1.80918880576,0.157031549841 +4.043,-1.80903174981,0.157055946211 +4.044,-1.80887466946,0.157080354486 +4.045,-1.80871756468,0.157104774675 +4.046,-1.80856043547,0.157129206788 +4.047,-1.80840328182,0.157153650834 +4.048,-1.80824610372,0.157178106824 +4.049,-1.80808890114,0.157202574767 +4.05,-1.80793167409,0.157227054672 +4.051,-1.80777442254,0.157251546549 +4.052,-1.80761714649,0.157276050408 +4.053,-1.80745984592,0.157300566259 +4.054,-1.80730252083,0.157325094111 +4.055,-1.8071451712,0.157349633973 +4.056,-1.80698779701,0.157374185856 +4.057,-1.80683039826,0.15739874977 +4.058,-1.80667297494,0.157423325723 +4.059,-1.80651552702,0.157447913727 +4.06,-1.80635805451,0.157472513789 +4.061,-1.80620055738,0.157497125922 +4.062,-1.80604303563,0.157521750133 +4.063,-1.80588548925,0.157546386433 +4.064,-1.80572791821,0.157571034832 +4.065,-1.80557032251,0.157595695339 +4.066,-1.80541270215,0.157620367965 +4.067,-1.80525505709,0.157645052719 +4.068,-1.80509738734,0.15766974961 +4.069,-1.80493969289,0.15769445865 +4.07,-1.80478197371,0.157719179847 +4.071,-1.80462422979,0.157743913212 +4.072,-1.80446646113,0.157768658755 +4.073,-1.80430866772,0.157793416484 +4.074,-1.80415084953,0.157818186411 +4.075,-1.80399300656,0.157842968546 +4.076,-1.8038351388,0.157867762897 +4.077,-1.80367724623,0.157892569475 +4.078,-1.80351932884,0.157917388291 +4.079,-1.80336138662,0.157942219353 +4.08,-1.80320341956,0.157967062673 +4.081,-1.80304542764,0.157991918259 +4.082,-1.80288741086,0.158016786123 +4.083,-1.80272936919,0.158041666273 +4.084,-1.80257130263,0.15806655872 +4.085,-1.80241321117,0.158091463475 +4.086,-1.80225509479,0.158116380546 +4.087,-1.80209695348,0.158141309945 +4.088,-1.80193878723,0.15816625168 +4.089,-1.80178059602,0.158191205763 +4.09,-1.80162237985,0.158216172204 +4.091,-1.8014641387,0.158241151011 +4.092,-1.80130587255,0.158266142197 +4.093,-1.80114758141,0.15829114577 +4.094,-1.80098926525,0.158316161741 +4.095,-1.80083092406,0.15834119012 +4.096,-1.80067255783,0.158366230917 +4.097,-1.80051416654,0.158391284142 +4.098,-1.80035575019,0.158416349806 +4.099,-1.80019730876,0.158441427918 +4.1,-1.80003884225,0.15846651849 +4.101,-1.79988035062,0.15849162153 +4.102,-1.79972183389,0.15851673705 +4.103,-1.79956329202,0.158541865059 +4.104,-1.79940472502,0.158567005568 +4.105,-1.79924613286,0.158592158588 +4.106,-1.79908751553,0.158617324127 +4.107,-1.79892887303,0.158642502197 +4.108,-1.79877020534,0.158667692808 +4.109,-1.79861151244,0.158692895971 +4.11,-1.79845279433,0.158718111695 +4.111,-1.79829405099,0.15874333999 +4.112,-1.79813528241,0.158768580868 +4.113,-1.79797648858,0.158793834339 +4.114,-1.79781766947,0.158819100412 +4.115,-1.7976588251,0.158844379099 +4.116,-1.79749995543,0.15886967041 +4.117,-1.79734106045,0.158894974354 +4.118,-1.79718214016,0.158920290943 +4.119,-1.79702319454,0.158945620187 +4.12,-1.79686422358,0.158970962097 +4.121,-1.79670522726,0.158996316682 +4.122,-1.79654620558,0.159021683954 +4.123,-1.79638715851,0.159047063922 +4.124,-1.79622808606,0.159072456598 +4.125,-1.79606898819,0.159097861991 +4.126,-1.79590986491,0.159123280113 +4.127,-1.7957507162,0.159148710973 +4.128,-1.79559154205,0.159174154583 +4.129,-1.79543234244,0.159199610953 +4.13,-1.79527311736,0.159225080093 +4.131,-1.7951138668,0.159250562014 +4.132,-1.79495459074,0.159276056726 +4.133,-1.79479528917,0.159301564241 +4.134,-1.79463596209,0.159327084568 +4.135,-1.79447660947,0.159352617719 +4.136,-1.79431723131,0.159378163704 +4.137,-1.79415782759,0.159403722533 +4.138,-1.79399839829,0.159429294218 +4.139,-1.79383894341,0.159454878769 +4.14,-1.79367946294,0.159480476196 +4.141,-1.79351995685,0.159506086511 +4.142,-1.79336042514,0.159531709723 +4.143,-1.7932008678,0.159557345845 +4.144,-1.7930412848,0.159582994886 +4.145,-1.79288167614,0.159608656857 +4.146,-1.79272204181,0.159634331769 +4.147,-1.79256238179,0.159660019633 +4.148,-1.79240269607,0.159685720459 +4.149,-1.79224298464,0.159711434258 +4.15,-1.79208324748,0.159737161042 +4.151,-1.79192348458,0.15976290082 +4.152,-1.79176369592,0.159788653605 +4.153,-1.7916038815,0.159814419405 +4.154,-1.7914440413,0.159840198234 +4.155,-1.79128417531,0.1598659901 +4.156,-1.79112428352,0.159891795016 +4.157,-1.79096436591,0.159917612991 +4.158,-1.79080442246,0.159943444038 +4.159,-1.79064445317,0.159969288166 +4.16,-1.79048445803,0.159995145387 +4.161,-1.79032443701,0.160021015712 +4.162,-1.79016439011,0.160046899152 +4.163,-1.79000431732,0.160072795717 +4.164,-1.78984421861,0.160098705418 +4.165,-1.78968409398,0.160124628268 +4.166,-1.78952394342,0.160150564276 +4.167,-1.78936376691,0.160176513453 +4.168,-1.78920356443,0.160202475811 +4.169,-1.78904333598,0.160228451361 +4.17,-1.78888308154,0.160254440113 +4.171,-1.7887228011,0.160280442079 +4.172,-1.78856249464,0.16030645727 +4.173,-1.78840216215,0.160332485697 +4.174,-1.78824180363,0.160358527371 +4.175,-1.78808141904,0.160384582303 +4.176,-1.78792100839,0.160410650504 +4.177,-1.78776057166,0.160436731986 +4.178,-1.78760010884,0.160462826759 +4.179,-1.7874396199,0.160488934836 +4.18,-1.78727910484,0.160515056225 +4.181,-1.78711856365,0.160541190941 +4.182,-1.78695799631,0.160567338992 +4.183,-1.78679740281,0.160593500391 +4.184,-1.78663678314,0.160619675148 +4.185,-1.78647613728,0.160645863276 +4.186,-1.78631546521,0.160672064785 +4.187,-1.78615476693,0.160698279686 +4.188,-1.78599404242,0.160724507992 +4.189,-1.78583329167,0.160750749712 +4.19,-1.78567251467,0.160777004859 +4.191,-1.78551171139,0.160803273443 +4.192,-1.78535088184,0.160829555477 +4.193,-1.78519002599,0.160855850971 +4.194,-1.78502914383,0.160882159937 +4.195,-1.78486823535,0.160908482386 +4.196,-1.78470730053,0.160934818329 +4.197,-1.78454633936,0.160961167778 +4.198,-1.78438535183,0.160987530745 +4.199,-1.78422433792,0.161013907241 +4.2,-1.78406329762,0.161040297276 +4.201,-1.78390223092,0.161066700864 +4.202,-1.78374113781,0.161093118015 +4.203,-1.78358001826,0.16111954874 +4.204,-1.78341887226,0.161145993051 +4.205,-1.78325769981,0.16117245096 +4.206,-1.78309650089,0.161198922478 +4.207,-1.78293527548,0.161225407617 +4.208,-1.78277402358,0.161251906388 +4.209,-1.78261274516,0.161278418803 +4.21,-1.78245144021,0.161304944873 +4.211,-1.78229010873,0.161331484611 +4.212,-1.78212875069,0.161358038026 +4.213,-1.78196736609,0.161384605132 +4.214,-1.7818059549,0.16141118594 +4.215,-1.78164451712,0.161437780461 +4.216,-1.78148305273,0.161464388708 +4.217,-1.78132156172,0.161491010691 +4.218,-1.78116004407,0.161517646422 +4.219,-1.78099849978,0.161544295914 +4.22,-1.78083692882,0.161570959178 +4.221,-1.78067533118,0.161597636225 +4.222,-1.78051370685,0.161624327067 +4.223,-1.78035205582,0.161651031717 +4.224,-1.78019037807,0.161677750185 +4.225,-1.78002867359,0.161704482484 +4.226,-1.77986694236,0.161731228626 +4.227,-1.77970518437,0.161757988622 +4.228,-1.77954339961,0.161784762483 +4.229,-1.77938158806,0.161811550223 +4.23,-1.77921974971,0.161838351852 +4.231,-1.77905788454,0.161865167383 +4.232,-1.77889599254,0.161891996828 +4.233,-1.7787340737,0.161918840198 +4.234,-1.77857212801,0.161945697505 +4.235,-1.77841015544,0.161972568761 +4.236,-1.77824815598,0.161999453979 +4.237,-1.77808612963,0.162026353169 +4.238,-1.77792407636,0.162053266345 +4.239,-1.77776199617,0.162080193517 +4.24,-1.77759988904,0.162107134699 +4.241,-1.77743775495,0.162134089901 +4.242,-1.77727559389,0.162161059137 +4.243,-1.77711340584,0.162188042417 +4.244,-1.7769511908,0.162215039755 +4.245,-1.77678894875,0.162242051162 +4.246,-1.77662667968,0.16226907665 +4.247,-1.77646438356,0.162296116231 +4.248,-1.77630206039,0.162323169918 +4.249,-1.77613971015,0.162350237722 +4.25,-1.77597733283,0.162377319656 +4.251,-1.77581492842,0.162404415732 +4.252,-1.77565249689,0.162431525961 +4.253,-1.77549003824,0.162458650357 +4.254,-1.77532755245,0.162485788931 +4.255,-1.77516503951,0.162512941696 +4.256,-1.7750024994,0.162540108663 +4.257,-1.77483993211,0.162567289846 +4.258,-1.77467733763,0.162594485256 +4.259,-1.77451471593,0.162621694905 +4.26,-1.77435206701,0.162648918806 +4.261,-1.77418939086,0.162676156971 +4.262,-1.77402668745,0.162703409412 +4.263,-1.77386395677,0.162730676142 +4.264,-1.77370119881,0.162757957173 +4.265,-1.77353841356,0.162785252517 +4.266,-1.773375601,0.162812562187 +4.267,-1.77321276111,0.162839886196 +4.268,-1.77304989389,0.162867224554 +4.269,-1.77288699931,0.162894577276 +4.27,-1.77272407737,0.162921944373 +4.271,-1.77256112804,0.162949325857 +4.272,-1.77239815132,0.162976721742 +4.273,-1.77223514719,0.16300413204 +4.274,-1.77207211563,0.163031556762 +4.275,-1.77190905663,0.163058995923 +4.276,-1.77174597018,0.163086449533 +4.277,-1.77158285627,0.163113917606 +4.278,-1.77141971487,0.163141400155 +4.279,-1.77125654597,0.163168897191 +4.28,-1.77109334956,0.163196408727 +4.281,-1.77093012563,0.163223934777 +4.282,-1.77076687415,0.163251475352 +4.283,-1.77060359512,0.163279030465 +4.284,-1.77044028852,0.163306600129 +4.285,-1.77027695434,0.163334184356 +4.286,-1.77011359255,0.16336178316 +4.287,-1.76995020316,0.163389396552 +4.288,-1.76978678613,0.163417024546 +4.289,-1.76962334146,0.163444667154 +4.29,-1.76945986914,0.163472324388 +4.291,-1.76929636914,0.163499996263 +4.292,-1.76913284146,0.16352768279 +4.293,-1.76896928608,0.163555383981 +4.294,-1.76880570298,0.163583099851 +4.295,-1.76864209215,0.163610830412 +4.296,-1.76847845357,0.163638575676 +4.297,-1.76831478724,0.163666335656 +4.298,-1.76815109313,0.163694110366 +4.299,-1.76798737123,0.163721899817 +4.3,-1.76782362152,0.163749704024 +4.301,-1.767659844,0.163777522998 +4.302,-1.76749603864,0.163805356754 +4.303,-1.76733220544,0.163833205302 +4.304,-1.76716834437,0.163861068658 +4.305,-1.76700445542,0.163888946833 +4.306,-1.76684053858,0.16391683984 +4.307,-1.76667659383,0.163944747693 +4.308,-1.76651262116,0.163972670405 +4.309,-1.76634862055,0.164000607987 +4.31,-1.76618459199,0.164028560455 +4.311,-1.76602053547,0.16405652782 +4.312,-1.76585645096,0.164084510096 +4.313,-1.76569233845,0.164112507295 +4.314,-1.76552819793,0.164140519431 +4.315,-1.76536402938,0.164168546517 +4.316,-1.76519983279,0.164196588567 +4.317,-1.76503560815,0.164224645592 +4.318,-1.76487135543,0.164252717607 +4.319,-1.76470707463,0.164280804624 +4.32,-1.76454276572,0.164308906657 +4.321,-1.7643784287,0.164337023719 +4.322,-1.76421406354,0.164365155823 +4.323,-1.76404967024,0.164393302982 +4.324,-1.76388524877,0.16442146521 +4.325,-1.76372079913,0.16444964252 +4.326,-1.76355632129,0.164477834925 +4.327,-1.76339181525,0.164506042438 +4.328,-1.76322728099,0.164534265073 +4.329,-1.76306271848,0.164562502844 +4.33,-1.76289812773,0.164590755762 +4.331,-1.7627335087,0.164619023843 +4.332,-1.7625688614,0.164647307099 +4.333,-1.76240418579,0.164675605543 +4.334,-1.76223948187,0.16470391919 +4.335,-1.76207474963,0.164732248051 +4.336,-1.76190998903,0.164760592142 +4.337,-1.76174520008,0.164788951475 +4.338,-1.76158038276,0.164817326064 +4.339,-1.76141553704,0.164845715923 +4.34,-1.76125066292,0.164874121064 +4.341,-1.76108576038,0.164902541501 +4.342,-1.7609208294,0.164930977248 +4.343,-1.76075586997,0.164959428319 +4.344,-1.76059088208,0.164987894727 +4.345,-1.7604258657,0.165016376486 +4.346,-1.76026082083,0.165044873608 +4.347,-1.76009574744,0.165073386109 +4.348,-1.75993064553,0.165101914001 +4.349,-1.75976551507,0.165130457298 +4.35,-1.75960035605,0.165159016015 +4.351,-1.75943516846,0.165187590163 +4.352,-1.75926995228,0.165216179758 +4.353,-1.7591047075,0.165244784813 +4.354,-1.75893943409,0.165273405342 +4.355,-1.75877413205,0.165302041358 +4.356,-1.75860880136,0.165330692875 +4.357,-1.758443442,0.165359359908 +4.358,-1.75827805396,0.165388042469 +4.359,-1.75811263722,0.165416740573 +4.36,-1.75794719176,0.165445454234 +4.361,-1.75778171758,0.165474183465 +4.362,-1.75761621465,0.16550292828 +4.363,-1.75745068296,0.165531688693 +4.364,-1.7572851225,0.165560464719 +4.365,-1.75711953324,0.16558925637 +4.366,-1.75695391518,0.165618063661 +4.367,-1.75678826829,0.165646886607 +4.368,-1.75662259256,0.16567572522 +4.369,-1.75645688799,0.165704579515 +4.37,-1.75629115454,0.165733449506 +4.371,-1.7561253922,0.165762335207 +4.372,-1.75595960096,0.165791236632 +4.373,-1.75579378081,0.165820153795 +4.374,-1.75562793172,0.165849086711 +4.375,-1.75546205369,0.165878035392 +4.376,-1.75529614669,0.165906999854 +4.377,-1.75513021071,0.16593598011 +4.378,-1.75496424573,0.165964976175 +4.379,-1.75479825174,0.165993988063 +4.38,-1.75463222873,0.166023015787 +4.381,-1.75446617667,0.166052059363 +4.382,-1.75430009555,0.166081118805 +4.383,-1.75413398536,0.166110194126 +4.384,-1.75396784607,0.166139285341 +4.385,-1.75380167768,0.166168392464 +4.386,-1.75363548016,0.16619751551 +4.387,-1.75346925351,0.166226654493 +4.388,-1.7533029977,0.166255809426 +4.389,-1.75313671272,0.166284980325 +4.39,-1.75297039855,0.166314167204 +4.391,-1.75280405518,0.166343370078 +4.392,-1.75263768259,0.16637258896 +4.393,-1.75247128077,0.166401823865 +4.394,-1.75230484969,0.166431074807 +4.395,-1.75213838935,0.166460341801 +4.396,-1.75197189973,0.166489624862 +4.397,-1.7518053808,0.166518924004 +4.398,-1.75163883256,0.166548239241 +4.399,-1.75147225499,0.166577570588 +4.4,-1.75130564807,0.166606918059 +4.401,-1.75113901179,0.16663628167 +4.402,-1.75097234613,0.166665661434 +4.403,-1.75080565107,0.166695057366 +4.404,-1.7506389266,0.166724469481 +4.405,-1.75047217271,0.166753897794 +4.406,-1.75030538936,0.166783342318 +4.407,-1.75013857656,0.16681280307 +4.408,-1.74997173428,0.166842280063 +4.409,-1.74980486251,0.166871773312 +4.41,-1.74963796123,0.166901282831 +4.411,-1.74947103042,0.166930808637 +4.412,-1.74930407007,0.166960350743 +4.413,-1.74913708016,0.166989909164 +4.414,-1.74897006067,0.167019483915 +4.415,-1.7488030116,0.167049075011 +4.416,-1.74863593292,0.167078682466 +4.417,-1.74846882461,0.167108306296 +4.418,-1.74830168666,0.167137946515 +4.419,-1.74813451906,0.167167603139 +4.42,-1.74796732178,0.167197276181 +4.421,-1.74780009482,0.167226965658 +4.422,-1.74763283815,0.167256671584 +4.423,-1.74746555175,0.167286393973 +4.424,-1.74729823562,0.167316132842 +4.425,-1.74713088973,0.167345888204 +4.426,-1.74696351407,0.167375660076 +4.427,-1.74679610862,0.167405448471 +4.428,-1.74662867337,0.167435253406 +4.429,-1.74646120829,0.167465074894 +4.43,-1.74629371338,0.167494912952 +4.431,-1.74612618861,0.167524767594 +4.432,-1.74595863397,0.167554638836 +4.433,-1.74579104945,0.167584526693 +4.434,-1.74562343502,0.167614431179 +4.435,-1.74545579066,0.16764435231 +4.436,-1.74528811637,0.167674290101 +4.437,-1.74512041213,0.167704244568 +4.438,-1.74495267791,0.167734215725 +4.439,-1.74478491371,0.167764203589 +4.44,-1.7446171195,0.167794208174 +4.441,-1.74444929527,0.167824229495 +4.442,-1.74428144101,0.167854267568 +4.443,-1.74411355668,0.167884322408 +4.444,-1.74394564229,0.167914394031 +4.445,-1.74377769781,0.167944482452 +4.446,-1.74360972322,0.167974587686 +4.447,-1.74344171851,0.168004709748 +4.448,-1.74327368366,0.168034848656 +4.449,-1.74310561866,0.168065004422 +4.45,-1.74293752348,0.168095177064 +4.451,-1.74276939811,0.168125366597 +4.452,-1.74260124254,0.168155573035 +4.453,-1.74243305674,0.168185796396 +4.454,-1.74226484071,0.168216036693 +4.455,-1.74209659441,0.168246293944 +4.456,-1.74192831784,0.168276568162 +4.457,-1.74176001098,0.168306859365 +4.458,-1.74159167382,0.168337167568 +4.459,-1.74142330632,0.168367492786 +4.46,-1.74125490849,0.168397835035 +4.461,-1.74108648029,0.16842819433 +4.462,-1.74091802172,0.168458570688 +4.463,-1.74074953276,0.168488964124 +4.464,-1.74058101339,0.168519374654 +4.465,-1.74041246358,0.168549802294 +4.466,-1.74024388334,0.168580247059 +4.467,-1.74007527263,0.168610708965 +4.468,-1.73990663144,0.168641188029 +4.469,-1.73973795975,0.168671684266 +4.47,-1.73956925756,0.168702197691 +4.471,-1.73940052483,0.168732728321 +4.472,-1.73923176155,0.168763276172 +4.473,-1.73906296771,0.168793841259 +4.474,-1.73889414329,0.168824423599 +4.475,-1.73872528826,0.168855023207 +4.476,-1.73855640262,0.1688856401 +4.477,-1.73838748635,0.168916274294 +4.478,-1.73821853942,0.168946925803 +4.479,-1.73804956183,0.168977594646 +4.48,-1.73788055355,0.169008280837 +4.481,-1.73771151456,0.169038984393 +4.482,-1.73754244486,0.16906970533 +4.483,-1.73737334442,0.169100443664 +4.484,-1.73720421322,0.169131199412 +4.485,-1.73703505124,0.169161972588 +4.486,-1.73686585848,0.16919276321 +4.487,-1.73669663491,0.169223571294 +4.488,-1.73652738051,0.169254396856 +4.489,-1.73635809527,0.169285239913 +4.49,-1.73618877917,0.16931610048 +4.491,-1.73601943219,0.169346978574 +4.492,-1.73585005432,0.169377874211 +4.493,-1.73568064553,0.169408787407 +4.494,-1.73551120581,0.16943971818 +4.495,-1.73534173515,0.169470666545 +4.496,-1.73517223351,0.169501632518 +4.497,-1.7350027009,0.169532616117 +4.498,-1.73483313728,0.169563617357 +4.499,-1.73466354264,0.169594636256 +4.5,-1.73449391697,0.169625672829 +4.501,-1.73432426024,0.169656727093 +4.502,-1.73415457245,0.169687799064 +4.503,-1.73398485356,0.16971888876 +4.504,-1.73381510356,0.169749996197 +4.505,-1.73364532244,0.169781121391 +4.506,-1.73347551017,0.169812264358 +4.507,-1.73330566675,0.169843425117 +4.508,-1.73313579215,0.169874603683 +4.509,-1.73296588635,0.169905800072 +4.51,-1.73279594933,0.169937014303 +4.511,-1.73262598109,0.16996824639 +4.512,-1.73245598159,0.169999496352 +4.513,-1.73228595082,0.170030764205 +4.514,-1.73211588877,0.170062049965 +4.515,-1.73194579542,0.17009335365 +4.516,-1.73177567075,0.170124675276 +4.517,-1.73160551473,0.17015601486 +4.518,-1.73143532736,0.17018737242 +4.519,-1.73126510861,0.170218747971 +4.52,-1.73109485847,0.170250141531 +4.521,-1.73092457692,0.170281553118 +4.522,-1.73075426393,0.170312982746 +4.523,-1.7305839195,0.170344430435 +4.524,-1.73041354361,0.1703758962 +4.525,-1.73024313623,0.17040738006 +4.526,-1.73007269734,0.17043888203 +4.527,-1.72990222694,0.170470402128 +4.528,-1.729731725,0.170501940371 +4.529,-1.72956119151,0.170533496776 +4.53,-1.72939062643,0.17056507136 +4.531,-1.72922002977,0.170596664141 +4.532,-1.72904940149,0.170628275136 +4.533,-1.72887874159,0.170659904361 +4.534,-1.72870805004,0.170691551835 +4.535,-1.72853732682,0.170723217573 +4.536,-1.72836657192,0.170754901595 +4.537,-1.72819578532,0.170786603916 +4.538,-1.72802496699,0.170818324555 +4.539,-1.72785411693,0.170850063528 +4.54,-1.72768323511,0.170881820852 +4.541,-1.72751232151,0.170913596547 +4.542,-1.72734137612,0.170945390628 +4.543,-1.72717039892,0.170977203113 +4.544,-1.72699938988,0.171009034019 +4.545,-1.726828349,0.171040883365 +4.546,-1.72665727625,0.171072751167 +4.547,-1.72648617161,0.171104637444 +4.548,-1.72631503507,0.171136542212 +4.549,-1.7261438666,0.171168465489 +4.55,-1.7259726662,0.171200407293 +4.551,-1.72580143383,0.171232367641 +4.552,-1.72563016948,0.171264346552 +4.553,-1.72545887314,0.171296344042 +4.554,-1.72528754478,0.17132836013 +4.555,-1.72511618438,0.171360394832 +4.556,-1.72494479193,0.171392448168 +4.557,-1.72477336741,0.171424520154 +4.558,-1.7246019108,0.171456610808 +4.559,-1.72443042208,0.171488720148 +4.56,-1.72425890123,0.171520848193 +4.561,-1.72408734824,0.171552994959 +4.562,-1.72391576308,0.171585160465 +4.563,-1.72374414573,0.171617344729 +4.564,-1.72357249619,0.171649547768 +4.565,-1.72340081442,0.1716817696 +4.566,-1.72322910041,0.171714010244 +4.567,-1.72305735414,0.171746269717 +4.568,-1.72288557559,0.171778548037 +4.569,-1.72271376474,0.171810845223 +4.57,-1.72254192158,0.171843161292 +4.571,-1.72237004609,0.171875496263 +4.572,-1.72219813824,0.171907850154 +4.573,-1.72202619801,0.171940222982 +4.574,-1.7218542254,0.171972614766 +4.575,-1.72168222037,0.172005025524 +4.576,-1.72151018292,0.172037455275 +4.577,-1.72133811301,0.172069904036 +4.578,-1.72116601064,0.172102371826 +4.579,-1.72099387578,0.172134858662 +4.58,-1.72082170842,0.172167364565 +4.581,-1.72064950853,0.17219988955 +4.582,-1.7204772761,0.172232433638 +4.583,-1.7203050111,0.172264996846 +4.584,-1.72013271352,0.172297579193 +4.585,-1.71996038334,0.172330180697 +4.586,-1.71978802054,0.172362801376 +4.587,-1.7196156251,0.17239544125 +4.588,-1.719443197,0.172428100336 +4.589,-1.71927073622,0.172460778653 +4.59,-1.71909824274,0.17249347622 +4.591,-1.71892571655,0.172526193055 +4.592,-1.71875315762,0.172558929176 +4.593,-1.71858056593,0.172591684603 +4.594,-1.71840794147,0.172624459354 +4.595,-1.71823528422,0.172657253448 +4.596,-1.71806259415,0.172690066903 +4.597,-1.71788987125,0.172722899737 +4.598,-1.7177171155,0.172755751971 +4.599,-1.71754432688,0.172788623622 +4.6,-1.71737150536,0.17282151471 +4.601,-1.71719865094,0.172854425252 +4.602,-1.71702576358,0.172887355269 +4.603,-1.71685284328,0.172920304778 +4.604,-1.71667989,0.172953273799 +4.605,-1.71650690374,0.17298626235 +4.606,-1.71633388447,0.173019270451 +4.607,-1.71616083217,0.173052298121 +4.608,-1.71598774683,0.173085345378 +4.609,-1.71581462842,0.173118412241 +4.61,-1.71564147692,0.17315149873 +4.611,-1.71546829231,0.173184604863 +4.612,-1.71529507458,0.17321773066 +4.613,-1.71512182371,0.17325087614 +4.614,-1.71494853966,0.173284041322 +4.615,-1.71477522244,0.173317226225 +4.616,-1.71460187201,0.173350430868 +4.617,-1.71442848835,0.17338365527 +4.618,-1.71425507145,0.173416899451 +4.619,-1.71408162129,0.17345016343 +4.62,-1.71390813784,0.173483447226 +4.621,-1.71373462109,0.173516750859 +4.622,-1.71356107102,0.173550074347 +4.623,-1.7133874876,0.173583417711 +4.624,-1.71321387082,0.17361678097 +4.625,-1.71304022065,0.173650164142 +4.626,-1.71286653709,0.173683567248 +4.627,-1.7126928201,0.173716990307 +4.628,-1.71251906966,0.173750433338 +4.629,-1.71234528577,0.173783896362 +4.63,-1.71217146839,0.173817379397 +4.631,-1.71199761751,0.173850882463 +4.632,-1.7118237331,0.173884405579 +4.633,-1.71164981515,0.173917948766 +4.634,-1.71147586364,0.173951512043 +4.635,-1.71130187854,0.17398509543 +4.636,-1.71112785984,0.174018698946 +4.637,-1.71095380752,0.174052322611 +4.638,-1.71077972156,0.174085966445 +4.639,-1.71060560192,0.174119630467 +4.64,-1.71043144861,0.174153314698 +4.641,-1.71025726159,0.174187019157 +4.642,-1.71008304085,0.174220743864 +4.643,-1.70990878636,0.17425448884 +4.644,-1.7097344981,0.174288254103 +4.645,-1.70956017606,0.174322039674 +4.646,-1.70938582022,0.174355845573 +4.647,-1.70921143055,0.17438967182 +4.648,-1.70903700703,0.174423518434 +4.649,-1.70886254964,0.174457385437 +4.65,-1.70868805837,0.174491272848 +4.651,-1.70851353319,0.174525180686 +4.652,-1.70833897408,0.174559108973 +4.653,-1.70816438102,0.174593057729 +4.654,-1.707989754,0.174627026973 +4.655,-1.70781509298,0.174661016725 +4.656,-1.70764039795,0.174695027007 +4.657,-1.70746566889,0.174729057838 +4.658,-1.70729090579,0.174763109239 +4.659,-1.7071161086,0.17479718123 +4.66,-1.70694127733,0.17483127383 +4.661,-1.70676641194,0.174865387062 +4.662,-1.70659151242,0.174899520945 +4.663,-1.70641657875,0.174933675499 +4.664,-1.7062416109,0.174967850745 +4.665,-1.70606660885,0.175002046703 +4.666,-1.70589157259,0.175036263395 +4.667,-1.70571650208,0.17507050084 +4.668,-1.70554139733,0.175104759059 +4.669,-1.70536625829,0.175139038072 +4.67,-1.70519108495,0.175173337901 +4.671,-1.70501587729,0.175207658566 +4.672,-1.70484063529,0.175242000088 +4.673,-1.70466535893,0.175276362487 +4.674,-1.70449004818,0.175310745784 +4.675,-1.70431470303,0.17534515 +4.676,-1.70413932346,0.175379575155 +4.677,-1.70396390944,0.175414021271 +4.678,-1.70378846095,0.175448488369 +4.679,-1.70361297797,0.175482976468 +4.68,-1.70343746049,0.175517485591 +4.681,-1.70326190847,0.175552015758 +4.682,-1.7030863219,0.17558656699 +4.683,-1.70291070076,0.175621139308 +4.684,-1.70273504503,0.175655732732 +4.685,-1.70255935468,0.175690347285 +4.686,-1.7023836297,0.175724982988 +4.687,-1.70220787006,0.17575963986 +4.688,-1.70203207574,0.175794317924 +4.689,-1.70185624673,0.175829017201 +4.69,-1.70168038299,0.175863737711 +4.691,-1.70150448451,0.175898479476 +4.692,-1.70132855127,0.175933242518 +4.693,-1.70115258324,0.175968026857 +4.694,-1.70097658041,0.176002832515 +4.695,-1.70080054275,0.176037659513 +4.696,-1.70062447024,0.176072507873 +4.697,-1.70044836286,0.176107377616 +4.698,-1.70027222059,0.176142268763 +4.699,-1.70009604341,0.176177181336 +4.7,-1.6999198313,0.176212115357 +4.701,-1.69974358423,0.176247070846 +4.702,-1.69956730218,0.176282047826 +4.703,-1.69939098513,0.176317046318 +4.704,-1.69921463307,0.176352066343 +4.705,-1.69903824596,0.176387107924 +4.706,-1.69886182379,0.176422171081 +4.707,-1.69868536653,0.176457255838 +4.708,-1.69850887417,0.176492362214 +4.709,-1.69833234668,0.176527490233 +4.71,-1.69815578404,0.176562639915 +4.711,-1.69797918623,0.176597811283 +4.712,-1.69780255322,0.176633004359 +4.713,-1.697625885,0.176668219164 +4.714,-1.69744918155,0.17670345572 +4.715,-1.69727244283,0.17673871405 +4.716,-1.69709566884,0.176773994175 +4.717,-1.69691885954,0.176809296117 +4.718,-1.69674201492,0.176844619898 +4.719,-1.69656513496,0.176879965541 +4.72,-1.69638821962,0.176915333067 +4.721,-1.6962112689,0.176950722498 +4.722,-1.69603428277,0.176986133857 +4.723,-1.6958572612,0.177021567166 +4.724,-1.69568020418,0.177057022447 +4.725,-1.69550311168,0.177092499722 +4.726,-1.69532598368,0.177127999014 +4.727,-1.69514882016,0.177163520345 +4.728,-1.6949716211,0.177199063737 +4.729,-1.69479438647,0.177234629212 +4.73,-1.69461711625,0.177270216793 +4.731,-1.69443981042,0.177305826503 +4.732,-1.69426246896,0.177341458363 +4.733,-1.69408509185,0.177377112397 +4.734,-1.69390767906,0.177412788626 +4.735,-1.69373023058,0.177448487074 +4.736,-1.69355274637,0.177484207763 +4.737,-1.69337522642,0.177519950716 +4.738,-1.6931976707,0.177555715954 +4.739,-1.6930200792,0.177591503502 +4.74,-1.69284245189,0.177627313381 +4.741,-1.69266478874,0.177663145615 +4.742,-1.69248708974,0.177699000225 +4.743,-1.69230935486,0.177734877236 +4.744,-1.69213158409,0.177770776669 +4.745,-1.69195377739,0.177806698548 +4.746,-1.69177593474,0.177842642895 +4.747,-1.69159805613,0.177878609734 +4.748,-1.69142014154,0.177914599087 +4.749,-1.69124219092,0.177950610977 +4.75,-1.69106420428,0.177986645428 +4.751,-1.69088618158,0.178022702463 +4.752,-1.69070812279,0.178058782104 +4.753,-1.69053002791,0.178094884374 +4.754,-1.6903518969,0.178131009298 +4.755,-1.69017372974,0.178167156897 +4.756,-1.68999552642,0.178203327196 +4.757,-1.6898172869,0.178239520217 +4.758,-1.68963901116,0.178275735984 +4.759,-1.68946069919,0.17831197452 +4.76,-1.68928235095,0.178348235848 +4.761,-1.68910396643,0.178384519993 +4.762,-1.6889255456,0.178420826976 +4.763,-1.68874708845,0.178457156822 +4.764,-1.68856859494,0.178493509555 +4.765,-1.68839006505,0.178529885197 +4.766,-1.68821149877,0.178566283772 +4.767,-1.68803289606,0.178602705304 +4.768,-1.68785425691,0.178639149816 +4.769,-1.6876755813,0.178675617333 +4.77,-1.68749686919,0.178712107877 +4.771,-1.68731812057,0.178748621472 +4.772,-1.68713933541,0.178785158143 +4.773,-1.68696051369,0.178821717913 +4.774,-1.68678165539,0.178858300806 +4.775,-1.68660276048,0.178894906845 +4.776,-1.68642382895,0.178931536054 +4.777,-1.68624486076,0.178968188459 +4.778,-1.68606585589,0.179004864081 +4.779,-1.68588681433,0.179041562946 +4.78,-1.68570773605,0.179078285077 +4.781,-1.68552862102,0.179115030499 +4.782,-1.68534946922,0.179151799235 +4.783,-1.68517028062,0.179188591309 +4.784,-1.68499105522,0.179225406747 +4.785,-1.68481179297,0.179262245571 +4.786,-1.68463249386,0.179299107806 +4.787,-1.68445315787,0.179335993477 +4.788,-1.68427378497,0.179372902608 +4.789,-1.68409437513,0.179409835222 +4.79,-1.68391492834,0.179446791345 +4.791,-1.68373544457,0.179483771001 +4.792,-1.6835559238,0.179520774214 +4.793,-1.683376366,0.179557801008 +4.794,-1.68319677114,0.179594851409 +4.795,-1.68301713922,0.17963192544 +4.796,-1.6828374702,0.179669023127 +4.797,-1.68265776405,0.179706144493 +4.798,-1.68247802076,0.179743289564 +4.799,-1.6822982403,0.179780458363 +4.8,-1.68211842265,0.179817650917 +4.801,-1.68193856779,0.179854867249 +4.802,-1.68175867568,0.179892107385 +4.803,-1.68157874631,0.179929371349 +4.804,-1.68139877965,0.179966659165 +4.805,-1.68121877568,0.18000397086 +4.806,-1.68103873437,0.180041306457 +4.807,-1.6808586557,0.180078665982 +4.808,-1.68067853965,0.18011604946 +4.809,-1.6804983862,0.180153456916 +4.81,-1.68031819531,0.180190888374 +4.811,-1.68013796697,0.18022834386 +4.812,-1.67995770114,0.180265823399 +4.813,-1.67977739781,0.180303327017 +4.814,-1.67959705696,0.180340854738 +4.815,-1.67941667855,0.180378406587 +4.816,-1.67923626257,0.18041598259 +4.817,-1.67905580899,0.180453582772 +4.818,-1.67887531778,0.180491207159 +4.819,-1.67869478893,0.180528855776 +4.82,-1.6785142224,0.180566528648 +4.821,-1.67833361817,0.180604225801 +4.822,-1.67815297622,0.180641947261 +4.823,-1.67797229653,0.180679693052 +4.824,-1.67779157907,0.1807174632 +4.825,-1.67761082381,0.180755257731 +4.826,-1.67743003073,0.180793076671 +4.827,-1.67724919981,0.180830920045 +4.828,-1.67706833102,0.18086878788 +4.829,-1.67688742434,0.180906680199 +4.83,-1.67670647975,0.180944597031 +4.831,-1.67652549721,0.180982538399 +4.832,-1.67634447671,0.181020504331 +4.833,-1.67616341821,0.181058494852 +4.834,-1.6759823217,0.181096509988 +4.835,-1.67580118715,0.181134549765 +4.836,-1.67562001454,0.181172614209 +4.837,-1.67543880383,0.181210703346 +4.838,-1.67525755502,0.181248817202 +4.839,-1.67507626806,0.181286955803 +4.84,-1.67489494294,0.181325119176 +4.841,-1.67471357963,0.181363307346 +4.842,-1.67453217811,0.18140152034 +4.843,-1.67435073835,0.181439758184 +4.844,-1.67416926033,0.181478020905 +4.845,-1.67398774403,0.181516308528 +4.846,-1.6738061894,0.18155462108 +4.847,-1.67362459645,0.181592958588 +4.848,-1.67344296512,0.181631321078 +4.849,-1.67326129542,0.181669708577 +4.85,-1.67307958729,0.18170812111 +4.851,-1.67289784074,0.181746558705 +4.852,-1.67271605571,0.181785021388 +4.853,-1.67253423221,0.181823509186 +4.854,-1.67235237018,0.181862022126 +4.855,-1.67217046962,0.181900560234 +4.856,-1.6719885305,0.181939123537 +4.857,-1.67180655279,0.181977712062 +4.858,-1.67162453646,0.182016325835 +4.859,-1.6714424815,0.182054964885 +4.86,-1.67126038787,0.182093629236 +4.861,-1.67107825555,0.182132318917 +4.862,-1.67089608451,0.182171033955 +4.863,-1.67071387474,0.182209774376 +4.864,-1.6705316262,0.182248540208 +4.865,-1.67034933887,0.182287331478 +4.866,-1.67016701272,0.182326148212 +4.867,-1.66998464773,0.182364990438 +4.868,-1.66980224387,0.182403858184 +4.869,-1.66961980112,0.182442751477 +4.87,-1.66943731945,0.182481670343 +4.871,-1.66925479884,0.182520614811 +4.872,-1.66907223925,0.182559584907 +4.873,-1.66888964067,0.182598580659 +4.874,-1.66870700307,0.182637602095 +4.875,-1.66852432642,0.182676649242 +4.876,-1.6683416107,0.182715722128 +4.877,-1.66815885588,0.18275482078 +4.878,-1.66797606193,0.182793945226 +4.879,-1.66779322883,0.182833095493 +4.88,-1.66761035656,0.18287227161 +4.881,-1.66742744509,0.182911473604 +4.882,-1.66724449439,0.182950701503 +4.883,-1.66706150443,0.182989955334 +4.884,-1.6668784752,0.183029235126 +4.885,-1.66669540666,0.183068540906 +4.886,-1.66651229878,0.183107872703 +4.887,-1.66632915155,0.183147230545 +4.888,-1.66614596494,0.183186614459 +4.889,-1.66596273891,0.183226024473 +4.89,-1.66577947345,0.183265460616 +4.891,-1.66559616853,0.183304922917 +4.892,-1.66541282412,0.183344411402 +4.893,-1.66522944019,0.183383926101 +4.894,-1.66504601673,0.183423467041 +4.895,-1.66486255369,0.183463034251 +4.896,-1.66467905106,0.18350262776 +4.897,-1.66449550882,0.183542247595 +4.898,-1.66431192692,0.183581893786 +4.899,-1.66412830536,0.18362156636 +4.9,-1.66394464409,0.183661265347 +4.901,-1.6637609431,0.183700990775 +4.902,-1.66357720236,0.183740742672 +4.903,-1.66339342184,0.183780521067 +4.904,-1.66320960151,0.183820325989 +4.905,-1.66302574135,0.183860157467 +4.906,-1.66284184134,0.18390001553 +4.907,-1.66265790144,0.183939900205 +4.908,-1.66247392163,0.183979811523 +4.909,-1.66228990188,0.184019749512 +4.91,-1.66210584216,0.184059714201 +4.911,-1.66192174246,0.184099705619 +4.912,-1.66173760273,0.184139723795 +4.913,-1.66155342296,0.184179768759 +4.914,-1.66136920312,0.184219840538 +4.915,-1.66118494318,0.184259939164 +4.916,-1.66100064312,0.184300064664 +4.917,-1.6608163029,0.184340217068 +4.918,-1.66063192251,0.184380396406 +4.919,-1.6604475019,0.184420602706 +4.92,-1.66026304107,0.184460835998 +4.921,-1.66007853997,0.184501096312 +4.922,-1.65989399859,0.184541383677 +4.923,-1.65970941689,0.184581698123 +4.924,-1.65952479485,0.184622039679 +4.925,-1.65934013244,0.184662408374 +4.926,-1.65915542964,0.184702804239 +4.927,-1.65897068641,0.184743227304 +4.928,-1.65878590273,0.184783677597 +4.929,-1.65860107858,0.184824155149 +4.93,-1.65841621392,0.184864659989 +4.931,-1.65823130873,0.184905192148 +4.932,-1.65804636297,0.184945751655 +4.933,-1.65786137663,0.184986338541 +4.934,-1.65767634968,0.185026952835 +4.935,-1.65749128209,0.185067594567 +4.936,-1.65730617382,0.185108263768 +4.937,-1.65712102486,0.185148960467 +4.938,-1.65693583518,0.185189684696 +4.939,-1.65675060474,0.185230436483 +4.94,-1.65656533353,0.18527121586 +4.941,-1.6563800215,0.185312022857 +4.942,-1.65619466865,0.185352857504 +4.943,-1.65600927493,0.185393719832 +4.944,-1.65582384032,0.18543460987 +4.945,-1.65563836479,0.18547552765 +4.946,-1.65545284832,0.185516473202 +4.947,-1.65526729087,0.185557446557 +4.948,-1.65508169242,0.185598447746 +4.949,-1.65489605294,0.185639476798 +4.95,-1.65471037241,0.185680533745 +4.951,-1.65452465079,0.185721618618 +4.952,-1.65433888806,0.185762731447 +4.953,-1.65415308419,0.185803872264 +4.954,-1.65396723915,0.185845041099 +4.955,-1.65378135291,0.185886237983 +4.956,-1.65359542545,0.185927462948 +4.957,-1.65340945673,0.185968716024 +4.958,-1.65322344673,0.186009997242 +4.959,-1.65303739543,0.186051306634 +4.96,-1.65285130278,0.186092644231 +4.961,-1.65266516877,0.186134010064 +4.962,-1.65247899337,0.186175404164 +4.963,-1.65229277654,0.186216826563 +4.964,-1.65210651826,0.186258277292 +4.965,-1.65192021851,0.186299756383 +4.966,-1.65173387724,0.186341263867 +4.967,-1.65154749444,0.186382799776 +4.968,-1.65136107008,0.186424364141 +4.969,-1.65117460412,0.186465956994 +4.97,-1.65098809654,0.186507578366 +4.971,-1.65080154732,0.18654922829 +4.972,-1.65061495641,0.186590906797 +4.973,-1.6504283238,0.186632613919 +4.974,-1.65024164945,0.186674349687 +4.975,-1.65005493333,0.186716114135 +4.976,-1.64986817542,0.186757907293 +4.977,-1.6496813757,0.186799729193 +4.978,-1.64949453412,0.186841579869 +4.979,-1.64930765066,0.186883459352 +4.98,-1.64912072529,0.186925367673 +4.981,-1.64893375798,0.186967304866 +4.982,-1.64874674871,0.187009270963 +4.983,-1.64855969745,0.187051265995 +4.984,-1.64837260416,0.187093289996 +4.985,-1.64818546881,0.187135342997 +4.986,-1.64799829139,0.187177425032 +4.987,-1.64781107185,0.187219536132 +4.988,-1.64762381018,0.187261676331 +4.989,-1.64743650633,0.18730384566 +4.99,-1.64724916029,0.187346044153 +4.991,-1.64706177201,0.187388271842 +4.992,-1.64687434149,0.187430528761 +4.993,-1.64668686867,0.18747281494 +4.994,-1.64649935354,0.187515130415 +4.995,-1.64631179606,0.187557475217 +4.996,-1.64612419622,0.18759984938 +4.997,-1.64593655396,0.187642252936 +4.998,-1.64574886928,0.187684685919 +4.999,-1.64556114213,0.187727148362 +5.,-1.64537337249,0.187769640298 +5.001,-1.64518556033,0.18781216176 +5.002,-1.64499770561,0.187854712781 +5.003,-1.64480980832,0.187897293395 +5.004,-1.64462186842,0.187939903635 +5.005,-1.64443388587,0.187982543534 +5.006,-1.64424586066,0.188025213127 +5.007,-1.64405779275,0.188067912446 +5.008,-1.64386968211,0.188110641525 +5.009,-1.64368152871,0.188153400397 +5.01,-1.64349333252,0.188196189097 +5.011,-1.64330509351,0.188239007659 +5.012,-1.64311681165,0.188281856115 +5.013,-1.64292848692,0.1883247345 +5.014,-1.64274011928,0.188367642847 +5.015,-1.64255170869,0.188410581191 +5.016,-1.64236325514,0.188453549566 +5.017,-1.6421747586,0.188496548005 +5.018,-1.64198621902,0.188539576543 +5.019,-1.64179763638,0.188582635214 +5.02,-1.64160901066,0.188625724052 +5.021,-1.64142034182,0.188668843091 +5.022,-1.64123162983,0.188711992365 +5.023,-1.64104287465,0.18875517191 +5.024,-1.64085407627,0.188798381759 +5.025,-1.64066523465,0.188841621947 +5.026,-1.64047634976,0.188884892508 +5.027,-1.64028742156,0.188928193477 +5.028,-1.64009845004,0.188971524889 +5.029,-1.63990943515,0.189014886777 +5.03,-1.63972037687,0.189058279178 +5.031,-1.63953127517,0.189101702126 +5.032,-1.63934213001,0.189145155655 +5.033,-1.63915294138,0.189188639801 +5.034,-1.63896370922,0.189232154598 +5.035,-1.63877443352,0.189275700081 +5.036,-1.63858511424,0.189319276286 +5.037,-1.63839575136,0.189362883248 +5.038,-1.63820634484,0.189406521001 +5.039,-1.63801689465,0.189450189582 +5.04,-1.63782740076,0.189493889024 +5.041,-1.63763786314,0.189537619364 +5.042,-1.63744828176,0.189581380638 +5.043,-1.63725865659,0.189625172879 +5.044,-1.63706898759,0.189668996125 +5.045,-1.63687927474,0.18971285041 +5.046,-1.63668951801,0.18975673577 +5.047,-1.63649971735,0.189800652241 +5.048,-1.63630987275,0.189844599858 +5.049,-1.63611998418,0.189888578658 +5.05,-1.63593005159,0.189932588675 +5.051,-1.63574007496,0.189976629947 +5.052,-1.63555005425,0.190020702508 +5.053,-1.63535998945,0.190064806395 +5.054,-1.63516988051,0.190108941645 +5.055,-1.6349797274,0.190153108292 +5.056,-1.63478953009,0.190197306373 +5.057,-1.63459928856,0.190241535925 +5.058,-1.63440900276,0.190285796984 +5.059,-1.63421867267,0.190330089586 +5.06,-1.63402829826,0.190374413767 +5.061,-1.63383787949,0.190418769564 +5.062,-1.63364741633,0.190463157013 +5.063,-1.63345690875,0.190507576152 +5.064,-1.63326635673,0.190552027016 +5.065,-1.63307576022,0.190596509642 +5.066,-1.63288511919,0.190641024067 +5.067,-1.63269443362,0.190685570328 +5.068,-1.63250370347,0.190730148462 +5.069,-1.63231292871,0.190774758505 +5.07,-1.63212210931,0.190819400495 +5.071,-1.63193124524,0.190864074468 +5.072,-1.63174033646,0.190908780462 +5.073,-1.63154938294,0.190953518514 +5.074,-1.63135838465,0.190998288661 +5.075,-1.63116734156,0.19104309094 +5.076,-1.63097625364,0.191087925388 +5.077,-1.63078512084,0.191132792044 +5.078,-1.63059394315,0.191177690944 +5.079,-1.63040272053,0.191222622126 +5.08,-1.63021145294,0.191267585627 +5.081,-1.63002014036,0.191312581485 +5.082,-1.62982878275,0.191357609738 +5.083,-1.62963738008,0.191402670424 +5.084,-1.62944593232,0.19144776358 +5.085,-1.62925443943,0.191492889244 +5.086,-1.62906290138,0.191538047454 +5.087,-1.62887131814,0.191583238247 +5.088,-1.62867968968,0.191628461663 +5.089,-1.62848801597,0.191673717739 +5.09,-1.62829629696,0.191719006514 +5.091,-1.62810453263,0.191764328025 +5.092,-1.62791272295,0.19180968231 +5.093,-1.62772086788,0.191855069409 +5.094,-1.62752896739,0.191900489359 +5.095,-1.62733702145,0.191945942199 +5.096,-1.62714503002,0.191991427968 +5.097,-1.62695299307,0.192036946704 +5.098,-1.62676091057,0.192082498445 +5.099,-1.62656878249,0.192128083231 +5.1,-1.62637660879,0.1921737011 +5.101,-1.62618438944,0.192219352091 +5.102,-1.6259921244,0.192265036242 +5.103,-1.62579981365,0.192310753594 +5.104,-1.62560745714,0.192356504185 +5.105,-1.62541505486,0.192402288053 +5.106,-1.62522260675,0.192448105239 +5.107,-1.62503011279,0.19249395578 +5.108,-1.62483757296,0.192539839718 +5.109,-1.6246449872,0.19258575709 +5.11,-1.62445235549,0.192631707936 +5.111,-1.6242596778,0.192677692296 +5.112,-1.62406695409,0.192723710209 +5.113,-1.62387418433,0.192769761715 +5.114,-1.62368136848,0.192815846854 +5.115,-1.62348850651,0.192861965664 +5.116,-1.6232955984,0.192908118187 +5.117,-1.62310264409,0.192954304461 +5.118,-1.62290964357,0.193000524527 +5.119,-1.62271659679,0.193046778424 +5.12,-1.62252350372,0.193093066193 +5.121,-1.62233036433,0.193139387874 +5.122,-1.62213717859,0.193185743506 +5.123,-1.62194394646,0.19323213313 +5.124,-1.6217506679,0.193278556787 +5.125,-1.62155734289,0.193325014517 +5.126,-1.62136397138,0.193371506359 +5.127,-1.62117055335,0.193418032355 +5.128,-1.62097708875,0.193464592546 +5.129,-1.62078357757,0.193511186971 +5.13,-1.62059001975,0.193557815671 +5.131,-1.62039641527,0.193604478687 +5.132,-1.6202027641,0.193651176061 +5.133,-1.62000906619,0.193697907832 +5.134,-1.61981532152,0.193744674042 +5.135,-1.61962153004,0.193791474731 +5.136,-1.61942769173,0.193838309942 +5.137,-1.61923380655,0.193885179714 +5.138,-1.61903987447,0.193932084089 +5.139,-1.61884589544,0.193979023109 +5.14,-1.61865186945,0.194025996815 +5.141,-1.61845779644,0.194073005247 +5.142,-1.61826367639,0.194120048448 +5.143,-1.61806950927,0.19416712646 +5.144,-1.61787529503,0.194214239323 +5.145,-1.61768103364,0.194261387079 +5.146,-1.61748672507,0.194308569771 +5.147,-1.61729236928,0.194355787439 +5.148,-1.61709796624,0.194403040126 +5.149,-1.61690351592,0.194450327874 +5.15,-1.61670901826,0.194497650725 +5.151,-1.61651447326,0.194545008721 +5.152,-1.61631988085,0.194592401903 +5.153,-1.61612524102,0.194639830315 +5.154,-1.61593055373,0.194687293998 +5.155,-1.61573581894,0.194734792995 +5.156,-1.61554103661,0.194782327349 +5.157,-1.61534620671,0.1948298971 +5.158,-1.61515132921,0.194877502294 +5.159,-1.61495640407,0.194925142971 +5.16,-1.61476143125,0.194972819175 +5.161,-1.61456641072,0.195020530948 +5.162,-1.61437134244,0.195068278333 +5.163,-1.61417622638,0.195116061373 +5.164,-1.6139810625,0.195163880112 +5.165,-1.61378585076,0.195211734591 +5.166,-1.61359059114,0.195259624855 +5.167,-1.61339528359,0.195307550947 +5.168,-1.61319992807,0.195355512909 +5.169,-1.61300452456,0.195403510785 +5.17,-1.61280907302,0.195451544618 +5.171,-1.6126135734,0.195499614452 +5.172,-1.61241802568,0.195547720331 +5.173,-1.61222242982,0.195595862298 +5.174,-1.61202678578,0.195644040396 +5.175,-1.61183109353,0.19569225467 +5.176,-1.61163535302,0.195740505164 +5.177,-1.61143956423,0.19578879192 +5.178,-1.61124372711,0.195837114984 +5.179,-1.61104784164,0.195885474399 +5.18,-1.61085190777,0.195933870209 +5.181,-1.61065592547,0.195982302459 +5.182,-1.6104598947,0.196030771193 +5.183,-1.61026381542,0.196079276455 +5.184,-1.6100676876,0.196127818289 +5.185,-1.6098715112,0.19617639674 +5.186,-1.60967528619,0.196225011853 +5.187,-1.60947901253,0.196273663672 +5.188,-1.60928269018,0.196322352242 +5.189,-1.6090863191,0.196371077608 +5.19,-1.60888989926,0.196419839814 +5.191,-1.60869343062,0.196468638906 +5.192,-1.60849691315,0.196517474928 +5.193,-1.6083003468,0.196566347926 +5.194,-1.60810373154,0.196615257944 +5.195,-1.60790706733,0.196664205028 +5.196,-1.60771035414,0.196713189224 +5.197,-1.60751359193,0.196762210576 +5.198,-1.60731678067,0.19681126913 +5.199,-1.6071199203,0.196860364931 +5.2,-1.6069230108,0.196909498026 +5.201,-1.60672605213,0.196958668459 +5.202,-1.60652904426,0.197007876277 +5.203,-1.60633198714,0.197057121525 +5.204,-1.60613488073,0.19710640425 +5.205,-1.60593772501,0.197155724497 +5.206,-1.60574051992,0.197205082312 +5.207,-1.60554326545,0.197254477742 +5.208,-1.60534596154,0.197303910832 +5.209,-1.60514860815,0.197353381629 +5.21,-1.60495120526,0.197402890179 +5.211,-1.60475375283,0.197452436529 +5.212,-1.60455625081,0.197502020726 +5.213,-1.60435869916,0.197551642815 +5.214,-1.60416109786,0.197601302844 +5.215,-1.60396344686,0.197651000858 +5.216,-1.60376574612,0.197700736906 +5.217,-1.60356799561,0.197750511034 +5.218,-1.60337019529,0.197800323289 +5.219,-1.60317234512,0.197850173718 +5.22,-1.60297444505,0.197900062368 +5.221,-1.60277649506,0.197949989286 +5.222,-1.60257849511,0.19799995452 +5.223,-1.60238044515,0.198049958117 +5.224,-1.60218234515,0.198100000125 +5.225,-1.60198419507,0.198150080591 +5.226,-1.60178599487,0.198200199562 +5.227,-1.60158774451,0.198250357086 +5.228,-1.60138944396,0.198300553212 +5.229,-1.60119109317,0.198350787987 +5.23,-1.60099269211,0.198401061458 +5.231,-1.60079424074,0.198451373675 +5.232,-1.60059573901,0.198501724684 +5.233,-1.6003971869,0.198552114535 +5.234,-1.60019858436,0.198602543275 +5.235,-1.59999993134,0.198653010953 +5.236,-1.59980122783,0.198703517617 +5.237,-1.59960247376,0.198754063316 +5.238,-1.59940366912,0.198804648098 +5.239,-1.59920481384,0.198855272012 +5.24,-1.59900590791,0.198905935107 +5.241,-1.59880695127,0.198956637431 +5.242,-1.59860794389,0.199007379034 +5.243,-1.59840888573,0.199058159964 +5.244,-1.59820977675,0.199108980271 +5.245,-1.59801061691,0.199159840004 +5.246,-1.59781140617,0.199210739211 +5.247,-1.59761214449,0.199261677942 +5.248,-1.59741283184,0.199312656248 +5.249,-1.59721346816,0.199363674176 +5.25,-1.59701405343,0.199414731777 +5.251,-1.5968145876,0.199465829101 +5.252,-1.59661507064,0.199516966196 +5.253,-1.59641550249,0.199568143114 +5.254,-1.59621588313,0.199619359904 +5.255,-1.59601621252,0.199670616615 +5.256,-1.5958164906,0.199721913298 +5.257,-1.59561671735,0.199773250004 +5.258,-1.59541689273,0.199824626782 +5.259,-1.59521701668,0.199876043682 +5.26,-1.59501708918,0.199927500756 +5.261,-1.59481711018,0.199978998053 +5.262,-1.59461707965,0.200030535625 +5.263,-1.59441699754,0.200082113522 +5.264,-1.5942168638,0.200133731794 +5.265,-1.59401667841,0.200185390493 +5.266,-1.59381644132,0.200237089669 +5.267,-1.59361615249,0.200288829374 +5.268,-1.59341581188,0.200340609658 +5.269,-1.59321541945,0.200392430574 +5.27,-1.59301497516,0.200444292171 +5.271,-1.59281447897,0.200496194502 +5.272,-1.59261393083,0.200548137618 +5.273,-1.59241333071,0.200600121571 +5.274,-1.59221267856,0.200652146412 +5.275,-1.59201197435,0.200704212192 +5.276,-1.59181121803,0.200756318964 +5.277,-1.59161040956,0.20080846678 +5.278,-1.59140954891,0.200860655692 +5.279,-1.59120863602,0.200912885751 +5.28,-1.59100767087,0.200965157011 +5.281,-1.5908066534,0.201017469522 +5.282,-1.59060558357,0.201069823338 +5.283,-1.59040446135,0.201122218511 +5.284,-1.5902032867,0.201174655093 +5.285,-1.59000205957,0.201227133137 +5.286,-1.58980077991,0.201279652697 +5.287,-1.5895994477,0.201332213823 +5.288,-1.58939806288,0.201384816571 +5.289,-1.58919662542,0.201437460992 +5.29,-1.58899513527,0.201490147139 +5.291,-1.5887935924,0.201542875066 +5.292,-1.58859199675,0.201595644827 +5.293,-1.5883903483,0.201648456473 +5.294,-1.58818864699,0.20170131006 +5.295,-1.58798689278,0.201754205639 +5.296,-1.58778508564,0.201807143266 +5.297,-1.58758322552,0.201860122993 +5.298,-1.58738131237,0.201913144875 +5.299,-1.58717934616,0.201966208966 +5.3,-1.58697732685,0.202019315318 +5.301,-1.58677525438,0.202072463988 +5.302,-1.58657312873,0.202125655028 +5.303,-1.58637094984,0.202178888493 +5.304,-1.58616871768,0.202232164437 +5.305,-1.58596643219,0.202285482915 +5.306,-1.58576409335,0.202338843982 +5.307,-1.5855617011,0.202392247691 +5.308,-1.58535925541,0.202445694099 +5.309,-1.58515675622,0.202499183259 +5.31,-1.58495420351,0.202552715227 +5.311,-1.58475159722,0.202606290057 +5.312,-1.58454893731,0.202659907805 +5.313,-1.58434622374,0.202713568526 +5.314,-1.58414345647,0.202767272275 +5.315,-1.58394063545,0.202821019109 +5.316,-1.58373776064,0.202874809081 +5.317,-1.583534832,0.202928642248 +5.318,-1.58333184948,0.202982518666 +5.319,-1.58312881304,0.20303643839 +5.32,-1.58292572264,0.203090401477 +5.321,-1.58272257823,0.203144407982 +5.322,-1.58251937977,0.203198457961 +5.323,-1.58231612722,0.203252551471 +5.324,-1.58211282053,0.203306688568 +5.325,-1.58190945966,0.203360869308 +5.326,-1.58170604457,0.203415093748 +5.327,-1.58150257521,0.203469361945 +5.328,-1.58129905154,0.203523673954 +5.329,-1.58109547351,0.203578029834 +5.33,-1.58089184108,0.20363242964 +5.331,-1.5806881542,0.20368687343 +5.332,-1.58048441284,0.203741361261 +5.333,-1.58028061695,0.20379589319 +5.334,-1.58007676648,0.203850469274 +5.335,-1.57987286139,0.203905089571 +5.336,-1.57966890163,0.203959754138 +5.337,-1.57946488717,0.204014463034 +5.338,-1.57926081796,0.204069216314 +5.339,-1.57905669394,0.204124014038 +5.34,-1.57885251509,0.204178856263 +5.341,-1.57864828134,0.204233743048 +5.342,-1.57844399267,0.204288674449 +5.343,-1.57823964902,0.204343650527 +5.344,-1.57803525035,0.204398671338 +5.345,-1.57783079661,0.204453736941 +5.346,-1.57762628776,0.204508847395 +5.347,-1.57742172376,0.204564002758 +5.348,-1.57721710456,0.20461920309 +5.349,-1.57701243011,0.204674448448 +5.35,-1.57680770037,0.204729738893 +5.351,-1.57660291529,0.204785074482 +5.352,-1.57639807484,0.204840455275 +5.353,-1.57619317896,0.204895881332 +5.354,-1.5759882276,0.204951352711 +5.355,-1.57578322074,0.205006869472 +5.356,-1.5755781583,0.205062431674 +5.357,-1.57537304026,0.205118039378 +5.358,-1.57516786657,0.205173692643 +5.359,-1.57496263718,0.205229391529 +5.36,-1.57475735204,0.205285136096 +5.361,-1.57455201112,0.205340926404 +5.362,-1.57434661435,0.205396762513 +5.363,-1.57414116171,0.205452644483 +5.364,-1.57393565314,0.205508572375 +5.365,-1.57373008859,0.20556454625 +5.366,-1.57352446803,0.205620566167 +5.367,-1.57331879139,0.205676632189 +5.368,-1.57311305865,0.205732744375 +5.369,-1.57290726975,0.205788902786 +5.37,-1.57270142464,0.205845107484 +5.371,-1.57249552328,0.20590135853 +5.372,-1.57228956562,0.205957655984 +5.373,-1.57208355162,0.206013999909 +5.374,-1.57187748123,0.206070390366 +5.375,-1.57167135441,0.206126827417 +5.376,-1.5714651711,0.206183311122 +5.377,-1.57125893125,0.206239841545 +5.378,-1.57105263484,0.206296418747 +5.379,-1.57084628179,0.206353042789 +5.38,-1.57063987208,0.206409713735 +5.381,-1.57043340565,0.206466431646 +5.382,-1.57022688245,0.206523196584 +5.383,-1.57002030244,0.206580008613 +5.384,-1.56981366557,0.206636867795 +5.385,-1.5696069718,0.206693774193 +5.386,-1.56940022107,0.206750727869 +5.387,-1.56919341334,0.206807728886 +5.388,-1.56898654857,0.206864777307 +5.389,-1.56877962669,0.206921873197 +5.39,-1.56857264768,0.206979016616 +5.391,-1.56836561147,0.207036207631 +5.392,-1.56815851802,0.207093446302 +5.393,-1.56795136729,0.207150732696 +5.394,-1.56774415922,0.207208066874 +5.395,-1.56753689377,0.207265448901 +5.396,-1.56732957089,0.207322878841 +5.397,-1.56712219054,0.207380356758 +5.398,-1.56691475266,0.207437882716 +5.399,-1.5667072572,0.20749545678 +5.4,-1.56649970412,0.207553079013 +5.401,-1.56629209337,0.207610749481 +5.402,-1.5660844249,0.207668468248 +5.403,-1.56587669867,0.207726235379 +5.404,-1.56566891462,0.207784050939 +5.405,-1.5654610727,0.207841914992 +5.406,-1.56525317287,0.207899827605 +5.407,-1.56504521508,0.207957788841 +5.408,-1.56483719929,0.208015798767 +5.409,-1.56462912543,0.208073857448 +5.41,-1.56442099346,0.20813196495 +5.411,-1.56421280334,0.208190121338 +5.412,-1.56400455501,0.208248326678 +5.413,-1.56379624843,0.208306581036 +5.414,-1.56358788355,0.208364884479 +5.415,-1.56337946031,0.208423237071 +5.416,-1.56317097867,0.208481638881 +5.417,-1.56296243858,0.208540089974 +5.418,-1.56275383999,0.208598590416 +5.419,-1.56254518285,0.208657140275 +5.42,-1.56233646711,0.208715739617 +5.421,-1.56212769272,0.208774388509 +5.422,-1.56191885964,0.208833087018 +5.423,-1.5617099678,0.208891835212 +5.424,-1.56150101717,0.208950633157 +5.425,-1.56129200769,0.209009480922 +5.426,-1.56108293931,0.209068378573 +5.427,-1.56087381198,0.209127326178 +5.428,-1.56066462566,0.209186323805 +5.429,-1.56045538029,0.209245371523 +5.43,-1.56024607582,0.209304469398 +5.431,-1.5600367122,0.209363617499 +5.432,-1.55982728939,0.209422815895 +5.433,-1.55961780732,0.209482064654 +5.434,-1.55940826596,0.209541363844 +5.435,-1.55919866524,0.209600713534 +5.436,-1.55898900513,0.209660113793 +5.437,-1.55877928556,0.20971956469 +5.438,-1.5585695065,0.209779066293 +5.439,-1.55835966788,0.209838618672 +5.44,-1.55814976966,0.209898221897 +5.441,-1.55793981178,0.209957876036 +5.442,-1.5577297942,0.21001758116 +5.443,-1.55751971686,0.210077337337 +5.444,-1.55730957972,0.210137144638 +5.445,-1.55709938272,0.210197003133 +5.446,-1.5568891258,0.210256912891 +5.447,-1.55667880893,0.210316873983 +5.448,-1.55646843204,0.210376886479 +5.449,-1.55625799509,0.21043695045 +5.45,-1.55604749803,0.210497065966 +5.451,-1.55583694079,0.210557233098 +5.452,-1.55562632334,0.210617451917 +5.453,-1.55541564562,0.210677722494 +5.454,-1.55520490757,0.210738044899 +5.455,-1.55499410915,0.210798419204 +5.456,-1.55478325031,0.210858845481 +5.457,-1.55457233099,0.210919323801 +5.458,-1.55436135113,0.210979854235 +5.459,-1.55415031069,0.211040436856 +5.46,-1.55393920962,0.211101071735 +5.461,-1.55372804786,0.211161758944 +5.462,-1.55351682536,0.211222498556 +5.463,-1.55330554207,0.211283290642 +5.464,-1.55309419794,0.211344135275 +5.465,-1.55288279291,0.211405032528 +5.466,-1.55267132692,0.211465982474 +5.467,-1.55245979994,0.211526985185 +5.468,-1.5522482119,0.211588040734 +5.469,-1.55203656275,0.211649149194 +5.47,-1.55182485244,0.211710310639 +5.471,-1.55161308091,0.211771525142 +5.472,-1.55140124812,0.211832792776 +5.473,-1.55118935401,0.211894113615 +5.474,-1.55097739852,0.211955487734 +5.475,-1.5507653816,0.212016915205 +5.476,-1.55055330321,0.212078396103 +5.477,-1.55034116328,0.212139930502 +5.478,-1.55012896176,0.212201518477 +5.479,-1.5499166986,0.212263160102 +5.48,-1.54970437374,0.212324855451 +5.481,-1.54949198714,0.212386604599 +5.482,-1.54927953873,0.212448407622 +5.483,-1.54906702847,0.212510264594 +5.484,-1.54885445629,0.212572175591 +5.485,-1.54864182215,0.212634140687 +5.486,-1.54842912599,0.212696159959 +5.487,-1.54821636776,0.212758233481 +5.488,-1.5480035474,0.21282036133 +5.489,-1.54779066485,0.212882543582 +5.49,-1.54757772007,0.212944780312 +5.491,-1.547364713,0.213007071597 +5.492,-1.54715164358,0.213069417513 +5.493,-1.54693851176,0.213131818136 +5.494,-1.54672531749,0.213194273544 +5.495,-1.54651206071,0.213256783812 +5.496,-1.54629874136,0.213319349018 +5.497,-1.54608535939,0.213381969239 +5.498,-1.54587191474,0.213444644552 +5.499,-1.54565840737,0.213507375035 +5.5,-1.54544483721,0.213570160764 +5.501,-1.54523120421,0.213633001818 +5.502,-1.54501750831,0.213695898273 +5.503,-1.54480374946,0.213758850209 +5.504,-1.5445899276,0.213821857704 +5.505,-1.54437604268,0.213884920834 +5.506,-1.54416209464,0.21394803968 +5.507,-1.54394808343,0.214011214319 +5.508,-1.54373400898,0.214074444829 +5.509,-1.54351987125,0.214137731291 +5.51,-1.54330567018,0.214201073782 +5.511,-1.5430914057,0.214264472382 +5.512,-1.54287707778,0.21432792717 +5.513,-1.54266268634,0.214391438226 +5.514,-1.54244823133,0.214455005629 +5.515,-1.5422337127,0.214518629458 +5.516,-1.54201913039,0.214582309794 +5.517,-1.54180448435,0.214646046717 +5.518,-1.54158977451,0.214709840307 +5.519,-1.54137500081,0.214773690644 +5.52,-1.54116016322,0.214837597808 +5.521,-1.54094526166,0.214901561881 +5.522,-1.54073029607,0.214965582943 +5.523,-1.54051526641,0.215029661075 +5.524,-1.54030017261,0.215093796357 +5.525,-1.54008501463,0.215157988873 +5.526,-1.53986979239,0.215222238702 +5.527,-1.53965450584,0.215286545926 +5.528,-1.53943915493,0.215350910627 +5.529,-1.5392237396,0.215415332887 +5.53,-1.53900825979,0.215479812788 +5.531,-1.53879271543,0.215544350412 +5.532,-1.53857710649,0.215608945841 +5.533,-1.53836143289,0.215673599158 +5.534,-1.53814569458,0.215738310446 +5.535,-1.5379298915,0.215803079787 +5.536,-1.53771402359,0.215867907265 +5.537,-1.5374980908,0.215932792962 +5.538,-1.53728209306,0.215997736962 +5.539,-1.53706603032,0.216062739348 +5.54,-1.53684990252,0.216127800203 +5.541,-1.5366337096,0.216192919613 +5.542,-1.53641745151,0.21625809766 +5.543,-1.53620112817,0.216323334429 +5.544,-1.53598473954,0.216388630003 +5.545,-1.53576828556,0.216453984468 +5.546,-1.53555176616,0.216519397908 +5.547,-1.53533518129,0.216584870407 +5.548,-1.53511853089,0.216650402051 +5.549,-1.53490181489,0.216715992925 +5.55,-1.53468503325,0.216781643113 +5.551,-1.5344681859,0.216847352702 +5.552,-1.53425127278,0.216913121777 +5.553,-1.53403429383,0.216978950423 +5.554,-1.53381724899,0.217044838727 +5.555,-1.5336001382,0.217110786775 +5.556,-1.53338296141,0.217176794652 +5.557,-1.53316571854,0.217242862445 +5.558,-1.53294840955,0.217308990241 +5.559,-1.53273103437,0.217375178127 +5.56,-1.53251359295,0.217441426189 +5.561,-1.53229608521,0.217507734515 +5.562,-1.53207851111,0.217574103191 +5.563,-1.53186087058,0.217640532306 +5.564,-1.53164316356,0.217707021946 +5.565,-1.53142538998,0.2177735722 +5.566,-1.5312075498,0.217840183155 +5.567,-1.53098964295,0.2179068549 +5.568,-1.53077166936,0.217973587522 +5.569,-1.53055362898,0.218040381111 +5.57,-1.53033552174,0.218107235754 +5.571,-1.53011734759,0.218174151541 +5.572,-1.52989910646,0.218241128561 +5.573,-1.52968079829,0.218308166903 +5.574,-1.52946242303,0.218375266655 +5.575,-1.5292439806,0.218442427908 +5.576,-1.52902547095,0.218509650751 +5.577,-1.52880689401,0.218576935274 +5.578,-1.52858824973,0.218644281567 +5.579,-1.52836953804,0.218711689721 +5.58,-1.52815075888,0.218779159825 +5.581,-1.52793191219,0.21884669197 +5.582,-1.5277129979,0.218914286246 +5.583,-1.52749401596,0.218981942746 +5.584,-1.5272749663,0.219049661559 +5.585,-1.52705584886,0.219117442777 +5.586,-1.52683666357,0.219185286492 +5.587,-1.52661741038,0.219253192795 +5.588,-1.52639808922,0.219321161777 +5.589,-1.52617870002,0.219389193532 +5.59,-1.52595924273,0.21945728815 +5.591,-1.52573971729,0.219525445725 +5.592,-1.52552012362,0.219593666348 +5.593,-1.52530046167,0.219661950113 +5.594,-1.52508073138,0.219730297113 +5.595,-1.52486093267,0.21979870744 +5.596,-1.52464106549,0.219867181187 +5.597,-1.52442112977,0.219935718449 +5.598,-1.52420112545,0.220004319319 +5.599,-1.52398105247,0.22007298389 +5.6,-1.52376091075,0.220141712257 +5.601,-1.52354070025,0.220210504513 +5.602,-1.52332042089,0.220279360754 +5.603,-1.52310007261,0.220348281073 +5.604,-1.52287965534,0.220417265566 +5.605,-1.52265916903,0.220486314327 +5.606,-1.5224386136,0.220555427451 +5.607,-1.52221798899,0.220624605034 +5.608,-1.52199729515,0.220693847171 +5.609,-1.52177653199,0.220763153958 +5.61,-1.52155569947,0.220832525491 +5.611,-1.52133479751,0.220901961866 +5.612,-1.52111382604,0.220971463179 +5.613,-1.52089278501,0.221041029526 +5.614,-1.52067167435,0.221110661004 +5.615,-1.52045049399,0.221180357711 +5.616,-1.52022924387,0.221250119742 +5.617,-1.52000792393,0.221319947196 +5.618,-1.51978653409,0.221389840169 +5.619,-1.51956507429,0.22145979876 +5.62,-1.51934354447,0.221529823065 +5.621,-1.51912194455,0.221599913184 +5.622,-1.51890027448,0.221670069213 +5.623,-1.51867853419,0.221740291253 +5.624,-1.51845672361,0.2218105794 +5.625,-1.51823484268,0.221880933754 +5.626,-1.51801289132,0.221951354415 +5.627,-1.51779086948,0.22202184148 +5.628,-1.51756877709,0.22209239505 +5.629,-1.51734661407,0.222163015224 +5.63,-1.51712438037,0.222233702102 +5.631,-1.51690207591,0.222304455783 +5.632,-1.51667970064,0.222375276369 +5.633,-1.51645725447,0.222446163959 +5.634,-1.51623473736,0.222517118654 +5.635,-1.51601214921,0.222588140554 +5.636,-1.51578948999,0.222659229762 +5.637,-1.5155667596,0.222730386377 +5.638,-1.51534395799,0.222801610501 +5.639,-1.51512108509,0.222872902237 +5.64,-1.51489814082,0.222944261685 +5.641,-1.51467512514,0.223015688947 +5.642,-1.51445203795,0.223087184127 +5.643,-1.5142288792,0.223158747326 +5.644,-1.51400564883,0.223230378647 +5.645,-1.51378234675,0.223302078192 +5.646,-1.5135589729,0.223373846065 +5.647,-1.51333552722,0.22344568237 +5.648,-1.51311200963,0.223517587209 +5.649,-1.51288842007,0.223589560686 +5.65,-1.51266475847,0.223661602905 +5.651,-1.51244102475,0.223733713971 +5.652,-1.51221721886,0.223805893986 +5.653,-1.51199334072,0.223878143057 +5.654,-1.51176939026,0.223950461288 +5.655,-1.51154536741,0.224022848783 +5.656,-1.5113212721,0.224095305648 +5.657,-1.51109710427,0.224167831988 +5.658,-1.51087286384,0.224240427908 +5.659,-1.51064855075,0.224313093516 +5.66,-1.51042416492,0.224385828915 +5.661,-1.51019970628,0.224458634214 +5.662,-1.50997517478,0.224531509518 +5.663,-1.50975057032,0.224604454933 +5.664,-1.50952589285,0.224677470567 +5.665,-1.50930114229,0.224750556527 +5.666,-1.50907631858,0.22482371292 +5.667,-1.50885142164,0.224896939854 +5.668,-1.5086264514,0.224970237436 +5.669,-1.5084014078,0.225043605775 +5.67,-1.50817629075,0.225117044978 +5.671,-1.5079511002,0.225190555154 +5.672,-1.50772583606,0.225264136412 +5.673,-1.50750049827,0.22533778886 +5.674,-1.50727508676,0.225411512608 +5.675,-1.50704960145,0.225485307765 +5.676,-1.50682404228,0.22555917444 +5.677,-1.50659840916,0.225633112743 +5.678,-1.50637270204,0.225707122784 +5.679,-1.50614692084,0.225781204674 +5.68,-1.50592106548,0.225855358522 +5.681,-1.50569513589,0.22592958444 +5.682,-1.50546913201,0.226003882538 +5.683,-1.50524305376,0.226078252928 +5.684,-1.50501690106,0.22615269572 +5.685,-1.50479067385,0.226227211027 +5.686,-1.50456437205,0.22630179896 +5.687,-1.50433799559,0.226376459631 +5.688,-1.5041115444,0.226451193153 +5.689,-1.5038850184,0.226525999638 +5.69,-1.50365841752,0.226600879198 +5.691,-1.50343174169,0.226675831947 +5.692,-1.50320499083,0.226750857998 +5.693,-1.50297816487,0.226825957464 +5.694,-1.50275126374,0.226901130459 +5.695,-1.50252428737,0.226976377097 +5.696,-1.50229723567,0.227051697492 +5.697,-1.50207010858,0.227127091758 +5.698,-1.50184290602,0.227202560011 +5.699,-1.50161562791,0.227278102364 +5.7,-1.5013882742,0.227353718933 +5.701,-1.50116084479,0.227429409834 +5.702,-1.50093333961,0.227505175181 +5.703,-1.5007057586,0.227581015091 +5.704,-1.50047810167,0.22765692968 +5.705,-1.50025036875,0.227732919063 +5.706,-1.50002255976,0.227808983358 +5.707,-1.49979467464,0.227885122682 +5.708,-1.4995667133,0.22796133715 +5.709,-1.49933867568,0.228037626882 +5.71,-1.49911056168,0.228113991993 +5.711,-1.49888237125,0.228190432603 +5.712,-1.4986541043,0.228266948828 +5.713,-1.49842576076,0.228343540787 +5.714,-1.49819734055,0.228420208599 +5.715,-1.4979688436,0.228496952382 +5.716,-1.49774026983,0.228573772255 +5.717,-1.49751161916,0.228650668338 +5.718,-1.49728289152,0.228727640751 +5.719,-1.49705408683,0.228804689611 +5.72,-1.49682520502,0.228881815041 +5.721,-1.496596246,0.22895901716 +5.722,-1.4963672097,0.229036296088 +5.723,-1.49613809605,0.229113651947 +5.724,-1.49590890497,0.229191084856 +5.725,-1.49567963637,0.229268594939 +5.726,-1.49545029019,0.229346182315 +5.727,-1.49522086634,0.229423847107 +5.728,-1.49499136475,0.229501589437 +5.729,-1.49476178534,0.229579409428 +5.73,-1.49453212803,0.2296573072 +5.731,-1.49430239275,0.229735282879 +5.732,-1.49407257942,0.229813336585 +5.733,-1.49384268795,0.229891468444 +5.734,-1.49361271827,0.229969678578 +5.735,-1.4933826703,0.230047967111 +5.736,-1.49315254397,0.230126334168 +5.737,-1.49292233919,0.230204779872 +5.738,-1.49269205588,0.230283304349 +5.739,-1.49246169398,0.230361907723 +5.74,-1.49223125338,0.230440590119 +5.741,-1.49200073403,0.230519351663 +5.742,-1.49177013584,0.230598192481 +5.743,-1.49153945873,0.230677112698 +5.744,-1.49130870262,0.23075611244 +5.745,-1.49107786742,0.230835191835 +5.746,-1.49084695307,0.230914351009 +5.747,-1.49061595948,0.230993590088 +5.748,-1.49038488657,0.231072909201 +5.749,-1.49015373427,0.231152308475 +5.75,-1.48992250248,0.231231788037 +5.751,-1.48969119113,0.231311348016 +5.752,-1.48945980014,0.23139098854 +5.753,-1.48922832943,0.231470709738 +5.754,-1.48899677892,0.231550511739 +5.755,-1.48876514852,0.231630394671 +5.756,-1.48853343817,0.231710358665 +5.757,-1.48830164776,0.23179040385 +5.758,-1.48806977723,0.231870530356 +5.759,-1.48783782649,0.231950738314 +5.76,-1.48760579547,0.232031027854 +5.761,-1.48737368407,0.232111399107 +5.762,-1.48714149221,0.232191852204 +5.763,-1.48690921983,0.232272387277 +5.764,-1.48667686682,0.232353004457 +5.765,-1.48644443312,0.232433703876 +5.766,-1.48621191863,0.232514485667 +5.767,-1.48597932328,0.232595349961 +5.768,-1.48574664699,0.232676296893 +5.769,-1.48551388966,0.232757326595 +5.77,-1.48528105122,0.232838439201 +5.771,-1.48504813159,0.232919634844 +5.772,-1.48481513067,0.233000913658 +5.773,-1.4845820484,0.233082275778 +5.774,-1.48434888467,0.233163721337 +5.775,-1.48411563942,0.233245250472 +5.776,-1.48388231256,0.233326863317 +5.777,-1.483648904,0.233408560008 +5.778,-1.48341541366,0.23349034068 +5.779,-1.48318184145,0.233572205469 +5.78,-1.4829481873,0.233654154512 +5.781,-1.48271445111,0.233736187945 +5.782,-1.48248063281,0.233818305906 +5.783,-1.4822467323,0.233900508531 +5.784,-1.4820127495,0.233982795958 +5.785,-1.48177868433,0.234065168325 +5.786,-1.48154453671,0.23414762577 +5.787,-1.48131030654,0.234230168431 +5.788,-1.48107599374,0.234312796447 +5.789,-1.48084159823,0.234395509957 +5.79,-1.48060711992,0.234478309101 +5.791,-1.48037255873,0.234561194017 +5.792,-1.48013791456,0.234644164846 +5.793,-1.47990318734,0.234727221729 +5.794,-1.47966837698,0.234810364805 +5.795,-1.47943348338,0.234893594216 +5.796,-1.47919850647,0.234976910102 +5.797,-1.47896344616,0.235060312606 +5.798,-1.47872830236,0.235143801868 +5.799,-1.47849307498,0.235227378031 +5.8,-1.47825776394,0.235311041237 +5.801,-1.47802236915,0.23539479163 +5.802,-1.47778689052,0.235478629351 +5.803,-1.47755132796,0.235562554545 +5.804,-1.4773156814,0.235646567355 +5.805,-1.47707995073,0.235730667924 +5.806,-1.47684413587,0.235814856398 +5.807,-1.47660823674,0.23589913292 +5.808,-1.47637225324,0.235983497636 +5.809,-1.47613618529,0.236067950691 +5.81,-1.4759000328,0.23615249223 +5.811,-1.47566379568,0.2362371224 +5.812,-1.47542747384,0.236321841345 +5.813,-1.47519106719,0.236406649214 +5.814,-1.47495457564,0.236491546152 +5.815,-1.47471799911,0.236576532307 +5.816,-1.4744813375,0.236661607826 +5.817,-1.47424459073,0.236746772858 +5.818,-1.4740077587,0.236832027549 +5.819,-1.47377084133,0.236917372049 +5.82,-1.47353383852,0.237002806507 +5.821,-1.47329675019,0.23708833107 +5.822,-1.47305957624,0.23717394589 +5.823,-1.47282231659,0.237259651116 +5.824,-1.47258497115,0.237345446897 +5.825,-1.47234753981,0.237431333384 +5.826,-1.4721100225,0.237517310728 +5.827,-1.47187241912,0.23760337908 +5.828,-1.47163472958,0.237689538591 +5.829,-1.4713969538,0.237775789414 +5.83,-1.47115909166,0.2378621317 +5.831,-1.4709211431,0.237948565601 +5.832,-1.47068310801,0.238035091271 +5.833,-1.4704449863,0.238121708862 +5.834,-1.47020677788,0.238208418528 +5.835,-1.46996848266,0.238295220423 +5.836,-1.46973010054,0.238382114701 +5.837,-1.46949163144,0.238469101516 +5.838,-1.46925307526,0.238556181024 +5.839,-1.46901443191,0.238643353378 +5.84,-1.46877570129,0.238730618736 +5.841,-1.46853688331,0.238817977252 +5.842,-1.46829797788,0.238905429083 +5.843,-1.46805898491,0.238992974386 +5.844,-1.4678199043,0.239080613317 +5.845,-1.46758073595,0.239168346033 +5.846,-1.46734147978,0.239256172693 +5.847,-1.46710213568,0.239344093454 +5.848,-1.46686270357,0.239432108474 +5.849,-1.46662318336,0.239520217912 +5.85,-1.46638357493,0.239608421928 +5.851,-1.46614387821,0.23969672068 +5.852,-1.4659040931,0.239785114328 +5.853,-1.4656642195,0.239873603032 +5.854,-1.46542425731,0.239962186954 +5.855,-1.46518420644,0.240050866253 +5.856,-1.4649440668,0.240139641091 +5.857,-1.46470383829,0.240228511629 +5.858,-1.46446352081,0.240317478029 +5.859,-1.46422311427,0.240406540454 +5.86,-1.46398261857,0.240495699065 +5.861,-1.46374203362,0.240584954027 +5.862,-1.46350135931,0.240674305503 +5.863,-1.46326059556,0.240763753655 +5.864,-1.46301974226,0.240853298649 +5.865,-1.46277879932,0.240942940649 +5.866,-1.46253776664,0.241032679819 +5.867,-1.46229664412,0.241122516325 +5.868,-1.46205543167,0.241212450333 +5.869,-1.46181412919,0.241302482008 +5.87,-1.46157273658,0.241392611517 +5.871,-1.46133125374,0.241482839026 +5.872,-1.46108968058,0.241573164702 +5.873,-1.46084801699,0.241663588714 +5.874,-1.46060626288,0.241754111229 +5.875,-1.46036441814,0.241844732414 +5.876,-1.46012248269,0.24193545244 +5.877,-1.45988045642,0.242026271474 +5.878,-1.45963833923,0.242117189686 +5.879,-1.45939613102,0.242208207247 +5.88,-1.4591538317,0.242299324325 +5.881,-1.45891144116,0.242390541092 +5.882,-1.4586689593,0.242481857718 +5.883,-1.45842638603,0.242573274376 +5.884,-1.45818372124,0.242664791236 +5.885,-1.45794096483,0.24275640847 +5.886,-1.4576981167,0.242848126252 +5.887,-1.45745517676,0.242939944754 +5.888,-1.45721214489,0.24303186415 +5.889,-1.45696902101,0.243123884612 +5.89,-1.456725805,0.243216006316 +5.891,-1.45648249677,0.243308229435 +5.892,-1.45623909622,0.243400554145 +5.893,-1.45599560324,0.243492980621 +5.894,-1.45575201773,0.243585509038 +5.895,-1.45550833959,0.243678139572 +5.896,-1.45526456872,0.243770872401 +5.897,-1.45502070501,0.243863707701 +5.898,-1.45477674836,0.243956645649 +5.899,-1.45453269868,0.244049686423 +5.9,-1.45428855585,0.244142830202 +5.901,-1.45404431977,0.244236077163 +5.902,-1.45379999034,0.244329427485 +5.903,-1.45355556746,0.244422881349 +5.904,-1.45331105102,0.244516438933 +5.905,-1.45306644092,0.244610100419 +5.906,-1.45282173705,0.244703865985 +5.907,-1.45257693932,0.244797735815 +5.908,-1.45233204761,0.244891710088 +5.909,-1.45208706182,0.244985788988 +5.91,-1.45184198185,0.245079972695 +5.911,-1.45159680759,0.245174261393 +5.912,-1.45135153893,0.245268655265 +5.913,-1.45110617578,0.245363154495 +5.914,-1.45086071802,0.245457759266 +5.915,-1.45061516555,0.245552469763 +5.916,-1.45036951826,0.245647286171 +5.917,-1.45012377605,0.245742208675 +5.918,-1.44987793881,0.24583723746 +5.919,-1.44963200644,0.245932372713 +5.92,-1.44938597883,0.246027614621 +5.921,-1.44913985586,0.24612296337 +5.922,-1.44889363744,0.246218419147 +5.923,-1.44864732346,0.246313982141 +5.924,-1.44840091381,0.246409652541 +5.925,-1.44815440838,0.246505430533 +5.926,-1.44790780706,0.246601316309 +5.927,-1.44766110975,0.246697310057 +5.928,-1.44741431634,0.246793411967 +5.929,-1.44716742672,0.24688962223 +5.93,-1.44692044078,0.246985941038 +5.931,-1.44667335841,0.247082368581 +5.932,-1.4464261795,0.24717890505 +5.933,-1.44617890395,0.24727555064 +5.934,-1.44593153165,0.247372305541 +5.935,-1.44568406248,0.247469169948 +5.936,-1.44543649633,0.247566144054 +5.937,-1.44518883311,0.247663228054 +5.938,-1.44494107268,0.247760422141 +5.939,-1.44469321496,0.247857726511 +5.94,-1.44444525982,0.247955141359 +5.941,-1.44419720715,0.248052666881 +5.942,-1.44394905685,0.248150303274 +5.943,-1.44370080879,0.248248050734 +5.944,-1.44345246289,0.248345909459 +5.945,-1.44320401901,0.248443879647 +5.946,-1.44295547704,0.248541961495 +5.947,-1.44270683689,0.248640155203 +5.948,-1.44245809843,0.24873846097 +5.949,-1.44220926155,0.248836878995 +5.95,-1.44196032614,0.248935409479 +5.951,-1.44171129209,0.249034052621 +5.952,-1.44146215928,0.249132808624 +5.953,-1.4412129276,0.249231677689 +5.954,-1.44096359694,0.249330660018 +5.955,-1.44071416718,0.249429755813 +5.956,-1.44046463822,0.249528965278 +5.957,-1.44021500993,0.249628288615 +5.958,-1.4399652822,0.249727726029 +5.959,-1.43971545493,0.249827277724 +5.96,-1.43946552798,0.249926943906 +5.961,-1.43921550126,0.250026724779 +5.962,-1.43896537464,0.250126620549 +5.963,-1.43871514801,0.250226631424 +5.964,-1.43846482125,0.250326757609 +5.965,-1.43821439425,0.250426999313 +5.966,-1.43796386689,0.250527356743 +5.967,-1.43771323906,0.250627830107 +5.968,-1.43746251064,0.250728419614 +5.969,-1.43721168152,0.250829125474 +5.97,-1.43696075157,0.250929947897 +5.971,-1.43670972068,0.251030887093 +5.972,-1.43645858874,0.251131943272 +5.973,-1.43620735562,0.251233116647 +5.974,-1.43595602121,0.251334407429 +5.975,-1.4357045854,0.25143581583 +5.976,-1.43545304806,0.251537342064 +5.977,-1.43520140907,0.251638986344 +5.978,-1.43494966832,0.251740748883 +5.979,-1.43469782569,0.251842629897 +5.98,-1.43444588106,0.2519446296 +5.981,-1.43419383431,0.252046748207 +5.982,-1.43394168533,0.252148985935 +5.983,-1.43368943399,0.252251343 +5.984,-1.43343708017,0.25235381962 +5.985,-1.43318462375,0.252456416011 +5.986,-1.43293206462,0.252559132392 +5.987,-1.43267940265,0.252661968982 +5.988,-1.43242663772,0.252764925999 +5.989,-1.43217376972,0.252868003663 +5.99,-1.43192079852,0.252971202195 +5.991,-1.43166772399,0.253074521815 +5.992,-1.43141454603,0.253177962745 +5.993,-1.43116126451,0.253281525205 +5.994,-1.4309078793,0.25338520942 +5.995,-1.43065439028,0.253489015611 +5.996,-1.43040079734,0.253592944001 +5.997,-1.43014710034,0.253696994816 +5.998,-1.42989329917,0.253801168279 +5.999,-1.42963939371,0.253905464616 +6.,-1.42938538383,0.254009884051 +6.001,-1.4291312694,0.254114426812 +6.002,-1.42887705031,0.254219093124 +6.003,-1.42862272642,0.254323883215 +6.004,-1.42836829763,0.254428797314 +6.005,-1.42811376379,0.254533835648 +6.006,-1.42785912479,0.254638998445 +6.007,-1.42760438051,0.254744285937 +6.008,-1.42734953081,0.254849698352 +6.009,-1.42709457557,0.254955235921 +6.01,-1.42683951467,0.255060898876 +6.011,-1.42658434798,0.255166687448 +6.012,-1.42632907538,0.25527260187 +6.013,-1.42607369674,0.255378642373 +6.014,-1.42581821193,0.255484809193 +6.015,-1.42556262083,0.255591102562 +6.016,-1.42530692331,0.255697522715 +6.017,-1.42505111924,0.255804069888 +6.018,-1.42479520849,0.255910744316 +6.019,-1.42453919095,0.256017546236 +6.02,-1.42428306647,0.256124475883 +6.021,-1.42402683494,0.256231533497 +6.022,-1.42377049622,0.256338719315 +6.023,-1.42351405018,0.256446033575 +6.024,-1.42325749671,0.256553476516 +6.025,-1.42300083566,0.25666104838 +6.026,-1.42274406691,0.256768749405 +6.027,-1.42248719033,0.256876579833 +6.028,-1.42223020579,0.256984539906 +6.029,-1.42197311316,0.257092629866 +6.03,-1.42171591231,0.257200849955 +6.031,-1.42145860311,0.257309200417 +6.032,-1.42120118543,0.257417681496 +6.033,-1.42094365913,0.257526293437 +6.034,-1.4206860241,0.257635036484 +6.035,-1.42042828019,0.257743910884 +6.036,-1.42017042727,0.257852916883 +6.037,-1.41991246522,0.257962054728 +6.038,-1.41965439389,0.258071324666 +6.039,-1.41939621316,0.258180726946 +6.04,-1.4191379229,0.258290261818 +6.041,-1.41887952297,0.258399929529 +6.042,-1.41862101324,0.258509730331 +6.043,-1.41836239358,0.258619664474 +6.044,-1.41810366385,0.258729732209 +6.045,-1.41784482391,0.258839933789 +6.046,-1.41758587364,0.258950269467 +6.047,-1.4173268129,0.259060739494 +6.048,-1.41706764156,0.259171344126 +6.049,-1.41680835947,0.259282083616 +6.05,-1.41654896652,0.259392958221 +6.051,-1.41628946255,0.259503968195 +6.052,-1.41602984743,0.259615113795 +6.053,-1.41577012104,0.259726395279 +6.054,-1.41551028323,0.259837812904 +6.055,-1.41525033386,0.259949366927 +6.056,-1.4149902728,0.26006105761 +6.057,-1.41473009992,0.26017288521 +6.058,-1.41446981507,0.260284849988 +6.059,-1.41420941811,0.260396952206 +6.06,-1.41394890892,0.260509192124 +6.061,-1.41368828735,0.260621570006 +6.062,-1.41342755327,0.260734086114 +6.063,-1.41316670653,0.260846740712 +6.064,-1.41290574699,0.260959534063 +6.065,-1.41264467452,0.261072466434 +6.066,-1.41238348899,0.261185538089 +6.067,-1.41212219024,0.261298749295 +6.068,-1.41186077814,0.261412100318 +6.069,-1.41159925255,0.261525591427 +6.07,-1.41133761332,0.26163922289 +6.071,-1.41107586033,0.261752994975 +6.072,-1.41081399342,0.261866907952 +6.073,-1.41055201246,0.261980962093 +6.074,-1.4102899173,0.262095157666 +6.075,-1.41002770781,0.262209494946 +6.076,-1.40976538383,0.262323974203 +6.077,-1.40950294524,0.262438595711 +6.078,-1.40924039188,0.262553359743 +6.079,-1.40897772361,0.262668266575 +6.08,-1.40871494029,0.262783316481 +6.081,-1.40845204178,0.262898509737 +6.082,-1.40818902794,0.26301384662 +6.083,-1.40792589861,0.263129327407 +6.084,-1.40766265366,0.263244952376 +6.085,-1.40739929293,0.263360721806 +6.086,-1.4071358163,0.263476635976 +6.087,-1.4068722236,0.263592695166 +6.088,-1.4066085147,0.263708899658 +6.089,-1.40634468945,0.263825249732 +6.09,-1.40608074771,0.263941745672 +6.091,-1.40581668932,0.264058387759 +6.092,-1.40555251414,0.264175176278 +6.093,-1.40528822203,0.264292111513 +6.094,-1.40502381284,0.26440919375 +6.095,-1.40475928642,0.264526423274 +6.096,-1.40449464262,0.264643800371 +6.097,-1.40422988129,0.264761325331 +6.098,-1.40396500229,0.264878998439 +6.099,-1.40370000547,0.264996819986 +6.1,-1.40343489068,0.265114790261 +6.101,-1.40316965777,0.265232909554 +6.102,-1.40290430659,0.265351178157 +6.103,-1.402638837,0.265469596361 +6.104,-1.40237324883,0.265588164458 +6.105,-1.40210754195,0.265706882743 +6.106,-1.4018417162,0.265825751509 +6.107,-1.40157577143,0.265944771052 +6.108,-1.40130970749,0.266063941666 +6.109,-1.40104352422,0.266183263648 +6.11,-1.40077722148,0.266302737296 +6.111,-1.40051079912,0.266422362907 +6.112,-1.40024425698,0.266542140781 +6.113,-1.39997759491,0.266662071215 +6.114,-1.39971081276,0.266782154512 +6.115,-1.39944391036,0.266902390972 +6.116,-1.39917688758,0.267022780896 +6.117,-1.39890974426,0.267143324587 +6.118,-1.39864248024,0.267264022349 +6.119,-1.39837509536,0.267384874486 +6.12,-1.39810758948,0.267505881303 +6.121,-1.39783996244,0.267627043106 +6.122,-1.39757221408,0.2677483602 +6.123,-1.39730434424,0.267869832894 +6.124,-1.39703635278,0.267991461496 +6.125,-1.39676823954,0.268113246315 +6.126,-1.39650000435,0.26823518766 +6.127,-1.39623164706,0.268357285842 +6.128,-1.39596316752,0.268479541172 +6.129,-1.39569456557,0.268601953964 +6.13,-1.39542584104,0.268724524529 +6.131,-1.39515699379,0.268847253181 +6.132,-1.39488802365,0.268970140236 +6.133,-1.39461893046,0.269093186008 +6.134,-1.39434971407,0.269216390815 +6.135,-1.39408037432,0.269339754972 +6.136,-1.39381091104,0.269463278799 +6.137,-1.39354132408,0.269586962614 +6.138,-1.39327161327,0.269710806737 +6.139,-1.39300177846,0.269834811488 +6.14,-1.39273181948,0.269958977188 +6.141,-1.39246173618,0.27008330416 +6.142,-1.39219152838,0.270207792727 +6.143,-1.39192119594,0.270332443213 +6.144,-1.39165073869,0.270457255942 +6.145,-1.39138015645,0.270582231241 +6.146,-1.39110944908,0.270707369435 +6.147,-1.39083861641,0.270832670851 +6.148,-1.39056765828,0.270958135819 +6.149,-1.39029657451,0.271083764667 +6.15,-1.39002536496,0.271209557726 +6.151,-1.38975402944,0.271335515325 +6.152,-1.3894825678,0.271461637797 +6.153,-1.38921097988,0.271587925474 +6.154,-1.3889392655,0.271714378689 +6.155,-1.3886674245,0.271840997778 +6.156,-1.38839545672,0.271967783075 +6.157,-1.38812336198,0.272094734916 +6.158,-1.38785114013,0.272221853639 +6.159,-1.38757879099,0.272349139581 +6.16,-1.3873063144,0.272476593082 +6.161,-1.38703371018,0.27260421448 +6.162,-1.38676097818,0.272732004117 +6.163,-1.38648811822,0.272859962333 +6.164,-1.38621513013,0.272988089473 +6.165,-1.38594201374,0.273116385878 +6.166,-1.38566876889,0.273244851893 +6.167,-1.3853953954,0.273373487864 +6.168,-1.38512189311,0.273502294136 +6.169,-1.38484826184,0.273631271057 +6.17,-1.38457450142,0.273760418974 +6.171,-1.38430061168,0.273889738237 +6.172,-1.38402659245,0.274019229195 +6.173,-1.38375244356,0.274148892199 +6.174,-1.38347816483,0.274278727601 +6.175,-1.38320375609,0.274408735754 +6.176,-1.38292921718,0.27453891701 +6.177,-1.3826545479,0.274669271726 +6.178,-1.3823797481,0.274799800256 +6.179,-1.3821048176,0.274930502957 +6.18,-1.38182975622,0.275061380186 +6.181,-1.38155456379,0.275192432301 +6.182,-1.38127924013,0.275323659663 +6.183,-1.38100378507,0.275455062631 +6.184,-1.38072819843,0.275586641568 +6.185,-1.38045248003,0.275718396834 +6.186,-1.3801766297,0.275850328794 +6.187,-1.37990064726,0.275982437811 +6.188,-1.37962453254,0.276114724252 +6.189,-1.37934828535,0.276247188481 +6.19,-1.37907190552,0.276379830868 +6.191,-1.37879539287,0.276512651779 +6.192,-1.37851874721,0.276645651584 +6.193,-1.37824196838,0.276778830653 +6.194,-1.37796505619,0.276912189358 +6.195,-1.37768801047,0.277045728071 +6.196,-1.37741083102,0.277179447165 +6.197,-1.37713351767,0.277313347014 +6.198,-1.37685607024,0.277447427994 +6.199,-1.37657848855,0.277581690481 +6.2,-1.37630077242,0.277716134853 +6.201,-1.37602292166,0.277850761487 +6.202,-1.37574493609,0.277985570764 +6.203,-1.37546681552,0.278120563063 +6.204,-1.37518855979,0.278255738767 +6.205,-1.37491016869,0.278391098258 +6.206,-1.37463164204,0.278526641919 +6.207,-1.37435297967,0.278662370136 +6.208,-1.37407418139,0.278798283293 +6.209,-1.37379524701,0.278934381778 +6.21,-1.37351617634,0.279070665979 +6.211,-1.37323696921,0.279207136284 +6.212,-1.37295762541,0.279343793083 +6.213,-1.37267814478,0.279480636768 +6.214,-1.37239852711,0.27961766773 +6.215,-1.37211877222,0.279754886364 +6.216,-1.37183887993,0.279892293062 +6.217,-1.37155885004,0.280029888221 +6.218,-1.37127868237,0.280167672236 +6.219,-1.37099837672,0.280305645507 +6.22,-1.37071793292,0.28044380843 +6.221,-1.37043735075,0.280582161406 +6.222,-1.37015663005,0.280720704836 +6.223,-1.36987577061,0.280859439122 +6.224,-1.36959477225,0.280998364667 +6.225,-1.36931363476,0.281137481875 +6.226,-1.36903235797,0.281276791151 +6.227,-1.36875094168,0.281416292902 +6.228,-1.36846938569,0.281555987536 +6.229,-1.36818768982,0.281695875461 +6.23,-1.36790585386,0.281835957087 +6.231,-1.36762387763,0.281976232825 +6.232,-1.36734176092,0.282116703087 +6.233,-1.36705950356,0.282257368286 +6.234,-1.36677710533,0.282398228838 +6.235,-1.36649456604,0.282539285157 +6.236,-1.3662118855,0.282680537661 +6.237,-1.36592906352,0.282821986766 +6.238,-1.36564609988,0.282963632893 +6.239,-1.36536299441,0.283105476461 +6.24,-1.36507974689,0.283247517893 +6.241,-1.36479635713,0.28338975761 +6.242,-1.36451282494,0.283532196036 +6.243,-1.3642291501,0.283674833597 +6.244,-1.36394533243,0.283817670719 +6.245,-1.36366137172,0.283960707828 +6.246,-1.36337726778,0.284103945354 +6.247,-1.3630930204,0.284247383726 +6.248,-1.36280862937,0.284391023376 +6.249,-1.36252409451,0.284534864734 +6.25,-1.3622394156,0.284678908236 +6.251,-1.36195459244,0.284823154316 +6.252,-1.36166962484,0.284967603409 +6.253,-1.36138451259,0.285112255952 +6.254,-1.36109925547,0.285257112384 +6.255,-1.3608138533,0.285402173145 +6.256,-1.36052830586,0.285547438675 +6.257,-1.36024261295,0.285692909416 +6.258,-1.35995677437,0.285838585811 +6.259,-1.3596707899,0.285984468306 +6.26,-1.35938465934,0.286130557346 +6.261,-1.35909838249,0.286276853377 +6.262,-1.35881195913,0.286423356849 +6.263,-1.35852538906,0.286570068211 +6.264,-1.35823867207,0.286716987914 +6.265,-1.35795180796,0.28686411641 +6.266,-1.3576647965,0.287011454152 +6.267,-1.3573776375,0.287159001596 +6.268,-1.35709033074,0.287306759197 +6.269,-1.35680287601,0.287454727413 +6.27,-1.35651527311,0.287602906702 +6.271,-1.35622752181,0.287751297524 +6.272,-1.35593962191,0.287899900341 +6.273,-1.35565157319,0.288048715615 +6.274,-1.35536337545,0.28819774381 +6.275,-1.35507502847,0.288346985391 +6.276,-1.35478653202,0.288496440826 +6.277,-1.35449788591,0.288646110581 +6.278,-1.35420908992,0.288795995125 +6.279,-1.35392014382,0.288946094931 +6.28,-1.35363104741,0.289096410469 +6.281,-1.35334180047,0.289246942213 +6.282,-1.35305240278,0.289397690638 +6.283,-1.35276285412,0.289548656219 +6.284,-1.35247315429,0.289699839433 +6.285,-1.35218330304,0.289851240761 +6.286,-1.35189330018,0.290002860681 +6.287,-1.35160314548,0.290154699676 +6.288,-1.35131283873,0.290306758228 +6.289,-1.35102237969,0.290459036821 +6.29,-1.35073176815,0.290611535941 +6.291,-1.3504410039,0.290764256076 +6.292,-1.3501500867,0.290917197714 +6.293,-1.34985901634,0.291070361345 +6.294,-1.34956779259,0.291223747459 +6.295,-1.34927641523,0.291377356551 +6.296,-1.34898488404,0.291531189113 +6.297,-1.3486931988,0.291685245642 +6.298,-1.34840135927,0.291839526635 +6.299,-1.34810936524,0.291994032591 +6.3,-1.34781721648,0.292148764008 +6.301,-1.34752491275,0.292303721389 +6.302,-1.34723245385,0.292458905237 +6.303,-1.34693983953,0.292614316055 +6.304,-1.34664706958,0.29276995435 +6.305,-1.34635414376,0.292925820629 +6.306,-1.34606106184,0.293081915401 +6.307,-1.3457678236,0.293238239175 +6.308,-1.34547442881,0.293394792464 +6.309,-1.34518087724,0.293551575781 +6.31,-1.34488716865,0.29370858964 +6.311,-1.34459330281,0.293865834558 +6.312,-1.3442992795,0.294023311053 +6.313,-1.34400509848,0.294181019643 +6.314,-1.34371075952,0.29433896085 +6.315,-1.34341626238,0.294497135195 +6.316,-1.34312160684,0.294655543204 +6.317,-1.34282679266,0.2948141854 +6.318,-1.34253181959,0.294973062311 +6.319,-1.34223668742,0.295132174466 +6.32,-1.3419413959,0.295291522394 +6.321,-1.34164594479,0.295451106627 +6.322,-1.34135033386,0.295610927699 +6.323,-1.34105456288,0.295770986143 +6.324,-1.34075863159,0.295931282496 +6.325,-1.34046253978,0.296091817297 +6.326,-1.34016628719,0.296252591084 +6.327,-1.33986987358,0.296413604398 +6.328,-1.33957329872,0.296574857783 +6.329,-1.33927656237,0.296736351783 +6.33,-1.33897966428,0.296898086942 +6.331,-1.33868260422,0.29706006381 +6.332,-1.33838538194,0.297222282935 +6.333,-1.33808799719,0.297384744867 +6.334,-1.33779044974,0.297547450159 +6.335,-1.33749273934,0.297710399366 +6.336,-1.33719486575,0.297873593043 +6.337,-1.33689682872,0.298037031746 +6.338,-1.336598628,0.298200716036 +6.339,-1.33630026336,0.298364646473 +6.34,-1.33600173453,0.298528823619 +6.341,-1.33570304128,0.298693248038 +6.342,-1.33540418336,0.298857920295 +6.343,-1.33510516052,0.299022840959 +6.344,-1.33480597251,0.299188010598 +6.345,-1.33450661908,0.299353429783 +6.346,-1.33420709998,0.299519099087 +6.347,-1.33390741496,0.299685019083 +6.348,-1.33360756377,0.299851190348 +6.349,-1.33330754616,0.300017613459 +6.35,-1.33300736187,0.300184288995 +6.351,-1.33270701065,0.300351217538 +6.352,-1.33240649225,0.300518399671 +6.353,-1.33210580642,0.300685835978 +6.354,-1.33180495289,0.300853527045 +6.355,-1.33150393142,0.301021473461 +6.356,-1.33120274174,0.301189675815 +6.357,-1.33090138361,0.301358134699 +6.358,-1.33059985676,0.301526850707 +6.359,-1.33029816093,0.301695824434 +6.36,-1.32999629588,0.301865056477 +6.361,-1.32969426133,0.302034547435 +6.362,-1.32939205703,0.302204297908 +6.363,-1.32908968272,0.302374308498 +6.364,-1.32878713814,0.302544579811 +6.365,-1.32848442303,0.302715112453 +6.366,-1.32818153712,0.302885907031 +6.367,-1.32787848016,0.303056964154 +6.368,-1.32757525187,0.303228284436 +6.369,-1.32727185201,0.303399868489 +6.37,-1.32696828029,0.303571716928 +6.371,-1.32666453646,0.303743830371 +6.372,-1.32636062025,0.303916209438 +6.373,-1.32605653139,0.304088854748 +6.374,-1.32575226963,0.304261766926 +6.375,-1.32544783468,0.304434946595 +6.376,-1.32514322629,0.304608394383 +6.377,-1.32483844418,0.304782110918 +6.378,-1.32453348808,0.304956096831 +6.379,-1.32422835773,0.305130352753 +6.38,-1.32392305285,0.305304879321 +6.381,-1.32361757317,0.305479677169 +6.382,-1.32331191842,0.305654746937 +6.383,-1.32300608833,0.305830089264 +6.384,-1.32270008263,0.306005704793 +6.385,-1.32239390103,0.306181594168 +6.386,-1.32208754328,0.306357758034 +6.387,-1.32178100908,0.306534197042 +6.388,-1.32147429817,0.306710911839 +6.389,-1.32116741026,0.306887903079 +6.39,-1.32086034509,0.307065171416 +6.391,-1.32055310238,0.307242717506 +6.392,-1.32024568183,0.307420542007 +6.393,-1.31993808319,0.307598645579 +6.394,-1.31963030616,0.307777028885 +6.395,-1.31932235047,0.307955692589 +6.396,-1.31901421583,0.308134637357 +6.397,-1.31870590196,0.308313863858 +6.398,-1.31839740859,0.308493372762 +6.399,-1.31808873543,0.308673164742 +6.4,-1.31777988219,0.308853240472 +6.401,-1.31747084859,0.30903360063 +6.402,-1.31716163434,0.309214245894 +6.403,-1.31685223916,0.309395176944 +6.404,-1.31654266277,0.309576394465 +6.405,-1.31623290487,0.309757899142 +6.406,-1.31592296518,0.309939691661 +6.407,-1.31561284341,0.310121772712 +6.408,-1.31530253926,0.310304142987 +6.409,-1.31499205246,0.310486803179 +6.41,-1.31468138271,0.310669753986 +6.411,-1.31437052971,0.310852996103 +6.412,-1.31405949318,0.311036530233 +6.413,-1.31374827282,0.311220357077 +6.414,-1.31343686834,0.311404477341 +6.415,-1.31312527945,0.31158889173 +6.416,-1.31281350585,0.311773600955 +6.417,-1.31250154725,0.311958605726 +6.418,-1.31218940334,0.312143906757 +6.419,-1.31187707383,0.312329504765 +6.42,-1.31156455843,0.312515400466 +6.421,-1.31125185684,0.312701594581 +6.422,-1.31093896875,0.312888087833 +6.423,-1.31062589387,0.313074880947 +6.424,-1.3103126319,0.31326197465 +6.425,-1.30999918253,0.313449369671 +6.426,-1.30968554546,0.313637066742 +6.427,-1.30937172039,0.313825066598 +6.428,-1.30905770702,0.314013369973 +6.429,-1.30874350505,0.314201977608 +6.43,-1.30842911416,0.314390890243 +6.431,-1.30811453405,0.314580108621 +6.432,-1.30779976441,0.314769633489 +6.433,-1.30748480495,0.314959465594 +6.434,-1.30716965534,0.315149605686 +6.435,-1.30685431529,0.31534005452 +6.436,-1.30653878447,0.315530812849 +6.437,-1.30622306259,0.315721881432 +6.438,-1.30590714933,0.315913261028 +6.439,-1.30559104438,0.3161049524 +6.44,-1.30527474742,0.316296956313 +6.441,-1.30495825815,0.316489273534 +6.442,-1.30464157625,0.316681904834 +6.443,-1.30432470139,0.316874850983 +6.444,-1.30400763328,0.317068112758 +6.445,-1.30369037159,0.317261690934 +6.446,-1.303372916,0.317455586293 +6.447,-1.3030552662,0.317649799615 +6.448,-1.30273742187,0.317844331685 +6.449,-1.30241938269,0.318039183292 +6.45,-1.30210114833,0.318234355224 +6.451,-1.30178271849,0.318429848273 +6.452,-1.30146409282,0.318625663235 +6.453,-1.30114527102,0.318821800907 +6.454,-1.30082625276,0.319018262088 +6.455,-1.30050703771,0.319215047581 +6.456,-1.30018762555,0.319412158191 +6.457,-1.29986801596,0.319609594726 +6.458,-1.2995482086,0.319807357997 +6.459,-1.29922820315,0.320005448814 +6.46,-1.29890799928,0.320203867996 +6.461,-1.29858759667,0.320402616358 +6.462,-1.29826699497,0.320601694723 +6.463,-1.29794619387,0.320801103913 +6.464,-1.29762519302,0.321000844756 +6.465,-1.29730399211,0.321200918078 +6.466,-1.29698259078,0.321401324712 +6.467,-1.29666098872,0.321602065493 +6.468,-1.29633918558,0.321803141256 +6.469,-1.29601718102,0.322004552841 +6.47,-1.29569497472,0.322206301091 +6.471,-1.29537256633,0.322408386851 +6.472,-1.29504995552,0.322610810968 +6.473,-1.29472714195,0.322813574294 +6.474,-1.29440412527,0.32301667768 +6.475,-1.29408090515,0.323220121984 +6.476,-1.29375748124,0.323423908065 +6.477,-1.2934338532,0.323628036783 +6.478,-1.2931100207,0.323832509004 +6.479,-1.29278598337,0.324037325595 +6.48,-1.29246174088,0.324242487426 +6.481,-1.29213729289,0.32444799537 +6.482,-1.29181263904,0.324653850302 +6.483,-1.29148777898,0.324860053103 +6.484,-1.29116271238,0.325066604653 +6.485,-1.29083743887,0.325273505836 +6.486,-1.29051195812,0.325480757541 +6.487,-1.29018626976,0.325688360658 +6.488,-1.28986037344,0.32589631608 +6.489,-1.28953426881,0.326104624703 +6.49,-1.28920795553,0.326313287426 +6.491,-1.28888143322,0.326522305152 +6.492,-1.28855470154,0.326731678785 +6.493,-1.28822776013,0.326941409235 +6.494,-1.28790060864,0.327151497411 +6.495,-1.28757324669,0.327361944229 +6.496,-1.28724567394,0.327572750604 +6.497,-1.28691789002,0.327783917458 +6.498,-1.28658989458,0.327995445714 +6.499,-1.28626168724,0.328207336298 +6.5,-1.28593326765,0.328419590139 +6.501,-1.28560463544,0.32863220817 +6.502,-1.28527579025,0.328845191327 +6.503,-1.28494673171,0.329058540547 +6.504,-1.28461745946,0.329272256774 +6.505,-1.28428797311,0.329486340951 +6.506,-1.28395827232,0.329700794027 +6.507,-1.2836283567,0.329915616954 +6.508,-1.28329822589,0.330130810685 +6.509,-1.28296787952,0.330346376178 +6.51,-1.2826373172,0.330562314394 +6.511,-1.28230653858,0.330778626298 +6.512,-1.28197554326,0.330995312855 +6.513,-1.28164433089,0.331212375038 +6.514,-1.28131290107,0.331429813819 +6.515,-1.28098125344,0.331647630175 +6.516,-1.28064938762,0.331865825088 +6.517,-1.28031730322,0.33208439954 +6.518,-1.27998499986,0.332303354518 +6.519,-1.27965247717,0.332522691012 +6.52,-1.27931973476,0.332742410017 +6.521,-1.27898677225,0.332962512529 +6.522,-1.27865358925,0.333182999548 +6.523,-1.27832018538,0.333403872077 +6.524,-1.27798656025,0.333625131125 +6.525,-1.27765271347,0.333846777701 +6.526,-1.27731864466,0.334068812818 +6.527,-1.27698435342,0.334291237495 +6.528,-1.27664983937,0.334514052752 +6.529,-1.27631510211,0.334737259614 +6.53,-1.27598014125,0.334960859106 +6.531,-1.2756449564,0.335184852262 +6.532,-1.27530954716,0.335409240115 +6.533,-1.27497391313,0.335634023704 +6.534,-1.27463805393,0.33585920407 +6.535,-1.27430196915,0.336084782259 +6.536,-1.27396565839,0.336310759318 +6.537,-1.27362912125,0.336537136301 +6.538,-1.27329235734,0.336763914264 +6.539,-1.27295536624,0.336991094265 +6.54,-1.27261814756,0.337218677369 +6.541,-1.2722807009,0.337446664641 +6.542,-1.27194302584,0.337675057152 +6.543,-1.27160512199,0.337903855977 +6.544,-1.27126698892,0.338133062193 +6.545,-1.27092862625,0.338362676881 +6.546,-1.27059003355,0.338592701126 +6.547,-1.27025121041,0.338823136019 +6.548,-1.26991215643,0.33905398265 +6.549,-1.26957287119,0.339285242117 +6.55,-1.26923335427,0.339516915519 +6.551,-1.26889360527,0.33974900396 +6.552,-1.26855362376,0.339981508549 +6.553,-1.26821340933,0.340214430397 +6.554,-1.26787296156,0.340447770618 +6.555,-1.26753228003,0.340681530333 +6.556,-1.26719136432,0.340915710664 +6.557,-1.266850214,0.341150312739 +6.558,-1.26650882867,0.341385337688 +6.559,-1.26616720788,0.341620786645 +6.56,-1.26582535122,0.34185666075 +6.561,-1.26548325826,0.342092961146 +6.562,-1.26514092857,0.342329688978 +6.563,-1.26479836172,0.342566845398 +6.564,-1.26445555729,0.34280443156 +6.565,-1.26411251484,0.343042448622 +6.566,-1.26376923394,0.343280897747 +6.567,-1.26342571416,0.343519780103 +6.568,-1.26308195507,0.343759096859 +6.569,-1.26273795622,0.34399884919 +6.57,-1.26239371718,0.344239038276 +6.571,-1.26204923752,0.344479665299 +6.572,-1.26170451678,0.344720731447 +6.573,-1.26135955455,0.34496223791 +6.574,-1.26101435036,0.345204185885 +6.575,-1.26066890378,0.345446576571 +6.576,-1.26032321437,0.345689411171 +6.577,-1.25997728168,0.345932690894 +6.578,-1.25963110526,0.346176416953 +6.579,-1.25928468467,0.346420590563 +6.58,-1.25893801946,0.346665212946 +6.581,-1.25859110918,0.346910285326 +6.582,-1.25824395337,0.347155808934 +6.583,-1.25789655158,0.347401785003 +6.584,-1.25754890337,0.347648214771 +6.585,-1.25720100827,0.34789509948 +6.586,-1.25685286583,0.348142440378 +6.587,-1.25650447559,0.348390238715 +6.588,-1.25615583709,0.348638495748 +6.589,-1.25580694988,0.348887212736 +6.59,-1.25545781349,0.349136390945 +6.591,-1.25510842746,0.349386031642 +6.592,-1.25475879132,0.349636136103 +6.593,-1.25440890462,0.349886705604 +6.594,-1.25405876687,0.350137741429 +6.595,-1.25370837763,0.350389244865 +6.596,-1.25335773641,0.350641217203 +6.597,-1.25300684275,0.35089365974 +6.598,-1.25265569618,0.351146573777 +6.599,-1.25230429622,0.351399960619 +6.6,-1.2519526424,0.351653821577 +6.601,-1.25160073424,0.351908157965 +6.602,-1.25124857127,0.352162971103 +6.603,-1.250896153,0.352418262316 +6.604,-1.25054347897,0.352674032933 +6.605,-1.25019054869,0.352930284287 +6.606,-1.24983736167,0.353187017717 +6.607,-1.24948391744,0.353444234566 +6.608,-1.2491302155,0.353701936183 +6.609,-1.24877625538,0.353960123921 +6.61,-1.24842203658,0.354218799138 +6.611,-1.24806755861,0.354477963196 +6.612,-1.247712821,0.354737617463 +6.613,-1.24735782323,0.354997763311 +6.614,-1.24700256483,0.355258402119 +6.615,-1.24664704529,0.355519535269 +6.616,-1.24629126413,0.355781164149 +6.617,-1.24593522084,0.35604329015 +6.618,-1.24557891493,0.35630591467 +6.619,-1.24522234589,0.356569039113 +6.62,-1.24486551322,0.356832664886 +6.621,-1.24450841643,0.3570967934 +6.622,-1.244151055,0.357361426076 +6.623,-1.24379342844,0.357626564335 +6.624,-1.24343553623,0.357892209605 +6.625,-1.24307737786,0.35815836332 +6.626,-1.24271895284,0.35842502692 +6.627,-1.24236026064,0.358692201846 +6.628,-1.24200130075,0.358959889549 +6.629,-1.24164207266,0.359228091483 +6.63,-1.24128257585,0.359496809108 +6.631,-1.2409228098,0.359766043888 +6.632,-1.240562774,0.360035797294 +6.633,-1.24020246793,0.360306070802 +6.634,-1.23984189107,0.360576865893 +6.635,-1.23948104288,0.360848184052 +6.636,-1.23911992286,0.361120026773 +6.637,-1.23875853046,0.361392395553 +6.638,-1.23839686517,0.361665291894 +6.639,-1.23803492645,0.361938717305 +6.64,-1.23767271378,0.3622126733 +6.641,-1.23731022662,0.362487161399 +6.642,-1.23694746443,0.362762183126 +6.643,-1.23658442669,0.363037740012 +6.644,-1.23622111286,0.363313833595 +6.645,-1.2358575224,0.363590465415 +6.646,-1.23549365476,0.36386763702 +6.647,-1.23512950941,0.364145349965 +6.648,-1.2347650858,0.364423605807 +6.649,-1.2344003834,0.364702406113 +6.65,-1.23403540164,0.364981752453 +6.651,-1.23367014,0.365261646402 +6.652,-1.23330459791,0.365542089545 +6.653,-1.23293877482,0.365823083469 +6.654,-1.2325726702,0.366104629767 +6.655,-1.23220628347,0.366386730041 +6.656,-1.23183961408,0.366669385897 +6.657,-1.23147266148,0.366952598945 +6.658,-1.23110542511,0.367236370805 +6.659,-1.23073790441,0.3675207031 +6.66,-1.23037009881,0.367805597461 +6.661,-1.23000200775,0.368091055523 +6.662,-1.22963363067,0.368377078928 +6.663,-1.22926496701,0.368663669326 +6.664,-1.22889601618,0.368950828371 +6.665,-1.22852677762,0.369238557723 +6.666,-1.22815725076,0.36952685905 +6.667,-1.22778743503,0.369815734024 +6.668,-1.22741732984,0.370105184325 +6.669,-1.22704693463,0.37039521164 +6.67,-1.22667624881,0.37068581766 +6.671,-1.22630527181,0.370977004083 +6.672,-1.22593400304,0.371268772615 +6.673,-1.22556244191,0.371561124967 +6.674,-1.22519058785,0.371854062856 +6.675,-1.22481844026,0.372147588007 +6.676,-1.22444599856,0.372441702151 +6.677,-1.22407326215,0.372736407024 +6.678,-1.22370023045,0.373031704371 +6.679,-1.22332690285,0.373327595943 +6.68,-1.22295327877,0.373624083495 +6.681,-1.2225793576,0.373921168792 +6.682,-1.22220513874,0.374218853605 +6.683,-1.2218306216,0.37451713971 +6.684,-1.22145580558,0.374816028891 +6.685,-1.22108069005,0.375115522939 +6.686,-1.22070527443,0.375415623652 +6.687,-1.2203295581,0.375716332833 +6.688,-1.21995354044,0.376017652294 +6.689,-1.21957722086,0.376319583853 +6.69,-1.21920059873,0.376622129334 +6.691,-1.21882367344,0.376925290571 +6.692,-1.21844644437,0.377229069401 +6.693,-1.2180689109,0.377533467671 +6.694,-1.21769107242,0.377838487234 +6.695,-1.21731292829,0.37814412995 +6.696,-1.21693447789,0.378450397686 +6.697,-1.2165557206,0.378757292316 +6.698,-1.21617665578,0.379064815724 +6.699,-1.21579728281,0.379372969796 +6.7,-1.21541760105,0.37968175643 +6.701,-1.21503760988,0.379991177528 +6.702,-1.21465730864,0.380301235002 +6.703,-1.21427669671,0.380611930769 +6.704,-1.21389577344,0.380923266756 +6.705,-1.2135145382,0.381235244894 +6.706,-1.21313299033,0.381547867125 +6.707,-1.2127511292,0.381861135396 +6.708,-1.21236895415,0.382175051663 +6.709,-1.21198646453,0.382489617888 +6.71,-1.21160365969,0.382804836043 +6.711,-1.21122053898,0.383120708105 +6.712,-1.21083710175,0.383437236061 +6.713,-1.21045334733,0.383754421903 +6.714,-1.21006927506,0.384072267634 +6.715,-1.20968488428,0.384390775263 +6.716,-1.20930017434,0.384709946806 +6.717,-1.20891514455,0.385029784289 +6.718,-1.20852979426,0.385350289743 +6.719,-1.2081441228,0.38567146521 +6.72,-1.20775812948,0.385993312739 +6.721,-1.20737181365,0.386315834385 +6.722,-1.20698517462,0.386639032214 +6.723,-1.20659821171,0.386962908298 +6.724,-1.20621092424,0.387287464718 +6.725,-1.20582331154,0.387612703564 +6.726,-1.20543537291,0.387938626931 +6.727,-1.20504710768,0.388265236927 +6.728,-1.20465851514,0.388592535664 +6.729,-1.20426959462,0.388920525264 +6.73,-1.20388034541,0.389249207859 +6.731,-1.20349076682,0.389578585585 +6.732,-1.20310085816,0.389908660592 +6.733,-1.20271061873,0.390239435034 +6.734,-1.20232004782,0.390570911075 +6.735,-1.20192914472,0.390903090889 +6.736,-1.20153790875,0.391235976656 +6.737,-1.20114633918,0.391569570567 +6.738,-1.2007544353,0.39190387482 +6.739,-1.20036219641,0.392238891622 +6.74,-1.19996962179,0.392574623189 +6.741,-1.19957671072,0.392911071746 +6.742,-1.19918346248,0.393248239528 +6.743,-1.19878987635,0.393586128776 +6.744,-1.19839595161,0.393924741742 +6.745,-1.19800168753,0.394264080686 +6.746,-1.19760708338,0.394604147878 +6.747,-1.19721213843,0.394944945596 +6.748,-1.19681685196,0.395286476128 +6.749,-1.19642122321,0.395628741771 +6.75,-1.19602525147,0.395971744831 +6.751,-1.19562893598,0.396315487622 +6.752,-1.19523227601,0.396659972469 +6.753,-1.19483527081,0.397005201706 +6.754,-1.19443791963,0.397351177676 +6.755,-1.19404022173,0.397697902731 +6.756,-1.19364217635,0.398045379234 +6.757,-1.19324378274,0.398393609555 +6.758,-1.19284504014,0.398742596076 +6.759,-1.1924459478,0.399092341187 +6.76,-1.19204650495,0.399442847288 +6.761,-1.19164671084,0.399794116789 +6.762,-1.19124656468,0.400146152111 +6.763,-1.19084606573,0.400498955681 +6.764,-1.1904452132,0.400852529939 +6.765,-1.19004400632,0.401206877335 +6.766,-1.18964244432,0.401562000327 +6.767,-1.18924052642,0.401917901384 +6.768,-1.18883825184,0.402274582986 +6.769,-1.18843561979,0.40263204762 +6.77,-1.18803262949,0.402990297786 +6.771,-1.18762928016,0.403349335994 +6.772,-1.18722557099,0.403709164762 +6.773,-1.1868215012,0.404069786621 +6.774,-1.18641707,0.40443120411 +6.775,-1.18601227658,0.40479341978 +6.776,-1.18560712014,0.405156436192 +6.777,-1.18520159989,0.405520255916 +6.778,-1.18479571501,0.405884881536 +6.779,-1.18438946469,0.406250315642 +6.78,-1.18398284813,0.406616560837 +6.781,-1.18357586451,0.406983619736 +6.782,-1.18316851302,0.407351494963 +6.783,-1.18276079283,0.407720189153 +6.784,-1.18235270312,0.408089704951 +6.785,-1.18194424308,0.408460045014 +6.786,-1.18153541186,0.40883121201 +6.787,-1.18112620866,0.409203208619 +6.788,-1.18071663262,0.409576037528 +6.789,-1.18030668292,0.40994970144 +6.79,-1.17989635871,0.410324203066 +6.791,-1.17948565917,0.410699545129 +6.792,-1.17907458344,0.411075730364 +6.793,-1.17866313068,0.411452761517 +6.794,-1.17825130004,0.411830641344 +6.795,-1.17783909066,0.412209372614 +6.796,-1.1774265017,0.412588958107 +6.797,-1.1770135323,0.412969400614 +6.798,-1.1766001816,0.41335070294 +6.799,-1.17618644873,0.413732867897 +6.8,-1.17577233283,0.414115898314 +6.801,-1.17535783304,0.414499797028 +6.802,-1.17494294847,0.414884566889 +6.803,-1.17452767826,0.41527021076 +6.804,-1.17411202153,0.415656731514 +6.805,-1.1736959774,0.416044132036 +6.806,-1.17327954498,0.416432415226 +6.807,-1.1728627234,0.416821583993 +6.808,-1.17244551176,0.41721164126 +6.809,-1.17202790917,0.417602589961 +6.81,-1.17160991473,0.417994433043 +6.811,-1.17119152756,0.418387173465 +6.812,-1.17077274675,0.418780814199 +6.813,-1.17035357139,0.419175358229 +6.814,-1.16993400058,0.419570808551 +6.815,-1.16951403341,0.419967168176 +6.816,-1.16909366897,0.420364440125 +6.817,-1.16867290634,0.420762627433 +6.818,-1.16825174461,0.421161733147 +6.819,-1.16783018285,0.421561760329 +6.82,-1.16740822014,0.421962712051 +6.821,-1.16698585555,0.422364591399 +6.822,-1.16656308814,0.422767401474 +6.823,-1.166139917,0.423171145388 +6.824,-1.16571634117,0.423575826267 +6.825,-1.16529235973,0.42398144725 +6.826,-1.16486797171,0.424388011489 +6.827,-1.16444317619,0.42479552215 +6.828,-1.16401797221,0.425203982413 +6.829,-1.16359235881,0.425613395471 +6.83,-1.16316633505,0.42602376453 +6.831,-1.16273989996,0.42643509281 +6.832,-1.16231305257,0.426847383545 +6.833,-1.16188579193,0.427260639983 +6.834,-1.16145811707,0.427674865386 +6.835,-1.161030027,0.428090063029 +6.836,-1.16060152077,0.428506236202 +6.837,-1.16017259738,0.428923388208 +6.838,-1.15974325586,0.429341522367 +6.839,-1.15931349522,0.429760642009 +6.84,-1.15888331447,0.430180750482 +6.841,-1.15845271261,0.430601851146 +6.842,-1.15802168867,0.431023947377 +6.843,-1.15759024162,0.431447042565 +6.844,-1.15715837048,0.431871140115 +6.845,-1.15672607424,0.432296243445 +6.846,-1.15629335188,0.43272235599 +6.847,-1.1558602024,0.433149481198 +6.848,-1.15542662478,0.433577622535 +6.849,-1.154992618,0.434006783477 +6.85,-1.15455818103,0.43443696752 +6.851,-1.15412331285,0.434868178173 +6.852,-1.15368801243,0.435300418959 +6.853,-1.15325227874,0.435733693419 +6.854,-1.15281611073,0.436168005107 +6.855,-1.15237950738,0.436603357594 +6.856,-1.15194246762,0.437039754466 +6.857,-1.15150499042,0.437477199326 +6.858,-1.15106707473,0.437915695789 +6.859,-1.15062871948,0.438355247491 +6.86,-1.15018992362,0.438795858079 +6.861,-1.14975068609,0.439237531218 +6.862,-1.14931100582,0.439680270591 +6.863,-1.14887088174,0.440124079894 +6.864,-1.14843031278,0.440568962841 +6.865,-1.14798929785,0.441014923162 +6.866,-1.14754783589,0.441461964602 +6.867,-1.1471059258,0.441910090925 +6.868,-1.14666356649,0.442359305909 +6.869,-1.14622075688,0.442809613351 +6.87,-1.14577749586,0.443261017064 +6.871,-1.14533378234,0.443713520876 +6.872,-1.14488961521,0.444167128634 +6.873,-1.14444499337,0.444621844202 +6.874,-1.1439999157,0.445077671459 +6.875,-1.14355438108,0.445534614305 +6.876,-1.14310838841,0.445992676652 +6.877,-1.14266193654,0.446451862434 +6.878,-1.14221502437,0.446912175601 +6.879,-1.14176765075,0.447373620119 +6.88,-1.14131981455,0.447836199974 +6.881,-1.14087151463,0.448299919168 +6.882,-1.14042274985,0.448764781722 +6.883,-1.13997351906,0.449230791674 +6.884,-1.1395238211,0.449697953081 +6.885,-1.13907365483,0.450166270017 +6.886,-1.13862301909,0.450635746574 +6.887,-1.1381719127,0.451106386864 +6.888,-1.1377203345,0.451578195017 +6.889,-1.13726828333,0.45205117518 +6.89,-1.136815758,0.452525331519 +6.891,-1.13636275733,0.453000668221 +6.892,-1.13590928014,0.453477189489 +6.893,-1.13545532524,0.453954899545 +6.894,-1.13500089144,0.454433802633 +6.895,-1.13454597753,0.454913903013 +6.896,-1.13409058233,0.455395204965 +6.897,-1.13363470462,0.455877712789 +6.898,-1.13317834319,0.456361430803 +6.899,-1.13272149682,0.456846363348 +6.9,-1.13226416431,0.457332514779 +6.901,-1.13180634442,0.457819889476 +6.902,-1.13134803593,0.458308491836 +6.903,-1.1308892376,0.458798326276 +6.904,-1.1304299482,0.459289397235 +6.905,-1.12997016649,0.45978170917 +6.906,-1.12950989123,0.460275266559 +6.907,-1.12904912115,0.460770073901 +6.908,-1.12858785502,0.461266135714 +6.909,-1.12812609156,0.461763456539 +6.91,-1.12766382952,0.462262040935 +6.911,-1.12720106763,0.462761893483 +6.912,-1.12673780461,0.463263018786 +6.913,-1.12627403919,0.463765421467 +6.914,-1.12580977008,0.46426910617 +6.915,-1.125344996,0.46477407756 +6.916,-1.12487971566,0.465280340324 +6.917,-1.12441392776,0.465787899171 +6.918,-1.123947631,0.46629675883 +6.919,-1.12348082408,0.466806924054 +6.92,-1.12301350568,0.467318399616 +6.921,-1.12254567449,0.467831190312 +6.922,-1.12207732919,0.468345300959 +6.923,-1.12160846845,0.468860736398 +6.924,-1.12113909095,0.46937750149 +6.925,-1.12066919535,0.469895601121 +6.926,-1.12019878031,0.470415040198 +6.927,-1.11972784449,0.47093582365 +6.928,-1.11925638653,0.471457956432 +6.929,-1.11878440509,0.471981443518 +6.93,-1.1183118988,0.472506289908 +6.931,-1.1178388663,0.473032500624 +6.932,-1.11736530621,0.473560080712 +6.933,-1.11689121718,0.47408903524 +6.934,-1.11641659781,0.474619369302 +6.935,-1.11594144672,0.475151088013 +6.936,-1.11546576253,0.475684196514 +6.937,-1.11498954383,0.476218699969 +6.938,-1.11451278922,0.476754603566 +6.939,-1.11403549731,0.477291912519 +6.94,-1.11355766668,0.477830632064 +6.941,-1.11307929591,0.478370767464 +6.942,-1.11260038359,0.478912324003 +6.943,-1.11212092828,0.479455306994 +6.944,-1.11164092856,0.479999721772 +6.945,-1.11116038298,0.480545573699 +6.946,-1.11067929012,0.481092868161 +6.947,-1.11019764851,0.481641610569 +6.948,-1.1097154567,0.482191806362 +6.949,-1.10923271324,0.482743461001 +6.95,-1.10874941666,0.483296579977 +6.951,-1.10826556549,0.483851168802 +6.952,-1.10778115826,0.484407233019 +6.953,-1.10729619348,0.484964778195 +6.954,-1.10681066967,0.485523809921 +6.955,-1.10632458533,0.48608433382 +6.956,-1.10583793898,0.486646355537 +6.957,-1.1053507291,0.487209880745 +6.958,-1.10486295418,0.487774915146 +6.959,-1.10437461272,0.488341464466 +6.96,-1.10388570318,0.488909534461 +6.961,-1.10339622405,0.489479130913 +6.962,-1.10290617379,0.490050259631 +6.963,-1.10241555087,0.490622926455 +6.964,-1.10192435373,0.491197137248 +6.965,-1.10143258083,0.491772897905 +6.966,-1.10094023062,0.492350214348 +6.967,-1.10044730152,0.492929092527 +6.968,-1.09995379199,0.493509538421 +6.969,-1.09945970043,0.494091558038 +6.97,-1.09896502527,0.494675157413 +6.971,-1.09846976493,0.495260342613 +6.972,-1.09797391781,0.495847119732 +6.973,-1.09747748231,0.496435494894 +6.974,-1.09698045684,0.497025474253 +6.975,-1.09648283978,0.497617063992 +6.976,-1.0959846295,0.498210270324 +6.977,-1.09548582441,0.498805099493 +6.978,-1.09498642285,0.499401557772 +6.979,-1.0944864232,0.499999651465 +6.98,-1.09398582381,0.500599386907 +6.981,-1.09348462304,0.501200770462 +6.982,-1.09298281923,0.501803808528 +6.983,-1.09248041072,0.50240850753 +6.984,-1.09197739585,0.503014873928 +6.985,-1.09147377293,0.503622914212 +6.986,-1.0909695403,0.504232634903 +6.987,-1.09046469626,0.504844042556 +6.988,-1.08995923911,0.505457143754 +6.989,-1.08945316717,0.506071945117 +6.99,-1.08894647872,0.506688453294 +6.991,-1.08843917204,0.507306674967 +6.992,-1.08793124542,0.507926616853 +6.993,-1.08742269714,0.508548285699 +6.994,-1.08691352545,0.509171688288 +6.995,-1.08640372862,0.509796831433 +6.996,-1.0858933049,0.510423721984 +6.997,-1.08538225253,0.511052366822 +6.998,-1.08487056976,0.511682772864 +6.999,-1.08435825481,0.512314947059 +7.,-1.08384530591,0.512948896392 +7.001,-1.08333172128,0.513584627883 +7.002,-1.08281749914,0.514222148583 +7.003,-1.08230263767,0.514861465584 +7.004,-1.08178713508,0.515502586007 +7.005,-1.08127098957,0.516145517013 +7.006,-1.0807541993,0.516790265795 +7.007,-1.08023676246,0.517436839585 +7.008,-1.07971867722,0.518085245648 +7.009,-1.07919994173,0.518735491287 +7.01,-1.07868055414,0.51938758384 +7.011,-1.07816051261,0.520041530685 +7.012,-1.07763981527,0.520697339232 +7.013,-1.07711846025,0.521355016931 +7.014,-1.07659644568,0.522014571268 +7.015,-1.07607376967,0.522676009769 +7.016,-1.07555043033,0.523339339993 +7.017,-1.07502642576,0.524004569542 +7.018,-1.07450175406,0.524671706053 +7.019,-1.0739764133,0.525340757201 +7.02,-1.07345040157,0.526011730703 +7.021,-1.07292371694,0.526684634311 +7.022,-1.07239635746,0.527359475818 +7.023,-1.0718683212,0.528036263056 +7.024,-1.07133960619,0.528715003896 +7.025,-1.07081021049,0.52939570625 +7.026,-1.07028013211,0.530078378069 +7.027,-1.06974936908,0.530763027344 +7.028,-1.06921791942,0.531449662107 +7.029,-1.06868578113,0.532138290431 +7.03,-1.06815295221,0.53282892043 +7.031,-1.06761943065,0.533521560257 +7.032,-1.06708521443,0.53421621811 +7.033,-1.06655030153,0.534912902226 +7.034,-1.06601468991,0.535611620886 +7.035,-1.06547837752,0.53631238241 +7.036,-1.06494136233,0.537015195165 +7.037,-1.06440364226,0.537720067556 +7.038,-1.06386521525,0.538427008035 +7.039,-1.06332607923,0.539136025095 +7.04,-1.0627862321,0.539847127272 +7.041,-1.06224567178,0.540560323147 +7.042,-1.06170439616,0.541275621346 +7.043,-1.06116240313,0.541993030536 +7.044,-1.06061969057,0.542712559432 +7.045,-1.06007625635,0.543434216792 +7.046,-1.05953209834,0.544158011419 +7.047,-1.05898721439,0.544883952163 +7.048,-1.05844160234,0.545612047917 +7.049,-1.05789526003,0.546342307622 +7.05,-1.05734818529,0.547074740265 +7.051,-1.05680037594,0.547809354878 +7.052,-1.05625182978,0.548546160542 +7.053,-1.05570254461,0.549285166383 +7.054,-1.05515251823,0.550026381575 +7.055,-1.05460174841,0.550769815341 +7.056,-1.05405023294,0.55151547695 +7.057,-1.05349796956,0.55226337572 +7.058,-1.05294495604,0.553013521018 +7.059,-1.05239119012,0.553765922258 +7.06,-1.05183666953,0.554520588906 +7.061,-1.051281392,0.555277530474 +7.062,-1.05072535524,0.556036756527 +7.063,-1.05016855696,0.556798276678 +7.064,-1.04961099486,0.557562100591 +7.065,-1.04905266662,0.55832823798 +7.066,-1.04849356993,0.55909669861 +7.067,-1.04793370243,0.559867492299 +7.068,-1.04737306181,0.560640628914 +7.069,-1.04681164569,0.561416118377 +7.07,-1.04624945172,0.562193970658 +7.071,-1.04568647752,0.562974195783 +7.072,-1.04512272072,0.56375680383 +7.073,-1.04455817891,0.564541804929 +7.074,-1.0439928497,0.565329209266 +7.075,-1.04342673068,0.566119027078 +7.076,-1.04285981941,0.566911268658 +7.077,-1.04229211346,0.567705944353 +7.078,-1.0417236104,0.568503064565 +7.079,-1.04115430776,0.569302639751 +7.08,-1.04058420308,0.570104680425 +7.081,-1.04001329388,0.570909197153 +7.082,-1.03944157768,0.571716200562 +7.083,-1.03886905198,0.572525701333 +7.084,-1.03829571427,0.573337710205 +7.085,-1.03772156203,0.574152237972 +7.086,-1.03714659273,0.574969295489 +7.087,-1.03657080384,0.575788893666 +7.088,-1.0359941928,0.576611043475 +7.089,-1.03541675704,0.577435755943 +7.09,-1.034838494,0.578263042158 +7.091,-1.03425940109,0.579092913268 +7.092,-1.03367947571,0.579925380479 +7.093,-1.03309871525,0.58076045506 +7.094,-1.0325171171,0.581598148338 +7.095,-1.03193467863,0.582438471703 +7.096,-1.03135139719,0.583281436604 +7.097,-1.03076727014,0.584127054555 +7.098,-1.0301822948,0.584975337131 +7.099,-1.02959646851,0.585826295967 +7.1,-1.02900978856,0.586679942765 +7.101,-1.02842225227,0.587536289288 +7.102,-1.02783385693,0.588395347363 +7.103,-1.0272445998,0.589257128882 +7.104,-1.02665447815,0.590121645801 +7.105,-1.02606348924,0.590988910141 +7.106,-1.02547163031,0.591858933989 +7.107,-1.02487889858,0.592731729498 +7.108,-1.02428529127,0.593607308886 +7.109,-1.02369080559,0.594485684438 +7.11,-1.02309543872,0.595366868508 +7.111,-1.02249918784,0.596250873515 +7.112,-1.02190205013,0.597137711948 +7.113,-1.02130402273,0.598027396363 +7.114,-1.0207051028,0.598919939385 +7.115,-1.02010528744,0.59981535371 +7.116,-1.01950457379,0.600713652102 +7.117,-1.01890295894,0.601614847396 +7.118,-1.01830043999,0.602518952496 +7.119,-1.01769701401,0.603425980381 +7.12,-1.01709267807,0.604335944097 +7.121,-1.01648742921,0.605248856764 +7.122,-1.01588126448,0.606164731577 +7.123,-1.0152741809,0.607083581799 +7.124,-1.01466617547,0.608005420771 +7.125,-1.01405724521,0.608930261905 +7.126,-1.01344738709,0.609858118688 +7.127,-1.01283659809,0.610789004683 +7.128,-1.01222487516,0.611722933528 +7.129,-1.01161221524,0.612659918935 +7.13,-1.01099861526,0.613599974696 +7.131,-1.01038407215,0.614543114676 +7.132,-1.00976858279,0.61548935282 +7.133,-1.00915214409,0.61643870315 +7.134,-1.00853475291,0.617391179766 +7.135,-1.00791640611,0.618346796847 +7.136,-1.00729710055,0.619305568652 +7.137,-1.00667683304,0.62026750952 +7.138,-1.0060556004,0.621232633869 +7.139,-1.00543339945,0.622200956199 +7.14,-1.00481022696,0.623172491093 +7.141,-1.0041860797,0.624147253213 +7.142,-1.00356095444,0.625125257306 +7.143,-1.00293484793,0.626106518201 +7.144,-1.00230775688,0.62709105081 +7.145,-1.00167967801,0.628078870131 +7.146,-1.00105060801,0.629069991247 +7.147,-1.00042054359,0.630064429323 +7.148,-0.999789481386,0.631062199614 +7.149,-0.999157418068,0.632063317459 +7.15,-0.99852435027,0.633067798285 +7.151,-0.997890274612,0.634075657606 +7.152,-0.997255187701,0.635086911024 +7.153,-0.996619086127,0.636101574232 +7.154,-0.995981966464,0.637119663009 +7.155,-0.995343825271,0.638141193227 +7.156,-0.99470465909,0.639166180847 +7.157,-0.994064464448,0.640194641921 +7.158,-0.993423237855,0.641226592594 +7.159,-0.992780975806,0.642262049102 +7.16,-0.992137674779,0.643301027776 +7.161,-0.991493331233,0.644343545037 +7.162,-0.990847941616,0.645389617405 +7.163,-0.990201502355,0.646439261492 +7.164,-0.989554009861,0.647492494005 +7.165,-0.988905460529,0.648549331749 +7.166,-0.988255850737,0.649609791626 +7.167,-0.987605176847,0.650673890633 +7.168,-0.986953435201,0.651741645867 +7.169,-0.986300622126,0.652813074524 +7.17,-0.985646733932,0.653888193899 +7.171,-0.984991766911,0.654967021388 +7.172,-0.984335717336,0.656049574485 +7.173,-0.983678581466,0.657135870788 +7.174,-0.983020355538,0.658225927998 +7.175,-0.982361035774,0.659319763916 +7.176,-0.981700618377,0.660417396448 +7.177,-0.981039099534,0.661518843605 +7.178,-0.98037647541,0.662624123501 +7.179,-0.979712742156,0.663733254359 +7.18,-0.979047895901,0.664846254505 +7.181,-0.978381932759,0.665963142374 +7.182,-0.977714848822,0.667083936508 +7.183,-0.977046640167,0.668208655558 +7.184,-0.976377302849,0.669337318284 +7.185,-0.975706832905,0.670469943557 +7.186,-0.975035226355,0.671606550357 +7.187,-0.974362479197,0.672747157779 +7.188,-0.973688587412,0.673891785026 +7.189,-0.97301354696,0.675040451417 +7.19,-0.972337353784,0.676193176385 +7.191,-0.971660003805,0.677349979475 +7.192,-0.970981492924,0.678510880351 +7.193,-0.970301817025,0.679675898791 +7.194,-0.969620971971,0.68084505469 +7.195,-0.968938953603,0.682018368062 +7.196,-0.968255757744,0.68319585904 +7.197,-0.967571380196,0.684377547874 +7.198,-0.966885816741,0.685563454938 +7.199,-0.96619906314,0.686753600723 +7.2,-0.965511115134,0.687948005846 +7.201,-0.964821968443,0.689146691044 +7.202,-0.964131618766,0.690349677179 +7.203,-0.963440061781,0.691556985236 +7.204,-0.962747293144,0.692768636329 +7.205,-0.962053308493,0.693984651694 +7.206,-0.96135810344,0.695205052696 +7.207,-0.960661673579,0.696429860829 +7.208,-0.959964014482,0.697659097715 +7.209,-0.959265121696,0.698892785106 +7.21,-0.958564990752,0.700130944883 +7.211,-0.957863617153,0.701373599061 +7.212,-0.957160996383,0.702620769788 +7.213,-0.956457123903,0.703872479342 +7.214,-0.955751995153,0.70512875014 +7.215,-0.955045605549,0.70638960473 +7.216,-0.954337950483,0.7076550658 +7.217,-0.953629025327,0.708925156172 +7.218,-0.952918825428,0.710199898809 +7.219,-0.952207346111,0.711479316812 +7.22,-0.951494582677,0.712763433422 +7.221,-0.950780530405,0.714052272021 +7.222,-0.950065184549,0.715345856133 +7.223,-0.94934854034,0.716644209427 +7.224,-0.948630592984,0.717947355714 +7.225,-0.947911337665,0.719255318952 +7.226,-0.947190769542,0.720568123243 +7.227,-0.946468883749,0.721885792838 +7.228,-0.945745675397,0.723208352136 +7.229,-0.945021139571,0.724535825684 +7.23,-0.944295271333,0.725868238182 +7.231,-0.943568065719,0.72720561448 +7.232,-0.942839517739,0.728547979579 +7.233,-0.94210962238,0.729895358635 +7.234,-0.941378374604,0.731247776961 +7.235,-0.940645769343,0.732605260021 +7.236,-0.93991180151,0.733967833441 +7.237,-0.939176465987,0.735335523 +7.238,-0.938439757632,0.736708354641 +7.239,-0.937701671278,0.738086354464 +7.24,-0.936962201729,0.739469548731 +7.241,-0.936221343765,0.740857963868 +7.242,-0.935479092139,0.742251626463 +7.243,-0.934735441576,0.74365056327 +7.244,-0.933990386774,0.745054801209 +7.245,-0.933243922407,0.746464367367 +7.246,-0.932496043118,0.747879289 +7.247,-0.931746743524,0.749299593534 +7.248,-0.930996018216,0.750725308564 +7.249,-0.930243861754,0.752156461858 +7.25,-0.929490268673,0.75359308136 +7.251,-0.928735233478,0.755035195185 +7.252,-0.927978750646,0.756482831626 +7.253,-0.927220814627,0.757936019153 +7.254,-0.92646141984,0.759394786413 +7.255,-0.925700560678,0.760859162235 +7.256,-0.924938231502,0.762329175627 +7.257,-0.924174426647,0.763804855781 +7.258,-0.923409140415,0.765286232072 +7.259,-0.922642367081,0.766773334059 +7.26,-0.921874100889,0.768266191489 +7.261,-0.921104336055,0.769764834297 +7.262,-0.920333066762,0.771269292604 +7.263,-0.919560287165,0.772779596726 +7.264,-0.918785991388,0.774295777166 +7.265,-0.918010173524,0.775817864625 +7.266,-0.917232827634,0.777345889994 +7.267,-0.916453947749,0.778879884364 +7.268,-0.91567352787,0.780419879022 +7.269,-0.914891561965,0.781965905452 +7.27,-0.914108043969,0.783517995343 +7.271,-0.913322967789,0.78507618058 +7.272,-0.912536327296,0.786640493257 +7.273,-0.91174811633,0.788210965668 +7.274,-0.9109583287,0.789787630317 +7.275,-0.91016695818,0.791370519915 +7.276,-0.909373998512,0.79295966738 +7.277,-0.908579443407,0.794555105844 +7.278,-0.907783286538,0.796156868649 +7.279,-0.906985521549,0.797764989353 +7.28,-0.906186142047,0.799379501729 +7.281,-0.905385141607,0.801000439767 +7.282,-0.904582513769,0.802627837675 +7.283,-0.903778252039,0.804261729883 +7.284,-0.902972349888,0.805902151042 +7.285,-0.902164800752,0.807549136026 +7.286,-0.901355598032,0.809202719937 +7.287,-0.900544735094,0.810862938102 +7.288,-0.899732205268,0.812529826075 +7.289,-0.898918001849,0.814203419645 +7.29,-0.898102118094,0.815883754829 +7.291,-0.897284547226,0.817570867879 +7.292,-0.896465282431,0.819264795284 +7.293,-0.895644316857,0.820965573769 +7.294,-0.894821643617,0.822673240297 +7.295,-0.893997255785,0.824387832074 +7.296,-0.893171146398,0.826109386549 +7.297,-0.892343308457,0.827837941412 +7.298,-0.891513734922,0.829573534603 +7.299,-0.890682418718,0.831316204308 +7.3,-0.889849352729,0.833065988965 +7.301,-0.889014529801,0.834822927261 +7.302,-0.888177942743,0.836587058138 +7.303,-0.887339584322,0.838358420796 +7.304,-0.886499447268,0.840137054689 +7.305,-0.885657524268,0.841922999532 +7.306,-0.884813807973,0.843716295302 +7.307,-0.883968290991,0.845516982238 +7.308,-0.88312096589,0.847325100847 +7.309,-0.882271825198,0.8491406919 +7.31,-0.881420861402,0.850963796439 +7.311,-0.880568066946,0.852794455779 +7.312,-0.879713434234,0.854632711506 +7.313,-0.878856955629,0.856478605482 +7.314,-0.877998623449,0.858332179849 +7.315,-0.877138429972,0.860193477025 +7.316,-0.876276367432,0.862062539712 +7.317,-0.875412428021,0.863939410896 +7.318,-0.874546603887,0.86582413385 +7.319,-0.873678887135,0.867716752132 +7.32,-0.872809269826,0.869617309593 +7.321,-0.871937743975,0.871525850378 +7.322,-0.871064301556,0.873442418923 +7.323,-0.870188934496,0.875367059965 +7.324,-0.869311634678,0.877299818537 +7.325,-0.868432393938,0.879240739977 +7.326,-0.867551204068,0.881189869924 +7.327,-0.866668056814,0.883147254326 +7.328,-0.865782943874,0.885112939437 +7.329,-0.864895856902,0.887086971823 +7.33,-0.864006787504,0.889069398365 +7.331,-0.863115727238,0.891060266258 +7.332,-0.862222667615,0.893059623014 +7.333,-0.861327600098,0.895067516469 +7.334,-0.860430516104,0.897083994779 +7.335,-0.859531406997,0.899109106426 +7.336,-0.858630264097,0.901142900222 +7.337,-0.857727078672,0.903185425308 +7.338,-0.85682184194,0.905236731157 +7.339,-0.855914545073,0.90729686758 +7.34,-0.855005179188,0.909365884725 +7.341,-0.854093735355,0.911443833079 +7.342,-0.853180204592,0.913530763477 +7.343,-0.852264577864,0.915626727094 +7.344,-0.851346846089,0.91773177546 +7.345,-0.850427000129,0.919845960451 +7.346,-0.849505030794,0.921969334301 +7.347,-0.848580928845,0.924101949598 +7.348,-0.847654684985,0.926243859292 +7.349,-0.846726289869,0.928395116694 +7.35,-0.845795734093,0.93055577548 +7.351,-0.844863008203,0.932725889694 +7.352,-0.84392810269,0.934905513751 +7.353,-0.842991007987,0.937094702441 +7.354,-0.842051714476,0.93929351093 +7.355,-0.841110212482,0.941501994761 +7.356,-0.840166492272,0.943720209862 +7.357,-0.839220544059,0.945948212547 +7.358,-0.838272358,0.948186059516 +7.359,-0.837321924192,0.950433807862 +7.36,-0.836369232677,0.952691515072 +7.361,-0.835414273438,0.954959239031 +7.362,-0.8344570364,0.957237038024 +7.363,-0.833497511429,0.95952497074 +7.364,-0.832535688333,0.961823096275 +7.365,-0.831571556859,0.964131474134 +7.366,-0.830605106694,0.966450164237 +7.367,-0.829636327467,0.96877922692 +7.368,-0.828665208744,0.971118722937 +7.369,-0.827691740031,0.973468713466 +7.37,-0.826715910771,0.975829260113 +7.371,-0.825737710346,0.978200424911 +7.372,-0.824757128076,0.980582270328 +7.373,-0.823774153216,0.982974859266 +7.374,-0.822788774961,0.985378255068 +7.375,-0.82180098244,0.987792521522 +7.376,-0.820810764717,0.99021772286 +7.377,-0.819818110793,0.992653923765 +7.378,-0.818823009604,0.995101189373 +7.379,-0.817825450018,0.99755958528 +7.38,-0.816825420841,1.00002917754 +7.381,-0.815822910808,1.00251003267 +7.382,-0.814817908591,1.00500221766 +7.383,-0.813810402791,1.00750579997 +7.384,-0.812800381943,1.01002084753 +7.385,-0.811787834514,1.01254742876 +7.386,-0.810772748902,1.01508561255 +7.387,-0.809755113434,1.01763546829 +7.388,-0.808734916368,1.02019706585 +7.389,-0.807712145892,1.02277047559 +7.39,-0.806686790124,1.0253557684 +7.391,-0.805658837108,1.02795301563 +7.392,-0.804628274819,1.03056228915 +7.393,-0.803595091158,1.03318366137 +7.394,-0.802559273952,1.03581720517 +7.395,-0.801520810958,1.03846299397 +7.396,-0.800479689857,1.04112110171 +7.397,-0.799435898254,1.04379160286 +7.398,-0.798389423681,1.04647457242 +7.399,-0.797340253596,1.04917008592 +7.4,-0.796288375376,1.05187821943 +7.401,-0.795233776327,1.05459904956 +7.402,-0.794176443673,1.05733265348 +7.403,-0.793116364564,1.0600791089 +7.404,-0.79205352607,1.06283849409 +7.405,-0.790987915182,1.06561088788 +7.406,-0.789919518812,1.06839636967 +7.407,-0.788848323793,1.07119501942 +7.408,-0.787774316875,1.07400691767 +7.409,-0.78669748473,1.07683214554 +7.41,-0.785617813945,1.07967078473 +7.411,-0.784535291028,1.08252291753 +7.412,-0.783449902401,1.08538862682 +7.413,-0.782361634405,1.08826799608 +7.414,-0.781270473295,1.09116110939 +7.415,-0.780176405244,1.09406805144 +7.416,-0.779079416336,1.09698890753 +7.417,-0.777979492573,1.09992376356 +7.418,-0.776876619867,1.10287270608 +7.419,-0.775770784044,1.10583582226 +7.42,-0.774661970845,1.10881319987 +7.421,-0.773550165917,1.11180492735 +7.422,-0.772435354823,1.11481109377 +7.423,-0.771317523035,1.11783178885 +7.424,-0.770196655932,1.12086710296 +7.425,-0.769072738805,1.12391712711 +7.426,-0.767945756852,1.126981953 +7.427,-0.766815695179,1.13006167297 +7.428,-0.765682538798,1.13315638006 +7.429,-0.764546272631,1.13626616796 +7.43,-0.763406881499,1.13939113106 +7.431,-0.762264350135,1.14253136443 +7.432,-0.761118663171,1.14568696384 +7.433,-0.759969805145,1.14885802575 +7.434,-0.758817760498,1.15204464734 +7.435,-0.757662513572,1.15524692649 +7.436,-0.75650404861,1.1584649618 +7.437,-0.755342349757,1.16169885258 +7.438,-0.754177401058,1.16494869888 +7.439,-0.753009186457,1.16821460147 +7.44,-0.751837689795,1.17149666189 +7.441,-0.750662894813,1.17479498239 +7.442,-0.749484785147,1.17810966599 +7.443,-0.74830334433,1.18144081645 +7.444,-0.747118555792,1.18478853832 +7.445,-0.745930402855,1.18815293688 +7.446,-0.744738868737,1.19153411822 +7.447,-0.743543936548,1.1949321892 +7.448,-0.74234558929,1.19834725746 +7.449,-0.741143809859,1.20177943143 +7.45,-0.739938581038,1.20522882036 +7.451,-0.738729885504,1.20869553429 +7.452,-0.73751770582,1.21217968407 +7.453,-0.736302024439,1.21568138137 +7.454,-0.7350828237,1.2192007387 +7.455,-0.73386008583,1.22273786939 +7.456,-0.732633792943,1.2262928876 +7.457,-0.731403927035,1.22986590835 +7.458,-0.730170469987,1.2334570475 +7.459,-0.728933403565,1.23706642177 +7.46,-0.727692709417,1.24069414875 +7.461,-0.72644836907,1.24434034691 +7.462,-0.725200363934,1.24800513557 +7.463,-0.723948675299,1.25168863497 +7.464,-0.722693284333,1.25539096621 +7.465,-0.721434172082,1.25911225131 +7.466,-0.720171319468,1.26285261319 +7.467,-0.718904707293,1.26661217569 +7.468,-0.717634316229,1.27039106356 +7.469,-0.716360126827,1.27418940248 +7.47,-0.715082119508,1.27800731907 +7.471,-0.713800274567,1.2818449409 +7.472,-0.71251457217,1.28570239647 +7.473,-0.711224992355,1.28957981524 +7.474,-0.709931515027,1.29347732766 +7.475,-0.708634119962,1.29739506512 +7.476,-0.707332786802,1.30133316002 +7.477,-0.706027495056,1.30529174571 +7.478,-0.7047182241,1.30927095657 +7.479,-0.703404953172,1.31327092796 +7.48,-0.702087661376,1.31729179627 +7.481,-0.700766327677,1.32133369889 +7.482,-0.699440930903,1.32539677425 +7.483,-0.698111449741,1.3294811618 +7.484,-0.696777862739,1.33358700205 +7.485,-0.695440148302,1.33771443654 +7.486,-0.694098284694,1.34186360789 +7.487,-0.692752250034,1.34603465977 +7.488,-0.691402022298,1.35022773692 +7.489,-0.690047579312,1.35444298519 +7.49,-0.688688898761,1.35868055149 +7.491,-0.687325958177,1.36294058386 +7.492,-0.685958734946,1.36722323141 +7.493,-0.684587206301,1.3715286444 +7.494,-0.683211349327,1.37585697421 +7.495,-0.681831140954,1.38020837333 +7.496,-0.680446557958,1.38458299542 +7.497,-0.679057576963,1.38898099527 +7.498,-0.677664174434,1.39340252885 +7.499,-0.676266326681,1.39784775327 +7.5,-0.674864009854,1.40231682685 +7.501,-0.673457199945,1.40680990908 +7.502,-0.672045872784,1.41132716064 +7.503,-0.670630004041,1.41586874341 +7.504,-0.66920956922,1.42043482051 +7.505,-0.667784543664,1.42502555625 +7.506,-0.666354902548,1.42964111619 +7.507,-0.664920620881,1.43428166713 +7.508,-0.663481673504,1.4389473771 +7.509,-0.662038035088,1.44363841542 +7.51,-0.660589680136,1.44835495266 +7.511,-0.659136582975,1.45309716066 +7.512,-0.657678717762,1.45786521257 +7.513,-0.65621605848,1.46265928281 +7.514,-0.654748578932,1.46747954712 +7.515,-0.65327625275,1.47232618257 +7.516,-0.651799053382,1.47719936752 +7.517,-0.650316954101,1.4820992817 +7.518,-0.648829927994,1.48702610616 +7.519,-0.647337947971,1.49198002332 +7.52,-0.645840986754,1.49696121695 +7.521,-0.644339016882,1.50196987222 +7.522,-0.642832010706,1.50700617564 +7.523,-0.641319940391,1.51207031516 +7.524,-0.639802777911,1.51716248011 +7.525,-0.63828049505,1.52228286123 +7.526,-0.636753063399,1.52743165069 +7.527,-0.635220454357,1.5326090421 +7.528,-0.633682639127,1.53781523051 +7.529,-0.632139588714,1.54305041243 +7.53,-0.630591273928,1.54831478581 +7.531,-0.629037665378,1.5536085501 +7.532,-0.627478733472,1.55893190623 +7.533,-0.625914448415,1.56428505662 +7.534,-0.62434478021,1.5696682052 +7.535,-0.622769698653,1.5750815574 +7.536,-0.621189173333,1.58052532022 +7.537,-0.61960317363,1.58599970213 +7.538,-0.618011668717,1.59150491321 +7.539,-0.616414627552,1.59704116507 +7.54,-0.614812018881,1.60260867087 +7.541,-0.613203811236,1.60820764539 +7.542,-0.611589972931,1.61383830497 +7.543,-0.609970472063,1.61950086755 +7.544,-0.608345276511,1.62519555269 +7.545,-0.606714353929,1.63092258158 +7.546,-0.605077671752,1.63668217701 +7.547,-0.603435197189,1.64247456345 +7.548,-0.601786897222,1.648299967 +7.549,-0.600132738606,1.65415861542 +7.55,-0.598472687868,1.66005073815 +7.551,-0.596806711302,1.66597656634 +7.552,-0.595134774969,1.67193633278 +7.553,-0.593456844697,1.67793027203 +7.554,-0.591772886077,1.68395862031 +7.555,-0.590082864461,1.6900216156 +7.556,-0.588386744963,1.69611949761 +7.557,-0.586684492456,1.7022525078 +7.558,-0.584976071566,1.70842088938 +7.559,-0.583261446679,1.71462488735 +7.56,-0.58154058193,1.72086474846 +7.561,-0.579813441209,1.72714072129 +7.562,-0.578079988153,1.73345305618 +7.563,-0.576340186148,1.73980200531 +7.564,-0.574593998325,1.74618782267 +7.565,-0.572841387561,1.75261076409 +7.566,-0.571082316474,1.75907108724 +7.567,-0.569316747422,1.76556905164 +7.568,-0.567544642503,1.77210491868 +7.569,-0.565765963552,1.77867895161 +7.57,-0.563980672136,1.7852914156 +7.571,-0.562188729558,1.79194257767 +7.572,-0.560390096852,1.79863270677 +7.573,-0.558584734778,1.80536207376 +7.574,-0.556772603826,1.81213095142 +7.575,-0.554953664212,1.81893961447 +7.576,-0.553127875872,1.82578833958 +7.577,-0.551295198467,1.83267740536 +7.578,-0.549455591375,1.83960709239 +7.579,-0.547609013691,1.84657768323 +7.58,-0.545755424229,1.85358946241 +7.581,-0.543894781513,1.86064271647 +7.582,-0.542027043779,1.86773773392 +7.583,-0.540152168973,1.87487480532 +7.584,-0.53827011475,1.88205422323 +7.585,-0.536380838468,1.88927628223 +7.586,-0.534484297189,1.89654127894 +7.587,-0.532580447677,1.90384951205 +7.588,-0.530669246395,1.91120128228 +7.589,-0.528750649502,1.91859689241 +7.59,-0.526824612855,1.92603664732 +7.591,-0.524891092001,1.93352085393 +7.592,-0.52295004218,1.94104982127 +7.593,-0.521001418319,1.94862386047 +7.594,-0.519045175034,1.95624328474 +7.595,-0.517081266625,1.96390840943 +7.596,-0.515109647073,1.97161955197 +7.597,-0.513130270041,1.97937703194 +7.598,-0.51114308887,1.98718117104 +7.599,-0.509148056577,1.99503229311 +7.6,-0.507145125853,2.00293072414 +7.601,-0.505134249061,2.01087679224 +7.602,-0.503115378233,2.01887082771 +7.603,-0.50108846507,2.02691316299 +7.604,-0.499053460937,2.03500413269 +7.605,-0.497010316864,2.04314407359 +7.606,-0.494958983539,2.05133332464 +7.607,-0.492899411312,2.05957222697 +7.608,-0.490831550188,2.06786112391 +7.609,-0.488755349827,2.07620036095 +7.61,-0.486670759541,2.08459028579 +7.611,-0.484577728293,2.09303124832 +7.612,-0.482476204692,2.10152360061 +7.613,-0.480366136995,2.11006769695 +7.614,-0.478247473102,2.11866389381 +7.615,-0.476120160552,2.12731254989 +7.616,-0.473984146526,2.13601402606 +7.617,-0.47183937784,2.14476868541 +7.618,-0.469685800947,2.15357689323 +7.619,-0.46752336193,2.16243901702 +7.62,-0.465352006504,2.17135542647 +7.621,-0.46317168001,2.18032649349 +7.622,-0.460982327418,2.18935259217 +7.623,-0.458783893319,2.19843409881 +7.624,-0.456576321927,2.20757139191 +7.625,-0.454359557075,2.21676485214 +7.626,-0.452133542213,2.22601486238 +7.627,-0.449898220405,2.23532180769 +7.628,-0.44765353433,2.24468607529 +7.629,-0.445399426275,2.25410805461 +7.63,-0.443135838138,2.26358813722 +7.631,-0.440862711421,2.27312671685 +7.632,-0.438579987232,2.28272418939 +7.633,-0.436287606279,2.29238095289 +7.634,-0.433985508871,2.3020974075 +7.635,-0.431673634916,2.31187395553 +7.636,-0.429351923914,2.32171100139 +7.637,-0.427020314963,2.3316089516 +7.638,-0.424678746748,2.34156821477 +7.639,-0.422327157546,2.35158920159 +7.64,-0.419965485222,2.36167232483 +7.641,-0.417593667222,2.37181799928 +7.642,-0.41521164058,2.38202664181 +7.643,-0.412819341909,2.39229867128 +7.644,-0.410416707401,2.40263450857 +7.645,-0.408003672824,2.41303457653 +7.646,-0.405580173524,2.42349929998 +7.647,-0.403146144418,2.43402910571 +7.648,-0.400701519996,2.44462442241 +7.649,-0.398246234315,2.45528568068 +7.65,-0.395780221002,2.46601331299 +7.651,-0.393303413249,2.4768077537 +7.652,-0.39081574381,2.48766943896 +7.653,-0.388317145003,2.49859880674 +7.654,-0.385807548706,2.50959629678 +7.655,-0.383286886356,2.52066235058 +7.656,-0.380755088944,2.53179741135 +7.657,-0.37821208702,2.54300192396 +7.658,-0.375657810685,2.55427633497 +7.659,-0.373092189593,2.56562109251 +7.66,-0.370515152946,2.57703664634 +7.661,-0.367926629499,2.58852344772 +7.662,-0.365326547549,2.60008194943 +7.663,-0.362714834944,2.61171260572 +7.664,-0.360091419071,2.62341587224 +7.665,-0.357456226865,2.63519220603 +7.666,-0.3548091848,2.64704206548 +7.667,-0.35215021889,2.65896591021 +7.668,-0.349479254688,2.67096420114 +7.669,-0.346796217288,2.68303740033 +7.67,-0.344101031317,2.69518597099 +7.671,-0.34139362094,2.70741037739 +7.672,-0.338673909855,2.71971108486 +7.673,-0.335941821295,2.73208855965 +7.674,-0.333197278026,2.74454326894 +7.675,-0.330440202346,2.75707568075 +7.676,-0.327670516082,2.76968626386 +7.677,-0.324888140594,2.78237548778 +7.678,-0.322092996771,2.79514382264 +7.679,-0.319285005032,2.80799173917 +7.68,-0.316464085324,2.82091970856 +7.681,-0.313630157121,2.83392820245 +7.682,-0.310783139428,2.84701769282 +7.683,-0.307922950776,2.86018865189 +7.684,-0.305049509224,2.87344155209 +7.685,-0.302162732358,2.88677686593 +7.686,-0.299262537292,2.90019506591 +7.687,-0.296348840668,2.91369662447 +7.688,-0.293421558654,2.92728201385 +7.689,-0.290480606948,2.94095170603 +7.69,-0.287525900775,2.95470617259 +7.691,-0.284557354891,2.96854588467 +7.692,-0.281574883578,2.98247131277 +7.693,-0.278578400651,2.99648292675 +7.694,-0.275567819456,3.01058119564 +7.695,-0.272543052868,3.02476658753 +7.696,-0.269504013299,3.03903956951 +7.697,-0.266450612691,3.05340060749 +7.698,-0.263382762525,3.06785016607 +7.699,-0.260300373817,3.08238870848 +7.7,-0.25720335712,3.09701669636 +7.701,-0.254091622531,3.11173458969 +7.702,-0.250965079684,3.12654284662 +7.703,-0.247823637761,3.14144192333 +7.704,-0.244667205487,3.15643227387 +7.705,-0.241495691137,3.17151435005 +7.706,-0.238309002535,3.18668860123 +7.707,-0.235107047061,3.2019554742 +7.708,-0.231889731648,3.21731541299 +7.709,-0.228656962789,3.23276885873 +7.71,-0.22540864654,3.24831624945 +7.711,-0.22214468852,3.2639580199 +7.712,-0.218864993919,3.2796946014 +7.713,-0.215569467497,3.29552642162 +7.714,-0.212258013593,3.31145390441 +7.715,-0.208930536123,3.3274774696 +7.716,-0.20558693859,3.34359753277 +7.717,-0.202227124085,3.35981450508 +7.718,-0.198850995292,3.37612879306 +7.719,-0.195458454494,3.39254079835 +7.72,-0.192049403576,3.40905091752 +7.721,-0.188623744035,3.42565954184 +7.722,-0.185181376977,3.44236705702 +7.723,-0.181722203135,3.45917384297 +7.724,-0.178246122861,3.47608027361 +7.725,-0.174753036144,3.49308671654 +7.726,-0.171242842612,3.51019353286 +7.727,-0.167715441535,3.52740107684 +7.728,-0.164170731839,3.5447096957 +7.729,-0.16060861211,3.56211972932 +7.73,-0.1570289806,3.57963150993 +7.731,-0.153431735238,3.59724536189 +7.732,-0.149816773636,3.61496160132 +7.733,-0.146183993101,3.63278053585 +7.734,-0.142533290636,3.65070246428 +7.735,-0.13886456296,3.66872767631 +7.736,-0.135177706508,3.68685645214 +7.737,-0.131472617446,3.70508906224 +7.738,-0.127749191679,3.72342576694 +7.739,-0.124007324863,3.7418668161 +7.74,-0.120246912414,3.7604124488 +7.741,-0.116467849521,3.77906289292 +7.742,-0.112670031156,3.79781836483 +7.743,-0.108853352087,3.81667906898 +7.744,-0.10501770689,3.83564519753 +7.745,-0.10116298996,3.85471692996 +7.746,-0.0972890955269,3.87389443269 +7.747,-0.0933959176683,3.89317785864 +7.748,-0.0894833503215,3.91256734684 +7.749,-0.0855512872994,3.93206302201 +7.75,-0.0815996223053,3.95166499411 +7.751,-0.0776282489474,3.97137335793 +7.752,-0.0736370607548,3.99118819261 +7.753,-0.0696259511936,4.0111095612 +7.754,-0.0655948136834,4.03113751022 +7.755,-0.0615435416143,4.05127206912 +7.756,-0.0574720283644,4.07151324986 +7.757,-0.053380167318,4.0918610464 +7.758,-0.0492678518838,4.1123154342 +7.759,-0.0451349755141,4.13287636967 +7.76,-0.0409814317244,4.15354378971 +7.761,-0.0368071141132,4.17431761117 +7.762,-0.032611916383,4.19519773027 +7.763,-0.0283957323609,4.2161840221 +7.764,-0.0241584560209,4.23727634002 +7.765,-0.0198999815057,4.25847451515 +7.766,-0.01562020315,4.27977835573 +7.767,-0.0113190155034,4.30118764658 +7.768,-0.0069963133549,4.32270214849 +7.769,-0.00265199175731,4.3443215976 +7.77,0.0017140539475,4.36604570481 +7.771,0.00610192810264,4.38787415514 +7.772,0.0105117347097,4.40980660711 +7.773,0.0149435774018,4.43184269207 +7.774,0.0193975594154,4.45398201356 +7.775,0.0238737835621,4.47622414668 +7.776,0.0283723521994,4.49856863734 +7.777,0.032893367201,4.52101500165 +7.778,0.0374369299262,4.5435627252 +7.779,0.0420031411886,4.56621126234 +7.78,0.0465921012241,4.5889600355 +7.781,0.0512039096585,4.61180843446 +7.782,0.0558386654741,4.63475581559 +7.783,0.0604964669753,4.65780150117 +7.784,0.0651774117539,4.68094477857 +7.785,0.0698815966534,4.70418489956 +7.786,0.0746091177329,4.7275210795 +7.787,0.0793600702295,4.75095249656 +7.788,0.0841345485205,4.77447829099 +7.789,0.0889326460847,4.79809756425 +7.79,0.093754455463,4.82180937829 +7.791,0.0986000682177,4.84561275466 +7.792,0.103469574891,4.86950667378 +7.793,0.108363064965,4.89349007402 +7.794,0.113280626816,4.91756185098 +7.795,0.118222347673,4.94172085653 +7.796,0.123188313571,4.96596589808 +7.797,0.128178609309,4.99029573764 +7.798,0.1331933184,5.01470909101 +7.799,0.138232523027,5.03920462692 +7.8,0.143296303993,5.06378096611 +7.801,0.148384740673,5.08843668053 +7.802,0.153497910966,5.11317029241 +7.803,0.158635891239,5.13798027337 +7.804,0.163798756283,5.16286504359 +7.805,0.168986579254,5.18782297087 +7.806,0.174199431623,5.21285236974 +7.807,0.179437383124,5.23795150061 +7.808,0.184700501693,5.26311856883 +7.809,0.189988853416,5.28835172379 +7.81,0.195302502475,5.31364905807 +7.811,0.200641511081,5.33900860648 +7.812,0.206005939426,5.36442834523 +7.813,0.211395845617,5.38990619097 +7.814,0.216811285617,5.41543999996 +7.815,0.222252313184,5.44102756712 +7.816,0.22771897981,5.46666662518 +7.817,0.233211334653,5.49235484382 +7.818,0.238729424482,5.51808982872 +7.819,0.244273293603,5.54386912079 +7.82,0.249842983798,5.56969019522 +7.821,0.255438534259,5.59555046067 +7.822,0.261059981517,5.62144725842 +7.823,0.266707359379,5.64737786154 +7.824,0.272380698853,5.67333947405 +7.825,0.278080028083,5.69932923012 +7.826,0.283805372276,5.72534419328 +7.827,0.289556753632,5.75138135563 +7.828,0.295334191269,5.77743763705 +7.829,0.301137701153,5.8035098845 +7.83,0.306967296025,5.82959487123 +7.831,0.312822985321,5.85568929613 +7.832,0.318704775104,5.88178978296 +7.833,0.324612667983,5.90789287976 +7.834,0.330546663042,5.93399505816 +7.835,0.336506755754,5.96009271276 +7.836,0.342492937915,5.98618216053 +7.837,0.348505197555,6.01225964028 +7.838,0.354543518867,6.03832131208 +7.839,0.360607882124,6.06436325676 +7.84,0.366698263599,6.09038147546 +7.841,0.372814635489,6.11637188917 +7.842,0.378956965827,6.14233033833 +7.843,0.385125218409,6.16825258245 +7.844,0.391319352709,6.1941342998 +7.845,0.397539323796,6.21997108714 +7.846,0.403785082256,6.24575845941 +7.847,0.410056574105,6.27149184961 +7.848,0.416353740714,6.29716660859 +7.849,0.422676518719,6.32277800496 +7.85,0.429024839944,6.34832122505 +7.851,0.435398631317,6.37379137288 +7.852,0.441797814787,6.39918347024 +7.853,0.448222307244,6.42449245676 +7.854,0.454672020434,6.44971319009 +7.855,0.46114686088,6.47484044614 +7.856,0.467646729799,6.49986891933 +7.857,0.474171523022,6.52479322295 +7.858,0.480721130912,6.54960788959 +7.859,0.487295438283,6.57430737159 +7.86,0.493894324325,6.5988860416 +7.861,0.500517662518,6.62333819321 +7.862,0.50716532056,6.64765804163 +7.863,0.513837160284,6.67183972445 +7.864,0.520533037587,6.69587730249 +7.865,0.527252802348,6.71976476074 +7.866,0.533996298357,6.74349600933 +7.867,0.540763363242,6.76706488463 +7.868,0.547553828392,6.79046515044 +7.869,0.554367518891,6.8136904992 +7.87,0.561204253445,6.83673455336 +7.871,0.568063844311,6.85959086682 +7.872,0.574946097238,6.88225292642 +7.873,0.581850811391,6.90471415357 +7.874,0.588777779297,6.92696790599 +7.875,0.595726786777,6.94900747943 +7.876,0.602697612886,6.97082610967 +7.877,0.609690029861,6.99241697442 +7.878,0.616703803056,7.01377319551 +7.879,0.623738690897,7.03488784101 +7.88,0.630794444825,7.05575392755 +7.881,0.637870809248,7.07636442274 +7.882,0.644967521495,7.09671224766 +7.883,0.652084311775,7.11679027944 +7.884,0.659220903129,7.136591354 +7.885,0.666377011398,7.15610826888 +7.886,0.673552345184,7.17533378608 +7.887,0.680746605819,7.19426063519 +7.888,0.687959487335,7.21288151644 +7.889,0.695190676439,7.23118910396 +7.89,0.702439852488,7.24917604912 +7.891,0.709706687472,7.26683498399 +7.892,0.716990845997,7.28415852484 +7.893,0.724291985273,7.30113927584 +7.894,0.731609755106,7.31776983281 +7.895,0.738943797893,7.33404278702 +7.896,0.746293748622,7.34995072921 +7.897,0.753659234876,7.36548625361 +7.898,0.761039876838,7.38064196211 +7.899,0.768435287306,7.39541046846 +7.9,0.775845071709,7.40978440268 +7.901,0.783268828124,7.42375641544 +7.902,0.790706147307,7.43731918258 +7.903,0.798156612717,7.45046540973 +7.904,0.805619800554,7.46318783702 +7.905,0.813095279798,7.47547924379 +7.906,0.820582612251,7.48733245349 +7.907,0.82808135259,7.4987403386 +7.908,0.835591048415,7.50969582556 +7.909,0.843111240315,7.5201918999 +7.91,0.850641461926,7.53022161133 +7.911,0.858181240005,7.53977807888 +7.912,0.865730094502,7.5488544962 +7.913,0.873287538638,7.55744413677 +7.914,0.880853078998,7.56554035929 +7.915,0.888426215611,7.57313661298 +7.916,0.896006442054,7.580226443 +7.917,0.903593245549,7.58680349587 +7.918,0.911186107074,7.59286152493 +7.919,0.91878450147,7.59839439578 +7.92,0.926387897562,7.60339609175 +7.921,0.933995758281,7.60786071938 +7.922,0.941607540795,7.61178251389 +7.923,0.94922269664,7.61515584466 +7.924,0.956840671861,7.61797522065 +7.925,0.964460907156,7.62023529584 +7.926,0.972082838031,7.62193087461 +7.927,0.979705894948,7.62305691712 +7.928,0.987329503493,7.6236085446 +7.929,0.994953084537,7.62358104462 +7.93,1.00257605441,7.62296987631 +7.931,1.01019782509,7.62177067547 +7.932,1.01781780435,7.61997925965 +7.933,1.02543539598,7.61759163312 +7.934,1.03304999997,7.61460399177 +7.935,1.0406610127,7.61101272789 +7.936,1.04826782714,7.60681443491 +7.937,1.05586983305,7.6020059119 +7.938,1.06346641722,7.59658416809 +7.939,1.07105696364,7.5905464272 +7.94,1.07864085378,7.58389013158 +7.941,1.08621746672,7.57661294634 +7.942,1.09378617948,7.5687127632 +7.943,1.10134636719,7.56018770427 +7.944,1.10889740331,7.55103612561 +7.945,1.11643865994,7.54125662068 +7.946,1.12396950796,7.53084802354 +7.947,1.13148931737,7.5198094119 +7.948,1.13899745748,7.50814011003 +7.949,1.14649329717,7.49583969137 +7.95,1.15397620515,7.48290798104 +7.951,1.16144555021,7.46934505804 +7.952,1.16890070147,7.45515125736 +7.953,1.17634102864,7.44032717173 +7.954,1.18376590229,7.42487365327 +7.955,1.19117469411,7.40879181485 +7.956,1.19856677714,7.3920830312 +7.957,1.20594152608,7.37474893986 +7.958,1.21329831752,7.3567914418 +7.959,1.22063653022,7.33821270186 +7.96,1.22795554537,7.31901514892 +7.961,1.23525474685,7.29920147582 +7.962,1.24253352149,7.27877463904 +7.963,1.24979125935,7.25773785813 +7.964,1.25702735396,7.23609461487 +7.965,1.26424120261,7.21384865221 +7.966,1.27143220659,7.1910039729 +7.967,1.27859977142,7.16756483793 +7.968,1.28574330719,7.14353576466 +7.969,1.29286222871,7.11892152476 +7.97,1.29995595585,7.09372714185 +7.971,1.30702391374,7.06795788886 +7.972,1.31406553303,7.04161928529 +7.973,1.32108025012,7.01471709401 +7.974,1.32806750744,6.98725731801 +7.975,1.33502675364,6.95924619681 +7.976,1.34195744384,6.93069020268 +7.977,1.34885903988,6.90159603658 +7.978,1.3557310105,6.87197062394 +7.979,1.36257283161,6.84182111017 +7.98,1.36938398647,6.81115485601 +7.981,1.3761639659,6.77997943259 +7.982,1.38291226852,6.7483026164 +7.983,1.3896284009,6.71613238393 +7.984,1.39631187781,6.68347690627 +7.985,1.40296222235,6.6503445434 +7.986,1.40957896619,6.61674383841 +7.987,1.4161616497,6.58268351145 +7.988,1.42270982215,6.54817245364 +7.989,1.42922304187,6.51321972076 +7.99,1.4357008764,6.47783452676 +7.991,1.44214290264,6.44202623728 +7.992,1.448548707,6.40580436288 +7.993,1.45491788555,6.36917855229 +7.994,1.46125004414,6.33215858551 +7.995,1.4675447985,6.29475436674 +7.996,1.47380177442,6.25697591738 +7.997,1.48002060779,6.21883336883 +7.998,1.48620094475,6.18033695529 +7.999,1.49234244175,6.14149700643 +8.,1.49844476569,6.10232394013 +8.001,1.50450759395,6.06282825509 +8.002,1.51053061447,6.02302052345 +8.003,1.51651352585,5.98291138338 +8.004,1.52245603739,5.94251153168 +8.005,1.5283578691,5.9018317164 +8.006,1.53421875183,5.86088272939 +8.007,1.54003842723,5.81967539899 +8.008,1.54581664781,5.77822058267 +8.009,1.55155317697,5.73652915972 +8.01,1.557247789,5.69461202402 +8.011,1.56290026907,5.65248007684 +8.012,1.56851041329,5.61014421973 +8.013,1.57407802864,5.56761534744 +8.014,1.57960293298,5.52490434099 +8.015,1.58508495504,5.48202206079 +8.016,1.59052393438,5.43897933983 +8.017,1.59591972136,5.39578697706 +8.018,1.60127217709,5.35245573079 +8.019,1.6065811734,5.30899631225 +8.02,1.61184659278,5.26541937932 +8.021,1.61706832831,5.22173553031 +8.022,1.62224628361,5.17795529792 +8.023,1.62738037275,5.13408914335 +8.024,1.6324705202,5.09014745052 +8.025,1.63751666073,5.04614052052 +8.026,1.64251873929,5.00207856612 +8.027,1.647476711,4.9579717065 +8.028,1.65239054096,4.91382996216 +8.029,1.65726020421,4.86966324992 +8.03,1.66208568559,4.82548137819 +8.031,1.66686697963,4.78129404236 +8.032,1.67160409045,4.73711082035 +8.033,1.67629703162,4.69294116838 +8.034,1.68094582604,4.64879441693 +8.035,1.6855505058,4.60467976681 +8.036,1.69011111209,4.56060628549 +8.037,1.69462769499,4.51658290359 +8.038,1.6991003134,4.47261841151 +8.039,1.70352903486,4.42872145634 +8.04,1.7079139354,4.38490053885 +8.041,1.71225509941,4.34116401075 +8.042,1.71655261948,4.29752007207 +8.043,1.72080659625,4.25397676875 +8.044,1.72501713824,4.21054199044 +8.045,1.72918436171,4.16722346841 +8.046,1.73330839048,4.12402877372 +8.047,1.7373893558,4.08096531549 +8.048,1.74142739614,4.0380403394 +8.049,1.74542265706,3.99526092634 +8.05,1.74937529106,3.95263399122 +8.051,1.75328545734,3.91016628199 +8.052,1.75715332172,3.86786437873 +8.053,1.76097905641,3.82573469304 +8.054,1.76476283988,3.78378346745 +8.055,1.76850485665,3.74201677507 +8.056,1.77220529717,3.70044051936 +8.057,1.77586435761,3.65906043406 +8.058,1.77948223969,3.61788208323 +8.059,1.78305915055,3.57691086147 +8.06,1.78659530254,3.5361519943 +8.061,1.79009091308,3.49561053853 +8.062,1.79354620447,3.45529138297 +8.063,1.79696140371,3.41519924908 +8.064,1.80033674241,3.37533869184 +8.065,1.80367245651,3.33571410068 +8.066,1.80696878621,3.29632970058 +8.067,1.81022597576,3.25718955323 +8.068,1.81344427332,3.21829755828 +8.069,1.81662393077,3.17965745475 +8.07,1.8197652036,3.14127282245 +8.071,1.82286835068,3.10314708359 +8.072,1.82593363418,3.06528350437 +8.073,1.82896131938,3.02768519672 +8.074,1.8319516745,2.99035512007 +8.075,1.83490497058,2.95329608328 +8.076,1.83782148133,2.9165107465 +8.077,1.84070148295,2.88000162321 +8.078,1.84354525404,2.84377108228 +8.079,1.84635307539,2.80782135005 +8.08,1.8491252299,2.77215451254 +8.081,1.85186200242,2.73677251763 +8.082,1.85456367959,2.70167717734 +8.083,1.85723054976,2.66687017011 +8.084,1.85986290281,2.63235304315 +8.085,1.86246103002,2.5981272148 +8.086,1.865025224,2.56419397691 +8.087,1.8675557785,2.53055449732 +8.088,1.87005298832,2.49720982224 +8.089,1.8725171492,2.46416087875 +8.09,1.87494855767,2.43140847729 +8.091,1.87734751099,2.39895331415 +8.092,1.87971430696,2.36679597396 +8.093,1.8820492439,2.33493693223 +8.094,1.88435262045,2.30337655788 +8.095,1.88662473557,2.27211511572 +8.096,1.88886588834,2.24115276901 +8.097,1.89107637792,2.21048958198 +8.098,1.89325650344,2.18012552234 +8.099,1.89540656391,2.15006046378 +8.1,1.89752685809,2.12029418848 +8.101,1.89961768448,2.09082638959 +8.102,1.90167934116,2.06165667375 +8.103,1.90371212572,2.03278456347 +8.104,1.90571633522,2.00420949965 +8.105,1.90769226606,1.97593084396 +8.106,1.90964021395,1.94794788126 +8.107,1.91156047377,1.92025982199 +8.108,1.91345333957,1.89286580453 +8.109,1.91531910447,1.86576489751 +8.11,1.91715806057,1.83895610215 +8.111,1.91897049893,1.81243835454 +8.112,1.92075670945,1.78621052787 +8.113,1.92251698089,1.7602714347 +8.114,1.92425160072,1.73461982912 +8.115,1.92596085513,1.70925440891 +8.116,1.92764502894,1.6841738177 +8.117,1.92930440559,1.65937664708 +8.118,1.93093926703,1.63486143862 +8.119,1.93254989372,1.61062668594 +8.12,1.93413656455,1.58667083671 +8.121,1.93569955685,1.56299229461 +8.122,1.93723914627,1.53958942126 +8.123,1.93875560681,1.51646053809 +8.124,1.94024921074,1.49360392824 +8.125,1.94172022857,1.47101783838 +8.126,1.94316892905,1.44870048045 +8.127,1.94459557909,1.42665003346 +8.128,1.94600044373,1.40486464517 +8.129,1.94738378617,1.38334243381 +8.13,1.94874586766,1.36208148966 +8.131,1.95008694753,1.3410798767 +8.132,1.95140728317,1.32033563416 +8.133,1.95270712995,1.29984677805 +8.134,1.95398674125,1.27961130266 +8.135,1.95524636843,1.259627182 +8.136,1.9564862608,1.23989237126 +8.137,1.95770666561,1.22040480816 +8.138,1.95890782802,1.20116241429 +8.139,1.96008999112,1.18216309649 +8.14,1.96125339587,1.16340474804 +8.141,1.96239828112,1.14488525 +8.142,1.96352488359,1.12660247233 +8.143,1.96463343787,1.10855427513 +8.144,1.96572417638,1.09073850978 +8.145,1.9667973294,1.07315302 +8.146,1.96785312504,1.05579564298 +8.147,1.96889178925,1.03866421041 +8.148,1.9699135458,1.02175654948 +8.149,1.97091861628,1.00507048388 +8.15,1.97190722012,0.988603834743 +8.151,1.97287957454,0.972354421548 +8.152,1.9738358946,0.956320063044 +8.153,1.97477639318,0.940498578088 +8.154,1.97570128097,0.924887786482 +8.155,1.97661076648,0.909485509776 +8.156,1.97750505605,0.894289572044 +8.157,1.97838435385,0.87929780063 +8.158,1.97924886188,0.86450802687 +8.159,1.98009877996,0.849918086787 +8.16,1.98093430578,0.835525821756 +8.161,1.98175563486,0.821329079149 +8.162,1.98256296058,0.807325712954 +8.163,1.98335647416,0.793513584367 +8.164,1.98413636472,0.77989056236 +8.165,1.98490281925,0.766454524232 +8.166,1.9856560226,0.753203356129 +8.167,1.98639615756,0.740134953546 +8.168,1.98712340478,0.727247221808 +8.169,1.98783794286,0.714538076525 +8.17,1.9885399483,0.702005444036 +8.171,1.98922959556,0.689647261819 +8.172,1.98990705704,0.677461478894 +8.173,1.9905725031,0.665446056198 +8.174,1.99122610206,0.653598966949 +8.175,1.99186802026,0.64191819698 +8.176,1.99249842201,0.630401745073 +8.177,1.99311746963,0.619047623257 +8.178,1.99372532349,0.607853857101 +8.179,1.99432214197,0.596818485987 +8.18,1.99490808153,0.585939563366 +8.181,1.99548329669,0.575215157004 +8.182,1.99604794004,0.564643349203 +8.183,1.99660216228,0.554222237017 +8.184,1.99714611221,0.54394993245 +8.185,1.99767993677,0.533824562641 +8.186,1.99820378104,0.523844270033 +8.187,1.99871778826,0.514007212531 +8.188,1.99922209982,0.504311563651 +8.189,1.99971685533,0.494755512651 +8.19,2.0002021926,0.485337264656 +8.191,2.00067824764,0.476055040762 +8.192,2.00114515472,0.466907078144 +8.193,2.00160304635,0.457891630139 +8.194,2.00205205331,0.449006966327 +8.195,2.00249230468,0.4402513726 +8.196,2.00292392784,0.431623151222 +8.197,2.00334704846,0.423120620876 +8.198,2.00376179057,0.41474211671 +8.199,2.00416827656,0.406485990364 +8.2,2.00456662717,0.398350609999 +8.201,2.00495696153,0.390334360311 +8.202,2.00533939718,0.382435642541 +8.203,2.00571405005,0.374652874475 +8.204,2.00608103454,0.36698449044 +8.205,2.00644046348,0.359428941288 +8.206,2.00679244818,0.351984694381 +8.207,2.00713709841,0.344650233563 +8.208,2.00747452247,0.337424059129 +8.209,2.00780482716,0.330304687789 +8.21,2.00812811781,0.323290652622 +8.211,2.00844449831,0.316380503031 +8.212,2.00875407112,0.30957280469 +8.213,2.00905693726,0.302866139483 +8.214,2.00935319636,0.296259105443 +8.215,2.00964294668,0.289750316687 +8.216,2.00992628508,0.283338403338 +8.217,2.01020330709,0.27702201146 +8.218,2.0104741069,0.270799802967 +8.219,2.01073877735,0.264670455551 +8.22,2.01099741002,0.258632662588 +8.221,2.01125009515,0.252685133051 +8.222,2.01149692174,0.246826591419 +8.223,2.01173797752,0.24105577758 +8.224,2.01197334896,0.235371446729 +8.225,2.01220312133,0.229772369274 +8.226,2.01242737866,0.224257330728 +8.227,2.0126462038,0.218825131601 +8.228,2.01285967838,0.2134745873 +8.229,2.01306788291,0.208204528008 +8.23,2.01327089671,0.203013798582 +8.231,2.01346879797,0.197901258433 +8.232,2.01366166375,0.192865781413 +8.233,2.01384957001,0.187906255695 +8.234,2.01403259159,0.183021583661 +8.235,2.01421080227,0.178210681774 +8.236,2.01438427475,0.173472480465 +8.237,2.01455308068,0.168805924003 +8.238,2.01471729065,0.164209970379 +8.239,2.01487697424,0.159683591177 +8.24,2.01503220001,0.155225771452 +8.241,2.01518303552,0.150835509604 +8.242,2.01532954734,0.14651181725 +8.243,2.01547180105,0.1422537191 +8.244,2.01560986131,0.138060252826 +8.245,2.01574379178,0.13393046894 +8.246,2.01587365521,0.129863430661 +8.247,2.01599951342,0.125858213789 +8.248,2.01612142733,0.121913906577 +8.249,2.01623945694,0.1180296096 +8.25,2.01635366137,0.11420443563 +8.251,2.01646409888,0.110437509505 +8.252,2.01657082685,0.106727968003 +8.253,2.01667390181,0.103074959709 +8.254,2.01677337945,0.0994776448922 +8.255,2.01686931465,0.0959351953754 +8.256,2.01696176144,0.092446794407 +8.257,2.01705077308,0.0890116365346 +8.258,2.01713640201,0.0856289274779 +8.259,2.01721869989,0.0822978840019 +8.26,2.01729771763,0.0790177337908 +8.261,2.01737350534,0.0757877153225 +8.262,2.01744611242,0.0726070777434 +8.263,2.0175155875,0.0694750807441 +8.264,2.01758197849,0.066390994435 +8.265,2.01764533259,0.0633540992234 +8.266,2.01770569628,0.0603636856904 +8.267,2.01776311533,0.0574190544695 +8.268,2.01781763485,0.0545195161247 +8.269,2.01786929924,0.0516643910304 +8.27,2.01791815225,0.0488530092511 +8.271,2.01796423696,0.0460847104232 +8.272,2.0180075958,0.0433588436359 +8.273,2.01804827057,0.0406747673143 +8.274,2.01808630242,0.0380318491029 +8.275,2.01812173189,0.0354294657496 +8.276,2.01815459889,0.0328670029912 +8.277,2.01818494274,0.0303438554392 +8.278,2.01821280217,0.0278594264671 +8.279,2.0182382153,0.0254131280977 +8.28,2.01826121968,0.0230043808927 +8.281,2.01828185229,0.020632613842 +8.282,2.01830014956,0.0182972642543 +8.283,2.01831614734,0.0159977776491 +8.284,2.01832988094,0.0137336076493 +8.285,2.01834138516,0.0115042158743 +8.286,2.01835069423,0.00930907183549 +8.287,2.01835784188,0.00714765283105 +8.288,2.01836286133,0.00501944384293 +8.289,2.01836578527,0.00292393743428 +8.29,2.0183666459,0.000860633648111 +8.291,2.01836547494,-0.00117096009318 +8.292,2.01836230361,-0.00317132908719 +8.293,2.01835716266,-0.00514095144989 +8.294,2.01835008236,-0.00708029821303 +8.295,2.01834109253,-0.0089898334205 +8.296,2.01833022251,-0.0108700142237 +8.297,2.01831750122,-0.0127212909758 +8.298,2.01830295711,-0.0145441073252 +8.299,2.01828661821,-0.0163389003077 +8.3,2.01826851211,-0.018106100438 +8.301,2.01824866598,-0.0198461317997 +8.302,2.01822710657,-0.0215594121349 +8.303,2.01820386022,-0.0232463529323 +8.304,2.01817895286,-0.0249073595144 +8.305,2.01815241003,-0.026542831124 +8.306,2.01812425686,-0.0281531610095 +8.307,2.01809451813,-0.0297387365088 +8.308,2.01806321819,-0.0312999391331 +8.309,2.01803038104,-0.032837144649 +8.31,2.01799603032,-0.0343507231598 +8.311,2.01796018928,-0.035841039186 +8.312,2.01792288083,-0.0373084517446 +8.313,2.01788412752,-0.0387533144277 +8.314,2.01784395154,-0.0401759754797 +8.315,2.01780237476,-0.0415767778744 +8.316,2.0177594187,-0.0429560593899 +8.317,2.01771510455,-0.0443141526838 +8.318,2.01766945317,-0.0456513853667 +8.319,2.01762248509,-0.0469680800751 +8.32,2.01757422053,-0.0482645545431 +8.321,2.01752467941,-0.0495411216736 +8.322,2.01747388132,-0.0507980896085 +8.323,2.01742184556,-0.0520357617973 +8.324,2.01736859112,-0.0532544370662 +8.325,2.01731413671,-0.0544544096847 +8.326,2.01725850074,-0.0556359694327 +8.327,2.01720170134,-0.0567994016661 +8.328,2.01714375635,-0.0579449873812 +8.329,2.01708468335,-0.0590730032794 +8.33,2.01702449963,-0.0601837218294 +8.331,2.01696322222,-0.0612774113303 +8.332,2.01690086788,-0.0623543359725 +8.333,2.01683745312,-0.0634147558986 +8.334,2.0167729942,-0.0644589272633 +8.335,2.01670750709,-0.0654871022921 +8.336,2.01664100757,-0.0664995293397 +8.337,2.01657351111,-0.0674964529474 +8.338,2.016505033,-0.0684781139 +8.339,2.01643558825,-0.0694447492812 +8.34,2.01636519166,-0.0703965925291 +8.341,2.01629385778,-0.0713338734903 +8.342,2.01622160096,-0.0722568184739 +8.343,2.01614843531,-0.0731656503038 +8.344,2.01607437473,-0.0740605883714 +8.345,2.01599943288,-0.0749418486866 +8.346,2.01592362323,-0.0758096439289 +8.347,2.01584695905,-0.0766641834969 +8.348,2.01576945338,-0.0775056735581 +8.349,2.01569111906,-0.0783343170971 +8.35,2.01561196875,-0.0791503139638 +8.351,2.01553201488,-0.0799538609206 +8.352,2.01545126973,-0.0807451516888 +8.353,2.01536974536,-0.0815243769946 +8.354,2.01528745363,-0.0822917246146 +8.355,2.01520440625,-0.0830473794201 +8.356,2.01512061473,-0.0837915234212 +8.357,2.01503609039,-0.0845243358102 +8.358,2.0149508444,-0.0852459930044 +8.359,2.01486488773,-0.085956668688 +8.36,2.0147782312,-0.0866565338537 +8.361,2.01469088544,-0.087345756844 +8.362,2.01460286094,-0.0880245033909 +8.363,2.014514168,-0.0886929366561 +8.364,2.01442481678,-0.0893512172698 +8.365,2.01433481728,-0.0899995033699 +8.366,2.01424417933,-0.0906379506393 +8.367,2.01415291262,-0.0912667123439 +8.368,2.01406102668,-0.0918859393694 +8.369,2.0139685309,-0.0924957802576 +8.37,2.01387543452,-0.0930963812426 +8.371,2.01378174663,-0.0936878862854 +8.372,2.01368747619,-0.0942704371098 +8.373,2.01359263202,-0.0948441732357 +8.374,2.01349722279,-0.0954092320133 +8.375,2.01340125704,-0.0959657486568 +8.376,2.01330474318,-0.0965138562765 +8.377,2.0132076895,-0.0970536859115 +8.378,2.01311010413,-0.0975853665617 +8.379,2.0130119951,-0.0981090252187 +8.38,2.01291337032,-0.0986247868972 +8.381,2.01281423754,-0.0991327746652 +8.382,2.01271460443,-0.099633109674 +8.383,2.01261447852,-0.100125911188 +8.384,2.01251386722,-0.100611296613 +8.385,2.01241277784,-0.101089381525 +8.386,2.01231121756,-0.101560279702 +8.387,2.01220919346,-0.102024103145 +8.388,2.0121067125,-0.10248096211 +8.389,2.01200378153,-0.102930965135 +8.39,2.01190040731,-0.103374219066 +8.391,2.01179659649,-0.103810829082 +8.392,2.01169235559,-0.104240898722 +8.393,2.01158769106,-0.104664529909 +8.394,2.01148260923,-0.105081822978 +8.395,2.01137711636,-0.105492876697 +8.396,2.01127121857,-0.105897788294 +8.397,2.01116492192,-0.106296653479 +8.398,2.01105823235,-0.10668956647 +8.399,2.01095115573,-0.107076620012 +8.4,2.01084369782,-0.107457905406 +8.401,2.01073586431,-0.107833512524 +8.402,2.01062766078,-0.108203529837 +8.403,2.01051909274,-0.108568044436 +8.404,2.01041016559,-0.10892714205 +8.405,2.01030088469,-0.10928090707 +8.406,2.01019125526,-0.10962942257 +8.407,2.01008128249,-0.109972770326 +8.408,2.00997097146,-0.110311030839 +8.409,2.00986032718,-0.110644283349 +8.41,2.00974935457,-0.110972605862 +8.411,2.0096380585,-0.111296075163 +8.412,2.00952644373,-0.11161476684 +8.413,2.00941451498,-0.111928755298 +8.414,2.00930227686,-0.112238113782 +8.415,2.00918973395,-0.112542914391 +8.416,2.00907689072,-0.112843228098 +8.417,2.0089637516,-0.113139124769 +8.418,2.00885032092,-0.113430673175 +8.419,2.00873660298,-0.113717941017 +8.42,2.00862260199,-0.114000994936 +8.421,2.00850832209,-0.11427990053 +8.422,2.00839376736,-0.114554722376 +8.423,2.00827894184,-0.114825524039 +8.424,2.00816384947,-0.115092368092 +8.425,2.00804849416,-0.115355316131 +8.426,2.00793287973,-0.115614428789 +8.427,2.00781700996,-0.115869765751 +8.428,2.00770088858,-0.116121385771 +8.429,2.00758451923,-0.116369346684 +8.43,2.00746790552,-0.116613705421 +8.431,2.00735105101,-0.116854518025 +8.432,2.00723395917,-0.117091839663 +8.433,2.00711663344,-0.117325724638 +8.434,2.00699907721,-0.117556226408 +8.435,2.00688129382,-0.117783397593 +8.436,2.00676328653,-0.118007289993 +8.437,2.00664505857,-0.118227954598 +8.438,2.00652661313,-0.118445441601 +8.439,2.00640795333,-0.118659800412 +8.44,2.00628908225,-0.118871079668 +8.441,2.00617000292,-0.119079327247 +8.442,2.00605071833,-0.119284590279 +8.443,2.00593123142,-0.119486915158 +8.444,2.00581154507,-0.119686347554 +8.445,2.00569166214,-0.119882932422 +8.446,2.00557158542,-0.120076714017 +8.447,2.00545131769,-0.120267735901 +8.448,2.00533086165,-0.120456040958 +8.449,2.00521021998,-0.1206416714 +8.45,2.00508939531,-0.120824668781 +8.451,2.00496839023,-0.121005074006 +8.452,2.00484720731,-0.121182927343 +8.453,2.00472584904,-0.121358268428 +8.454,2.0046043179,-0.121531136282 +8.455,2.00448261633,-0.121701569314 +8.456,2.00436074673,-0.121869605334 +8.457,2.00423871144,-0.122035281564 +8.458,2.00411651281,-0.122198634642 +8.459,2.00399415311,-0.122359700637 +8.46,2.00387163459,-0.122518515053 +8.461,2.00374895948,-0.12267511284 +8.462,2.00362612995,-0.122829528406 +8.463,2.00350314816,-0.122981795618 +8.464,2.00338001621,-0.123131947817 +8.465,2.00325673619,-0.123280017822 +8.466,2.00313331015,-0.123426037944 +8.467,2.00300974011,-0.123570039985 +8.468,2.00288602806,-0.123712055254 +8.469,2.00276217594,-0.123852114572 +8.47,2.0026381857,-0.123990248278 +8.471,2.00251405921,-0.124126486239 +8.472,2.00238979835,-0.124260857855 +8.473,2.00226540496,-0.124393392069 +8.474,2.00214088084,-0.124524117373 +8.475,2.00201622778,-0.124653061814 +8.476,2.00189144753,-0.124780253001 +8.477,2.00176654181,-0.124905718116 +8.478,2.00164151233,-0.125029483913 +8.479,2.00151636075,-0.125151576734 +8.48,2.00139108873,-0.125272022506 +8.481,2.00126569788,-0.125390846755 +8.482,2.0011401898,-0.125508074608 +8.483,2.00101456607,-0.125623730803 +8.484,2.00088882823,-0.125737839689 +8.485,2.00076297781,-0.125850425238 +8.486,2.0006370163,-0.125961511049 +8.487,2.00051094518,-0.126071120354 +8.488,2.0003847659,-0.12617927602 +8.489,2.0002584799,-0.126286000563 +8.49,2.00013208859,-0.126391316144 +8.491,2.00000559334,-0.126495244583 +8.492,1.99987899553,-0.126597807357 +8.493,1.99975229651,-0.126699025611 +8.494,1.99962549759,-0.12679892016 +8.495,1.99949860008,-0.126897511496 +8.496,1.99937160526,-0.126994819792 +8.497,1.99924451439,-0.127090864908 +8.498,1.99911732872,-0.127185666392 +8.499,1.99899004948,-0.127279243492 +8.5,1.99886267787,-0.127371615155 +8.501,1.99873521507,-0.127462800033 +8.502,1.99860766225,-0.127552816488 +8.503,1.99848002057,-0.127641682599 +8.504,1.99835229115,-0.127729416161 +8.505,1.99822447512,-0.127816034693 +8.506,1.99809657356,-0.127901555444 +8.507,1.99796858757,-0.127985995393 +8.508,1.99784051819,-0.128069371256 +8.509,1.99771236649,-0.128151699489 +8.51,1.9975841335,-0.128232996292 +8.511,1.99745582022,-0.128313277615 +8.512,1.99732742766,-0.128392559159 +8.513,1.99719895681,-0.128470856382 +8.514,1.99707040862,-0.128548184502 +8.515,1.99694178406,-0.1286245585 +8.516,1.99681308407,-0.128699993125 +8.517,1.99668430957,-0.128774502898 +8.518,1.99655546146,-0.128848102113 +8.519,1.99642654066,-0.128920804844 +8.52,1.99629754803,-0.128992624946 +8.521,1.99616848446,-0.129063576058 +8.522,1.99603935079,-0.12913367161 +8.523,1.99591014786,-0.129202924822 +8.524,1.99578087651,-0.129271348709 +8.525,1.99565153756,-0.129338956084 +8.526,1.9955221318,-0.129405759564 +8.527,1.99539266003,-0.129471771567 +8.528,1.99526312302,-0.129537004321 +8.529,1.99513352155,-0.129601469864 +8.53,1.99500385637,-0.129665180046 +8.531,1.99487412822,-0.129728146536 +8.532,1.99474433784,-0.12979038082 +8.533,1.99461448595,-0.129851894208 +8.534,1.99448457325,-0.129912697834 +8.535,1.99435460045,-0.12997280266 +8.536,1.99422456823,-0.130032219477 +8.537,1.99409447727,-0.130090958911 +8.538,1.99396432824,-0.130149031422 +8.539,1.99383412179,-0.130206447309 +8.54,1.99370385858,-0.130263216712 +8.541,1.99357353923,-0.130319349614 +8.542,1.99344316437,-0.130374855842 +8.543,1.99331273463,-0.130429745073 +8.544,1.9931822506,-0.130484026834 +8.545,1.99305171289,-0.130537710505 +8.546,1.99292112208,-0.130590805319 +8.547,1.99279047876,-0.130643320369 +8.548,1.9926597835,-0.130695264605 +8.549,1.99252903685,-0.130746646842 +8.55,1.99239823937,-0.130797475756 +8.551,1.99226739161,-0.130847759889 +8.552,1.99213649411,-0.130897507653 +8.553,1.99200554738,-0.130946727329 +8.554,1.99187455195,-0.130995427069 +8.555,1.99174350834,-0.131043614902 +8.556,1.99161241704,-0.131091298732 +8.557,1.99148127855,-0.131138486338 +8.558,1.99135009337,-0.131185185384 +8.559,1.99121886196,-0.131231403411 +8.56,1.99108758482,-0.131277147848 +8.561,1.99095626239,-0.131322426007 +8.562,1.99082489515,-0.131367245087 +8.563,1.99069348353,-0.131411612176 +8.564,1.990562028,-0.131455534255 +8.565,1.99043052898,-0.131499018195 +8.566,1.99029898691,-0.131542070762 +8.567,1.99016740221,-0.131584698618 +8.568,1.9900357753,-0.131626908321 +8.569,1.9899041066,-0.13166870633 +8.57,1.9897723965,-0.131710099003 +8.571,1.9896406454,-0.131751092601 +8.572,1.98950885371,-0.131791693288 +8.573,1.9893770218,-0.131831907133 +8.574,1.98924515006,-0.131871740113 +8.575,1.98911323887,-0.131911198111 +8.576,1.98898128858,-0.131950286921 +8.577,1.98884929957,-0.131989012246 +8.578,1.98871727219,-0.132027379705 +8.579,1.98858520679,-0.132065394826 +8.58,1.98845310373,-0.132103063054 +8.581,1.98832096334,-0.132140389753 +8.582,1.98818878596,-0.132177380199 +8.583,1.98805657192,-0.132214039592 +8.584,1.98792432155,-0.132250373049 +8.585,1.98779203516,-0.132286385609 +8.586,1.98765971308,-0.132322082235 +8.587,1.98752735561,-0.132357467812 +8.588,1.98739496306,-0.132392547151 +8.589,1.98726253574,-0.132427324988 +8.59,1.98713007393,-0.132461805988 +8.591,1.98699757794,-0.132495994744 +8.592,1.98686504804,-0.132529895777 +8.593,1.98673248453,-0.13256351354 +8.594,1.98659988768,-0.132596852417 +8.595,1.98646725776,-0.132629916725 +8.596,1.98633459505,-0.132662710715 +8.597,1.98620189981,-0.132695238574 +8.598,1.98606917231,-0.132727504421 +8.599,1.98593641279,-0.132759512316 +8.6,1.98580362153,-0.132791266255 +8.601,1.98567079876,-0.132822770172 +8.602,1.98553794473,-0.132854027943 +8.603,1.98540505969,-0.132885043381 +8.604,1.98527214387,-0.132915820245 +8.605,1.9851391975,-0.132946362233 +8.606,1.98500622083,-0.132976672988 +8.607,1.98487321407,-0.133006756097 +8.608,1.98474017746,-0.133036615091 +8.609,1.98460711121,-0.133066253449 +8.61,1.98447401553,-0.133095674595 +8.611,1.98434089065,-0.133124881902 +8.612,1.98420773677,-0.133153878689 +8.613,1.9840745541,-0.133182668228 +8.614,1.98394134285,-0.133211253737 +8.615,1.98380810321,-0.133239638388 +8.616,1.98367483539,-0.133267825303 +8.617,1.98354153957,-0.133295817555 +8.618,1.98340821595,-0.133323618174 +8.619,1.98327486472,-0.133351230139 +8.62,1.98314148606,-0.133378656388 +8.621,1.98300808016,-0.133405899809 +8.622,1.9828746472,-0.133432963251 +8.623,1.98274118735,-0.133459849516 +8.624,1.98260770079,-0.133486561366 +8.625,1.98247418769,-0.133513101517 +8.626,1.98234064821,-0.133539472648 +8.627,1.98220708254,-0.133565677393 +8.628,1.98207349082,-0.13359171835 +8.629,1.98193987322,-0.133617598074 +8.63,1.9818062299,-0.133643319082 +8.631,1.98167256102,-0.133668883854 +8.632,1.98153886672,-0.13369429483 +8.633,1.98140514717,-0.133719554414 +8.634,1.9812714025,-0.133744664973 +8.635,1.98113763288,-0.13376962884 +8.636,1.98100383843,-0.133794448308 +8.637,1.9808700193,-0.13381912564 +8.638,1.98073617564,-0.133843663061 +8.639,1.98060230758,-0.133868062763 +8.64,1.98046841525,-0.133892326906 +8.641,1.98033449879,-0.133916457617 +8.642,1.98020055833,-0.133940456987 +8.643,1.98006659401,-0.133964327081 +8.644,1.97993260594,-0.133988069928 +8.645,1.97979859425,-0.134011687528 +8.646,1.97966455907,-0.13403518185 +8.647,1.97953050051,-0.134058554834 +8.648,1.9793964187,-0.134081808389 +8.649,1.97926231376,-0.134104944397 +8.65,1.9791281858,-0.13412796471 +8.651,1.97899403492,-0.134150871151 +8.652,1.97885986126,-0.134173665519 +8.653,1.97872566491,-0.134196349581 +8.654,1.97859144598,-0.134218925079 +8.655,1.97845720459,-0.134241393731 +8.656,1.97832294083,-0.134263757225 +8.657,1.97818865482,-0.134286017227 +8.658,1.97805434664,-0.134308175374 +8.659,1.97792001641,-0.134330233281 +8.66,1.97778566421,-0.134352192538 +8.661,1.97765129016,-0.13437405471 +8.662,1.97751689434,-0.13439582134 +8.663,1.97738247684,-0.134417493944 +8.664,1.97724803777,-0.134439074019 +8.665,1.97711357721,-0.134460563039 +8.666,1.97697909524,-0.134481962452 +8.667,1.97684459197,-0.134503273687 +8.668,1.97671006747,-0.134524498153 +8.669,1.97657552184,-0.134545637233 +8.67,1.97644095514,-0.134566692293 +8.671,1.97630636748,-0.134587664677 +8.672,1.97617175892,-0.134608555708 +8.673,1.97603712956,-0.13462936669 +8.674,1.97590247946,-0.134650098907 +8.675,1.9757678087,-0.134670753623 +8.676,1.97563311737,-0.134691332084 +8.677,1.97549840554,-0.134711835516 +8.678,1.97536367327,-0.134732265128 +8.679,1.97522892065,-0.134752622108 +8.68,1.97509414774,-0.13477290763 +8.681,1.97495935462,-0.134793122846 +8.682,1.97482454135,-0.134813268895 +8.683,1.974689708,-0.134833346895 +8.684,1.97455485464,-0.134853357948 +8.685,1.97441998134,-0.134873303142 +8.686,1.97428508816,-0.134893183545 +8.687,1.97415017516,-0.134913000211 +8.688,1.9740152424,-0.134932754178 +8.689,1.97388028996,-0.134952446468 +8.69,1.97374531788,-0.134972078087 +8.691,1.97361032623,-0.134991650027 +8.692,1.97347531507,-0.135011163264 +8.693,1.97334028445,-0.13503061876 +8.694,1.97320523443,-0.135050017462 +8.695,1.97307016507,-0.135069360304 +8.696,1.97293507642,-0.135088648203 +8.697,1.97279996854,-0.135107882067 +8.698,1.97266484148,-0.135127062785 +8.699,1.97252969529,-0.135146191236 +8.7,1.97239453002,-0.135165268285 +8.701,1.97225934572,-0.135184294785 +8.702,1.97212414245,-0.135203271573 +8.703,1.97198892025,-0.135222199477 +8.704,1.97185367917,-0.135241079311 +8.705,1.97171841926,-0.135259911876 +8.706,1.97158314056,-0.135278697963 +8.707,1.97144784312,-0.135297438349 +8.708,1.97131252699,-0.135316133801 +8.709,1.9711771922,-0.135334785073 +8.71,1.97104183881,-0.13535339291 +8.711,1.97090646685,-0.135371958042 +8.712,1.97077107637,-0.135390481193 +8.713,1.97063566741,-0.135408963071 +8.714,1.97050024001,-0.135427404378 +8.715,1.9703647942,-0.135445805802 +8.716,1.97022933003,-0.135464168022 +8.717,1.97009384754,-0.135482491708 +8.718,1.96995834676,-0.135500777518 +8.719,1.96982282774,-0.135519026102 +8.72,1.9696872905,-0.135537238098 +8.721,1.96955173508,-0.135555414136 +8.722,1.96941616153,-0.135573554838 +8.723,1.96928056987,-0.135591660813 +8.724,1.96914496014,-0.135609732663 +8.725,1.96900933236,-0.135627770983 +8.726,1.96887368659,-0.135645776355 +8.727,1.96873802284,-0.135663749355 +8.728,1.96860234115,-0.135681690549 +8.729,1.96846664155,-0.135699600497 +8.73,1.96833092407,-0.135717479748 +8.731,1.96819518874,-0.135735328843 +8.732,1.96805943559,-0.135753148317 +8.733,1.96792366465,-0.135770938695 +8.734,1.96778787595,-0.135788700494 +8.735,1.96765206952,-0.135806434226 +8.736,1.96751624538,-0.135824140393 +8.737,1.96738040356,-0.135841819489 +8.738,1.96724454409,-0.135859472002 +8.739,1.96710866699,-0.135877098414 +8.74,1.96697277229,-0.135894699196 +8.741,1.96683686001,-0.135912274816 +8.742,1.96670093019,-0.135929825732 +8.743,1.96656498283,-0.135947352397 +8.744,1.96642901798,-0.135964855257 +8.745,1.96629303564,-0.135982334751 +8.746,1.96615703585,-0.135999791312 +8.747,1.96602101863,-0.136017225365 +8.748,1.96588498399,-0.136034637331 +8.749,1.96574893196,-0.136052027622 +8.75,1.96561286257,-0.136069396648 +8.751,1.96547677582,-0.136086744808 +8.752,1.96534067175,-0.136104072499 +8.753,1.96520455037,-0.136121380109 +8.754,1.9650684117,-0.136138668024 +8.755,1.96493225576,-0.136155936621 +8.756,1.96479608258,-0.136173186272 +8.757,1.96465989216,-0.136190417344 +8.758,1.96452368453,-0.1362076302 +8.759,1.96438745971,-0.136224825195 +8.76,1.9642512177,-0.136242002681 +8.761,1.96411495854,-0.136259163003 +8.762,1.96397868223,-0.136276306501 +8.763,1.9638423888,-0.136293433512 +8.764,1.96370607826,-0.136310544366 +8.765,1.96356975062,-0.136327639389 +8.766,1.9634334059,-0.136344718902 +8.767,1.96329704411,-0.136361783221 +8.768,1.96316066528,-0.136378832657 +8.769,1.96302426941,-0.136395867518 +8.77,1.96288785653,-0.136412888107 +8.771,1.96275142663,-0.13642989472 +8.772,1.96261497974,-0.136446887652 +8.773,1.96247851588,-0.136463867192 +8.774,1.96234203504,-0.136480833626 +8.775,1.96220553726,-0.136497787233 +8.776,1.96206902253,-0.13651472829 +8.777,1.96193249087,-0.136531657071 +8.778,1.9617959423,-0.136548573844 +8.779,1.96165937682,-0.136565478873 +8.78,1.96152279444,-0.13658237242 +8.781,1.96138619519,-0.13659925474 +8.782,1.96124957906,-0.136616126088 +8.783,1.96111294608,-0.136632986713 +8.784,1.96097629624,-0.136649836861 +8.785,1.96083962956,-0.136666676774 +8.786,1.96070294606,-0.13668350669 +8.787,1.96056624573,-0.136700326845 +8.788,1.96042952859,-0.136717137471 +8.789,1.96029279465,-0.136733938795 +8.79,1.96015604392,-0.136750731044 +8.791,1.96001927641,-0.136767514438 +8.792,1.95988249212,-0.136784289195 +8.793,1.95974569106,-0.136801055533 +8.794,1.95960887325,-0.136817813661 +8.795,1.95947203869,-0.13683456379 +8.796,1.95933518738,-0.136851306126 +8.797,1.95919831934,-0.13686804087 +8.798,1.95906143457,-0.136884768225 +8.799,1.95892453308,-0.136901488385 +8.8,1.95878761488,-0.136918201547 +8.801,1.95865067997,-0.136934907901 +8.802,1.95851372837,-0.136951607635 +8.803,1.95837676006,-0.136968300937 +8.804,1.95823977508,-0.136984987988 +8.805,1.95810277341,-0.13700166897 +8.806,1.95796575506,-0.13701834406 +8.807,1.95782872005,-0.137035013433 +8.808,1.95769166837,-0.137051677263 +8.809,1.95755460004,-0.13706833572 +8.81,1.95741751505,-0.137084988971 +8.811,1.95728041341,-0.137101637182 +8.812,1.95714329513,-0.137118280516 +8.813,1.95700616021,-0.137134919133 +8.814,1.95686900866,-0.137151553192 +8.815,1.95673184048,-0.137168182848 +8.816,1.95659465567,-0.137184808257 +8.817,1.95645745424,-0.137201429568 +8.818,1.95632023619,-0.137218046932 +8.819,1.95618300153,-0.137234660495 +8.82,1.95604575026,-0.137251270403 +8.821,1.95590848238,-0.137267876799 +8.822,1.9557711979,-0.137284479823 +8.823,1.95563389682,-0.137301079615 +8.824,1.95549657915,-0.137317676311 +8.825,1.95535924488,-0.137334270047 +8.826,1.95522189402,-0.137350860955 +8.827,1.95508452657,-0.137367449166 +8.828,1.95494714253,-0.13738403481 +8.829,1.95480974191,-0.137400618014 +8.83,1.95467232472,-0.137417198904 +8.831,1.95453489094,-0.137433777603 +8.832,1.95439744058,-0.137450354233 +8.833,1.95425997365,-0.137466928915 +8.834,1.95412249015,-0.137483501767 +8.835,1.95398499008,-0.137500072905 +8.836,1.95384747344,-0.137516642446 +8.837,1.95370994023,-0.137533210502 +8.838,1.95357239045,-0.137549777185 +8.839,1.95343482411,-0.137566342606 +8.84,1.9532972412,-0.137582906874 +8.841,1.95315964173,-0.137599470095 +8.842,1.9530220257,-0.137616032376 +8.843,1.9528843931,-0.13763259382 +8.844,1.95274674395,-0.13764915453 +8.845,1.95260907823,-0.137665714607 +8.846,1.95247139596,-0.137682274152 +8.847,1.95233369713,-0.137698833262 +8.848,1.95219598174,-0.137715392034 +8.849,1.95205824978,-0.137731950565 +8.85,1.95192050128,-0.137748508948 +8.851,1.95178273621,-0.137765067277 +8.852,1.95164495458,-0.137781625643 +8.853,1.9515071564,-0.137798184136 +8.854,1.95136934166,-0.137814742845 +8.855,1.95123151035,-0.137831301859 +8.856,1.95109366249,-0.137847861264 +8.857,1.95095579807,-0.137864421145 +8.858,1.95081791709,-0.137880981586 +8.859,1.95068001955,-0.137897542671 +8.86,1.95054210544,-0.137914104481 +8.861,1.95040417478,-0.137930667097 +8.862,1.95026622755,-0.137947230599 +8.863,1.95012826375,-0.137963795064 +8.864,1.94999028339,-0.137980360571 +8.865,1.94985228646,-0.137996927196 +8.866,1.94971427297,-0.138013495013 +8.867,1.9495762429,-0.138030064097 +8.868,1.94943819627,-0.138046634522 +8.869,1.94930013306,-0.138063206359 +8.87,1.94916205328,-0.138079779679 +8.871,1.94902395693,-0.138096354553 +8.872,1.948885844,-0.13811293105 +8.873,1.94874771449,-0.138129509238 +8.874,1.9486095684,-0.138146089184 +8.875,1.94847140573,-0.138162670955 +8.876,1.94833322647,-0.138179254615 +8.877,1.94819503063,-0.138195840231 +8.878,1.9480568182,-0.138212427865 +8.879,1.94791858919,-0.13822901758 +8.88,1.94778034358,-0.138245609437 +8.881,1.94764208137,-0.138262203499 +8.882,1.94750380257,-0.138278799826 +8.883,1.94736550718,-0.138295398476 +8.884,1.94722719518,-0.138311999508 +8.885,1.94708886657,-0.138328602981 +8.886,1.94695052136,-0.13834520895 +8.887,1.94681215955,-0.138361817473 +8.888,1.94667378112,-0.138378428606 +8.889,1.94653538608,-0.138395042401 +8.89,1.94639697442,-0.138411658915 +8.891,1.94625854614,-0.138428278199 +8.892,1.94612010124,-0.138444900307 +8.893,1.94598163971,-0.13846152529 +8.894,1.94584316156,-0.138478153199 +8.895,1.94570466678,-0.138494784086 +8.896,1.94556615536,-0.138511417999 +8.897,1.9454276273,-0.138528054988 +8.898,1.94528908261,-0.138544695101 +8.899,1.94515052127,-0.138561338386 +8.9,1.94501194328,-0.13857798489 +8.901,1.94487334865,-0.13859463466 +8.902,1.94473473736,-0.138611287741 +8.903,1.94459610942,-0.13862794418 +8.904,1.94445746481,-0.13864460402 +8.905,1.94431880355,-0.138661267306 +8.906,1.94418012561,-0.138677934082 +8.907,1.94404143101,-0.138694604389 +8.908,1.94390271973,-0.138711278271 +8.909,1.94376399177,-0.13872795577 +8.91,1.94362524714,-0.138744636927 +8.911,1.94348648582,-0.138761321782 +8.912,1.94334770781,-0.138778010376 +8.913,1.9432089131,-0.138794702748 +8.914,1.9430701017,-0.138811398938 +8.915,1.9429312736,-0.138828098984 +8.916,1.9427924288,-0.138844802924 +8.917,1.94265356729,-0.138861510797 +8.918,1.94251468907,-0.138878222639 +8.919,1.94237579413,-0.138894938487 +8.92,1.94223688247,-0.138911658377 +8.921,1.94209795409,-0.138928382345 +8.922,1.94195900898,-0.138945110426 +8.923,1.94182004714,-0.138961842656 +8.924,1.94168106856,-0.138978579068 +8.925,1.94154207324,-0.138995319696 +8.926,1.94140306117,-0.139012064574 +8.927,1.94126403236,-0.139028813736 +8.928,1.94112498679,-0.139045567213 +8.929,1.94098592447,-0.139062325038 +8.93,1.94084684538,-0.139079087244 +8.931,1.94070774953,-0.13909585386 +8.932,1.9405686369,-0.139112624919 +8.933,1.9404295075,-0.139129400451 +8.934,1.94029036132,-0.139146180487 +8.935,1.94015119835,-0.139162965056 +8.936,1.9400120186,-0.139179754188 +8.937,1.93987282205,-0.139196547912 +8.938,1.93973360871,-0.139213346256 +8.939,1.93959437856,-0.13923014925 +8.94,1.9394551316,-0.139246956922 +8.941,1.93931586783,-0.139263769299 +8.942,1.93917658724,-0.139280586408 +8.943,1.93903728984,-0.139297408277 +8.944,1.9388979756,-0.139314234933 +8.945,1.93875864453,-0.139331066401 +8.946,1.93861929663,-0.139347902709 +8.947,1.93847993189,-0.139364743881 +8.948,1.9383405503,-0.139381589943 +8.949,1.93820115186,-0.139398440921 +8.95,1.93806173656,-0.13941529684 +8.951,1.9379223044,-0.139432157723 +8.952,1.93778285538,-0.139449023596 +8.953,1.93764338948,-0.139465894481 +8.954,1.93750390671,-0.139482770404 +8.955,1.93736440706,-0.139499651387 +8.956,1.93722489053,-0.139516537454 +8.957,1.9370853571,-0.139533428626 +8.958,1.93694580677,-0.139550324928 +8.959,1.93680623955,-0.139567226381 +8.96,1.93666665541,-0.139584133008 +8.961,1.93652705437,-0.13960104483 +8.962,1.93638743641,-0.139617961869 +8.963,1.93624780152,-0.139634884145 +8.964,1.93610814971,-0.139651811682 +8.965,1.93596848097,-0.139668744498 +8.966,1.93582879528,-0.139685682615 +8.967,1.93568909266,-0.139702626053 +8.968,1.93554937308,-0.139719574832 +8.969,1.93540963655,-0.139736528972 +8.97,1.93526988306,-0.139753488493 +8.971,1.93513011261,-0.139770453415 +8.972,1.93499032519,-0.139787423756 +8.973,1.93485052079,-0.139804399536 +8.974,1.93471069941,-0.139821380773 +8.975,1.93457086104,-0.139838367486 +8.976,1.93443100568,-0.139855359693 +8.977,1.93429113332,-0.139872357413 +8.978,1.93415124396,-0.139889360664 +8.979,1.93401133759,-0.139906369463 +8.98,1.93387141421,-0.139923383829 +8.981,1.9337314738,-0.139940403778 +8.982,1.93359151638,-0.139957429327 +8.983,1.93345154191,-0.139974460495 +8.984,1.93331155042,-0.139991497297 +8.985,1.93317154188,-0.140008539751 +8.986,1.93303151629,-0.140025587873 +8.987,1.93289147365,-0.140042641679 +8.988,1.93275141395,-0.140059701185 +8.989,1.93261133718,-0.140076766408 +8.99,1.93247124334,-0.140093837363 +8.991,1.93233113243,-0.140110914067 +8.992,1.93219100443,-0.140127996533 +8.993,1.93205085935,-0.140145084779 +8.994,1.93191069717,-0.140162178819 +8.995,1.93177051789,-0.140179278668 +8.996,1.93163032151,-0.140196384341 +8.997,1.93149010801,-0.140213495853 +8.998,1.9313498774,-0.140230613218 +8.999,1.93120962966,-0.140247736451 +9.,1.93106936479,-0.140264865567 +9.001,1.93092908279,-0.140282000579 +9.002,1.93078878365,-0.140299141501 +9.003,1.93064846736,-0.140316288347 +9.004,1.93050813392,-0.140333441132 +9.005,1.93036778332,-0.140350599868 +9.006,1.93022741556,-0.140367764569 +9.007,1.93008703062,-0.140384935249 +9.008,1.92994662851,-0.140402111921 +9.009,1.92980620922,-0.140419294597 +9.01,1.92966577273,-0.140436483292 +9.011,1.92952531906,-0.140453678017 +9.012,1.92938484818,-0.140470878786 +9.013,1.92924436009,-0.140488085611 +9.014,1.92910385479,-0.140505298505 +9.015,1.92896333228,-0.14052251748 +9.016,1.92882279253,-0.140539742548 +9.017,1.92868223556,-0.140556973722 +9.018,1.92854166135,-0.140574211014 +9.019,1.92840106989,-0.140591454435 +9.02,1.92826046119,-0.140608703998 +9.021,1.92811983523,-0.140625959714 +9.022,1.92797919201,-0.140643221595 +9.023,1.92783853152,-0.140660489653 +9.024,1.92769785375,-0.140677763898 +9.025,1.92755715871,-0.140695044343 +9.026,1.92741644638,-0.140712330998 +9.027,1.92727571676,-0.140729623875 +9.028,1.92713496983,-0.140746922985 +9.029,1.9269942056,-0.140764228339 +9.03,1.92685342406,-0.140781539948 +9.031,1.92671262521,-0.140798857822 +9.032,1.92657180902,-0.140816181972 +9.033,1.92643097551,-0.140833512409 +9.034,1.92629012466,-0.140850849143 +9.035,1.92614925647,-0.140868192185 +9.036,1.92600837093,-0.140885541546 +9.037,1.92586746803,-0.140902897235 +9.038,1.92572654777,-0.140920259262 +9.039,1.92558561015,-0.140937627639 +9.04,1.92544465514,-0.140955002374 +9.041,1.92530368276,-0.140972383478 +9.042,1.92516269299,-0.140989770961 +9.043,1.92502168582,-0.141007164833 +9.044,1.92488066126,-0.141024565103 +9.045,1.92473961929,-0.141041971781 +9.046,1.9245985599,-0.141059384877 +9.047,1.9244574831,-0.1410768044 +9.048,1.92431638887,-0.141094230359 +9.049,1.9241752772,-0.141111662765 +9.05,1.9240341481,-0.141129101626 +9.051,1.92389300156,-0.141146546952 +9.052,1.92375183756,-0.141163998751 +9.053,1.9236106561,-0.141181457034 +9.054,1.92346945718,-0.141198921809 +9.055,1.92332824079,-0.141216393085 +9.056,1.92318700691,-0.141233870871 +9.057,1.92304575556,-0.141251355176 +9.058,1.92290448671,-0.141268846009 +9.059,1.92276320037,-0.141286343378 +9.06,1.92262189652,-0.141303847293 +9.061,1.92248057516,-0.141321357761 +9.062,1.92233923629,-0.141338874793 +9.063,1.92219787989,-0.141356398395 +9.064,1.92205650596,-0.141373928578 +9.065,1.9219151145,-0.141391465348 +9.066,1.92177370549,-0.141409008715 +9.067,1.92163227893,-0.141426558686 +9.068,1.92149083481,-0.141444115271 +9.069,1.92134937314,-0.141461678478 +9.07,1.92120789389,-0.141479248313 +9.071,1.92106639706,-0.141496824787 +9.072,1.92092488266,-0.141514407906 +9.073,1.92078335066,-0.14153199768 +9.074,1.92064180106,-0.141549594115 +9.075,1.92050023387,-0.14156719722 +9.076,1.92035864906,-0.141584807003 +9.077,1.92021704664,-0.141602423472 +9.078,1.92007542659,-0.141620046634 +9.079,1.91993378891,-0.141637676497 +9.08,1.9197921336,-0.14165531307 +9.081,1.91965046064,-0.141672956359 +9.082,1.91950877004,-0.141690606372 +9.083,1.91936706177,-0.141708263118 +9.084,1.91922533585,-0.141725926603 +9.085,1.91908359225,-0.141743596835 +9.086,1.91894183098,-0.141761273822 +9.087,1.91880005202,-0.141778957572 +9.088,1.91865825537,-0.14179664809 +9.089,1.91851644103,-0.141814345386 +9.09,1.91837460898,-0.141832049466 +9.091,1.91823275922,-0.141849760338 +9.092,1.91809089174,-0.141867478009 +9.093,1.91794900654,-0.141885202486 +9.094,1.9178071036,-0.141902933776 +9.095,1.91766518293,-0.141920671887 +9.096,1.91752324451,-0.141938416826 +9.097,1.91738128834,-0.1419561686 +9.098,1.91723931442,-0.141973927216 +9.099,1.91709732272,-0.141991692681 +9.1,1.91695531326,-0.142009465002 +9.101,1.91681328601,-0.142027244187 +9.102,1.91667124098,-0.142045030241 +9.103,1.91652917816,-0.142062823173 +9.104,1.91638709754,-0.142080622988 +9.105,1.91624499911,-0.142098429695 +9.106,1.91610288287,-0.142116243299 +9.107,1.9159607488,-0.142134063808 +9.108,1.91581859691,-0.142151891229 +9.109,1.91567642718,-0.142169725567 +9.11,1.91553423962,-0.142187566831 +9.111,1.9153920342,-0.142205415026 +9.112,1.91524981093,-0.14222327016 +9.113,1.9151075698,-0.142241132238 +9.114,1.9149653108,-0.142259001269 +9.115,1.91482303392,-0.142276877258 +9.116,1.91468073916,-0.142294760212 +9.117,1.91453842651,-0.142312650138 +9.118,1.91439609596,-0.142330547042 +9.119,1.91425374751,-0.142348450931 +9.12,1.91411138115,-0.142366361811 +9.121,1.91396899687,-0.142384279688 +9.122,1.91382659467,-0.14240220457 +9.123,1.91368417453,-0.142420136463 +9.124,1.91354173646,-0.142438075373 +9.125,1.91339928043,-0.142456021307 +9.126,1.91325680646,-0.142473974271 +9.127,1.91311431453,-0.142491934271 +9.128,1.91297180462,-0.142509901314 +9.129,1.91282927675,-0.142527875406 +9.13,1.91268673089,-0.142545856553 +9.131,1.91254416705,-0.142563844763 +9.132,1.91240158521,-0.14258184004 +9.133,1.91225898537,-0.142599842392 +9.134,1.91211636751,-0.142617851824 +9.135,1.91197373165,-0.142635868344 +9.136,1.91183107775,-0.142653891956 +9.137,1.91168840583,-0.142671922668 +9.138,1.91154571587,-0.142689960485 +9.139,1.91140300786,-0.142708005414 +9.14,1.91126028181,-0.142726057461 +9.141,1.91111753769,-0.142744116632 +9.142,1.91097477551,-0.142762182933 +9.143,1.91083199525,-0.142780256371 +9.144,1.91068919691,-0.142798336951 +9.145,1.91054638049,-0.142816424679 +9.146,1.91040354597,-0.142834519562 +9.147,1.91026069335,-0.142852621606 +9.148,1.91011782262,-0.142870730817 +9.149,1.90997493377,-0.1428888472 +9.15,1.9098320268,-0.142906970762 +9.151,1.9096891017,-0.142925101509 +9.152,1.90954615846,-0.142943239447 +9.153,1.90940319707,-0.142961384582 +9.154,1.90926021754,-0.142979536919 +9.155,1.90911721984,-0.142997696466 +9.156,1.90897420398,-0.143015863227 +9.157,1.90883116994,-0.143034037209 +9.158,1.90868811772,-0.143052218418 +9.159,1.90854504732,-0.143070406859 +9.16,1.90840195871,-0.143088602539 +9.161,1.90825885191,-0.143106805463 +9.162,1.90811572689,-0.143125015638 +9.163,1.90797258366,-0.143143233069 +9.164,1.9078294222,-0.143161457762 +9.165,1.90768624251,-0.143179689723 +9.166,1.90754304458,-0.143197928958 +9.167,1.90739982841,-0.143216175473 +9.168,1.90725659398,-0.143234429273 +9.169,1.90711334129,-0.143252690365 +9.17,1.90697007033,-0.143270958754 +9.171,1.90682678109,-0.143289234446 +9.172,1.90668347358,-0.143307517447 +9.173,1.90654014777,-0.143325807763 +9.174,1.90639680366,-0.143344105399 +9.175,1.90625344125,-0.143362410362 +9.176,1.90611006053,-0.143380722657 +9.177,1.90596666149,-0.14339904229 +9.178,1.90582324412,-0.143417369266 +9.179,1.90567980842,-0.143435703592 +9.18,1.90553635437,-0.143454045274 +9.181,1.90539288198,-0.143472394316 +9.182,1.90524939122,-0.143490750725 +9.183,1.90510588211,-0.143509114506 +9.184,1.90496235462,-0.143527485666 +9.185,1.90481880876,-0.143545864209 +9.186,1.90467524451,-0.143564250142 +9.187,1.90453166187,-0.143582643471 +9.188,1.90438806082,-0.143601044201 +9.189,1.90424444137,-0.143619452337 +9.19,1.9041008035,-0.143637867886 +9.191,1.90395714721,-0.143656290854 +9.192,1.90381347249,-0.143674721245 +9.193,1.90366977933,-0.143693159066 +9.194,1.90352606773,-0.143711604322 +9.195,1.90338233767,-0.143730057019 +9.196,1.90323858915,-0.143748517163 +9.197,1.90309482217,-0.14376698476 +9.198,1.90295103671,-0.143785459814 +9.199,1.90280723277,-0.143803942332 +9.2,1.90266341033,-0.143822432319 +9.201,1.9025195694,-0.143840929782 +9.202,1.90237570997,-0.143859434725 +9.203,1.90223183202,-0.143877947154 +9.204,1.90208793555,-0.143896467076 +9.205,1.90194402056,-0.143914994495 +9.206,1.90180008703,-0.143933529418 +9.207,1.90165613496,-0.143952071849 +9.208,1.90151216434,-0.143970621795 +9.209,1.90136817516,-0.143989179262 +9.21,1.90122416741,-0.144007744254 +9.211,1.9010801411,-0.144026316777 +9.212,1.9009360962,-0.144044896838 +9.213,1.90079203272,-0.144063484442 +9.214,1.90064795064,-0.144082079594 +9.215,1.90050384995,-0.1441006823 +9.216,1.90035973066,-0.144119292566 +9.217,1.90021559275,-0.144137910397 +9.218,1.90007143621,-0.144156535799 +9.219,1.89992726105,-0.144175168777 +9.22,1.89978306724,-0.144193809338 +9.221,1.89963885478,-0.144212457486 +9.222,1.89949462367,-0.144231113228 +9.223,1.89935037389,-0.144249776568 +9.224,1.89920610544,-0.144268447514 +9.225,1.89906181832,-0.144287126069 +9.226,1.8989175125,-0.14430581224 +9.227,1.898773188,-0.144324506033 +9.228,1.89862884479,-0.144343207453 +9.229,1.89848448287,-0.144361916506 +9.23,1.89834010224,-0.144380633196 +9.231,1.89819570288,-0.144399357531 +9.232,1.89805128479,-0.144418089515 +9.233,1.89790684796,-0.144436829155 +9.234,1.89776239239,-0.144455576455 +9.235,1.89761791806,-0.144474331421 +9.236,1.89747342496,-0.144493094059 +9.237,1.8973289131,-0.144511864375 +9.238,1.89718438246,-0.144530642374 +9.239,1.89703983303,-0.144549428062 +9.24,1.89689526481,-0.144568221444 +9.241,1.89675067778,-0.144587022526 +9.242,1.89660607195,-0.144605831314 +9.243,1.8964614473,-0.144624647812 +9.244,1.89631680383,-0.144643472028 +9.245,1.89617214153,-0.144662303966 +9.246,1.89602746038,-0.144681143632 +9.247,1.89588276039,-0.144699991032 +9.248,1.89573804155,-0.144718846171 +9.249,1.89559330384,-0.144737709055 +9.25,1.89544854726,-0.14475657969 +9.251,1.8953037718,-0.14477545808 +9.252,1.89515897746,-0.144794344232 +9.253,1.89501416422,-0.144813238152 +9.254,1.89486933208,-0.144832139844 +9.255,1.89472448103,-0.144851049316 +9.256,1.89457961106,-0.144869966571 +9.257,1.89443472217,-0.144888891616 +9.258,1.89428981435,-0.144907824457 +9.259,1.89414488758,-0.144926765099 +9.26,1.89399994187,-0.144945713547 +9.261,1.8938549772,-0.144964669808 +9.262,1.89370999356,-0.144983633887 +9.263,1.89356499096,-0.145002605789 +9.264,1.89341996937,-0.14502158552 +9.265,1.8932749288,-0.145040573087 +9.266,1.89312986923,-0.145059568494 +9.267,1.89298479066,-0.145078571747 +9.268,1.89283969308,-0.145097582852 +9.269,1.89269457648,-0.145116601815 +9.27,1.89254944085,-0.14513562864 +9.271,1.89240428618,-0.145154663334 +9.272,1.89225911248,-0.145173705903 +9.273,1.89211391972,-0.145192756352 +9.274,1.89196870791,-0.145211814686 +9.275,1.89182347703,-0.145230880912 +9.276,1.89167822707,-0.145249955034 +9.277,1.89153295803,-0.14526903706 +9.278,1.89138766991,-0.145288126994 +9.279,1.89124236268,-0.145307224841 +9.28,1.89109703635,-0.145326330609 +9.281,1.89095169091,-0.145345444302 +9.282,1.89080632634,-0.145364565925 +9.283,1.89066094264,-0.145383695486 +9.284,1.89051553981,-0.145402832989 +9.285,1.89037011783,-0.14542197844 +9.286,1.8902246767,-0.145441131845 +9.287,1.89007921641,-0.145460293209 +9.288,1.88993373695,-0.145479462538 +9.289,1.88978823831,-0.145498639838 +9.29,1.88964272048,-0.145517825115 +9.291,1.88949718346,-0.145537018374 +9.292,1.88935162724,-0.145556219621 +9.293,1.88920605181,-0.145575428861 +9.294,1.88906045717,-0.145594646101 +9.295,1.8889148433,-0.145613871346 +9.296,1.88876921019,-0.145633104601 +9.297,1.88862355785,-0.145652345874 +9.298,1.88847788625,-0.145671595168 +9.299,1.8883321954,-0.14569085249 +9.3,1.88818648528,-0.145710117846 +9.301,1.88804075589,-0.145729391241 +9.302,1.88789500722,-0.145748672682 +9.303,1.88774923925,-0.145767962173 +9.304,1.88760345199,-0.145787259721 +9.305,1.88745764543,-0.145806565331 +9.306,1.88731181955,-0.14582587901 +9.307,1.88716597435,-0.145845200762 +9.308,1.88702010982,-0.145864530594 +9.309,1.88687422595,-0.145883868511 +9.31,1.88672832274,-0.14590321452 +9.311,1.88658240017,-0.145922568625 +9.312,1.88643645824,-0.145941930833 +9.313,1.88629049694,-0.145961301149 +9.314,1.88614451626,-0.14598067958 +9.315,1.88599851619,-0.146000066131 +9.316,1.88585249673,-0.146019460807 +9.317,1.88570645787,-0.146038863615 +9.318,1.88556039959,-0.146058274561 +9.319,1.8854143219,-0.146077693649 +9.32,1.88526822478,-0.146097120887 +9.321,1.88512210822,-0.146116556279 +9.322,1.88497597222,-0.146135999832 +9.323,1.88482981677,-0.146155451552 +9.324,1.88468364186,-0.146174911443 +9.325,1.88453744748,-0.146194379513 +9.326,1.88439123362,-0.146213855766 +9.327,1.88424500028,-0.14623334021 +9.328,1.88409874745,-0.146252832848 +9.329,1.88395247512,-0.146272333689 +9.33,1.88380618327,-0.146291842736 +9.331,1.88365987191,-0.146311359996 +9.332,1.88351354103,-0.146330885476 +9.333,1.88336719061,-0.14635041918 +9.334,1.88322082065,-0.146369961115 +9.335,1.88307443114,-0.146389511286 +9.336,1.88292802207,-0.146409069699 +9.337,1.88278159343,-0.146428636361 +9.338,1.88263514522,-0.146448211277 +9.339,1.88248867742,-0.146467794453 +9.34,1.88234219004,-0.146487385895 +9.341,1.88219568305,-0.146506985608 +9.342,1.88204915646,-0.1465265936 +9.343,1.88190261025,-0.146546209875 +9.344,1.88175604441,-0.146565834439 +9.345,1.88160945895,-0.146585467298 +9.346,1.88146285384,-0.146605108459 +9.347,1.88131622908,-0.146624757927 +9.348,1.88116958466,-0.146644415709 +9.349,1.88102292058,-0.146664081809 +9.35,1.88087623683,-0.146683756234 +9.351,1.88072953339,-0.14670343899 +9.352,1.88058281026,-0.146723130083 +9.353,1.88043606743,-0.146742829519 +9.354,1.88028930489,-0.146762537304 +9.355,1.88014252264,-0.146782253443 +9.356,1.87999572066,-0.146801977943 +9.357,1.87984889895,-0.14682171081 +9.358,1.8797020575,-0.146841452049 +9.359,1.87955519629,-0.146861201667 +9.36,1.87940831534,-0.146880959669 +9.361,1.87926141461,-0.146900726062 +9.362,1.87911449411,-0.146920500851 +9.363,1.87896755382,-0.146940284043 +9.364,1.87882059375,-0.146960075644 +9.365,1.87867361387,-0.146979875659 +9.366,1.87852661419,-0.146999684094 +9.367,1.87837959469,-0.147019500956 +9.368,1.87823255536,-0.147039326251 +9.369,1.8780854962,-0.147059159984 +9.37,1.8779384172,-0.147079002162 +9.371,1.87779131835,-0.14709885279 +9.372,1.87764419963,-0.147118711875 +9.373,1.87749706106,-0.147138579423 +9.374,1.8773499026,-0.14715845544 +9.375,1.87720272426,-0.147178339931 +9.376,1.87705552603,-0.147198232904 +9.377,1.87690830789,-0.147218134363 +9.378,1.87676106985,-0.147238044316 +9.379,1.87661381189,-0.147257962767 +9.38,1.876466534,-0.147277889724 +9.381,1.87631923617,-0.147297825192 +9.382,1.8761719184,-0.147317769177 +9.383,1.87602458068,-0.147337721686 +9.384,1.875877223,-0.147357682724 +9.385,1.87572984534,-0.147377652298 +9.386,1.87558244771,-0.147397630414 +9.387,1.8754350301,-0.147417617077 +9.388,1.87528759249,-0.147437612295 +9.389,1.87514013487,-0.147457616073 +9.39,1.87499265724,-0.147477628417 +9.391,1.87484515959,-0.147497649334 +9.392,1.87469764191,-0.147517678829 +9.393,1.8745501042,-0.147537716908 +9.394,1.87440254643,-0.147557763579 +9.395,1.87425496861,-0.147577818847 +9.396,1.87410737073,-0.147597882718 +9.397,1.87395975278,-0.147617955198 +9.398,1.87381211474,-0.147638036294 +9.399,1.87366445661,-0.147658126011 +9.4,1.87351677839,-0.147678224356 +9.401,1.87336908006,-0.147698331336 +9.402,1.87322136161,-0.147718446956 +9.403,1.87307362304,-0.147738571222 +9.404,1.87292586433,-0.147758704141 +9.405,1.87277808549,-0.147778845719 +9.406,1.87263028649,-0.147798995962 +9.407,1.87248246734,-0.147819154877 +9.408,1.87233462802,-0.147839322469 +9.409,1.87218676852,-0.147859498745 +9.41,1.87203888883,-0.147879683711 +9.411,1.87189098896,-0.147899877373 +9.412,1.87174306888,-0.147920079738 +9.413,1.87159512859,-0.147940290812 +9.414,1.87144716807,-0.147960510601 +9.415,1.87129918734,-0.147980739111 +9.416,1.87115118636,-0.14800097635 +9.417,1.87100316514,-0.148021222322 +9.418,1.87085512366,-0.148041477034 +9.419,1.87070706192,-0.148061740493 +9.42,1.87055897991,-0.148082012705 +9.421,1.87041087761,-0.148102293675 +9.422,1.87026275503,-0.148122583412 +9.423,1.87011461215,-0.14814288192 +9.424,1.86996644896,-0.148163189206 +9.425,1.86981826545,-0.148183505277 +9.426,1.86967006162,-0.148203830138 +9.427,1.86952183746,-0.148224163797 +9.428,1.86937359295,-0.148244506259 +9.429,1.8692253281,-0.148264857531 +9.43,1.86907704288,-0.148285217619 +9.431,1.86892873729,-0.14830558653 +9.432,1.86878041133,-0.14832596427 +9.433,1.86863206498,-0.148346350845 +9.434,1.86848369823,-0.148366746261 +9.435,1.86833531108,-0.148387150526 +9.436,1.86818690352,-0.148407563645 +9.437,1.86803847553,-0.148427985625 +9.438,1.86789002711,-0.148448416473 +9.439,1.86774155826,-0.148468856194 +9.44,1.86759306895,-0.148489304795 +9.441,1.86744455919,-0.148509762283 +9.442,1.86729602896,-0.148530228664 +9.443,1.86714747826,-0.148550703944 +9.444,1.86699890707,-0.14857118813 +9.445,1.86685031539,-0.148591681228 +9.446,1.86670170321,-0.148612183246 +9.447,1.86655307051,-0.148632694188 +9.448,1.8664044173,-0.148653214062 +9.449,1.86625574355,-0.148673742874 +9.45,1.86610704927,-0.148694280631 +9.451,1.86595833445,-0.14871482734 +9.452,1.86580959906,-0.148735383005 +9.453,1.86566084312,-0.148755947635 +9.454,1.86551206659,-0.148776521236 +9.455,1.86536326949,-0.148797103814 +9.456,1.8652144518,-0.148817695375 +9.457,1.8650656135,-0.148838295927 +9.458,1.86491675459,-0.148858905476 +9.459,1.86476787507,-0.148879524027 +9.46,1.86461897492,-0.148900151589 +9.461,1.86447005413,-0.148920788167 +9.462,1.8643211127,-0.148941433768 +9.463,1.86417215061,-0.148962088398 +9.464,1.86402316786,-0.148982752065 +9.465,1.86387416443,-0.149003424774 +9.466,1.86372514032,-0.149024106532 +9.467,1.86357609553,-0.149044797347 +9.468,1.86342703003,-0.149065497223 +9.469,1.86327794382,-0.149086206169 +9.47,1.8631288369,-0.14910692419 +9.471,1.86297970925,-0.149127651294 +9.472,1.86283056086,-0.149148387486 +9.473,1.86268139173,-0.149169132774 +9.474,1.86253220184,-0.149189887164 +9.475,1.86238299119,-0.149210650663 +9.476,1.86223375977,-0.149231423277 +9.477,1.86208450756,-0.149252205013 +9.478,1.86193523457,-0.149272995878 +9.479,1.86178594077,-0.149293795879 +9.48,1.86163662617,-0.149314605021 +9.481,1.86148729074,-0.149335423312 +9.482,1.86133793449,-0.149356250759 +9.483,1.8611885574,-0.149377087367 +9.484,1.86103915947,-0.149397933145 +9.485,1.86088974068,-0.149418788098 +9.486,1.86074030103,-0.149439652233 +9.487,1.8605908405,-0.149460525558 +9.488,1.8604413591,-0.149481408077 +9.489,1.8602918568,-0.1495022998 +9.49,1.8601423336,-0.149523200731 +9.491,1.85999278949,-0.149544110879 +9.492,1.85984322445,-0.149565030249 +9.493,1.8596936385,-0.149585958848 +9.494,1.8595440316,-0.149606896684 +9.495,1.85939440376,-0.149627843762 +9.496,1.85924475496,-0.149648800091 +9.497,1.85909508519,-0.149669765676 +9.498,1.85894539445,-0.149690740524 +9.499,1.85879568272,-0.149711724642 +9.5,1.85864595001,-0.149732718037 +9.501,1.85849619629,-0.149753720716 +9.502,1.85834642155,-0.149774732685 +9.503,1.8581966258,-0.149795753952 +9.504,1.85804680901,-0.149816784523 +9.505,1.85789697119,-0.149837824405 +9.506,1.85774711232,-0.149858873605 +9.507,1.85759723238,-0.149879932129 +9.508,1.85744733138,-0.149900999986 +9.509,1.85729740931,-0.14992207718 +9.51,1.85714746614,-0.14994316372 +9.511,1.85699750188,-0.149964259612 +9.512,1.85684751652,-0.149985364864 +9.513,1.85669751004,-0.150006479481 +9.514,1.85654748244,-0.150027603471 +9.515,1.8563974337,-0.150048736841 +9.516,1.85624736382,-0.150069879598 +9.517,1.85609727279,-0.150091031748 +9.518,1.85594716059,-0.150112193299 +9.519,1.85579702723,-0.150133364258 +9.52,1.85564687269,-0.150154544631 +9.521,1.85549669695,-0.150175734425 +9.522,1.85534650002,-0.150196933648 +9.523,1.85519628188,-0.150218142306 +9.524,1.85504604252,-0.150239360406 +9.525,1.85489578193,-0.150260587955 +9.526,1.8547455001,-0.150281824961 +9.527,1.85459519703,-0.15030307143 +9.528,1.8544448727,-0.150324327369 +9.529,1.85429452711,-0.150345592786 +9.53,1.85414416024,-0.150366867687 +9.531,1.85399377209,-0.150388152079 +9.532,1.85384336264,-0.150409445969 +9.533,1.8536929319,-0.150430749365 +9.534,1.85354247983,-0.150452062273 +9.535,1.85339200645,-0.1504733847 +9.536,1.85324151173,-0.150494716654 +9.537,1.85309099567,-0.150516058142 +9.538,1.85294045826,-0.15053740917 +9.539,1.85278989949,-0.150558769746 +9.54,1.85263931936,-0.150580139876 +9.541,1.85248871784,-0.150601519569 +9.542,1.85233809493,-0.15062290883 +9.543,1.85218745062,-0.150644307668 +9.544,1.8520367849,-0.150665716088 +9.545,1.85188609777,-0.150687134099 +9.546,1.85173538921,-0.150708561708 +9.547,1.85158465921,-0.150729998921 +9.548,1.85143390776,-0.150751445745 +9.549,1.85128313486,-0.150772902189 +9.55,1.85113234049,-0.150794368258 +9.551,1.85098152465,-0.150815843961 +9.552,1.85083068732,-0.150837329304 +9.553,1.85067982849,-0.150858824295 +9.554,1.85052894817,-0.15088032894 +9.555,1.85037804632,-0.150901843247 +9.556,1.85022712296,-0.150923367223 +9.557,1.85007617805,-0.150944900876 +9.558,1.84992521161,-0.150966444212 +9.559,1.84977422361,-0.150987997239 +9.56,1.84962321405,-0.151009559963 +9.561,1.84947218292,-0.151031132393 +9.562,1.84932113021,-0.151052714536 +9.563,1.8491700559,-0.151074306398 +9.564,1.84901895999,-0.151095907987 +9.565,1.84886784247,-0.15111751931 +9.566,1.84871670333,-0.151139140375 +9.567,1.84856554256,-0.151160771189 +9.568,1.84841436015,-0.151182411758 +9.569,1.84826315609,-0.151204062091 +9.57,1.84811193036,-0.151225722195 +9.571,1.84796068297,-0.151247392077 +9.572,1.8478094139,-0.151269071744 +9.573,1.84765812314,-0.151290761203 +9.574,1.84750681068,-0.151312460463 +9.575,1.84735547651,-0.15133416953 +9.576,1.84720412062,-0.151355888411 +9.577,1.847052743,-0.151377617115 +9.578,1.84690134365,-0.151399355648 +9.579,1.84674992254,-0.151421104017 +9.58,1.84659847968,-0.151442862231 +9.581,1.84644701505,-0.151464630296 +9.582,1.84629552864,-0.15148640822 +9.583,1.84614402045,-0.15150819601 +9.584,1.84599249045,-0.151529993674 +9.585,1.84584093865,-0.15155180122 +9.586,1.84568936503,-0.151573618653 +9.587,1.84553776959,-0.151595445983 +9.588,1.8453861523,-0.151617283216 +9.589,1.84523451317,-0.15163913036 +9.59,1.84508285219,-0.151660987423 +9.591,1.84493116933,-0.151682854411 +9.592,1.8447794646,-0.151704731332 +9.593,1.84462773798,-0.151726618194 +9.594,1.84447598947,-0.151748515004 +9.595,1.84432421905,-0.15177042177 +9.596,1.84417242671,-0.1517923385 +9.597,1.84402061244,-0.151814265199 +9.598,1.84386877624,-0.151836201878 +9.599,1.84371691809,-0.151858148542 +9.6,1.84356503799,-0.151880105199 +9.601,1.84341313592,-0.151902071857 +9.602,1.84326121187,-0.151924048523 +9.603,1.84310926583,-0.151946035206 +9.604,1.8429572978,-0.151968031911 +9.605,1.84280530776,-0.151990038648 +9.606,1.84265329571,-0.152012055424 +9.607,1.84250126162,-0.152034082246 +9.608,1.8423492055,-0.152056119121 +9.609,1.84219712734,-0.152078166058 +9.61,1.84204502711,-0.152100223065 +9.611,1.84189290482,-0.152122290147 +9.612,1.84174076046,-0.152144367314 +9.613,1.841588594,-0.152166454574 +9.614,1.84143640545,-0.152188551932 +9.615,1.84128419479,-0.152210659398 +9.616,1.84113196201,-0.152232776979 +9.617,1.84097970711,-0.152254904682 +9.618,1.84082743007,-0.152277042515 +9.619,1.84067513088,-0.152299190487 +9.62,1.84052280953,-0.152321348604 +9.621,1.84037046601,-0.152343516874 +9.622,1.84021810032,-0.152365695305 +9.623,1.84006571243,-0.152387883905 +9.624,1.83991330235,-0.152410082682 +9.625,1.83976087006,-0.152432291642 +9.626,1.83960841555,-0.152454510795 +9.627,1.83945593881,-0.152476740147 +9.628,1.83930343983,-0.152498979706 +9.629,1.8391509186,-0.152521229481 +9.63,1.83899837511,-0.152543489479 +9.631,1.83884580935,-0.152565759707 +9.632,1.83869322131,-0.152588040174 +9.633,1.83854061098,-0.152610330887 +9.634,1.83838797835,-0.152632631854 +9.635,1.8382353234,-0.152654943083 +9.636,1.83808264614,-0.152677264582 +9.637,1.83792994654,-0.152699596359 +9.638,1.8377772246,-0.152721938421 +9.639,1.83762448031,-0.152744290776 +9.64,1.83747171366,-0.152766653432 +9.641,1.83731892463,-0.152789026397 +9.642,1.83716611322,-0.15281140968 +9.643,1.83701327942,-0.152833803286 +9.644,1.83686042321,-0.152856207226 +9.645,1.83670754459,-0.152878621506 +9.646,1.83655464354,-0.152901046134 +9.647,1.83640172006,-0.152923481118 +9.648,1.83624877414,-0.152945926467 +9.649,1.83609580575,-0.152968382188 +9.65,1.83594281491,-0.152990848289 +9.651,1.83578980158,-0.153013324778 +9.652,1.83563676577,-0.153035811663 +9.653,1.83548370746,-0.153058308952 +9.654,1.83533062664,-0.153080816653 +9.655,1.83517752331,-0.153103334774 +9.656,1.83502439745,-0.153125863323 +9.657,1.83487124904,-0.153148402307 +9.658,1.83471807809,-0.153170951736 +9.659,1.83456488458,-0.153193511616 +9.66,1.8344116685,-0.153216081956 +9.661,1.83425842984,-0.153238662765 +9.662,1.83410516858,-0.153261254049 +9.663,1.83395188473,-0.153283855817 +9.664,1.83379857826,-0.153306468077 +9.665,1.83364524917,-0.153329090838 +9.666,1.83349189744,-0.153351724106 +9.667,1.83333852308,-0.153374367891 +9.668,1.83318512605,-0.1533970222 +9.669,1.83303170637,-0.153419687042 +9.67,1.832878264,-0.153442362424 +9.671,1.83272479896,-0.153465048355 +9.672,1.83257131121,-0.153487744843 +9.673,1.83241780076,-0.153510451896 +9.674,1.83226426759,-0.153533169522 +9.675,1.83211071169,-0.153555897729 +9.676,1.83195713305,-0.153578636526 +9.677,1.83180353167,-0.15360138592 +9.678,1.83164990752,-0.153624145919 +9.679,1.83149626061,-0.153646916533 +9.68,1.83134259091,-0.153669697769 +9.681,1.83118889842,-0.153692489635 +9.682,1.83103518313,-0.15371529214 +9.683,1.83088144502,-0.153738105291 +9.684,1.83072768409,-0.153760929097 +9.685,1.83057390033,-0.153783763567 +9.686,1.83042009372,-0.153806608708 +9.687,1.83026626426,-0.153829464528 +9.688,1.83011241192,-0.153852331037 +9.689,1.82995853672,-0.153875208242 +9.69,1.82980463862,-0.153898096151 +9.691,1.82965071763,-0.153920994773 +9.692,1.82949677372,-0.153943904116 +9.693,1.8293428069,-0.153966824189 +9.694,1.82918881714,-0.153989754999 +9.695,1.82903480445,-0.154012696556 +9.696,1.8288807688,-0.154035648866 +9.697,1.82872671018,-0.15405861194 +9.698,1.8285726286,-0.154081585784 +9.699,1.82841852403,-0.154104570408 +9.7,1.82826439646,-0.15412756582 +9.701,1.82811024589,-0.154150572028 +9.702,1.8279560723,-0.15417358904 +9.703,1.82780187568,-0.154196616866 +9.704,1.82764765603,-0.154219655512 +9.705,1.82749341332,-0.154242704989 +9.706,1.82733914756,-0.154265765303 +9.707,1.82718485872,-0.154288836465 +9.708,1.8270305468,-0.154311918481 +9.709,1.82687621179,-0.154335011361 +9.71,1.82672185368,-0.154358115113 +9.711,1.82656747245,-0.154381229745 +9.712,1.82641306809,-0.154404355266 +9.713,1.8262586406,-0.154427491684 +9.714,1.82610418996,-0.154450639009 +9.715,1.82594971616,-0.154473797248 +9.716,1.8257952192,-0.154496966409 +9.717,1.82564069905,-0.154520146502 +9.718,1.82548615571,-0.154543337535 +9.719,1.82533158917,-0.154566539517 +9.72,1.82517699942,-0.154589752456 +9.721,1.82502238645,-0.15461297636 +9.722,1.82486775023,-0.154636211238 +9.723,1.82471309078,-0.154659457099 +9.724,1.82455840806,-0.154682713952 +9.725,1.82440370208,-0.154705981804 +9.726,1.82424897282,-0.154729260665 +9.727,1.82409422027,-0.154752550543 +9.728,1.82393944442,-0.154775851447 +9.729,1.82378464526,-0.154799163385 +9.73,1.82362982277,-0.154822486367 +9.731,1.82347497695,-0.1548458204 +9.732,1.82332010778,-0.154869165493 +9.733,1.82316521526,-0.154892521655 +9.734,1.82301029937,-0.154915888895 +9.735,1.82285536011,-0.154939267222 +9.736,1.82270039745,-0.154962656644 +9.737,1.82254541139,-0.154986057169 +9.738,1.82239040192,-0.155009468807 +9.739,1.82223536903,-0.155032891566 +9.74,1.82208031271,-0.155056325455 +9.741,1.82192523294,-0.155079770483 +9.742,1.82177012971,-0.155103226658 +9.743,1.82161500302,-0.15512669399 +9.744,1.82145985284,-0.155150172487 +9.745,1.82130467918,-0.155173662157 +9.746,1.82114948202,-0.15519716301 +9.747,1.82099426134,-0.155220675055 +9.748,1.82083901714,-0.155244198299 +9.749,1.82068374941,-0.155267732753 +9.75,1.82052845813,-0.155291278425 +9.751,1.8203731433,-0.155314835323 +9.752,1.82021780489,-0.155338403457 +9.753,1.82006244291,-0.155361982835 +9.754,1.81990705734,-0.155385573466 +9.755,1.81975164816,-0.15540917536 +9.756,1.81959621537,-0.155432788525 +9.757,1.81944075896,-0.155456412969 +9.758,1.81928527891,-0.155480048703 +9.759,1.81912977522,-0.155503695734 +9.76,1.81897424786,-0.155527354072 +9.761,1.81881869684,-0.155551023726 +9.762,1.81866312213,-0.155574704704 +9.763,1.81850752374,-0.155598397016 +9.764,1.81835190164,-0.15562210067 +9.765,1.81819625582,-0.155645815676 +9.766,1.81804058628,-0.155669542042 +9.767,1.817884893,-0.155693279778 +9.768,1.81772917597,-0.155717028892 +9.769,1.81757343518,-0.155740789394 +9.77,1.81741767062,-0.155764561292 +9.771,1.81726188227,-0.155788344596 +9.772,1.81710607014,-0.155812139314 +9.773,1.81695023419,-0.155835945456 +9.774,1.81679437443,-0.155859763031 +9.775,1.81663849083,-0.155883592048 +9.776,1.8164825834,-0.155907432515 +9.777,1.81632665212,-0.155931284442 +9.778,1.81617069697,-0.155955147839 +9.779,1.81601471795,-0.155979022714 +9.78,1.81585871504,-0.156002909076 +9.781,1.81570268823,-0.156026806934 +9.782,1.81554663751,-0.156050716298 +9.783,1.81539056288,-0.156074637177 +9.784,1.81523446431,-0.156098569579 +9.785,1.81507834179,-0.156122513515 +9.786,1.81492219533,-0.156146468993 +9.787,1.81476602489,-0.156170436022 +9.788,1.81460983048,-0.156194414613 +9.789,1.81445361207,-0.156218404773 +9.79,1.81429736966,-0.156242406512 +9.791,1.81414110324,-0.156266419839 +9.792,1.8139848128,-0.156290444764 +9.793,1.81382849832,-0.156314481296 +9.794,1.81367215979,-0.156338529444 +9.795,1.8135157972,-0.156362589218 +9.796,1.81335941054,-0.156386660626 +9.797,1.81320299979,-0.156410743678 +9.798,1.81304656496,-0.156434838383 +9.799,1.81289010601,-0.156458944751 +9.8,1.81273362295,-0.156483062791 +9.801,1.81257711576,-0.156507192512 +9.802,1.81242058442,-0.156531333924 +9.803,1.81226402894,-0.156555487035 +9.804,1.81210744928,-0.156579651856 +9.805,1.81195084546,-0.156603828396 +9.806,1.81179421744,-0.156628016664 +9.807,1.81163756522,-0.156652216669 +9.808,1.81148088879,-0.156676428421 +9.809,1.81132418814,-0.15670065193 +9.81,1.81116746325,-0.156724887204 +9.811,1.81101071412,-0.156749134253 +9.812,1.81085394073,-0.156773393088 +9.813,1.81069714306,-0.156797663716 +9.814,1.81054032112,-0.156821946148 +9.815,1.81038347488,-0.156846240393 +9.816,1.81022660433,-0.15687054646 +9.817,1.81006970947,-0.156894864359 +9.818,1.80991279027,-0.156919194101 +9.819,1.80975584674,-0.156943535693 +9.82,1.80959887885,-0.156967889146 +9.821,1.80944188659,-0.156992254469 +9.822,1.80928486996,-0.157016631671 +9.823,1.80912782894,-0.157041020763 +9.824,1.80897076352,-0.157065421754 +9.825,1.80881367368,-0.157089834654 +9.826,1.80865655942,-0.157114259471 +9.827,1.80849942073,-0.157138696216 +9.828,1.80834225758,-0.157163144899 +9.829,1.80818506998,-0.157187605528 +9.83,1.8080278579,-0.157212078114 +9.831,1.80787062134,-0.157236562666 +9.832,1.80771336028,-0.157261059194 +9.833,1.80755607471,-0.157285567708 +9.834,1.80739876462,-0.157310088217 +9.835,1.80724143,-0.15733462073 +9.836,1.80708407084,-0.157359165259 +9.837,1.80692668711,-0.157383721812 +9.838,1.80676927882,-0.157408290399 +9.839,1.80661184595,-0.157432871029 +9.84,1.80645438849,-0.157457463714 +9.841,1.80629690642,-0.157482068461 +9.842,1.80613939974,-0.157506685282 +9.843,1.80598186842,-0.157531314186 +9.844,1.80582431247,-0.157555955182 +9.845,1.80566673186,-0.157580608281 +9.846,1.80550912658,-0.157605273492 +9.847,1.80535149663,-0.157629950825 +9.848,1.80519384199,-0.15765464029 +9.849,1.80503616265,-0.157679341897 +9.85,1.8048784586,-0.157704055656 +9.851,1.80472072981,-0.157728781576 +9.852,1.80456297629,-0.157753519668 +9.853,1.80440519802,-0.157778269941 +9.854,1.80424739499,-0.157803032405 +9.855,1.80408956718,-0.157827807071 +9.856,1.80393171459,-0.157852593947 +9.857,1.8037738372,-0.157877393045 +9.858,1.80361593499,-0.157902204373 +9.859,1.80345800797,-0.157927027942 +9.86,1.8033000561,-0.157951863762 +9.861,1.80314207939,-0.157976711843 +9.862,1.80298407782,-0.158001572195 +9.863,1.80282605137,-0.158026444828 +9.864,1.80266800004,-0.158051329751 +9.865,1.80250992382,-0.158076226976 +9.866,1.80235182268,-0.158101136511 +9.867,1.80219369662,-0.158126058367 +9.868,1.80203554563,-0.158150992555 +9.869,1.80187736969,-0.158175939083 +9.87,1.80171916879,-0.158200897963 +9.871,1.80156094292,-0.158225869204 +9.872,1.80140269207,-0.158250852816 +9.873,1.80124441622,-0.15827584881 +9.874,1.80108611536,-0.158300857195 +9.875,1.80092778949,-0.158325877983 +9.876,1.80076943857,-0.158350911182 +9.877,1.80061106262,-0.158375956803 +9.878,1.8004526616,-0.158401014856 +9.879,1.80029423552,-0.158426085352 +9.88,1.80013578435,-0.158451168301 +9.881,1.79997730809,-0.158476263712 +9.882,1.79981880671,-0.158501371597 +9.883,1.79966028022,-0.158526491964 +9.884,1.7995017286,-0.158551624826 +9.885,1.79934315183,-0.158576770191 +9.886,1.7991845499,-0.15860192807 +9.887,1.7990259228,-0.158627098473 +9.888,1.79886727052,-0.158652281411 +9.889,1.79870859304,-0.158677476894 +9.89,1.79854989036,-0.158702684933 +9.891,1.79839116245,-0.158727905536 +9.892,1.79823240931,-0.158753138716 +9.893,1.79807363093,-0.158778384482 +9.894,1.79791482729,-0.158803642844 +9.895,1.79775599837,-0.158828913814 +9.896,1.79759714417,-0.158854197401 +9.897,1.79743826468,-0.158879493615 +9.898,1.79727935988,-0.158904802468 +9.899,1.79712042975,-0.158930123969 +9.9,1.7969614743,-0.15895545813 +9.901,1.79680249349,-0.15898080496 +9.902,1.79664348733,-0.159006164469 +9.903,1.79648445579,-0.159031536669 +9.904,1.79632539887,-0.15905692157 +9.905,1.79616631655,-0.159082319182 +9.906,1.79600720882,-0.159107729516 +9.907,1.79584807567,-0.159133152583 +9.908,1.79568891708,-0.159158588392 +9.909,1.79552973304,-0.159184036955 +9.91,1.79537052354,-0.159209498281 +9.911,1.79521128857,-0.159234972382 +9.912,1.79505202811,-0.159260459268 +9.913,1.79489274215,-0.15928595895 +9.914,1.79473343068,-0.159311471438 +9.915,1.79457409368,-0.159336996743 +9.916,1.79441473115,-0.159362534876 +9.917,1.79425534306,-0.159388085846 +9.918,1.79409592941,-0.159413649666 +9.919,1.79393649019,-0.159439226345 +9.92,1.79377702537,-0.159464815894 +9.921,1.79361753495,-0.159490418323 +9.922,1.79345801892,-0.159516033645 +9.923,1.79329847726,-0.159541661868 +9.924,1.79313890996,-0.159567303004 +9.925,1.792979317,-0.159592957064 +9.926,1.79281969837,-0.159618624058 +9.927,1.79266005407,-0.159644303998 +9.928,1.79250038407,-0.159669996893 +9.929,1.79234068837,-0.159695702755 +9.93,1.79218096695,-0.159721421595 +9.931,1.7920212198,-0.159747153422 +9.932,1.7918614469,-0.159772898249 +9.933,1.79170164824,-0.159798656086 +9.934,1.79154182381,-0.159824426944 +9.935,1.7913819736,-0.159850210833 +9.936,1.7912220976,-0.159876007764 +9.937,1.79106219578,-0.159901817749 +9.938,1.79090226814,-0.159927640799 +9.939,1.79074231466,-0.159953476923 +9.94,1.79058233533,-0.159979326134 +9.941,1.79042233015,-0.160005188441 +9.942,1.79026229908,-0.160031063857 +9.943,1.79010224213,-0.160056952391 +9.944,1.78994215928,-0.160082854055 +9.945,1.78978205051,-0.16010876886 +9.946,1.78962191581,-0.160134696817 +9.947,1.78946175517,-0.160160637937 +9.948,1.78930156858,-0.160186592231 +9.949,1.78914135602,-0.160212559709 +9.95,1.78898111748,-0.160238540384 +9.951,1.78882085294,-0.160264534265 +9.952,1.7886605624,-0.160290541365 +9.953,1.78850024584,-0.160316561694 +9.954,1.78833990325,-0.160342595263 +9.955,1.7881795346,-0.160368642083 +9.956,1.7880191399,-0.160394702166 +9.957,1.78785871913,-0.160420775522 +9.958,1.78769827226,-0.160446862163 +9.959,1.7875377993,-0.1604729621 +9.96,1.78737730023,-0.160499075344 +9.961,1.78721677503,-0.160525201906 +9.962,1.78705622368,-0.160551341798 +9.963,1.78689564619,-0.16057749503 +9.964,1.78673504253,-0.160603661615 +9.965,1.78657441269,-0.160629841562 +9.966,1.78641375665,-0.160656034884 +9.967,1.78625307441,-0.160682241591 +9.968,1.78609236595,-0.160708461696 +9.969,1.78593163125,-0.160734695208 +9.97,1.78577087031,-0.16076094214 +9.971,1.78561008311,-0.160787202503 +9.972,1.78544926963,-0.160813476308 +9.973,1.78528842987,-0.160839763566 +9.974,1.7851275638,-0.16086606429 +9.975,1.78496667142,-0.160892378489 +9.976,1.78480575272,-0.160918706176 +9.977,1.78464480767,-0.160945047362 +9.978,1.78448383627,-0.160971402058 +9.979,1.7843228385,-0.160997770276 +9.98,1.78416181435,-0.161024152028 +9.981,1.7840007638,-0.161050547324 +9.982,1.78383968684,-0.161076956176 +9.983,1.78367858346,-0.161103378596 +9.984,1.78351745365,-0.161129814595 +9.985,1.78335629739,-0.161156264184 +9.986,1.78319511466,-0.161182727376 +9.987,1.78303390545,-0.161209204181 +9.988,1.78287266976,-0.161235694612 +9.989,1.78271140756,-0.161262198679 +9.99,1.78255011884,-0.161288716394 +9.991,1.7823888036,-0.161315247769 +9.992,1.7822274618,-0.161341792816 +9.993,1.78206609345,-0.161368351546 +9.994,1.78190469853,-0.16139492397 +9.995,1.78174327702,-0.161421510101 +9.996,1.78158182891,-0.16144810995 +9.997,1.78142035418,-0.161474723529 +9.998,1.78125885283,-0.161501350848 +9.999,1.78109732484,-0.161527991921 +10.,1.7809357702,-0.161554646758 + diff --git a/doc/remarques.typ b/doc/remarques.typ index 28a8858..355df11 100644 --- a/doc/remarques.typ +++ b/doc/remarques.typ @@ -1,3 +1,7 @@ +#set par(justify: true) + += Version 1. + La phrase "it is less computationally intensive... the compiler". est mal dite; tu peux dire que c'est la methode classique, par exemple, implementee pour simulink et aussi Zelus. @@ -224,5 +228,121 @@ phases d'integration (le temps ronronne) et des pas discrets (reactions instantanees). Super. Continue ! --Marc +#pagebreak() + += Version 2. + +*L.230 - 235*. Le discours peut donner l'impression de confondre simuation et + modèle mathématique. Tu écris un modèle mathématique idéalisé, c.à.d. avec un + choc élastique où la vitesse change instantanément de direction. Pour cela, la + manière de simuler doit changer. La, tu peux garder le discours. + +"_Since time is logical in discrete nodes_". Tu veux dire plutôt que l'on +choisit de décrire des réactions en temps zéro (ou instantanées), c'est bien +ça ? "_Since time is logical in discrete nodes, nothing tells us when, in +continuous time, we should perform discrete steps._" Je ne comprends pas cette +phrase ! + +*L. 242-245*. Si tu veux définir le zéro-crossing, ne faudrait-il pas plutôt le +faire avec une définition d'analyse d'abord et décrire ensuite, si besoin +l'algorithme (mais informellement) ? L'intuition, c'est qu'il y a un +zéro-crossing de $z$ en $t_0$, entre $t_"left"$ et $t_"right"$ lorsque il existe +une boule d'épaisseur non nulle autour de $t_0$ (d'épaisseur $epsilon$) telle +que pour tous les points a gauche de t0 (notons +$t_0^- = { t | t <= t_0 and |t_0 - t| <= epsilon }$), $z(t_0^-) <= 0$ et tous +les points a droite, $z(t_0^+) > 0$. Tim t'as donné l'article qui décrit l'algo. +Illinois. Je ne l'ai pas sur moi. Le signal $z: [t_"left", t_"right"]$ a un +zéro-crossing en t0 lorsque il existe un $epsilon > 0$ tq pour tout +$alpha < epsilon$: ... . Qu'en penses-tu ? + +*Listing 5*. Tu n'expliques pas `last y'`. +*P.10*. Tu devrais d'abord expliquer le modele mathématique, ce dont tu as +besoin, puis l'exemple; ou bien l'inverse, expliquer d'abord intuitivement +l'exemple, les ingrédients dont tu as besoin et que tu introduits, plus le +modèle mathématique. Et ensuite, les choses dont tu as besoin pour simuler. +E.g., connaitre $f_"der"$, $f_"zero"$, l'état initial continu, l'état discret, +etc. + +*L.302*. +Je trouve l'écriture $h in [0, v.h]$ un peu troublante. Est-ce qu'une notation +$v\#h$ ou autre ne serait pas mieux ? Ou alors, utiliser plutôt un champ +"horizon" que h, dans la notation en point. Ou "right" ? + +"_Multiple methods exist (Zélus uses the Illinois method [Sny53])_". La méthode +Illinois est la plus connue et utilisée. C'est mal formulé. Multiple methods +exist; one of the oldest and most-used method is the Illinois method. It is +used, for example, in the Sundials CVODE suite (donner la référence; regarde +le manuel). Simulink also used this method by default. Zelus also implements +this method. + +*L.305-309*. +C'est un peu confus. Dis simplement ce que fait une méthode de zéro-crossing et +des ingrédients dont elle a besoin, avant d'expliquer, plus tard, comment on +s'en sert dans la simulation. +Tu as besoin de $g: T i m e -> X -> Z_o$; de $x_0: X$; de $t_"left"$, de +$t_"right"$ et de $d e n s e: T i m e -> X$, défini sur cet intervalle. La +fonction de zéro-crossing indique qui, sur le vecteur $Z_o$, traverse zéro. Tu +peux signaler les difficultés éventuelles (on peut rater un événement, c'est +sensible a la largeur de l'intervalle de détection, au fait que le nombre de +traversées peut être paire et on rate l'événement, etc.). Et dire que on ne fait +rien là dessus (pas plus que Simulink, Modelica, et les autres d'ailleurs). + +*L. 322-324*. Je ne comprends pas la définition entre la ligne 322 et 324 et pas +bien le paragraphe précédent. + +*L. 418*. Tu veux plutôt dire que tu voudrais pouvoir agréger les solutions +denses successives ($d k y$). Les solveurs classiques sont impératifs, +c'est-à-dire qu'ils ont un état interne et que chaque appel à "step" le modifie +physiquement. Pour pouvoir agréger plusieurs solutions successives, il faut +qu'il fournisse un moyen de le faire. (Rmq: ce n'est pas forcément une "copie +d'état" dont on a besoin. Pour RK, je l'ai fait en fournissant un moyen d'avoir +une copie de $d k y$. Ça suffit.) + +*L. 459*. Si tu parles d'assertions dans les programmes, cite/lis les articles +classiques car c'est une construction très ancienne des langages de +programmation. Je ne suis pas spécialiste mais j'en ai lu deux vieux (de +mémoire, un de Hoare; un de Dijsktra). Je suis sûr qu'il doit y avoir un article +de survey que tout le monde cite la dessus. Je regarderai en rentrant. En somme, +dis aussi pourquoi c'est intéressant/utile de pouvoir écrire des assertions et +les difficultés que cela pose dans le cas présent. + +"_An important property of assertions is that they are transparent: their +presence does not affect the result of the computation._" An expected feature of +run-time assertions is that they should not affect the rest of the computation +(except stopping execution when they are not fulfilled). We call them +"transparent", in the sense that, running the program with or without, if no +error is raised, should produce the same result. + +*Figure 9*. Je ne comprends pas la figure 9. Tu veux dire que, en Lustre, cela +correspond à avoir un seul noeud qui calcule les deux en parallèle ? On n'écrira +jamais le code de la partie droite. Relis l'article sur les assertions de Lustre +(de memoire, AMAST 93). En Lustre, les assertions ont un role qui consiste à +contraindre l'environnement, avant tout. C'est utile quand on veut vérifier des +propriétes. En fait, une assertion se decompose en deux parties, une hypothèse +(qui parle des entrées, incontrolâbles), et une conclusion (assume/guarantee). +Dans notre cas, comme on veut s'en servir d'abord comme on le fait dans un +langage généraliste et, pour le moment, pas pour faire de la vérification, on ne +distingue pas les deux. Le programme de gauche est equivalent à +``` +let node f (x) = + let v = ... in + let assertion = (let p = integr(0.0, v) in p >= 0.0) in + (v, assertion) +``` +c.à.d. que assertion est un flot comme les autres. Est-ce autre chose que cela +que tu veux dire ? + +*L. 477*. +Pas vraiment. Un noeud Lustre avec une assertion a vérifier dynamiquement, +s'implémente en calculant un flot supplementaire et en vérifiant qu'il est vrai +à chaque instant. On le calcule donc avec le reste du code, comme on le fait +habituellement pour les assertions dans les langages classiques. Attention: je +ne parle pas ici de vérification formelle. On traite de manière particulière les +assertions quand on cherche a vérifier une propriété. En Lustre, on considère +que les assertions sont vraies et on vérifie qu'elles ne dépendent pas des +sorties; sinon, elle ne sont pas causales. C'est pour cela, qu'il faut +distinguer les hypothèses (assume) des résultats attendus (guarantee). + +Il n'y a aucun exemple ? diff --git a/doc/rep.typ b/doc/rep.typ index d27907f..34398f5 100644 --- a/doc/rep.typ +++ b/doc/rep.typ @@ -8,7 +8,6 @@ #set cite(style: "alphanumeric.csl") #set par(justify: true) -#set par.line(numbering: "1") #set raw(syntaxes: "zelus.sublime-syntax") #show raw: set par.line(numbering: none) @@ -18,12 +17,14 @@ #set figure(placement: top) #show figure: set par.line(numbering: none) +#show figure.where(kind: raw): set block(width: 100%) #let zelus = smallcaps[Zélus] #let lustre = smallcaps[Lustre] #let ocaml = smallcaps[OCaml] #let sundials = smallcaps[Sundials CVODE] #let simulink = smallcaps[Simulink] +#let modelica = smallcaps[Modelica] #let haskell = smallcaps[Haskell] #let zel(body) = raw(lang: "zelus", body) @@ -45,22 +46,37 @@ #let CSolver = math.italic[CSolver] #let ZSolver = math.italic[ZSolver] #let Option = math.italic[Option] -#let None = math.italic[None] +#let None = $italic("None")$ #let Some = math.italic[Some] #let Unit = math.italic[Unit] #let List = math.italic[List] #let Zi = $Z_i$ #let Zo = $Z_o$ #let SimState = math.italic[State] -#let DSim = math.italic[DSim] -#let CSim = math.italic[CSim] -#let HSim = math.italic[HSim] -#let HASim = math.italic[HASim] +#let DSim = math.italic[dsim] +#let CSim = math.italic[csim] +#let HSim = math.italic[hsim] +#let HASim = math.italic[hasim] +#let step = math.italic[step] +#let reset = math.italic[reset] +#let der = math.italic[der] +#let zer = math.italic[zero] +#let out = math.italic[out] +#let jump = math.italic[jump] +#let hor = math.italic[horizon] +#let cget = math.italic[cget] +#let cset = math.italic[cset] +#let zset = math.italic[zset] +#let copy = math.italic[copy] #let show_notes = true -#let note(body, prefix: "NOTE: ", color: rgb(0, 0, 0, 50)) = if show_notes { - rect(fill: color, inset: 3pt, width: 100%)[#prefix #body] -} else [] +#let line_numbering = none +#set par.line(numbering: line_numbering) +#let note(body, prefix: "NOTE: ", color: rgb(0, 0, 0, 50)) = if show_notes [ + #set par.line(numbering: none) + #rect(fill: color, inset: 3pt, width: 100%)[#prefix #body] + #set par.line(numbering: line_numbering) +] else [] #let todo(body) = note(color: rgb(255, 0, 0, 50), prefix: "TODO: ")[#body] #set par.line(numbering: none) @@ -72,7 +88,7 @@ Henri Saudubray, supervised by Marc Pouzet, Inria PARKAS ]\ -#set par.line(numbering: "1") +#set par.line(numbering: line_numbering) // #heading(outlined: false, numbering: none)[General Context] // What is the report about? Where does the problem come from? What is the state @@ -96,18 +112,17 @@ solver such as #sundials @cit:sundials @cit:sundialsml. // are the applications/consequences? Is it a new problem? Why did you choose // this problem? -*Research Problem* --- The simulation of hybrid system models, as in #simulink -and #zelus, uses a single ODE solver instance to simulate the entire model. This -has various advantages: it is less computationally intensive, and simplifies the -work of the compiler. Unfortunately, it also raises a difficult problem: -sub-systems which seemingly should not interfere with each other end up -affecting each other's results. This is due to the chosen integration method. An -adaptive solver like #sundials will vary its step length throughout the -integration process, and the addition of new, unrelated ODEs in the system can -influence these step lengths, affecting the results obtained for pre-existing -ODEs. This is particularly problematic in the case of runtime assertions, which -are typically expected to be transparent: they should not affect the final -result of the computation. +*Research Problem* --- The simulation of hybrid system models, as done in +#simulink and #zelus, uses a single ODE solver instance to simulate the entire +model at once. This raises a difficult problem: sub-systems which seemingly +should not interfere with each other end up affecting each other's results. This +is due to the chosen integration method. An adaptive solver like #sundials will +vary its step length throughout the integration process, and the addition of +new, unrelated ODEs in the system can influence these step lengths, affecting +the results obtained for pre-existing ODEs. This is particularly problematic in +the case of run-time executable assertions @cit:assertion_hist +@cit:assertion_lustre, which are typically expected to be transparent: they +should not affect the final result of the computation. We therefore aim to define a new execution model for hybrid system models, which allows for clear separation between a program and its assertions, in such a way @@ -121,60 +136,138 @@ are the same. *Proposed Contributions* --- To solve this, we propose a new runtime for the #zelus language that simulates assertions with their own solvers in order to -maintain the separation between assertions and the model they operate on. This -is done by first describing the execution of a hybrid system model as a -synchronous node akin to those found in languages such as #lustre, operating on -streams of functions, and then implementing this vision in #ocaml. This -interpretation allows us to _lift_ the runtime into the language, allowing for -direct manipulation of hybrid simulations in the synchronous subset of #zelus. -The addition of a few primitives then allows us to attain our final objective of -transparent assertions. +maintain the separation between assertions and the model they operate on. We +first present a low-level denotational semantics for hybrid models, similar to +the S-functions of #simulink or the FMI/FMU standard of #modelica, and use this +interpretation to give an operational semantics of hybrid model simulations as +programs in the synchronous subset of #zelus, using #ocaml as our meta-language. +The runtime is then _lifted_ into #zelus, allowing direct manipulation of hybrid +simulations in #zelus proper. The addition of assertions is then a simple +modification of the simulation algorithm to handle models with an associated +assertion. // #heading(outlined: false, numbering: none)[Arguments Supporting Their Validity] // What is the evidence that your solution is a good solution? (Experiments? // Proofs?) Comment on the robustness of your solution: does it rely on // assumptions, and if so, to what extent? -*Arguments Supporting Their Validity* --- -#todo[ - Justify. -] +*Arguments Supporting Their Validity* --- The interpretation of a simulation as +a discrete program and their lifting into the source language allows for direct +and composable manipulation of systems in isolation. This allows the developer +to separate critical parts of the model in order to monitor their execution in +isolation. This is already sufficient to represent observers +@cit:assertion_lustre as done in synchronous languages such as #lustre. The +added convenience of compiling assertions as distinct models allows the +programmer to focus on modelisation without concerning themselves with the +required separation of assertions from their model. + +The #zelus compiler is currently being reimplemented, and the code associated +with this report is in the process of being included in this implementation as +the simulation engine. As such, this new runtime has been tested on a variety of +examples from the gallery of examples of #zelus\; these are available in the +main repository #footnote[ + #link("https://www.codcberg.org/17maiga/hsim") +]. A compilation pass from assertions as a syntactic construct to the +representation of assertions as a sub-model is currently being implemented. // #heading(outlined: false, numbering: none)[Summary And Future Work] // What did you contribute to the area? What comes next? What is a good _next_ // step or question? -*Summary and Fugure Work* -- Future work includes the addition of assertions as -a syntactic construct in the source language, with a compilation pass to -translate them to their equivalent form in #ocaml. The direct manipulation of -streams of functions which may depend on the solver's internal state also raises -several questions, one of which is of particular interest: we cannot necessarily -use `pre` on such values, since an integration step of the solver may modify its -internal state, on which the closures depend. One could envision a static -analysis to forbid such manipulations, and a simple answer could be typeclasses -_à la_ #haskell, but the addition of typeclasses into the type system of #zelus -is a problem of its own. +*Summary and Future Work* --- +During this internship, we have implemented a new runtime allowing for distinct +simulation of models and access to the continuous results without the +introduction of discrete events in the model. This has been used to implement +assertions in the spirit of #lustre observers. At the time of writing, a +compilation pass from assertions in the source language to their internal +representation as a separate hybrid model is currently being implemented. + +Multiple questions remain. The completion of the compilation pass is an +immediate concern; one could then consider a generalization of this compilation +pass to _nested_ assertions (that is, assertions within assertions), with a +recursive definition of a model with assertions. The simulation algorithm for +such a model has already been implemented inside the runtime. + +The lifting of simulations into the language raises several questions. As +discrete #zelus allows for the manipulation of past values in the spirit of +#lustre, with operators such as ```zelus pre```, we must be able to store values +produced by the simulation in memory. Unfortunately for us, this is not always +feasible, as explained in @sec:solver_steps; the solver's internal manipulation +of the state may render previously computed values invalid #footnote[ + This is not a problem exclusive to #zelus\; #lustre itself suffers from the + same issue with externally defined datatypes. +]. One could envision a static analysis to forbid such manipulations, with types +being annotated depending on their ability to be copied and stored in memory, +similar to #smallcaps[Standard ML]'s _eqtypes_ or #haskell's typeclasses. + +*Notes and Aknowledgements* --- +For convenience, we use notation inspired by #ocaml's records +throughout this report. This is translated into products and projections on +these products as expected. The notation $v\#e$ denotes the access to the record +member $e$ on the value $v$. \ +The following work has been implemented in #ocaml, and samples of the code are +used for illustration purposes. Due to space concerns, #ocaml type definitions +are ommitted from the main body of the report, and are instead given in Appendix +C. They are a direct translation into #ocaml of +the definitions given in the report. All of the associated code can additionally +be found at #link("https://codeberg.org/17maiga/hsim"). + +I wish to thank my supervisor, Marc Pouzet, for his priceless advice and insight +throughout this internship. I am grateful to Timothy Bourke for his kind help +with understanding the inner workings of ODE solvers and zero-crossing detection +methods, as well as for his advice on this report. Finally, I thank Anne +Bouillard, Grégoire Bussonne, Charles de Haro, Paul Jeanmaire, Jean-Baptiste +Jeannin, Balthazar Patiachvili, and Loïc Sylvestre for their warm welcome to the +PARKAS team and the fascinating discussions throughout my internship. #pagebreak() -#pagebreak() -#set par.line(numbering: none) -#outline() -#set par.line(numbering: "1") - = Introduction -#todo[ - Write the introduction. - Justify the approach: we first present a low-level denotational semantics - of hybrid system models as a collection of functions operating on an inner - state, and pair this denotational semantics with a numerical ODE solver and a - zero-crossing detection mechanism to construct a synchronous operational - semantics of the simulation. We then use this operational semantics to - implement transparent observers, by separating the simulation of the model - from that of its observers. -] +Hybrid system modelers such as #simulink or #modelica have become ubiquitous in +the development of embedded systems interacting with physical environments. +Their ability to describe both continuous-time behaviour defined using Ordinary +Differential Equations, discrete-time behaviours similar to the approach of +the synchronous languages such as #lustre @cit:lustre, and the interactions +between the two lends itself perfectly to the modelisation of the interactions +between a program and its environment. -#pagebreak() +Modelers such as #simulink or #modelica are distinct from the classical +description of hybrid systems as hybrid automata @cit:hyb_auto in their focus on +concrete simulation of hybrid models as executable programs. #zelus follows the +same approach, by extending a synchronous language kernel _à la_ #lustre with +continuous-time constructs and compiling models down to a low-level, statically +scheduled representation of models as a set of transition functions over an +inner state. This internship continues in this direction by providing a precise, +executable semantics of the simulation of such a representation using #ocaml. + +The execution of hybrid models relies on a numerical ODE solver, which computes +approximations to the model's behaviour in continuous time. A single solver is +used to approximate the behaviour of the entire model; this choice of +implementation unfortunately raises unforeseen difficulties. Indeed, the +parallel simulation of independent blocks causes interferences between the two, +changing the simulation results. This is not a consequence of numerical error, +but of the internal simulation engine implementation. The ODE solver +approximates the entire model at once, and as such seemingly independent parts +of the model end up affecting each other through their impact on the solver's +behaviour. + +This is particularly unfortunate in the case of run-time assertions. These are +typically expected to have no impact on the execution; we call them +"transparent", in the sense that their execution does not change the results of +the program. Continuous-time assertions may introduce their own ODEs as part of +their computation, and as such, impact the simulation of the rest of the model. + +To avoid this interference, we propose a new runtime for the simulation of a +hybrid model with assertions, where assertions are simulated using their own +ODE solver, thus preventing their interference with the model they observe. We +first present a low-level denotational semantics of hybrid system models as a +collection of functions operating on an inner state, and consider the solving +machinery of hybrid system modelers through this interpretation. We then combine +a hybrid model with this solving machinery in order to obtain a synchronous +operational semantics of the simulation. We briefly discuss some implementation +details to motivate some of the choices made. Finally, we use the interpretation +of a simulation as a synchronous program to implement the simulation of +continuous-time assertions independently from their parent model. = Hybrid System Model Simulation @@ -212,24 +305,20 @@ Producing these outputs may also depend on previously computed values through operators like ```zelus pre(e)```, which returns the value of its sub-expression `e` at the previous instant, and ```zelus e1 -> e2```, which returns its left-hand side `e1` at the first instant and its right-hand side `e2` -afterwards. This requires nodes to store some previously computed values. Nodes -therefore operate on an inner state of type $S$: previously computed values must -be stored inside this state in order to refer to them afterwards. The behaviour -of a node is represented by a step function $f_"step" : S -> I -> O times S$ and -an initial state $s_0 : S$, used at the first instant. Given a set of inputs and -the current state, the $f_"step"$ function produces a set of outputs and a new, -updated state. This function is then called at each instant, taking as input the -current value of the input signal, and the state produced by the previous -instant. - -#todo[ - Clearly distinguish between stream semantics and Mealy machine implementation - (and mention Mealy machines explicitly). -] +afterwards. This requires nodes to store some previously computed values. To +encode this, we define a low-level representation of nodes as Mealy machines, +with a state and step function. Nodes therefore operate on an inner state of +type $S$: previously computed values must be stored inside this state in order +to refer to them afterwards. The behaviour of a node is represented by a step +function $step : S -> I -> O times S$ and an initial state $s_0 : S$, used at +the first instant. Given a set of inputs and the current state, the $step$ +function produces a set of outputs and a new, updated state. This function is +then called at each instant, taking as input the current value of the input +signal, and the state produced by the previous instant. Since programs may wish to reset the state of a node (for instance, when writing automata; further motivation will be given in the following sections), nodes -also define a reset function $f_"reset" : S -> R -> S$. Since nodes may be +also define a reset function $reset : S -> R -> S$. Since nodes may be parameterized by a value, this reset function takes in an additional reset parameter $R$ and the previous state, and returns an updated state. A discrete model with input $I$ and output $O$ is then a triple of an initial state, and a @@ -237,23 +326,20 @@ step and reset function: $ DNode(I, O, R, S) eq.def { s_0 : S; - f_"step" : S -> I -> O times S; - f_"reset" : S -> R -> S + step : S -> I -> O times S; + reset : S -> R -> S } $ +Its definition in #ocaml is found in @lst:def_dnode. + The simulation of such a model then defines two streams: the inner state $s$ and the output $o$: -$ DSim(M)(i_n) = o_n "where" - (o_n, s_(n+1)) = M.f_"step" (i_n, s_n), s_0 = M.s_0 $ +$ DSim(m)(i_n) = o_n "where" + (o_n, s_(n+1)) = m\#"step" (i_n, s_n) "and" s_0 = m\#s_0 $ A possible implementation of this simulation in #ocaml, where streams are -represented by lists of values, is given in @lst:discrete_sim #footnote[ - Due to space concerns, #ocaml type definitions are ommitted from the main body - of the report, and are instead given in @sec:appendix, @lst:ocaml_typedefs. - These type definitions are direct translations of the mathematical definitions - into #ocaml. -]. +represented by lists of values, is given in @lst:discrete_sim. #figure( ```ocaml @@ -270,131 +356,153 @@ represented by lists of values, is given in @lst:discrete_sim #footnote[ #figure( ```zelus let h = 0.01 (* Integration time step. *) + let mu = 5.0 (* Dampening strength. *) (* Forward Euler integrator. *) - let node integr(x0: float, x': float) = (x: float) where + let node f_integr(x0: float, x': float) = (x: float) where rec x = x0 -> pre(x +. x' *. h) - let node sincos_discrete() = (sin: float, cos: float) where - rec sin = integr(0.0, cos) (* (dsin/dt)(t) = cos(t), sin(0) = 0.0 *) - and cos = integr(1.0, -. sin) (* (dcos/dt)(t) = -sin(t), cos(0) = 1.0 *) - ```, - caption: [Sine and cosine approximation in discrete #zelus], -) + (* Backward Euler integrator. *) + let node b_integr(x0: float, x': float) = (x: float) where + rec x = x0 -> pre(x) +. x' *. h -As an example, consider the program in @lst:sincos_discrete, written in the + (* Van der Pol oscillator. *) + let node vanderpol_discrete() = (x: float, y: float) where + rec x = b_integr(1.0, y) + and y = f_integr(1.0, (mu *. (1.0 -. (x *. x)) *. y) -. x) + ```, + caption: [Van der Pol oscillator in discrete #zelus], +) + +As an example, consider the program in @lst:vdp_discrete, written in the discrete subset of #zelus (it could have been written in #lustre in a similar -way). This program computes approximations for the sine and cosine functions. -The `integr` node implements a forward Euler integrator. It takes as input a -stream `x0` representing the initial value of the signal to be integrated, and a -stream `x'` representing the derivative of this same signal, sampled at a -predefined integration step `h`. It then defines a new stream `x`, approximating -the integral of `x'`, as follows: +way). This program computes the evolution of the Van der Pol oscillator in time. +The Van der Pol oscillator is defined by the two differential equations + +$ (d x)/(d t) = y wide (d y)/(d t) = mu(1 - x^2)y - x $ + +with $mu$ a scalar parameter. +The `f_integr` and `b_integr` nodes implement forward and backward Euler +integrators. In more detail, the `f_integr` node take as input a stream `x0` +representing the initial value of the signal to be integrated, and a stream `x'` +representing the derivative of this same signal, sampled at a predefined +integration step `h`. It then defines a new stream `x`, approximating the +integral of `x'`, as follows: $ #zel("x")_0 = #raw("x0")_0 wide #zel("x")_(n+1) = #zel("x")_n + #zel("x'")_n dot #zel("h") $ -The `integr` node is used to compute an approximation of the solution to a -restricted form of an initial value problem: given a function $x'(t)$ computing -the derivative of a variable $x$ with respect to time (that is, -$(d x)/(d t)(t) = x'(t)$), and an initial value $x_0$ for this variable, -its solution is a function of time $x(t)$ whose derivative is $x'$, and whose -value at $t = 0$ is $x(0) = x_0$. +The `f_integr` and `b_integr` nodes are used to compute an approximation of the +solution to a restricted form of an initial value problem: given a function +$x'(t)$ computing the derivative of a variable $x$ with respect to time (that +is, $(d x)/(d t)(t) = x'(t)$), and an initial value $x_0$ for this variable, its +solution is a function of time $x(t)$ whose derivative is $x'$, and whose value +at $t = 0$ is $x(0) = x_0$. -The `sincos_discrete` node then uses this integrator to approximate solutions -for the sine and cosine functions. Since $(d sin)/(d t)(t) = cos(t)$ and -$(d cos)/(d t)(t) = -sin(t)$, and $sin(0) = 0$ and $cos(0) = 1$, we can -formulate $sin$ and $cos$ through an initial value problem. We can then use two -integrators to approximate solutions to $sin$ and $cos$. The output of `sincos` -at instant $n$ is then the pair of $sin(n dot h)$ and $cos(n dot h)$. - -#todo[ - Emphasize that the inner state of the subnodes is contained in the state of - the parent node, and that separate calls to subnodes are separate instances. -] +The `vanderpol_discrete` node then uses these integrators to approximate the +behaviour of the Van der Pol oscillator. Given an initial position at $x = 1$ +and $y = 1$, we can formulate the oscillator through an initial value problem. +We can then use two integrators to approximate solutions to $x$ and $y$. The +output of `vanderpol_discrete` at instant $n$ is then the pair of the +coordinates $x$ and $y$ at time $n times h$. == Continuous-Time Models #figure( cetz.canvas({ - let data = csv("data/sincos_discrete.csv") + let data = csv("data/xsmall.csv") let dsin = data.map(t => (float(t.at(0)), float(t.at(1)))) let dcos = data.map(t => (float(t.at(0)), float(t.at(2)))) cetz-plot.plot.plot(size: (12, 2), axis-style: "left", - x-tick-step: 10, y-tick-step: 1, x-grid: "both", y-grid: "both", + x-tick-step: 10, y-tick-step: 5, x-grid: "both", y-grid: "both", legend: (11, 2.2), y-label: none, x-label: "Time", { - cetz-plot.plot.add(label: "sin", dsin, style: (stroke: (dash: "solid"))) - cetz-plot.plot.add(label: "cos", dcos, style: (stroke: (dash: "dashed"))) + cetz-plot.plot.add(label: $x$, dsin, style: (stroke: (dash: "dashed"))) + cetz-plot.plot.add(label: $y$, dcos, style: (stroke: (dash: "solid"))) }) }), - caption: [Simulation of @lst:sincos_discrete with `h = 0.01`], -) + caption: [Simulation of @lst:vdp_discrete with $h = 0.001$], +) +#figure( + cetz.canvas({ + let data = csv("data/middle.csv") + let dsin = data.map(t => (float(t.at(0)), float(t.at(1)))) + let dcos = data.map(t => (float(t.at(0)), float(t.at(2)))) + cetz-plot.plot.plot(size: (12, 2), axis-style: "left", + x-tick-step: 10, y-tick-step: 5, x-grid: "both", y-grid: "both", + legend: (11, 2.2), y-label: none, x-label: "Time", { + cetz-plot.plot.add(label: $x$, dsin, style: (stroke: (dash: "dashed"))) + cetz-plot.plot.add(label: $y$, dcos, style: (stroke: (dash: "solid"))) + }) + }), + caption: [Simulation of @lst:vdp_discrete with $h = 0.1$], +) -While the model in @lst:sincos_discrete is simple to understand, it is somewhat +While the model in @lst:vdp_discrete is simple to understand, it is somewhat rigid: the integration method is fixed, as well as the time step. The simulation -results strongly depend on these parameters. Given a time step of $0.01$, for -instance, the approximation quickly diverges from the analytical solution, as -seen in @fig:sincos_discrete. This divergence is simple to understand: rather -than using the derivative of $sin$ and $cos$ exactly, we sample it at specific -instants (multiples of $h$), and consider it to be constant between samples. -This causes the result of an integration "step" to be slightly imprecise. Over -time, these imprecisions accumulate, leading to this divergence. This problem is -not exclusive to the forward Euler integrator --- it is an inherent difficulty -of numerical approximation of ODEs. +results strongly depend on these parameters, as seen in @fig:vdp_discrete2 and +@fig:vdp_discrete. Even worse, given a time step of $h = 1$, we quickly +encounter `NaN` values. This is due to the shape of the Van der Pol oscillator +curve; it alternates between steeper and softer phases, and the integration step +must be precise enough to avoid divergence during the steep phases (if the +integration step is too big, the high values for the derivatives cause the +results to reach the maximum representable floating-point number, after which +we obtain `NaN`), with the unfortunate consequence that the simulation in softer +phases will be unnecessarily slow. The programmer therefore has to think not +only about the model being described, but also about the integration scheme, its +impact on performance and the interaction between the model and integrator. #figure( ```zelus - let hybrid sincos() = (sin: float, cos: float) where - rec der sin = cos init 0.0 (* (dsin/dt)(t) = cos(t), sin(0) = 0.0 *) - and der cos = -. sin init 1.0 (* (dcos/dt)(t) = -sin(t), cos(0) = 1.0 *) + let mu = 5.0 + let hybrid vanderpol_continuous() = (x, y) where + rec der x = y init 1.0 + and der y = (mu *. (1.0 -. (x *. x)) *. y) -. x init 1.0 ```, - caption: [Sine and cosine approximation in continuous #zelus] -) + caption: [Van der Pol oscillator in continuous #zelus] +) -Still, we can do better. Rather than remain in the discrete world, #zelus allows +We can do better. Rather than remain in the discrete world, #zelus allows us to express a signal as a function of _continuous time_. Time is no longer logical and represented by a series of discrete instants, but rather physical and continuous. A model is now a function of signals on physical time. Given an -input signal of type $I$, it defines a continuously evolving inner state of type -$S$, and an output signal of type $O$. This is represented through an initial -state $s_0 : S$ and two functions: the derivative function -$f_"der" : I -> S -> S'$ computes the derivative $S'$ of the inner state $S$ at -a given time using the value of the input signal and the inner state at that -time; the output function $f_"out" : I -> S -> O$ computes the output of the -model at a given time given the value of the input signal and the inner state at -that time. A continuous model is then a tuple of an initial state and of these -two functions: - -#todo[ - The fact that the arguments of $f_"der"$ are at the same time is not visible - in the type. -] +input signal of type $I$, it defines a continuously evolving inner state $s$ of +type $S$, and an output signal of type $O$. This is represented through an +initial state $s_0 : S$ and two functions. The derivative function +$der : I -> S -> S'$ computes the derivative $S'$ of the inner state $S$ at +a given time using the value of the input signal $i$ and the inner state at that +time ($(d s)/(d t)(t) = der(i(t), s(t))$); it must be continuous #footnote[ + This restriction is enforced in #zelus by a typing pass: see + @cit:zelus_sync_lng_with_ode for details. +]. The output function $out : I -> S -> O$ computes the output $o$ of the model +at a given time given the value of the input signal and the inner state at that +time ($o(t) = out(i(t), s(t))$). A continuous model is then a tuple of an +initial state and of these two functions: $ CNode(I, O, S, S') eq.def - { s_0: S; f_"der": I -> S -> S'; f_"out": I -> S -> O } $ + { s_0: S; der: I -> S -> S'; out: I -> S -> O } $ -For instance, the model of @lst:sincos_discrete can be expressed in continuous -time as seen in @lst:sincos_continuous. Here, `sin` and `cos` are expressed -directly as initial value problems. The notation ```zelus der x = e init e0``` -expresses that the derivative of `x` with respect to time is `e`, and that the -value of `x` at time `t = 0` is `e0`. +For instance, the model of @lst:vdp_discrete can be expressed in continuous +time as seen in @lst:vdp_continuous. Here, `x` and `y` are expressed directly +as initial value problems. The notation ```zelus der x = e init e0``` expresses +that the derivative of `x` with respect to time is `e`, and that the value of +`x` at time `t = 0` is `e0`. A major difference between the discrete and continuous models is that the description of the continuous model is kept separate from the ODE solving -machinery. Nothing in @lst:sincos_continuous expresses any constraints for how -the two initial value problems of `sin` and `cos` are solved -- we leave this +machinery. Nothing in @lst:vdp_continuous expresses any constraints for how +the two initial value problems of `x` and `y` are solved -- we leave this detail to the language implementation. This allows for greater flexibility in the simulation process, because independence from the solver means we can choose -our approximation method. +our approximation method independently from the model being simulated. == Numerical ODE Solvers The simulation of a continuous model solves the initial value problem posed by -the initial state $s_0$ and the derivative function $f_"der"$, and uses this -solution in order to compute the output signal with $f_"out"$. This is done +the initial state $s_0$ and the derivative function $der$, and uses this +solution in order to compute the output signal with $out$. This is done using a numerical solver which approximates the solution, such as #sundials --- -the `integr` node from @lst:sincos_discrete is another example of a numerical +the `integr` node from @lst:vdp_discrete is another example of a numerical solver (albeit not a very good one). In general, numerical ODE solvers can be considered through a simple interface: given an initial value problem for a signal $y : Time -> Y$, in the form of a maximum time $stop$, a derivative @@ -414,11 +522,24 @@ for all $t in [0, h']$. This function is called a _dense solution_. #footnote[ #sundials interface. ] -Of particular interest is the fact that numerical ODE solvers can be considered -to compute approximations _sequentially_. Some solvers, such as #sundials, -perform integration in successive steps. Each step produces a part of the -approximation, and successive calls to the step function produce successive -parts. More formally, a single call to the $italic("csolve")$ function provides +=== Sequential Interpretation +Of particular interest is the fact that we use numerical ODE solvers to compute +approximations _sequentially_. Since the solver does not necessarily return an +approximation up to the requested horizon, we may need to perform multiple calls +to $italic("csolve")$ in order to obtain the approximation up to the requested +horizon. Furthermore, solvers can be classified in two broad categories: +single-step, stateless solvers such as the Runge-Kutta methods, and multi-step, +stateful solvers such as #sundials\; the main difference being that the latter +_remember_ some information about the previous calls to $italic("csolve")$ and +use this information to improve the approximation. These two characteristics +suggest an interpretation of an ODE solver as a particular kind of discrete +model. Its internal state is the memory of its previous calls (in the case of a +stateless solver, this is empty), and its $step$ function is simply the call to +$italic("csolve")$. The only missing element is the initialization of the solver +with an initial value problem, which can be done as part of the $reset$ +function. + +More formally, a single call to the $italic("csolve")$ function provides us with an approximation of the solution up to the returned horizon $h'$, which may be less than the requested date $h$. To obtain an approximation of the solution at a later date, we must perform another call, this time with initial @@ -436,35 +557,41 @@ $ Dense(A) eq.def { h : Time; u : [0, h] -> A } $ The ODE solver, given a stream of requested horizons, produces a stream of dense solutions, and operates on an internal state $S$, whose definition depends on -the solver being used. Its reset parameter is an initial value problem: +the solver being used. Its reset parameter is an initial value problem for a +function $y : Time -> Y$, with an initial value $y_0 : Y$ such that +$y(0) = y_0$, a maximum horizon $stop : Time$ and a function +$f : [0, stop] -> Y -> Y'$ computing the derivative of $y$ (that is, +$(d y)/(d t)(t) = f(t, y(t))$ for all $t in [0, stop]$): $ IVP(Y, Y') eq.def { y_0 : Y; stop : Time; f : [0, stop] -> Y -> Y' } $ -An ODE solver can thus be considered as a particular kind of discrete node: +When simulating a continuous-time model $m$, this initial value problem is +obtained using the model's initial state and $der$ function, composed with the +current input $i$ (i.e. $f(t, s) = der(i(t), s)$). An ODE solver can thus be +considered as a particular kind of discrete node: $ CSolver(Y, Y', S) eq.def DNode(Time, Dense(Y), IVP(Y, Y'), S) $ -A signal of type $V$ is now represented as a stream of interval-defined -functions, that is, a function from $NN$ to $Dense(V)$. Successive values in the -stream are interpreted as successive intervals on the time domain. Given a -stream of dense functions $s : NN -> Dense(V)$, the corresponding signal -$s' : Time -> V$ is defined as +A continuous-time signal of type $V$ is now represented as a stream of +interval-defined functions, that is, a function from $NN$ to $Dense(V)$. +Successive values in the stream are interpreted as successive intervals on the +time domain. Given a stream of dense functions $v : NN -> Dense(V)$, the +corresponding signal $w : Time -> V$ is defined as -$ s'(t) = cases( - s_0.u(t) & "if" t in [0, e_0], - s_n.u(t - e_(n-1)) & "if" t in (e_(n-1), e_n] "for some" n > 0, +$ w(t) = cases( + v_0\#u(t) & "if" t in [0, e_0], + v_n\#u(t - e_(n-1)) & "if" t in (e_(n-1), e_n] "for some" n > 0, "undefined" & "otherwise" -) wide wide e_n = sum^n_(i=0)s_i.h $ - -#todo[Find better names than $s$ and $s'$.] +) wide wide e_n = sum^n_(i=0)v_i\#h $ where $e_n$ is the stream of instants at which the solver stops. We assume dense functions to be continuous on their domain. However, nothing prevents discontinuities from occurring at the joining points of the stream, that is, for -the stream $s$ above, we might have that $s_n.u(s_n.h) != s_(n+1).u(0)$. The ODE -solver does not itself introduce discontinuities; the only discontinuities in -the system are those introduced by the input signal. - +the stream $s$ above, we might have that $s_n\#u(s_n\#h) != s_(n+1)\#u(0)$. The +ODE solver does not itself introduce discontinuities; the only discontinuities +in the system are those introduced by the input signal. + +=== Interferences It is important to note that the solver approximates solutions to the _entire_ initial value problem at once. That is, if the initial value problem is composed of two or more unrelated ODEs (in the sense that they operate on distinct sets @@ -485,7 +612,11 @@ entire system using this new step length. This differs from the steps the solver would have taken had the new ODE not been included; and so, the results obtained for the rest of the system are different. This is particularly important: the simultaneous integration of two unrelated systems yields different results from -their integration in isolation. +their integration in isolation #footnote[ + An example of this interference can be found at + #link("https://www.codeberg.org/17maiga/hsim"), in the `exm/zelus/parallel` + folder. +]. Of course, one could consider a different approximation method, where each ODE is integrated independently with its own ODE solver, rather than all together as @@ -495,6 +626,7 @@ and performance concerns, and is more difficult to implement. #zelus chooses instead to live with the consequences of using a single solver for the entire system. +=== Solver Steps and Simulation Steps The simulation of a continuous-time system with an ODE solver is now considered as a synchronous node. Rather than continuous-time signals, it operates on streams of interval-defined functions. At each step, it takes the value provided @@ -528,7 +660,7 @@ To solve this conundrum, we wrap the dense functions in our stream with an option type, representing the "readiness" of the simulation to accept a new input value. -$ Signal(V) eq.def Option(Dense(V)) $ +$ Option(V) eq.def V union {None} wide Signal(V) eq.def Option(Dense(V)) $ Rather than stepping the solver multiple times per step of the simulation, we step the solver once, and return the output up to the horizon reached by the @@ -607,13 +739,18 @@ model state to represent the impact of the bounce (say, negate the speed and scale it by a constant), before resuming the simulation with the updated state. The question of discrete events comes up whenever we wish to include discrete -behaviour in a continuous model. Since time is logical in discrete nodes, -nothing tells us when, in continuous time, we should perform discrete steps. -There are many possible choices. We could, for instance, pick a step length $p$ -and say that the discrete step is performed periodically at every $p$. In -practice, hybrid system modelers like #simulink and #zelus use _zero-crossings_. -They monitor a certain value during simulation, and perform a discrete step -whenever this value changes from strictly negative to positive or null. +behaviour in a continuous model, such as when modelling the interaction of a +discrete program with its physical environment. A controller for a water heater, +for instance: the controller turns on or off the heating (discrete change) based +on the water's temperature (continuous change). Since discrete models do not +include any notion of time, and simply work on the sequence of values they are +given, nothing tells us when, in continuous time, we should perform discrete +steps. There are many possible choices. We could, for instance, pick a step +length $p$ and say that the discrete step is performed periodically at every +$p$. In practice, hybrid system modelers like #simulink and #zelus use +_zero-crossings_. They monitor a certain value during simulation, and perform a +discrete step whenever this value changes from strictly negative to positive or +null. More formally, a zero-crossing on a function $z : [0, h] -> RR$ occurs at time $t in [0, h]$ if any of the following conditions are met: @@ -649,20 +786,20 @@ stream representation of signals, discrete instants are instead represented by dense functions with horizon $h = 0$ (that is, defined on the interval $[0,0]$). The order of execution of successive discrete steps is simply the order given by the stream #footnote[ - The interpretation of a stream of dense functions $s : NN -> Dense(V)$ as a - function of superdense time $s' : (RR_+ times NN) -> V$ is then defined + The interpretation of a stream of dense functions $x : NN -> Dense(V)$ as a + function of superdense time $w : (RR_+ times NN) -> V$ is then defined through the following recursive functions: - $ f(t, n, s, i) & = cases( - s_i.u(t) & "if" t < s_i.h, - g(s_i.u(0), n-1, s, i+1) & "if" t = s_i.h, - f(t - s_i.h, n, s, i+1) & "otherwise" + $ f(t, n, x, i) & = cases( + x_i\#u(t) & "if" t < x_i\#h, + g(x_i\#u(0), n-1, x, i+1) & "if" t = x_i\#h, + f(t - x_i\#h, n, x, i+1) & "otherwise" ) \ - g(v, n, s, i) & = cases( + g(v, n, x, i) & = cases( v & "if" n = 0, - s_i.u(0) & "if" s_i.h != 0, - g(s_i.u(0), n - 1, s, i + 1) & "otherwise" + x_i\#u(0) & "if" x_i\#h != 0, + g(x_i\#u(0), n - 1, x, i + 1) & "otherwise" ) \ - s'(t, n) & = f(t, n, s, 0) $ + w(t, n) & = f(t, n, x, 0) $ The stream representation is quite similar to the hybrid sequences of @cit:theory_timed_io_automata[sec. 3.4]. ]. @@ -674,17 +811,17 @@ during continuous phases, while the discrete part is only modified during discrete steps, and must be constant during continuous phases #footnote[ This restriction is enforced by typing: see @cit:zelus_sync_lng_with_ode for more details. -]. The model defines functions $c_"get" : S -> Y$ and $c_"set" : S -> Y -> S$ to +]. The model defines functions $cget : S -> Y$ and $cset : S -> Y -> S$ to get and set the continuous state $Y$ from the whole state $S$. To handle zero-crossings, a model with input signal $I$ defines a zero-crossing function -$f_"zero" : S -> I -> Y -> Zo$, where $Zo$ is a vector of values to be monitored -for zero-crossings. The inner state $S$ also maintains a vector of boolean flags +$zer : S -> I -> Y -> Zo$, where $Zo$ is a vector of values to be monitored +for zero-crossings. The inner state $S$ also maintains a vector of Boolean flags $Zi$, representing the events corresponding to the values in $Zo$ (a flag is set to true if its corresponding event has occured), and a function -$z_"set" : S -> Zi -> S$ to update the state when an event has been detected. +$zset : S -> Zi -> S$ to update the state when an event has been detected. For implementation reasons, a hybrid model also defines two additional functions -$f_"jump" : S -> BB$ and $f_"horizon" : S -> Time$. The $f_"horizon"$ function +$jump : S -> BB$ and $hor : S -> Time$. The $hor$ function allows a model to provide a horizon after which no further integration must occur. This is used to indicate whether or not the simulation, after a discrete step, must perform another discrete step (the horizon is 0 in this case); and @@ -696,7 +833,7 @@ event. // ```zelus period(p)``` is roughly equivalent to \ // ```zelus let rec der t = 1.0 init -. p reset z -> -. p and z = up(t) in z``` // ]. -The $f_"jump"$ function is used to indicate whether or not a discrete step +The $jump$ function is used to indicate whether or not a discrete step has introduced a discontinuity in the model's state: if so, the solver must be reset to take this change into account. These two functions exist mainly for implementation purposes: see @sec:sim_algorithm for more details. @@ -706,16 +843,16 @@ continuous models: $ HNode(I, O, R, S, Y, Y', Zi, Zo) eq.def { & s_0 : S; \ - & c_"get" : S -> Y; - c_"set" : S -> Y -> S; - z_"set" : S -> Zi -> S; \ - & f_"step" : S -> I -> Zi -> O times S; - f_"der" : S -> I -> Y -> Y'; \ - & f_"out" : S -> I -> Y -> O; - f_"zero" : S -> I -> Y -> Zo; \ - & f_"reset" : S -> R -> S; - f_"horizon" : S -> Time; - f_"jump" : S -> BB + & cget : S -> Y; + cset : S -> Y -> S; + zset : S -> Zi -> S; \ + & step : S -> I -> Zi -> O times S; + der : S -> I -> Y -> Y'; \ + & out : S -> I -> Y -> O; + zer : S -> I -> Y -> Zo; \ + & reset : S -> R -> S; + hor : S -> Time; + jump : S -> BB } $ #zelus provides several ways to specify zero-crossing events, of which the @@ -751,17 +888,22 @@ the notation ```zelus last y'``` represents the left-limit of `y'`. == Zero-crossing Detection The monitoring of the zero-crossing expressions $Zo$ requires a mechanism to -detect zero-crossings, termed a zero-crossing solver. Multiple methods exist -(#zelus uses the Illinois method @cit:illinois), but the zero-crossing solver -can be summarized as providing a function +detect zero-crossings, termed a zero-crossing solver. This solver, given a +function $g : Time -> Y -> Z_o$ computing a vector of values to be monitored +for zero-crossing, an initial value $y_0 : Y$, and a dense function +$y : Dense(Y)$ defined up to a horizon $h : Time$, attempts to locate the first +occurrence of a zero-crossing event on the interval $[0, h]$. Multiple methods +exist; one of the oldest and most used methods is the Illinois method +@cit:illinois, used by default in #simulink and reimplemented in #zelus. In +general, the zero-crossing solver can be summarized as providing a function $ italic("zsolve") : (Time -> Y -> Zo) -> Dense(Y) -> Time times Option(Zi) $ taking as input a zero-crossing function and a dense solution $v$, and returning -a pair of a horizon $h in [0, v.h]$ and an optional vector of boolean flags $z$, +a pair of a horizon $h in [0, v\#h]$ and an optional vector of Boolean flags $z$, such that if the zero-crossing solver detects one or more zero-crossing events, $h$ is the earliest instant at which a zero-crossing occurs, and $z$ is not -null; otherwise, $h = v.h$, and $z$ is null. +null; otherwise, $h = v\#h$, and $z$ is null. Similarly to the ODE solver, a zero-crossing solver can be seen as a synchronous node. Since the zero-crossing function does not change during continuous @@ -773,7 +915,7 @@ stream of pairs of reached horizons and optional zero-crossings. $ ZSolver\(Y, Zi, Zo, S) eq.def DNode\(Dense(Y), Time times Option(Zi), Time -> Y -> Zo, S) $ -#todo[Finish this section.] +=== Combining with an ODE solver A zero-crossing solver may be combined with an ODE solver to obtain the full solver mechanism used by the simulation of a hybrid system. This full solver @@ -796,10 +938,10 @@ horizon of $v$ (since $v$ is defined on $[0, h']$ and $h'' <= h'$, then $v$ is defined on $[0, h'']$). Finally, it returns the dense function $v$ with horizon $h''$ and the optional zero-crossing event $z$. -$ s.f_"step" (h) eq.def (v', z) "where" - v = c s.f_"step" (h)", " - (h', z) = z s.f_"step" (v) - "and "v' = { h=h', u=v.u } $ +$ s\#step (h) eq.def (v', z) "where" + v = c s\#step (h)", " + (h', z) = z s\#step (v) + "and "v' = { h=h', u=v\#u } $ The full solver mechanism is then paired with a hybrid model to construct a node representing the simulation of the model. @@ -831,10 +973,10 @@ the simulation's behaviour is given in @fig:sim_automaton. The simulation's internal state stores five things: the internal states $s_m : S_M$ and $s_s : S_S$ of the model and solver, respectively; the current -simulation $m o d e$ (either idle, discrete or continuous); a boolean flag $r$ +simulation $m o d e$ (either idle, discrete or continuous); a Boolean flag $r$ indicating whether we should reset the solver before the next continous step (see @sec:full_sim); the current input $i : Option(Dense(I))$; and the current -simulation time with respect to the input's domain $n o w in [0, i.h]$, used in +simulation time with respect to the input's domain $n o w in [0, i\#h]$, used in discrete steps to obtain the correct input. We use the same trick as with continuous-time models to solve the problem of the ODE solver taking several steps to integrate a single input value: we ask that the input stream contains @@ -847,7 +989,7 @@ $ SimState(S_M, S_S, I) = { m o d e : M o d e; r : BB; i : Option(Dense(I)); - n o w: [0, i.h] + n o w: [0, i\#h] } $ The simulation of a hybrid system is then a discrete node on streams: @@ -865,52 +1007,31 @@ A discrete step occurs whenever a zero-crossing event is triggered or a new value is obtained by the simulation. Zero-crossing events may be triggered in two different ways: either by detection using the zero-crossing solver during a previous continuous step, or resulting from the action of a previous discrete -step as indicated by $f_"horizon"$. New input values require a discrete step to +step as indicated by $hor$. New input values require a discrete step to be performed in order to reset the underlying solver. Discrete steps may modify the entire model state, and perform side effects. The simulation's physical time does not advance during a discrete step. -#note[Should we explain cascades in detail?] - -A discrete step of the simulation simply calls the model's $f_"step"$ function +A discrete step of the simulation simply calls the model's $step$ function with the appropriate inputs, constructs a dense function defined on $[0,0]$ using the output (as described in @sec:hybrid_mod, this represents a discrete step), and updates the simulation state as needed for the next step. Four possible situations arise. If the model's indicated horizon (obtained with the -$f_"horizon"$ function defined by the model) requires us to perform another +$hor$ function defined by the model) requires us to perform another discrete step, we keep the simulation in discrete mode. If no other discrete step must be performed, but we are done integrating the current input (the current time $n o w$ is greater than or equal to the current input's horizon -$i.h$), we cannot proceed further, and must wait for additional input; and so we +$i\#h$), we cannot proceed further, and must wait for additional input; and so we switch to idle mode. If no other discrete step must be performed and we have not reached the input's horizon, we switch to continuous mode. In this case, we may have to reset the solver. This occurs if the current discrete step has caused a -discontinuity (as indicated by the model's $f_"jump"$ function), or if the +discontinuity (as indicated by the model's $jump$ function), or if the state's reset flag $r$ is set, in which case we build out a new initial value problem and zero-crossing problem using the current model state and reset the solver. A possible implementation of the discrete step in #ocaml is given in -@lst:sim_step_discrete. - -#figure( - ```ocaml - let dstep (HNode model) (DNode solver) state = - let i = Option.get state.i in - let (o, sm) = model.step state.sm (i.u state.now) in - let state = - if model.horizon sm <= 0 then { state with sm } - else if state.now >= i.h then { state with mode=Idle; i=None; sm } - else if model.jump sm || state.r then (* Reset solver. *) - let ivp = { h=i.h; y0=model.cget sm; f=fun t y -> model.fder sm (i.u t) y } in - let zcp = { y0=model.cget sm; f=fun t y -> model.fzer sm (i.u t) y } in - let ss = solver.reset (ivp, zcp) state.ss in - { state with mode=Continuous; sm; ss; r=false } - else { state with mode=Continuous; sm } in - (Some { h=0.0; u=fun _ -> o }, state) - ```, - caption: [Discrete simulation step in #ocaml] -) +@lst:sim_algorithm as the `dstep` function. === Continuous steps @@ -925,25 +1046,62 @@ pass during the compilation process @cit:sync_based_codegen_hyb_sys_lng. A continuous step performs a call to the solver to obtain both an approximation of the solution to the model's initial value problem and an optional zero-crossing event. It builds a dense function representing the output on the -approximation's domain using the model's $f_"out"$ function. Then, it updates +approximation's domain using the model's $out$ function. Then, it updates the simulation state as needed for the next step. Once again, four possible situations arise. If a zero-crossing event has occured, we must perform a discrete step, and so we switch to discrete mode and update the model's state to -take into account the zero-crossing event with the $z_"set"$ function. If no +take into account the zero-crossing event with the $zset$ function. If no zero-crossing event has occurred, but we have reached the end of the current input (the horizon reached by the solver is greater than or equal to the current input's horizon), we must perform a discrete step as well, and so we switch to discrete mode. If no zero-crossing event has occured and we have not reached the current input's horizon, but we have reached the model's desired stopping point -(as indicated by the model's $f_"horizon"$ function), we must again perform a +(as indicated by the model's $hor$ function), we must again perform a discrete step, and so we switch to discrete mode. Otherwise, we can continue integrating; we keep the simulation mode as continuous. A possible implementation of the continuous step in #ocaml is given in -@lst:sim_step_continuous. +@lst:sim_algorithm as the `cstep` function. + +=== Complete definition + +The full step function then performs the correct kind of step depending on the +simulation mode; if the mode is Idle, it simply returns $None$ and the +unmodified state. When a new dense function is provided as input, it updates the +current input and time, sets the reset flag, and switches to discrete mode. Once +again, it expects the input stream to contain as many successive $None$ values +as needed for the solver to integrate the entire input, as explained in +@sec:ode_solvers. + +The simulation's reset function simply resets the model using its $reset$ +function, sets the simulation mode to Idle, and sets the reset flag $r$ in the +simulation state, so that the next discrete step resets the solver before +integration. + +Finally, its initial state is simply the initial states of the model and solver, +the mode set to idle, an empty current input ($None$) and a current time set at +0\. + +Its implementation in #ocaml is given in @lst:sim_algorithm. #figure( ```ocaml + (** Discrete simulation step. *) + let dstep (HNode model) (DNode solver) state = + let i = Option.get state.i in + let (o, sm) = model.step state.sm (i.u state.now) in + let state = + if model.horizon sm <= 0 then { state with sm } + else if state.now >= i.h then { state with mode=Idle; i=None; sm } + else if model.jump sm || state.r then (* Reset solver. *) + let ivp = { h=i.h; y0=model.cget sm; f=fun t y -> model.fder sm (i.u t) y } in + let zcp = { y0=model.cget sm; f=fun t y -> model.fzer sm (i.u t) y } in + let ss = solver.reset (ivp, zcp) state.ss in + { state with mode=Continuous; sm; ss; r=false } + else { state with mode=Continuous; sm } in + (Some { h=0.0; u=fun _ -> o }, state) + + (** Continuous simulation step. *) let cstep (HNode model) (DNode solver) state = let i = Option.get state.i in let stop = min (model.horizon state.sm) i.h in @@ -959,33 +1117,8 @@ A possible implementation of the continuous step in #ocaml is given in then { state with mode=Discrete; sm; ss; now } else { state with mode=Continuous; sm; ss; now } in (Some out, state) - ```, - caption: [Continuous simulation step in #ocaml] -) -=== Complete definition - -The full step function then performs the correct kind of step depending on the -simulation mode; if the mode is Idle, it simply returns $None$ and the -unmodified state. When a new dense function is provided as input, it updates the -current input and time, sets the reset flag, and switches to discrete mode. Once -again, it expects the input stream to contain as many successive $None$ values -as needed for the solver to integrate the entire input, as explained in -@sec:ode_solvers. - -The simulation's reset function simply resets the model using its $f_"reset"$ -function, sets the simulation mode to Idle, and sets the reset flag $r$ in the -simulation state, so that the next discrete step resets the solver before -integration. - -Finally, its initial state is simply the initial states of the model and solver, -the mode set to idle, an empty current input ($None$) and a current time set at -0\. - -Its implementation in #ocaml is given in @lst:sim_algorithm. - -#figure( - ```ocaml + (** Complete simulation algorithm. *) let hsim (HNode model) (DNode solver) = let s0 = { mode=Idle; i=None; now=0.0; sm=model.s0; ss=solver.s0; r=true } in let step state i = match (i, state.mode) with @@ -1047,16 +1180,16 @@ the solver provides a function to copy its internal state, allowing us to preserve the validity of the previous approximations, we can safely step the solver multiple times per step of the simulation and concatenate the results. A discrete node with state copies operating on a state $S$ defines an additional -function $f_"copy" : S -> S$ returning a copy of the inner state, which may be +function $copy : S -> S$ returning a copy of the inner state, which may be used for the rest of the simulation. Previously computed approximations then depend on the original copy of the state, which remains untouched by later steps. $ DNodeC(I, O, R, S) eq.def { s_0 : S; - f_"step" : S -> I -> O times S; - f_"reset" : S -> R -> S; - f_"copy" : S -> S + step : S -> I -> O times S; + reset : S -> R -> S; + copy : S -> S } $ Given a solver with state copies, the simulation can then perform multiple steps @@ -1065,8 +1198,8 @@ the approximations returned by the solver. This concatenation $j o i n : Dense(V) times Dense(V)-> Dense(V)$ is defined as expected: $ j o i n(l, r) = { - h = l.h + r.h; - u = lambda t. "if" t <= l.h "then" l.u(t) "else" r.u(t + l.h) + h = l\#h + r\#h; + u = lambda t. "if" t <= l\#h "then" l\#u(t) "else" r\#u(t + l\#h) } $ This does not free us from the option type in our signals, however; the @@ -1123,8 +1256,8 @@ is required to simulate two systems in parallel. Its behaviour is simple: step only the simulation that has not progressed as far as the other one, and return the solution only on the interval on which both are defined. -A possible implementation of both of these in #ocaml is given in -@sec:additional_code, but it is interesting to note that both of these could +These two combinators have been implemented in #ocaml, but it is interesting to +note that both of these could just as well be implemented in discrete #zelus, given the right tools to manipulate dense functions (in particular, getting their horizon and splitting them into two smaller, successive dense functions). One could even imagine that @@ -1135,33 +1268,38 @@ instanciate and call a solver, this seems entirely feasible. = Hybrid Observers and Assertions -During the design and implementation of software, programmers often use -assertions in order to check certain properties, both before and during -execution. In #ocaml, for instance, the ```ocaml assert``` instruction checks -that a certain expression evaluates to ```ocaml true``` at runtime, and raises -an exception otherwise. This is an example of a defensive use of assertions as a -way to avoid unwanted behaviour: the programmer chooses to suspend execution -rather than proceed with a state which they consider invalid. +Expressing assertions on the state of a program is an established technique both +for formal verification and defensive, runtime checks @cit:assertion_axiom +@cit:assertion_hist. We focus on runtime executable assertions; these are +executed along with the code to check a Boolean property, and interrupt the +execution if the property is not met. In #ocaml, for instance, the +```ocaml assert``` instruction checks that a certain expression evaluates to +```ocaml true``` at runtime, and raises an exception otherwise. This is an +example of a defensive use of runtime assertions as a way to avoid unwanted +behaviour: the programmer chooses to suspend execution rather than proceed with +a state which they consider invalid. -An important property of assertions is that they are _transparent_: their -presence does not affect the result of the computation. Of course, this property -requires the expression evaluated in the assertion to not cause any visible -side-effects: in #ocaml, if the assertion modifies mutable data or performs I/O -operations, executing the assertion is not transparent. Still, if the -subexpression respects certain criteria, we can safely assume that the presence -of the assertion will not affect the final result. +An expected feature of run-time assertions is that they should not affect the +rest of the computation (except stopping execution when they are not fulfilled). +We call them _transparent_, in the sense that, running the program with or +without assertions, if no error is raised, should produce the same result. Of +course, this property requires the expression evaluated in the assertion to not +cause any visible side-effects: in #ocaml, if the assertion modifies mutable +data or performs I/O operations, executing the assertion is not transparent. +Still, if the subexpression respects certain criteria, we can safely assume that +the presence of the assertion will not affect the final result. -In synchronous languages like #lustre, the classical way to represent such an -assertion is an _observer_: a node whose sole purpose is to monitor its input +In synchronous languages like #lustre, the equivalent of the run-time assertions +of #ocaml is an _observer_: a node whose sole purpose is to monitor its input stream to check a certain property. @lst:observer_discrete gives an example of an assertion in discrete #zelus, and an idealized translation of this assertion into a separate observer node. The `assertion_f` node monitors its input stream, -and warns the user if a property is not respected (here, that a certain value, -obtained by integrating another stream with the `integr` node of -@lst:sincos_discrete, is always positive); otherwise it has no effect. In -particular, if its input stream respects the property, the result of the -simulation does not change whether the call to `assertion_f` in `f` is included -or not. +and returns a Boolean property (here, that a certain value, obtained by +integrating another stream with the `f_integr` node of @lst:vdp_discrete, is +always positive), with no effect on the rest of the computation in `f`. The +Boolean stream is returned along with the output value of `f`, and the caller of +`f` will propagate this information up to the main node, where it can be +monitored by the user. #figure( placement: top, @@ -1172,21 +1310,18 @@ or not. let node f (*...*) = let v = (*...*) in assert ( - let p = integr(0.0, v) in + let p = f_integr(0.0, v) in p >= 0.0 - ); (*...*) + ); v ```, ```zelus let node assertion_f(v) = - let p = integr(0.0, v) in + let p = f_integr(0.0, v) in p >= 0.0 - let node f (*...*) = let v = (*...*) in - (match assertion_f(v) with - | true -> print_endline "ERROR" - | false -> ()); - (*...*) + let ok = assertion_f(v) in + (v, ok) ```, ), caption: [A discrete assertion and its idealized translation as an observer. ] @@ -1212,11 +1347,10 @@ simulation, as described in @sec:sim_algorithm. let hybrid assertion_f(v) = let der p = v init 0.0 in up(-. p) - let hybrid f (*...*) = let v = (*...*) in - (present(assertion_f(v)) -> print_endline "ERROR" else ()); - (*...*) + let ok = assertion_f(v) in + (v, ok) ```, caption: [A naïve implementation of a continuous observer.] ) @@ -1229,7 +1363,6 @@ does not separate the body of the assertion from its parent model, and the simulation runs both the model and its assertion at the same time. Therefore, the assertion may impact the results of its parent model, and is not transparent. - We wish instead to simulate the assertion independently from its parent model, with its own ODE solver. @@ -1246,8 +1379,12 @@ $ ANode(I, O, R, S_M, Y, Y', Zi, Zo) eq.def { & a : List(ANode(S_M, BB, R_A, S_A, Y_A, Y'_A, Zi_A, Zo_A)) } $ -Note that the output signal is Boolean even in continuous time. There are -two possible interpretations of this: either assertions benefit from relaxed +Note that the output signal is Boolean even in continuous time. This is +normally impossible in continuous #zelus, except if the signal is constant +during continuous phases; a Boolean signal changing during continuous time could +lead to discontinuities, and so operations like conditionals or Boolean +operators are rejected by a typing pass @cit:zelus_sync_lng_with_ode. There are +two possible interpretations of this Boolean output: either assertions benefit from relaxed typing rules for their output, and are allowed a limited subset of discrete behaviours in continuous time; or assertions in continuous time are defined in terms of zero-crossing events, and as such the output of the assertion will be @@ -1257,8 +1394,6 @@ interpretations lead to the same updated simulation algorithm, as we will see in @sec:updated_sim. The $ANode$ datatype is recursive: indeed, nothing prevents assertions from containing their own assertions, and so on and so forth. -#todo[Clarify why Boolean values as output is surprising.] - While this representation allows for a lot of expressivity, in most cases, a model with a single assertion suffices. Multiple assertions may be combined as a single one by simply taking the conjunction of their outputs, and nested @@ -1286,9 +1421,9 @@ discrete steps, this is simple: we build a constant function on the model's state defined on the interval $[0, 0]$. For continuous steps, the ODE solver provides us with a dense function of the continuous part of the state. Since the discrete part of the state is constant during integration, we can use the -approximation returned by the solver, combined with the model's $c_"set"$ +approximation returned by the solver, combined with the model's $cset$ function, to build a dense function of the entire state. We need to be careful, -however: if the $c_"set"$ function rewrites the model's state in-place (this is +however: if the $cset$ function rewrites the model's state in-place (this is the case in the code produced by the #zelus compiler), we must update the state back to its value at the horizon reached by the ODE solver before starting the next simulation step. @@ -1301,7 +1436,6 @@ A step of the simulation then performs a step of the parent model, as seen in @sec:sim_algorithm, and uses the additional output to step the simulation of the assertion as often as needed for it to reach the model's reached time, checking the assertion's output at each step. - The updated #ocaml implementation is given in @lst:sim_assert. #figure( @@ -1316,22 +1450,21 @@ The updated #ocaml implementation is given in @lst:sim_assert. let asim (ASNode { m=HNode model; a=DNode assertion }) (DNode solver) = let s0 = { (*...*); y=None; sa=a.state } in - let dstep state = - let state = { state with sm=model.cset state.sm state.y } in - let o, state = dstep (HNode model) (DNode solver) state in - let y = model.cget state.sm in - let b, sa = assertion.step state.sa (Some { h=0.0; u=fun _ -> state.sm }) in - assert b; (o, { state with sa; y }) in - let cstep state = - let state = { state with sm=model.cset state.sm state.y } in - let o, state, st = acstep (HNode model) (DNode solver) state in - let y = model.cget state.sm in - let b, sa = assertion.step state.sa st in - assert b; (o, { state with sa; y }) in let step state i = match (i, state.mode) with | (*...*) - | None, Discrete -> dstep state - | None, Continuous -> cstep state + | None, Discrete -> + let state = { state with sm=model.cset state.sm state.y } in + let o, state = dstep (HNode model) (DNode solver) state in + let y = model.cget state.sm in + let st = { h = 0.0; u = fun _ -> state.sm } in + let b, sa = assertion.step state.sa (Some st) in + assert b; (o, { state with sa; y }) + | None, Continuous -> + let state = { state with sm=model.cset state.sm state.y } in + let o, state, st = acstep (HNode model) (DNode solver) state in + let y = model.cget state.sm in + let b, sa = assertion.step state.sa st in + assert b; (o, { state with sa; y }) | (*...*) in let reset state r = let sm = model.reset r state.sm and sa = assertion.reset r state.sa in @@ -1341,117 +1474,190 @@ The updated #ocaml implementation is given in @lst:sim_assert. caption: [Simulation of a model with assertions in #ocaml] ) -= Future Work += Related Work -#todo[ - What do we do next? Depends on how much the #zelus compiler is already able to - do: compiling the source language into the internal representation with an - additional model is a good next step, compiling the source language into a - complex, recursive datatype, etc... -] +#simulink provides _observer blocks_ to monitor signals during execution. These +allow for both logging and monitoring of properties without interference with +the model, and may be simulated with their own solver or together with the main +model. They do not, however, allow for nested assertions; an observer block may +not observe another observer block. -= Conclusion += Conclusion and Future Work -#todo[ - Conclude. -] +Due to space constraints, we do not repeat the conclusion here, and instead +refer the reader to Page 2 for a summary and discussion of future work. #pagebreak() -= Bibliography +#heading( + level: 1, + numbering: none, +)[Appendix A --- Bibliography] #bibliography( "sources.bib", - // full: true, style: "alphanumeric.csl", title: none ) -#todo[Find a proper bibliographic style.] -= Appendix +#pagebreak() -== Additional Code +#set par.line(numbering: none) +#heading( + level: 1, + numbering: none, +)[Appendix B --- Table of Contents] +#outline(title: none) +#set par.line(numbering: line_numbering) +#pagebreak() + +#heading( + level: 1, + numbering: none, +)[Appendix C --- Additional Code] + +#heading( + level: 2, + numbering: none, +)[#ocaml Type Definitions] #set figure(placement: none) +This appendix contains all #ocaml type definitions used in code examples +throughout the report. They are direct translations into #ocaml of the +mathematical definitions given in the body of the report. + #figure( ```ocaml (** Discrete-time model. *) - type ('i, 'o, 'r, 's) dnode = - DNode of { s0 : 's; step : 's -> 'i -> 'o * 's; reset : 's -> 'r -> 's } + type ('i, 'o, 'r, 's) dnode = DNode of { + s0 : 's; (* Initial state. *) + step : 's -> 'i -> 'o * 's; (* Step function. *) + reset : 's -> 'r -> 's; (* Reset function. *) + } + ```, + caption: [Discrete-time model in #ocaml] +) + +#figure( + ```ocaml (** Continuous-time model. *) - type ('i, 'o, 's, 'sd) cnode = - CNode of { s0 : 's; fder : 'i -> 's -> 'sd; fout : 'i -> 's -> 'o } - (** Dense values. *) - type 'a dense = { h : time; u : time -> 'a } + type ('i, 'o, 's, 'sd) cnode = CNode of { + s0 : 's; (* Initial state. *) + fder : 'i -> 's -> 'sd; (* Derivative function. *) + fout : 'i -> 's -> 'o; (* Output function. *) + } + ```, + caption: [Continuous-time model in #ocaml] +) + +#figure( + ```ocaml + (** Hybrid model. *) + type ('i, 'o, 'r, 's, 'y, 'yd, 'zi, 'zo) hnode = HNode of { + s0 : 's; (* Initial state. *) + cget : 's -> 'y; (* Get the continuous part of the state. *) + cset : 's -> 'y -> 's; (* Set the continuous part of the state. *) + zset : 's -> 'zi -> 's; (* Set the zero-crossing information. *) + horizon : 's -> time; (* Get the current horizon. *) + jump : 's -> bool; (* Get discontinuity information. *) + reset : 's -> 'r -> 's; (* Reset function. *) + step : 's -> 'i -> 'o * 's; (* Discrete step function. *) + fder : 's -> 'i -> 'y -> 'yd; (* Derivative function. *) + fzer : 's -> 'i -> 'y -> 'zo; (* Zero-crossing function. *) + fout : 's -> 'i -> 'y -> 'o; (* Output function. *) + } + ```, + caption: [Hybrid model in #ocaml] +) + +#figure( + ```ocaml + (** Dense function. *) + type 'a dense = { + h : time; (* Horizon. *) + u : time -> 'a; (* Function on [0, h]. *) + } + ```, + caption: [Dense function in #ocaml] +) + +#figure( + ```ocaml (** Initial value problem. *) - type ('y, 'yd) ivp = { y0 : 'y; stop : time; f : time -> 'y -> 'yd } + type ('y, 'yd) ivp = { + y0 : 'y; (* Initial position. *) + stop : time; (* Stop time. *) + f : time -> 'y -> 'yd; (* Derivative function. *) + } + ```, + caption: [Initial value problem in #ocaml] +) + +#figure( + ```ocaml (** ODE solver. *) - type ('y, 'yd, 's) csolver = (time, 'y dense, ('y, 'yd) ivp, 's) dnode - (** Hybrid simulation mode. *) - type mode = Discrete | Continuous | Idle - (** Hybrid simulation state. *) - type ('i, 'sm, 'ss) state = - { sm : 'sm; ss : 'ss; mode : mode; r : bool; i : 'i dense option; now : time } + type ('y, 'yd, 's) csolver = + (time, 'y dense, ('y, 'yd) ivp, 's) dnode + ```, + caption: [ODE solver as a discrete-time model in #ocaml] +) + +#figure( + ```ocaml (** Zero-crossing problem. *) - type ('y, 'zo) zcp = { y0 : 'y; f : time -> 'y -> 'zo } + type ('y, 'zo) zcp = { + y0 : 'y; (* Initial position. *) + f : time -> 'y -> 'zo; (* Zero-crossing function. *) + } + ```, + caption: [Zero-crossing problem in #ocaml] +) + +#figure( + ```ocaml (** Zero-crossing solver. *) type ('y, 'zi, 'zo, 's) zsolver = ('y dense, time * 'zi option, ('y, 'zo) zcp, 's) dnode - (** Hybrid model. *) - type ('i, 'o, 'r, 's, 'y, 'yd, 'zi, 'zo) hnode = - HNode of { s0 : 's; - cget : 's -> 'y; cset : 's -> 'y -> 's; zset : 's -> 'zi -> 's; - horizon : 's -> time; jump : 's -> bool; reset : 's -> 'r -> 's; - step : 's -> 'i -> 'o * 's; fder : 's -> 'i -> 'y -> 'yd; - fzero : 's -> 'i -> 'y -> 'zo; fout : 's -> 'i -> 'y -> 'o } + ```, + caption: [Zero-crossing solver as a discrete-time model in #ocaml] +) + +#figure( + ```ocaml (** Full solver. *) type ('y, 'yd, 'zi, 'zo, 's) solver = (time, 'y dense * 'zi option, ('y, 'yd) ivp * ('y, 'zo) zcp, 's) dnode + ```, + caption: [Complete solver mechanism in #ocaml] +) + +#figure( + ```ocaml + (** Hybrid simulation mode. *) + type mode = Discrete | Continuous | Idle + + (** Hybrid simulation state. *) + type ('i, 'sm, 'ss) state = { + sm : 'sm; (* Model state. *) + ss : 'ss; (* Solver state. *) + mode : mode; (* Simulation mode. *) + r : bool; (* Reset flag. *) + i : 'i dense option; (* Current input. *) + now : time; (* Current time. *) + } + ```, + caption: [Hybrid simulation state in #ocaml] +) + +#figure( + ```ocaml (** Hybrid model with a single assertion. *) - type ('i, 'o, 'r, 'sm, 'sa, 'y, 'yd, 'zi, 'zo) asnode = - ASNode of { m : ('i, 'o, 'r, 'sm, 'y, 'yd, 'zi, 'zo) hnode; - a : ('sm signal, bool, 'sa) dnode } + type ('i, 'o, 'r, 'sm, 'sa, 'y, 'yd, 'zi, 'zo) asnode = ASNode of { + m : ('i, 'o, 'r, 'sm, 'y, 'yd, 'zi, 'zo) hnode; (* Model. *) + a : ('sm signal, bool, 'sa) dnode; (* Assertion. *) + } ```, - caption: [#ocaml type definitions] -) + caption: [Hybrid model with assertion in #ocaml] +) -#figure( - ```ocaml - let compose (DNode f) (DNode g) = - let s0 = (f.s0, g.s0) in - let step (sf, sg) = function - | Some i -> - let (v, sg) = g.step sg (Some i) in - let (o, sf) = f.step sf v in - (o, (sf, sg)) - | None -> - let (o, sf) = f.step sf None in - match o with - | Some _ -> (o, (sf, sg)) - | None -> - let (v, sg) = g.step sg None in - match v with - | None -> (None, (sf, sg)) - | Some _ -> - let (o, sf) = f.step sf o in - (o, (sf, sg)) in - let reset (sf, sg) (rf, rg) = (f.reset sf rf, g.reset sg rg) in - DNode { s0; step; reset } - ```, - caption: [Composition of simulations in #ocaml] -) - -#figure( - ```ocaml - let synchr (DNode f) (DNode g) = - ```, - caption: [Synchronization of simulations in #ocaml] -) - -#todo[Complete @lst:synchr.] - -#note[ - Ideas: - - Detailed synchronous kernel of #zelus -] diff --git a/doc/sources.bib b/doc/sources.bib index 3b10a08..6c32c75 100644 --- a/doc/sources.bib +++ b/doc/sources.bib @@ -212,3 +212,91 @@ volume = {4}, year = {1953}, } +@article{cit:assertion_hist, + title = {A historical perspective on runtime assertion checking in software + development}, + volume = {31}, + ISSN = {0163-5948}, + DOI = {10.1145/1127878.1127900}, + abstractNote = {This report presents initial results in the area of software + testing and analysis produced as part of the Software + Engineering Impact Project. The report describes the + historical development of runtime assertion checking, + including a description of the origins of and significant + features associated with assertion checking mechanisms, and + initial findings about current industrial use. A future + report will provide a more comprehensive assessment of + development practice, for which we invite readers of this + report to contribute information.}, + number = {3}, + journal = {ACM SIGSOFT Software Engineering Notes}, + author = {Clarke, Lori A. and Rosenblum, David S.}, + year = {2006}, + month = may, + pages = {25–37}, + language = {en}, +} +@article{cit:assertion_axiom, + title = {An axiomatic basis for computer programming}, + volume = {12}, + ISSN = {0001-0782}, + DOI = {10.1145/363235.363259}, + abstractNote = {In this paper an attempt is made to explore the logical + foundations of computer programming by use of techniques + which were first applied in the study of geometry and have + later been extended to other branches of mathematics. This + involves the elucidation of sets of axioms and rules of + inference which can be used in proofs of the properties of + computer programs. Examples are given of such axioms and + rules, and a formal proof of a simple theorem is displayed. + Finally, it is argued that important advantage, both + theoretical and practical, may follow from a pursuance of + these topics.}, + number = {10}, + journal = {Commun. ACM}, + author = {Hoare, C. A. R.}, + year = {1969}, + month = oct, + pages = {576–580}, +} +@article{cit:assertion_lustre, + title = {Programming and verifying real-time systems by means of the + synchronous data-flow language LUSTRE}, + volume = {18}, + rights = { + https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/IEEE.html + }, + ISSN = {00985589}, + DOI = {10.1109/32.159839}, + number = {9}, + journal = {IEEE Transactions on Software Engineering}, + author = {Halbwachs, N. and Lagnier, F. and Ratel, C.}, + year = {1992}, + month = sep, + pages = {785–793}, +} +@inbook{cit:hyb_auto, + address = {Berlin, Heidelberg}, + title = {The Theory of Hybrid Automata}, + ISBN = {978-3-642-59615-5}, + url = {https://doi.org/10.1007/978-3-642-59615-5_13}, + DOI = {10.1007/978-3-642-59615-5_13}, + abstractNote = {A hybrid automaton is a formal model for a mixed + discrete-continuous System. W e classify hybrid automata + acoording to what questions about their behavior can be + answered algorithmically. The Classification reveals + structure on mixed discrete-continuous State Spaces that was + previously studied on purely discrete state Spaces only. In + particular, various classes of hybrid automata induce + finitary trace equivalence (or similarity, or bisimilarity) + relations on an uncountable State space, thus permitting the + application of various model-checking techniques that were + originally developed for finitestate Systems.}, + booktitle = {Verification of Digital and Hybrid Systems}, + publisher = {Springer}, + author = {Henzinger, Thomas A.}, + editor = {Inan, M. Kemal and Kurshan, Robert P.}, + year = {2000}, + pages = {265–292}, + language = {en}, +} diff --git a/exm/builtins/ball_assert.ml b/exm/builtins/ball_assert.ml new file mode 100644 index 0000000..724e323 --- /dev/null +++ b/exm/builtins/ball_assert.ml @@ -0,0 +1,83 @@ + +open Hsim.Types +open Solvers.Zls + +(* let hybrid bouncing () = (x, y) where + rec der y = y' init y0 + and der y' = -. g init y'0 reset z -> -0.8 *. last y' + and z = up (-. y) + and assert (up (-. (y +. epsilon))) *) + +let of_array (a : time array) : carray = + Bigarray.(Array1.of_array Float64 c_layout) a + +type state = + { zin : zarray; + lx : carray; (* [| y'; y |] *) + i : bool; } + +let g = -9.81 +let y0 = 50.0 +let y'0 = 0.0 +let x0 = 0.0 +let x'0 = 1.0 + +let ball () +: (state, unit, unit, carray, carray, carray, zarray, carray) hrec += let zsize = 1 in + let csize = 2 in + let yd = cmake csize in + let zout = cmake zsize in + let zfalse = zmake 1 in + let state = { zin=zfalse; lx=of_array [| y'0; y0 |]; i=true } in + let fder _ _ () y = yd.{0} <- g; yd.{1} <- y.{0}; yd in + let fzer _ _ () y = zout.{0} <- -. y.{1}; zout in + let fout _ _ _ y = y in + let step s _ () = + let lx = + if s.zin.{0} = 1l then of_array [| -. 0.8 *. s.lx.{0}; s.lx.{1} |] + else s.lx in + s.lx, { zin=zfalse; lx; i=false } in + let reset () _ = state in + let horizon _ = max_float in + let jump _ = true in + let cset s lx = { s with lx } in + let cget s = s.lx in + let zset s zin = { s with zin } in + { state; fder; fzer; fout; step; reset; horizon; jump; cset; cget; zset; + csize; zsize } + +type astate = { zin_a: zarray } + +let aball epsilon +: (astate, unit, state, bool, carray, carray, zarray, carray) hrec += let zsize = 1 in + let csize = 0 in + let zin_a = zmake zsize in + let yd = cmake csize in + let zout = cmake zsize in + let state = { zin_a } in + let fder _ _ _ _ = yd in + let fzer _ _ st _ = zout.{0} <- -. (st.lx.{1} +. epsilon); zout in + let fout _ _ st _ = st.lx.{1} +. epsilon >= 0.0 in + let step { zin_a } _ st = + zin_a.{0} <> 1l && st.lx.{1} +. epsilon >= 0.0, { zin_a } in + let reset _ _ = state in + let horizon _ = max_float in + let jump _ = true in + let cset s _ = s in + let cget s = yd in + let zset _ zin_a = { zin_a } in + { state; fder; fzer; fout; step; reset; horizon; jump; cset; cget; zset; csize; zsize } + +let errmsg_invalid = "Invalid arguments to model (needed: [float])" +let errmsg_few = "Too few arguments to model (needed: [float])" +let errmsg_many = "Too many arguments to model (needed: [float])" +let init = function + | [eps] -> + let eps = try float_of_string eps + with Failure _ -> raise (Invalid_argument errmsg_invalid) in + let a = HNodeA { body=aball eps; assertions=[] } in + HNodeA { body=ball (); assertions=[a] } + | [] -> raise (Invalid_argument errmsg_few) + | _ -> raise (Invalid_argument errmsg_many) diff --git a/exm/builtins/main.ml b/exm/builtins/main.ml index 95e06a8..17091a6 100644 --- a/exm/builtins/main.ml +++ b/exm/builtins/main.ml @@ -4,19 +4,21 @@ open Solvers open Common open Types -let sample = ref 1 -let stop = ref 10.0 -let accel = ref false -let inplace = ref false -let sundials = ref false -let speed = ref false -let steps = ref 1 -let model = ref None -let minstep = ref None -let maxstep = ref None -let mintol = ref None -let maxtol = ref None -let no_print = ref false +let sample = ref 1 +let stop = ref 10.0 +let accel = ref false +let inplace = ref false +let sundials = ref false +let speed = ref false +let steps = ref 1 +let model = ref None +let minstep = ref None +let maxstep = ref None +let mintol = ref None +let maxtol = ref None +let no_print = ref false +let no_assert = ref false +let c_assert = ref false let gt0i v i = v := if i <= 0 then 1 else i let gt0f v f = v := if f <= 0.0 then 1.0 else f @@ -29,7 +31,7 @@ let set_model s = | Some _ -> modelargs := s :: !modelargs let opts = [ - "-sample", Arg.Int (gt0i sample), "n \tSample count (default=10)"; + "-sample", Arg.Int (gt0i sample), "n \tSample count (default=1)"; "-stop", Arg.Float (gt0f stop), "n \tStop time (default=10.0)"; "-debug", Arg.Set Debug.debug, "\tPrint debug information"; "-accelerate", Arg.Set accel, "\tConcatenate continuous functions"; @@ -41,7 +43,9 @@ let opts = [ "-maxstep", Arg.String (opt maxstep), "\tSet maximum solver step length"; "-mintol", Arg.String (opt mintol), "\tSet minimum solver tolerance"; "-maxtol", Arg.String (opt maxtol), "\tSet maximum solver tolerance"; - "-no-print", Arg.Set no_print, "\tDo not print output values"; + "-noprint", Arg.Set no_print, "\tDo not print output values"; + "-noassert", Arg.Set no_assert, "\tDo not check assertions"; + "-cassert", Arg.Set c_assert, "\tCheck assertions continuously"; ] let errmsg = "Usage: " ^ Sys.executable_name ^ " [OPTIONS] MODEL\nOptions are:" @@ -53,12 +57,13 @@ let args = List.rev !modelargs let m = try match !model with | None -> Format.eprintf "Missing model\n"; exit 2 - | Some "ball" -> Ball.init args - | Some "vdp" -> Vdp.init args - | Some "sincos" -> Sincos.init args - | Some "sqrt" -> Sqrt.init args - | Some "sin1x" -> Sin1x.init args - | Some "sin1xd" -> Sin1x_der.init args + | Some "ball" -> a_of_h @@ Ball.init args + | Some "vdp" -> a_of_h @@ Vdp.init args + | Some "sincos" -> a_of_h @@ Sincos.init args + | Some "sqrt" -> a_of_h @@ Sqrt.init args + | Some "sin1x" -> a_of_h @@ Sin1x.init args + | Some "sin1xd" -> a_of_h @@ Sin1x_der.init args + | Some "aball" -> Ball_assert.init args | Some s -> Format.eprintf "Unknown model: %s\n" s; exit 2 with Invalid_argument s -> Format.eprintf "%s\n" s; exit 2 @@ -73,21 +78,30 @@ let output = let sim = if !sundials then let open StatefulSundials in - let c = if !inplace then InPlace.csolve () else Functional.csolve () in + let c = if !inplace then InPlace.csolve else Functional.csolve in let open StatefulZ in - let z = if !inplace then InPlace.zsolve () else Functional.zsolve () in - let s = Solver.solver c (d_of_dc z) in + let z = if !inplace then InPlace.zsolve else Functional.zsolve in + let s = Solver.solver c (fun () -> d_of_dc (z ())) in let open Sim.Sim(val st) in - Hsim.Utils.run_until_n (output !sample (run m s)) + let sim = if !no_assert then run (fun () -> h_of_a m) s + else if !c_assert then run_assert_continuous (fun () -> m) s + else run_assert_sample !sample (fun () -> m) s in + Hsim.Utils.run_until_n (output !sample sim ()) else let open StatefulRK45 in - let c = if !inplace then InPlace.csolve () else Functional.csolve () in + let c = if !inplace then InPlace.csolve else Functional.csolve in let open StatefulZ in - let z = if !inplace then InPlace.zsolve () else Functional.zsolve () in + let z = if !inplace then InPlace.zsolve else Functional.zsolve in let s = Solver.solver_c c z in let open Sim.Sim(val st) in - let n = if !accel then accelerate m s else run m (d_of_dc s) in - Hsim.Utils.run_until_n (output !sample n) + let sim = + if !no_assert then + if !accel then accelerate (fun () -> h_of_a m) s + else run (fun () -> h_of_a m) (fun () -> d_of_dc (s ())) + else + if !c_assert then run_assert_continuous (fun () -> m) (fun () -> d_of_dc (s ())) + else run_assert_sample !sample (fun () -> m) (fun () -> d_of_dc (s ())) in + Hsim.Utils.run_until_n (output !sample sim ()) -let () = sim !stop !steps ignore +let () = ignore @@ sim !stop !steps ignore diff --git a/exm/zelus/ballcos/ball.zci b/exm/zelus/ballcos/ball.zci new file mode 100644 index 0000000000000000000000000000000000000000..b38c63910f6c48c64629b923d1f481e8408c2206 GIT binary patch literal 17762 zcmZpfx@;cQhrgM*_3!+#{9j}8tF&LE>47EEGcp15EV3kL{0OxWPyuwW8c>jWo; z|IQ8|bqxO}!o(aH{=0z0K&DM%VR2Zn?17WRf(ug?gea96EMR0f!N_oG!xR={H%Eve z4vvfrOC6vVJ2EmXSpd=mHXkIle*p_ClI&iD!hH@Pl@1Odi&!|2)GR}&S%qM(Krjz1 zVBuT9BIK}ug$?9VhW`!=SU3^VPZzLoIV@n|M~FNGsYGz^qq^xXLgpTV`3S*$f?z&I zIND(W3p?C;E`*Xh2<9^c^T7fZVTT1QtP5B;;F>rgtOYD=3s~e9u!tgs!Hoqh{7BsE zAf50qy@@dPHiG#E!F-8eK1VQLAegTZ%-0C!N(6Hqg1H*OT!Z3!f4E-|D%LtIVBv;% z%V7ZvAB+We`mO~mf({E-m$FJKXabHpL61uP=q6wV^EfW-(RbZU~z+pIxJvugs>0}K7wE#LonYWn70u!dk!*wSYx*0ZW(zDA-`(mFD2!Fk!+1XT?Nt!S!$fOCChI!vdB< zgv0hAn41=`RDj$FQMQ1kX#q<)hz%~?LFK2z0+t$(0K@+UEDa9uYzY&BWk|3K7O-?c z#F5DbES;!a?*%MKIpzHVmJJRISiUV7a(}1zh!j&AkSZbXdUR1Z6>;?~crMSitfP!e7Ah z%V7b_a|j1QE?{{BVL(VkfPPrO%E;%ifR#}g*+(vlWgweb86}|VSo2z@h^x#Gq=A`b%; zEMR2#z{v2Km9b$G%R7Xz`$5L0LakrG$ncPn;WNX3hYKJPhXof7vWQ;Tw!p#R!orEL z#)guX-UNpQ4h|a*J2-6ExPXNd-uhr<+RE@BCMxMILAOtI=FyE8R{kw#qb}QTmX+lmMG=q z{Nf1?ERnEyN<@m39guiRLlW8!ilUti|5*ZA0v24Dz|ysVk&%aykr$NI{&|9uTFN9= z#ybuR7#Z0a8TmGBWZ`pQ;qhnqKZ%twY7&bLNP-C>k>bFTgeOkica zzkrcZgppBf!xUB~0auV=Hz4us;K<0hYXQq@P~wEat{UFQ!M95yjbm=dIEVN;S ztoJuU7TUx@mi>c}y@hG=UxX~Qg^#TFA42vvN(kXAZ!ppUxIlsU9NHj7vV(~MVaE*= zJ2XHN;1Jh?vrOPDSc75#OCMAWLcz-`Rz?jaUA+kotc>c=0*jSVAD-12nfAgf99Bj% zB=Oy#l8j}I1IsE#rd^;SY!8Uo$MBz(Q5jSx!z^HBbOIS}4>6pT(awRD(T0)f5X@Ls zMr#LFMoUJf10Vxg87&-G8O<1(_Jd422qF%Hj5K9sG+6+uB3YSUE2d8Xm3gX+jB2b* zPbRT4iB4j%M-;%UjB(1vnRy^fVdq4a+$=^jqI*wC4F!}H^H6Nh2(@&un<|m$~X~8`~=jw(~!iDgPeO3M4Se>xsjEz z0d5g1;{uT1=Rz!DWt`){$~cRW={(GMR>qkQtc=qcna+X?W@Vh_z{)s@jNvurIC$U@u2h!yQjEvTdj5e%{mnN|?eP?C7 z0169JMn;qV`tW0-V8IwS^IWRK1gKW!pU}enB1l#s{5-X!B zNX`^2$Kv9^;uH^-0oA3JAQ@FgMt4@m09HnCRz@#KHRsOo-+`6!g~J60R>ngMCSGuu z0Lm+@j7LBM{})WW0OC73ure`TaA0L(Uoi0k3oB@Bhn2D3!O_Wi0VBgXMn?AwGeB-- z5?H{l^vu+RcVhD(eLmsyzvC$Tb_u`=<4s@-#p3|BTxSis6S zVF4?XxI>P^#04z83s^WECN5xQoVy%4vq^L8IChD zx;so*z{ z*g)37MzI_j{)4*>pvE^V^CIXV7AS==ZDC~E#v%u4Sb$n6O%7;{bfzYdWk?P5XvGpl z8~lU)0!F5bj7(QpneQPC0e7E3mZ6upOfVToMka7M>A>(Gtwqmti;?LrEAwlFX+6+Z zBFK5YP%k?&GIk-D-N<7BU^_u-n-{RKBh;)#Fk3)lF`&T`aM#nHMFU)x^B@!~TfoAD zWa$#nNDACo#5f2eVqA!^4WYXa!JLL*PC_szAUl_ZeE|z%yo|9Qp=>&WIT^v6h+s}Z zFsGs$DG3@-fHlH-Kq(jON&W>avY-(mn2ZQSW&vpAK?tM;VPxw97Ad4aSPu%Y1uRYo z1uH<~9t&8^5F(2Z%uNX9QUr4`x-+>T_9Mp07O-$EU~vc8!y=5(hZu`vM2u50wj&hG zKrj~|m~#-!Ss2^m7W zP2dPOhR82qF#z|}l^hnZSVDvx7O>brI_E)373yHcvyg`zdO$-p;B*4=4&0lF0Z>NN z0njN6SmK~2BPb*nPnfVE06eAuHWR930n0=PYXM8&0+yBqER7DJAt;EF1uU~54h)2j zu54MrvIwHwVFAms1uO*+4miY;7O+?>U;#Ia!DHy95IG3BfMvx3mih%OY0&W#unKTr z88k?A+F=39K8QjH2`_t?x*Qg;vdn>qIxJvhI>E?v7gT34n}fP*lR+~9u`F^67@3|j zGCkWcg_Y$5Bf~VuNi4e&M)V;v5mPH@kRKl3OrU}VWHu=3AYKNOAX8&lEEX^_y88JV6tFfv_-OnI@gdN4BGfSBsd$aE7l>Gj!xk?D&Axb3kR z97T}vum|=F7@7GPnT1(d11GV(fp`nKM+3@EkbW=IOi)~aB4z<2GbbanFpCk37K{1< zMyCIa%);QfxB`j`P#b|+iji4{m2ur9Rz?+wnV?VxXG8~v|B!LJ1sA}1AwjWZ0VCrz zM#k%)!L9|Y%unG>XoegIhET*T8KWs8s2TN9f|@Y~6x8rs!f1_P+8~&=2&Nr!d5k;_ z1@a>(gYzNOCLx%H2&Ng>1n}r2bRuiQgatm(Qbz)zE&-HV5ZpLWJpnHn6A==X2xcmR znT%kjAed%sd3s2*I?#<|S` z0+xJ2t|~?tREA)dg3W{lGCL%M9l&KMczhC6q`@m<Loj_T@k`AiD7qAq=)gXm* z6~cS*2xja8mO8}T3S#aATs7At<=E&2EWAiu#0(~5)B={3AR`cl1|XQ#2xcUL84d{@ zR=7Jkkf%+djaSg5HYkBhAX)1Rp7(|)b#H``J_x2CDE1KCAk@Mo43!&#$_+;4hN5x< z!CV$`gy9|tW(|Vr4{D}?iV7UF-4+X21i(t*K5+vLoFfcyK`>nrOiu*U3*<+5@FDej zoDphj5lnZm@wlho)lkFL5tMBZx_6%X52?ixZtqkhsL)9j-GBPh< zWW2-3co(GBlOY_WmKUKGwAclzHksw)0!GIBjEoOKN`o0994E2-MyLeMLqb)iuz)5w z9y2mN0jZ2-h;*F9@)Dua6*^e3fRXVkBjeKzQ@~>^84Fmn7O*HTV37c&B!(ylh7d>4 zI7>RXzoH5*Nrgd;C7T5-#&ER`kZ~Pmu?39GdW_8a8>XE|R?wsYX& z9m55T%!Z82Mj+WAj0}@OvhOFcGU&z_MQ#Ffv;+GTVS;1sEBof@J4SVrBf~uz-Y@}k)S7Jaxj2UgY@ zpvD&KGSFxcE8~F$6Iq#Of%Ss(_ed|$xg z3u1z83xKl_i)9kvV##n8XfX^#Zzeu_=|U}Q39WU>I2 zdK``jJq-WBCF$KsEM5pFtN3IVmni2Z7Jyc{f^@K*MCf2-mIc`&1{ws|u#uJNjRPyw zD@JBHkf4O411sBEu=fr-IIwWA2rx2B!@UGuOAGNAivZXck`Q08Lj~o)g5n^vq(FoW z$Qx%^*-k^|qS#*OL&7{hKP?`-Bo{O!z~s!x6a=!AMV>{Sky)PMKd64Qoy5wdzhDx} zlu0Zz5nhA3LCMMrcL=?7Jz?BEdRhq{Ls>>ef1s$XVhkW)eHK?NOH zSQwcVLGDulx$h?{+m8j%=7Hq`My3!(rchSKib<@@+LKrr72%e%s6p)9!pN-Z=)lUZ zh-@c|GN_xuqR7Y$8vSHs)&Se42Fe;NDvZo(Aloz<{^EJoZEj%OTo{?PLAL3EY_nu# zw}9EEzkrb`f{`hbm2t}?R%Y8ttc;Eb+tMJmePLwQ2ica0Vp}rUwnRo|L$GZ|VB6Bb zwxuvK8-Q#x2H6(L${qo;&2<4IQxqdp3@hWQNvzDE)?y&Swl=VBoFa_OCLr4yQEY1l z+t$d)YzDT?9Bf+~*tQl%W>b)D79iUyS=lRKwnZ;sWQt{EieqJbI*FCpbrLIMA|%Oi zYAZ#@LToc;WVUn!4Y36?GR1G$$TAnyMF3@fD^MO{cA3P=m;sjt&F1}Cuwf(1iUk{{ zurgm_WN3GEVBuwC=m0s2p%dCNO9Qpc!az+iW$;YM0!AjN>DxdH%LN!2nj9TiwlOj^ zgYBrA#L74c*$yUYNK3B^YTk5^dF>$cB0wI7E8WO)8f2a-L#?9&%V~x>uxYC&u`+Il zD*??tT0uCBe)UI`f83mBPpGBVqOUCy+Vk!d$8n=ag)jGHlBz6#-TLy*fs0kegX*%mZ&&H0{{ z&Dz0HDYq0fbf~O)Zn@6380-Dtek%tf*nC4 z*{sYutZaUa41Era4E<;`*P!k$Xw@vV0m1N}krC9+04)mzZNy+a%$o?~L+!t8j1S|{LcFKBF=m3bN~%Q;q-v#cz~Sed6T zxG;s4Wi>1FBv$5$tjzta%za>yepcpgR^~2N<_=cocCbhpD{~7gb2BS*BP(+QSR|H} zxt5i=hLyRBmATS^mARaixr~)Lmz6mkvvNAKUGW};|`UUB1u`>OZ3`;3 zSedLC(i#4<{AI{s_|K39woq#UDZ?szNJ07Hw809aiSWtW4UhOj=+YH6b=$V^IPb?}K4s5ZFTR1+0u=4y;U` z45c6o%Rm-JGL(ZYOrFHbauH%-D9A!z2Uf;tsD-R?tW3JB%)3F>GHHV?)Ph*}oy8es zVH1Xh9bgM{7O*n*IIuEhF;syptOi-w&rk!laONad)>Mdv;L0@4ft7J0%)$g#COuZ> zhahX2bifvBgDvEiU`YX4xC6t&eP9cF7qBuOa$sfZW~c{O*9{;Wk1{eef~`D1iIp`A zVkNj10zQeHc3)sqa3s@O{IIuFUVPt3l z+t~`T^EV?y8^}&3)=8|a`4BrhK;hcpz{>a+W@i>FlL0G>2*_q8y#=gHx(=*NvaC!p ztW3hJOneTkOx&zYT&zs2tV}EptW3s4ujQd#`cR8>!Zf9lO#>%*nm2rauE8}`r#&xWW%UKzhIj}M=Wo2B#%D9M?aiIe% z;{sO3`K-(@S(#t3GR}oBhIe3PoC{qS52`0oq(E}4jB{8S=d!Y|WM!Pm$~YZVbuk() zaA0L*0aa_;SXm4}LaeJO+Z!um1)yESSuyW_I zGUhutva)G{svR~>l&yP=pgk{W^@9$|$|g|t0NT38g|c-Iv;>L?yadw$(pKS)STKo| zJIVoG7epxKmM&mqjACSr0XIT8KRd8;eyn%MM@&gFd_mL<44*+Y1GJWMWMt$A4Oqju z3||q<9|-1mIFnHm!Bj&q)loXjyrAJ82hfNTLWKrma0z+G7>gi6i4u5l9(mS*9n>mD zC}2f#D zp`I7PR6sD1R`v)WM3MX`iVzh;2{U%k%mp~i5CMfyD}-Q*Aeiz9rWAsSG;4!2!7GDM zAPZ+Qd_yq*AecW9OweW<#NbjqX2ddpMz639z94y84id45@k2&w)QFV?M=Wf?_W~A8 zNWeo#xMLVqKvN|PSP;W&jEpGefU0@qU8sNIS{eSqnT$*brZR%bwtyuA693pYZWb?K z$wJv}%BYIa%m7-z4)Oyy0-?J+A+Cp#pe1K8NyO|UL=x1+1j|9Wu(4N0Ezo-R1uSzR z&315WZh<>=?tak%mOzMlhXpJl3s^u+a8RojzJYB4imdwCaJ#X*MQuJ$WclaF$OKDe$kPSj1!<7!0v1p{fjA6V1$YM}M1=?_(lJ$lM`a-@ zp!o+`KX`dQL>5}mAj^U?4MbK9(`4`{FGLnv1|jPO&)-92p~VNXEU2Oa6^V|FOwyPp zgK9RYEVL9t)(hT905MqxvDX086n#*rL)6LQ-(7{+8G>mFct0t`6lmFp>=r|W9g+yQ zIDjT$!70mO0SmaQ1t)yO5I9s9Xki1Ujo_6K5F3TCt5AjNcVuJ|z#i-1wH6RFpw$Yp zt6>wXj*LwF2v>trET(I~TV^08@nKh?h;R)LcGt)wR6wgrWY>U~WkPJ=Cgd9Myf#EF z7sxdrgTXVx@Vrd22xL*#!3B{lXD&=w5XG`!0V88IBV!FK`;AGgjQNvTc^)Axy9O=d zW^7_)Y-Q!;nZ(K{0q-j_aX2hsV=*IRE2uZe-2>W2DFhq1XXOH|W8>}s z_sBM~awR&ja>avJO2S0q99X$x7@2N^1_oKV*&SH9Ss9sbG5lv_x&tEaG5lxcu4Cn{ zg^xF~a?hRMz{))fY5@042UhOsj7*Q<-8}AT4y@c$7?~bGjGXMi$~}>h=|0G`haloH z$jAw--2F&Kt_K;p24o~F2Lp)Ou#uH}nFA~L5=N${5OWqguyQYCWO@QJ;u(l|0WxO+ zEBAcxoba&)jEqwm8K;A$SC8a@hDiG+vD`#h!8IRb#Sy64Tyq^*xn?smy@9)$YnB5m z*9=CcR}kBr9ay;?8JS*!EP4$h-hyn~#mc=CX;~jQdgd@P&S&LKpTx>IZ4%1{goWG> zK^ESFTF8CZftC9l$9fF5-a1ZNvyoFAmP>pjEpN88CS7##7tsk>|kL74X7<aUDK!bFQ>n5>$0Ljf}WLyK1D{x@t&SP){%N?Ht>NP-u4=nlKftCAh4Os5pB$kUH zi>57LWZb~WxRI43cM>b(JC>;+!=^AYZUPzh(}9)ydpTHr*Cdw1AoYtEFfwjqWZcfm z0UD*9#i9aLza6B$(}9({y$GznZ4%2?^z^=$k?{a4@A^rsOh`*2OdS@m@=k$fw*`!h zJ&cS8K do + () = print_endline(String.concat ",\t\t" (List.map string_of_float [t;x;v;x';y])) + done + +(* Changing the period for [print] changes the result. *) +let hybrid main () = () where + rec der t = 1.0 init 0.0 + and (x, v) = ball(2.953) + and (x', y) = vdp_c(0.5) + and () = print(0.5)(t, x, v, x', y) + +(* +let input _ = 2.953 + +let node print_discrete (now, (x, v)) = + print_endline (String.concat ",\t\t" (List.map string_of_float [now;x;v])) + +let ball_discrete = Solve.solve_sundials(ball) + +let node main_discrete () = + let input = Some (Solve.make(30.0, input)) fby None in + let o = run ball_discrete input in + Solve.period'_t 1.0 print_discrete o +*) + diff --git a/exm/zelus/ballcos/dune b/exm/zelus/ballcos/dune new file mode 100644 index 0000000..47d7ece --- /dev/null +++ b/exm/zelus/ballcos/dune @@ -0,0 +1,17 @@ +(env + (dev + (flags + (:standard -w -a)))) + +(rule + (targets ball.ml ball.zci) + (deps + (:zl ball.zls) + (:zli solve.zli)) + (action + (run zeluc %{zli} %{zl}))) + +(executable + (public_name ballcos.exe) + (name main) + (libraries std)) diff --git a/exm/zelus/ballcos/main.ml b/exm/zelus/ballcos/main.ml new file mode 100644 index 0000000..b00df44 --- /dev/null +++ b/exm/zelus/ballcos/main.ml @@ -0,0 +1,4 @@ + +open Std + +let () = Runtime.go_discrete ignore Ball.main_discrete ignore diff --git a/exm/zelus/ballcos/solve.zli b/exm/zelus/ballcos/solve.zli new file mode 100644 index 0000000..c998c73 --- /dev/null +++ b/exm/zelus/ballcos/solve.zli @@ -0,0 +1,27 @@ + +type time = float +type 'a value +type 'a signal = 'a value option +type 'a signal_t = ('a value * time) option + +val horizon : 'a value -> time +val make : time * (time -> 'a) -> 'a value +val apply : 'a value * time -> 'a +val sustain : 'a -> 'a value + +val solve_ode45 : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t +val solve_sundials : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t + +val synchr : + ('a signal -D-> 'b signal_t) -S-> + ('a signal -D-> 'c signal_t) -S-> + 'a signal -D-> ('b * 'c) signal_t + +val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit + +val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit +val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit + +val period' : float -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val period'_t : float -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit diff --git a/exm/zelus/ballcos/tmp/ball.ml b/exm/zelus/ballcos/tmp/ball.ml new file mode 100644 index 0000000..b3ad0ab --- /dev/null +++ b/exm/zelus/ballcos/tmp/ball.ml @@ -0,0 +1,172 @@ +(* The Zelus compiler, version 2.2-dev + (2025-08-14-22:1) *) +open Ztypes +let g = 9.81 + +let mu = 0.5 + +type ('d , 'c , 'b , 'a) _ball = + { mutable major_68 : 'd ; + mutable i_72 : 'c ; mutable x_71 : 'b ; mutable v_70 : 'a } + +let ball (cstate_97:Ztypes.cstate) = + + let ball_alloc _ = + cstate_97.cmax <- (+) cstate_97.cmax 2; + { major_68 = false ; + i_72 = (false:bool) ; + x_71 = { pos = 42.; der = 0. } ; v_70 = { pos = 42.; der = 0. } } in + let ball_step self ((time_67:float) , (v0_66:float)) = + ((let (cindex_98:int) = cstate_97.cindex in + let cpos_100 = ref (cindex_98:int) in + cstate_97.cindex <- (+) cstate_97.cindex 2 ; + self.major_68 <- cstate_97.major ; + (if cstate_97.major then + for i_1 = cindex_98 to 1 do Zls.set cstate_97.dvec i_1 0. done + else ((self.x_71.pos <- Zls.get cstate_97.cvec !cpos_100 ; + cpos_100 := (+) !cpos_100 1) ; + (self.v_70.pos <- Zls.get cstate_97.cvec !cpos_100 ; + cpos_100 := (+) !cpos_100 1))) ; + (let (result_102:(float * float)) = + (if self.i_72 then self.v_70.pos <- v0_66) ; + self.i_72 <- false ; + (let (a_69:float) = + (-.) (( *. ) g (sin self.x_71.pos)) + ((/.) (( *. ) mu self.v_70.pos) (cos self.x_71.pos)) in + self.v_70.der <- ( *. ) a_69 (cos self.x_71.pos) ; + self.x_71.der <- self.v_70.pos ; (self.x_71.pos , self.v_70.pos)) in + cpos_100 := cindex_98 ; + (if cstate_97.major then + (((Zls.set cstate_97.cvec !cpos_100 self.x_71.pos ; + cpos_100 := (+) !cpos_100 1) ; + (Zls.set cstate_97.cvec !cpos_100 self.v_70.pos ; + cpos_100 := (+) !cpos_100 1))) + else (((Zls.set cstate_97.dvec !cpos_100 self.x_71.der ; + cpos_100 := (+) !cpos_100 1) ; + (Zls.set cstate_97.dvec !cpos_100 self.v_70.der ; + cpos_100 := (+) !cpos_100 1)))) ; result_102)):float * float) in + let ball_reset self = + ((self.i_72 <- true ; self.x_71.pos <- 0.):unit) in + Node { alloc = ball_alloc; step = ball_step ; reset = ball_reset } +type ('c , 'b , 'a) _vdp_c = + { mutable major_75 : 'c ; mutable y_77 : 'b ; mutable x_76 : 'a } + +let vdp_c (cstate_103:Ztypes.cstate) = + + let vdp_c_alloc _ = + cstate_103.cmax <- (+) cstate_103.cmax 2; + { major_75 = false ; + y_77 = { pos = 42.; der = 0. } ; x_76 = { pos = 42.; der = 0. } } in + let vdp_c_step self ((time_74:float) , (mu_73:float)) = + ((let (cindex_104:int) = cstate_103.cindex in + let cpos_106 = ref (cindex_104:int) in + cstate_103.cindex <- (+) cstate_103.cindex 2 ; + self.major_75 <- cstate_103.major ; + (if cstate_103.major then + for i_1 = cindex_104 to 1 do Zls.set cstate_103.dvec i_1 0. done + else ((self.y_77.pos <- Zls.get cstate_103.cvec !cpos_106 ; + cpos_106 := (+) !cpos_106 1) ; + (self.x_76.pos <- Zls.get cstate_103.cvec !cpos_106 ; + cpos_106 := (+) !cpos_106 1))) ; + (let (result_108:(float * float)) = + self.y_77.der <- (-.) (( *. ) (( *. ) mu_73 + ((-.) 1. + (( *. ) self.x_76.pos + self.x_76.pos))) + self.y_77.pos) self.x_76.pos ; + self.x_76.der <- self.y_77.pos ; (self.x_76.pos , self.y_77.pos) in + cpos_106 := cindex_104 ; + (if cstate_103.major then + (((Zls.set cstate_103.cvec !cpos_106 self.y_77.pos ; + cpos_106 := (+) !cpos_106 1) ; + (Zls.set cstate_103.cvec !cpos_106 self.x_76.pos ; + cpos_106 := (+) !cpos_106 1))) + else (((Zls.set cstate_103.dvec !cpos_106 self.y_77.der ; + cpos_106 := (+) !cpos_106 1) ; + (Zls.set cstate_103.dvec !cpos_106 self.x_76.der ; + cpos_106 := (+) !cpos_106 1)))) ; result_108)):float * float) in + + let vdp_c_reset self = + ((self.y_77.pos <- 1. ; self.x_76.pos <- 1.):unit) in + Node { alloc = vdp_c_alloc; step = vdp_c_step ; reset = vdp_c_reset } +type ('g , 'f , 'e , 'd , 'c , 'b , 'a) _main = + { mutable i_96 : 'g ; + mutable i_95 : 'f ; + mutable major_79 : 'e ; + mutable h_94 : 'd ; + mutable i_92 : 'c ; mutable h_90 : 'b ; mutable t_80 : 'a } + +let main (cstate_109:Ztypes.cstate) = + let Node { alloc = i_96_alloc; step = i_96_step ; reset = i_96_reset } = ball + cstate_109 in + let Node { alloc = i_95_alloc; step = i_95_step ; reset = i_95_reset } = vdp_c + cstate_109 in + let main_alloc _ = + cstate_109.cmax <- (+) cstate_109.cmax 1; + { major_79 = false ; + h_94 = 42. ; + i_92 = (false:bool) ; + h_90 = (42.:float) ; t_80 = { pos = 42.; der = 0. }; + i_96 = i_96_alloc () (* continuous *) ; + i_95 = i_95_alloc () (* continuous *) } in + let main_step self ((time_78:float) , ()) = + ((let (cindex_110:int) = cstate_109.cindex in + let cpos_112 = ref (cindex_110:int) in + cstate_109.cindex <- (+) cstate_109.cindex 1 ; + self.major_79 <- cstate_109.major ; + (if cstate_109.major then + for i_1 = cindex_110 to 0 do Zls.set cstate_109.dvec i_1 0. done + else ((self.t_80.pos <- Zls.get cstate_109.cvec !cpos_112 ; + cpos_112 := (+) !cpos_112 1))) ; + (let (result_114:unit) = + let h_93 = ref (infinity:float) in + (if self.i_92 then self.h_90 <- (+.) time_78 0.) ; + (let (z_91:bool) = (&&) self.major_79 ((>=) time_78 self.h_90) in + self.h_90 <- (if z_91 then (+.) self.h_90 0.01 else self.h_90) ; + h_93 := min !h_93 self.h_90 ; + self.h_94 <- !h_93 ; + self.i_92 <- false ; + (let ((x_82:float) , (v_81:float)) = + i_96_step self.i_96 (time_78 , 2.953) in + let ((x'_83:float) , (y_84:float)) = + i_95_step self.i_95 (time_78 , 0.0000000000000001) in + (begin match z_91 with + | true -> + let () = + print_endline (String.concat ",\t\t" + (List.map string_of_float + + ((::) + ( + self.t_80.pos + , + ( + (::) + ( + x_82 , + ( + (::) + ( + v_81 , + ( + (::) + ( + x'_83 , + ( + (::) + ( + y_84 , + ([]))))))))))))) in + () | _ -> () end) ; self.t_80.der <- 1. ; ())) in + cstate_109.horizon <- min cstate_109.horizon self.h_94 ; + cpos_112 := cindex_110 ; + (if cstate_109.major then + (((Zls.set cstate_109.cvec !cpos_112 self.t_80.pos ; + cpos_112 := (+) !cpos_112 1))) + else (((Zls.set cstate_109.dvec !cpos_112 self.t_80.der ; + cpos_112 := (+) !cpos_112 1)))) ; result_114)):unit) in + let main_reset self = + ((self.i_92 <- true ; + self.t_80.pos <- 0. ; i_96_reset self.i_96 ; i_95_reset self.i_95 ): + unit) in + Node { alloc = main_alloc; step = main_step ; reset = main_reset } diff --git a/exm/zelus/ballcos/tmp/dune b/exm/zelus/ballcos/tmp/dune new file mode 100644 index 0000000..6de2337 --- /dev/null +++ b/exm/zelus/ballcos/tmp/dune @@ -0,0 +1,8 @@ +(env + (dev + (flags + (:standard -w -a)))) + +(executable + (name main_b) + (libraries zelus)) diff --git a/exm/zelus/ballcos/tmp/main_b.ml b/exm/zelus/ballcos/tmp/main_b.ml new file mode 100644 index 0000000..0db228a --- /dev/null +++ b/exm/zelus/ballcos/tmp/main_b.ml @@ -0,0 +1,31 @@ +open Ztypes +open Zls + +(* simulation (continuous) function *) +let main = + let cstate = + { dvec = cmake 0; cvec = cmake 0; zinvec = zmake 0; zoutvec = cmake 0; + cindex = 0; zindex = 0; cend = 0; zend = 0; cmax = 0; zmax = 0; + major = false; horizon = 0.0 } in + let Node { alloc = alloc; step = hstep; reset = reset } = Ball.main cstate in + let step mem cvec dvec zin t = + cstate.major <- true; cstate.cvec <- cvec; cstate.dvec <- dvec; + cstate.cindex <- 0; cstate.zindex <- 0; cstate.horizon <- infinity; + hstep mem (t, ()) in + let derivative mem cvec dvec zin zout t = + cstate.major <- false; cstate.cvec <- cvec; cstate.dvec <- dvec; + cstate.zinvec <- zin; cstate.zoutvec <- zout; cstate.cindex <- 0; + cstate.zindex <- 0; ignore (hstep mem (t, ())) in + let crossings mem cvec zin zout t = + cstate.major <- false; cstate.cvec <- cvec; cstate.zinvec <- zin; + cstate.zoutvec <- zout; cstate.cindex <- 0; cstate.zindex <- 0; + ignore (hstep mem (t, ())) in + let maxsize mem = cstate.cmax, cstate.zmax in + let csize mem = cstate.cend in + let zsize mem = cstate.zend in + let horizon mem = cstate.horizon in + Hsim { alloc; step; reset; derivative; crossings; maxsize; csize; zsize; + horizon };; +(* instantiate a numeric solver *) +module Runtime = Zlsrun.Make (Defaultsolver) +let _ = Runtime.go main diff --git a/exm/zelus/ballcos/ztypes.ml b/exm/zelus/ballcos/ztypes.ml new file mode 100644 index 0000000..ef5ae18 --- /dev/null +++ b/exm/zelus/ballcos/ztypes.ml @@ -0,0 +1,16 @@ +include Std +include Ztypes +include Solvers + +module type IGNORE = sig end +module Defaultsolver : IGNORE = struct end + +module Zlsrun = struct + module Make (S : IGNORE) = struct + let go _ = () + end +end + +module Stdlib = struct + type nonrec 'a option = 'a option +end diff --git a/exm/zelus/brusselator/brusselator.zls b/exm/zelus/brusselator/brusselator.zls new file mode 100644 index 0000000..1f764e3 --- /dev/null +++ b/exm/zelus/brusselator/brusselator.zls @@ -0,0 +1,28 @@ +(* The Brusselator. *) +let hybrid brusselator(a, b) = (x, y) where + rec der x = a +. x *. x *. y -. b *. x -. x init 1.0 + and der y = b *. x -. x *. x *. y init 1.0 + +let pi = 3.141592653589793 + +(* Add another oscillator. *) +let hybrid harmonic(p) = x where + rec der x = v init 1.0 + and der v = -2.0 *. pi *. x /. p init 0.0 + +(* Putting the harmonic besides the brusselator changes the output of the first. + To visualize: + + dune exec ./run.exe -- -speedup 1000 -maxstep 1.0 | feedgnuplot --stream --domain --lines +*) +let hybrid print(t, x) = + present (period (100.0)) -> + (print_endline (String.concat " " (List.map string_of_float [t; x]))) + else () + +let hybrid simu() = + let der t = 1.0 init 0.0 in + let (x, y) = brusselator(1.0, 2.001) in + let z = harmonic(1e-5) in + print(t, x) + diff --git a/exm/zelus/brusselator/dune.bak b/exm/zelus/brusselator/dune.bak new file mode 100644 index 0000000..20a6efd --- /dev/null +++ b/exm/zelus/brusselator/dune.bak @@ -0,0 +1,17 @@ +(env + (dev + (flags + (:standard -w -a)))) + +(rule + (targets brusselator.ml) + (deps + (:zl brusselator.zls)) + (action + (run zeluc %{zl}))) + +(executable + (name main) + (public_name brusselator.exe) + (libraries std) + (promote (until-clean))) diff --git a/exm/zelus/brusselator/main.ml b/exm/zelus/brusselator/main.ml new file mode 100644 index 0000000..7184bf8 --- /dev/null +++ b/exm/zelus/brusselator/main.ml @@ -0,0 +1,6 @@ + +open Std +let input _ = () +let output (_, ()) = () + +let () = Runtime.go input Brusselator.simu output diff --git a/exm/zelus/odes/dune b/exm/zelus/odes/dune new file mode 100644 index 0000000..e1b89e5 --- /dev/null +++ b/exm/zelus/odes/dune @@ -0,0 +1,17 @@ +(env + (dev + (flags + (:standard -w -a)))) + +(rule + (targets odes.ml odes.zci) + (deps + (:zl odes.zls) + (:zli solve.zli)) + (action + (run zeluc %{zli} %{zl}))) + +(executable + (public_name odes.exe) + (name main) + (libraries std)) diff --git a/exm/zelus/odes/main.ml b/exm/zelus/odes/main.ml new file mode 100644 index 0000000..aa76a67 --- /dev/null +++ b/exm/zelus/odes/main.ml @@ -0,0 +1,9 @@ + +open Std + +let input _ = () +let output () = () + +let () = Runtime.go_discrete input Odes.main output + + diff --git a/exm/zelus/odes/odes.zls b/exm/zelus/odes/odes.zls new file mode 100644 index 0000000..91e32b9 --- /dev/null +++ b/exm/zelus/odes/odes.zls @@ -0,0 +1,37 @@ + +let hybrid vdp mu () = (x, y) where + rec der x = y init 1.0 + and der y = (mu *. (1.0 -. (x *. x)) *. y) -. x init 1.0 + +let hybrid sincos () = (sin, cos) where + rec der sin = cos init 0.0 + and der cos = -. sin init 1.0 + +let hybrid both () = (x, y, s, c) where + (x, y) = vdp 5.0 () + and (s, c) = sincos () + +let vdp_d = Solve.solve_sundials (vdp 5.0) +let sincos_d = Solve.solve_sundials sincos +let both_d = Solve.solve_sundials both + +let main_d = Solve.synchr sincos_d both_d + +let node print_vdp (now, (x, y)) = + print_endline (String.concat ",\t\t" (List.map string_of_float [now;x;y])) + +let node print_sincos (now, (s, c)) = + print_endline (String.concat ",\t\t" (List.map string_of_float [now;s;c])) + +let node print_both (now, (x, y, s, c)) = + print_endline (String.concat ",\t\t" (List.map string_of_float [now;x;y;s;c])) + +let node print_main (now, ((s1, c1), (x, y, s2, c2))) = + print_endline (String.concat ",\t\t" (List.map string_of_float [now;x;y])) + +let input _ = () + +let node main () = + let i = Some (Solve.make(1000.0, input)) fby None in + let o = run main_d i in + Solve.period'_t 0.01 print_main o diff --git a/exm/zelus/odes/solve.zli b/exm/zelus/odes/solve.zli new file mode 100644 index 0000000..b67d956 --- /dev/null +++ b/exm/zelus/odes/solve.zli @@ -0,0 +1,26 @@ + +type time = float +type 'a value +type 'a signal = 'a value option +type 'a signal_t = ('a value * time) option + +val horizon : 'a value -> time +val make : time * (time -> 'a) -> 'a value +val apply : 'a value * time -> 'a + +val solve_ode45 : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t +val solve_sundials : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t + +val synchr : + ('a signal -D-> 'b signal_t) -S-> + ('a signal -D-> 'c signal_t) -S-> + 'a signal -D-> ('b * 'c) signal_t + +val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit + +val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit +val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit + +val period' : float -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val period'_t : float -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit diff --git a/exm/zelus/odes/ztypes.ml b/exm/zelus/odes/ztypes.ml new file mode 100644 index 0000000..ef5ae18 --- /dev/null +++ b/exm/zelus/odes/ztypes.ml @@ -0,0 +1,16 @@ +include Std +include Ztypes +include Solvers + +module type IGNORE = sig end +module Defaultsolver : IGNORE = struct end + +module Zlsrun = struct + module Make (S : IGNORE) = struct + let go _ = () + end +end + +module Stdlib = struct + type nonrec 'a option = 'a option +end diff --git a/exm/zelus/parallel/dune b/exm/zelus/parallel/dune new file mode 100644 index 0000000..d28301f --- /dev/null +++ b/exm/zelus/parallel/dune @@ -0,0 +1,12 @@ +(env (dev (flags (:standard -w -a)))) + +(rule + (targets main.ml parallel.ml parallel.zci) + (deps (:zl parallel.zls) (:zli solve.zli)) + (action + (run zeluc -deps -s main %{zli} %{zl}))) + +(executable + (public_name parallel.exe) + (name main) + (libraries std)) diff --git a/exm/zelus/parallel/parallel.zls b/exm/zelus/parallel/parallel.zls new file mode 100644 index 0000000..dd25034 --- /dev/null +++ b/exm/zelus/parallel/parallel.zls @@ -0,0 +1,34 @@ +(* Parallel simulation of harmonic oscillators. *) +(* Illustrates the impact of unrelated parallel simulation. *) + +let pi = 3.141592653589793 + +let hybrid harmonic(p) = x where + rec der x = v init 1.0 + and der v = -2.0 *. pi *. x /. p init 0.0 + +let hybrid f () = (t, x, y) where + rec der t = 1.0 init 0.0 + and x = harmonic(100.0) + and y = harmonic(1000.0) + +let hybrid main' () = + let t, x, y = f () in + present (period (0.001)) -> + print_endline (String.concat ",\t" (List.map string_of_float [t;x;y])) + else () + +let hybrid f' () = harmonic(100.0) +let hybrid g' () = (harmonic(100.0), harmonic(1e-3)) + +let f_d = Solve.solve_sundials(f') +let g_d = Solve.solve_sundials(g') +let m = Solve.synchr f_d g_d + +let node print (now, (xf, (xg, _))) = + print_endline (String.concat ",\t" (List.map string_of_float [now;xf;xg])) + +let input _ = () +let node main () = + let input = Some (Solve.make (100.0, input)) fby None in + Solve.period'_t 0.01 print (run m input) diff --git a/exm/zelus/parallel/solve.zli b/exm/zelus/parallel/solve.zli new file mode 100644 index 0000000..c998c73 --- /dev/null +++ b/exm/zelus/parallel/solve.zli @@ -0,0 +1,27 @@ + +type time = float +type 'a value +type 'a signal = 'a value option +type 'a signal_t = ('a value * time) option + +val horizon : 'a value -> time +val make : time * (time -> 'a) -> 'a value +val apply : 'a value * time -> 'a +val sustain : 'a -> 'a value + +val solve_ode45 : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t +val solve_sundials : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t + +val synchr : + ('a signal -D-> 'b signal_t) -S-> + ('a signal -D-> 'c signal_t) -S-> + 'a signal -D-> ('b * 'c) signal_t + +val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit + +val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit +val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit + +val period' : float -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val period'_t : float -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit diff --git a/exm/zelus/parallel/ztypes.ml b/exm/zelus/parallel/ztypes.ml new file mode 100644 index 0000000..ef5ae18 --- /dev/null +++ b/exm/zelus/parallel/ztypes.ml @@ -0,0 +1,16 @@ +include Std +include Ztypes +include Solvers + +module type IGNORE = sig end +module Defaultsolver : IGNORE = struct end + +module Zlsrun = struct + module Make (S : IGNORE) = struct + let go _ = () + end +end + +module Stdlib = struct + type nonrec 'a option = 'a option +end diff --git a/exm/zelus/sincos/main.ml b/exm/zelus/sincos/main.ml index 37b9257..f1b1ce2 100644 --- a/exm/zelus/sincos/main.ml +++ b/exm/zelus/sincos/main.ml @@ -1,6 +1,10 @@ open Std +(* let input _ = () *) +(* let output (now, (sin, cos)) = Format.printf "%.10e\t%.10e\t%.10e\n" now sin cos *) +(* let () = Runtime.go input Sincosz.g output *) + let input _ = () -let output (now, (sin, cos)) = Format.printf "%.10e\t%.10e\t%.10e\n" now sin cos -let () = Runtime.go input Sincosz.g output +let output (now, sin, cos) = Format.printf "%.10e,%.10e,%.10e\n" now sin cos +let () = Runtime.go_discrete input Sincosz.sincos output diff --git a/exm/zelus/sincos/sincosz.zls b/exm/zelus/sincos/sincosz.zls index 9da5b07..69ba83e 100644 --- a/exm/zelus/sincos/sincosz.zls +++ b/exm/zelus/sincos/sincosz.zls @@ -1,4 +1,4 @@ - +(* let hybrid g () = (sin, cos) where rec der sin = cos init 0.0 and der cos = -. sin init 1.0 @@ -15,3 +15,13 @@ let hybrid f () = print_float cos; print_newline () ); () +*) +let h = 0.01 + +let node integr(x0, x') = (x) where + rec x = x0 -> pre(x +. x' *. h) + +let node sincos() = (now, sin, cos) where + rec sin = integr(0.0, cos) + and cos = integr(1.0, -. sin) + and now = integr(0.0, 1.0) diff --git a/exm/zelus/solve/time.zls b/exm/zelus/solve/time.zls index 9a0c32d..62997e9 100644 --- a/exm/zelus/solve/time.zls +++ b/exm/zelus/solve/time.zls @@ -3,6 +3,16 @@ let epsilon = 0.0001 let input _ = () +let time t = t + +let hybrid fsin t = s where der s = cos t init 0.0 +let hybrid fcos t = c where der c = -. (sin t) init 1.0 +let hybrid fboth t = (s, c) where (s, c) = (fsin t, fcos t) + +let fsind = Solve.solve_sundials(fsin) +let fcosd = Solve.solve_sundials(fcos) +let fbothd = Solve.solve_sundials(fboth) + let hybrid sincos() = let rec der sin = cos init 0.0 and der cos = -. sin init 1.0 @@ -22,38 +32,36 @@ let ball_ode45 = Solve.solve_ode45(ball) let ball_sundials = Solve.solve_sundials(ball) let ball_both = Solve.synchr(ball_ode45)(ball_sundials) -let node print_ball_both (now, (y1, y2)) = - print_float(now); print_string("\t"); - print_float(y1); print_string("\t"); - print_float(y2); print_string("\n"); - () +let node print1 (now, v) = + print_float(now); print_string "\t"; + print_float v; print_string "\n" -let node print_sincos (now, (sin, cos)) = +let node print2 (now, (l, r)) = print_float now; print_string "\t"; - print_float sin; print_string "\t"; - print_float cos; print_string "\n" + print_float l; print_string "\t"; + print_float r; print_string "\n" -let node print_sincos2 (now, ((sin1, cos1), (sin2, cos2))) = +let node print22 (now, ((ll, rl), (lr, rr))) = print_float now; print_string "\t"; - print_float sin1; print_string "\t"; - print_float sin2; print_string "\t"; - print_float cos1; print_string "\t"; - print_float cos2; print_string "\n" + print_float ll; print_string "\t"; + print_float lr; print_string "\t"; + print_float rl; print_string "\t"; + print_float rr; print_string "\n" let node check_sincos (now, (sin, cos)) = - print_sincos (now, (sin, cos)); + print2 (now, (sin, cos)); sin <= 1.0 +. epsilon && sin >= -1.0 -. epsilon && cos <= 1.0 +. epsilon && cos >= -1.0 -. epsilon let node check_sincos2 (now, ((sin1, cos1), (sin2, cos2))) = - print_sincos2 (now, ((sin1, cos1), (sin2, cos2))); + print22 (now, ((sin1, cos1), (sin2, cos2))); sin1 <= 1.0 +. epsilon && sin1 >= -1.0 -. epsilon && cos1 <= 1.0 +. epsilon && cos1 >= -1.0 -. epsilon && sin2 <= 1.0 +. epsilon && sin2 >= -1.0 -. epsilon && cos2 <= 1.0 +. epsilon && cos2 >= -1.0 -. epsilon let node main() = - let input = Some (Solve.make (30.0, input)) fby None in - let o = run sincos_sundials input in - Solve.check_t 100 check_sincos o + let input = Some (Solve.make (100.0, time)) fby None in + let o = run fbothd input in + Solve.iter_t 100 print2 o diff --git a/exm/zelus/vdp/dune b/exm/zelus/vdp/dune new file mode 100644 index 0000000..7c46f93 --- /dev/null +++ b/exm/zelus/vdp/dune @@ -0,0 +1,17 @@ +(env + (dev + (flags + (:standard -w -a)))) + +(rule + (targets main.ml vdp.ml vdp.zci) + (deps + (:zl vdp.zls) + (:zli solve.zli)) + (action + (run zeluc -deps -s main_d -o main %{zli} %{zl}))) + +(executable + (public_name vdp.exe) + (name main) + (libraries std)) diff --git a/exm/zelus/vdp/solve.zli b/exm/zelus/vdp/solve.zli new file mode 100644 index 0000000..c998c73 --- /dev/null +++ b/exm/zelus/vdp/solve.zli @@ -0,0 +1,27 @@ + +type time = float +type 'a value +type 'a signal = 'a value option +type 'a signal_t = ('a value * time) option + +val horizon : 'a value -> time +val make : time * (time -> 'a) -> 'a value +val apply : 'a value * time -> 'a +val sustain : 'a -> 'a value + +val solve_ode45 : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t +val solve_sundials : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t + +val synchr : + ('a signal -D-> 'b signal_t) -S-> + ('a signal -D-> 'c signal_t) -S-> + 'a signal -D-> ('b * 'c) signal_t + +val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit + +val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit +val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit + +val period' : float -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val period'_t : float -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit diff --git a/exm/zelus/vdp/vdp.zls b/exm/zelus/vdp/vdp.zls new file mode 100644 index 0000000..598602a --- /dev/null +++ b/exm/zelus/vdp/vdp.zls @@ -0,0 +1,54 @@ + +let mu = 5.0 + +let hybrid vdp_c() = (x, y) where + rec der x = y init 1.0 + and der y = (mu *. (1.0 -. (x *. x)) *. y) -. x init 1.0 + +let node forward(h)(x0, x') = x where + rec x = x0 fby (x +. h *. x') + +let node backward(h)(x0, x') = x where + rec x = x0 -> pre x +. h *. x' + +let node vdp_d(h)() = (x, y) where + rec x = backward(h)(1.0, y) + and y = forward(h)(1.0, (mu *. (1.0 -. (x *. x)) *. y) -. x) + +let stop_time = 50.0 + +let node print (t, (x, y)) = + print_endline (String.concat ",\t" (List.map string_of_float [t;x;y])) + +let node main_d() = + let rec t = 0.0 -> pre t +. 0.001 in + print(t, vdp_d(0.001)()) + +let node main_dc() = + let rec (t0, (x0, y0)) = ((0.0 -> pre t0 +. 0.1), vdp_d(0.1)()) in + let rec (t1, (x1, y1)) = ((0.0 -> pre t1 +. 0.2), vdp_d(0.2)()) in + let rec (t2, (x2, y2)) = ((0.0 -> pre t2 +. 0.3), vdp_d(0.3)()) in + let rec (t3, (x3, y3)) = ((0.0 -> pre t3 +. 0.4), vdp_d(0.4)()) in + let rec (t4, (x4, y4)) = ((0.0 -> pre t4 +. 0.5), vdp_d(0.5)()) in + let rec (t5, (x5, y5)) = ((0.0 -> pre t5 +. 0.6), vdp_d(0.6)()) in + let rec (t6, (x6, y6)) = ((0.0 -> pre t6 +. 0.7), vdp_d(0.7)()) in + let rec (t7, (x7, y7)) = ((0.0 -> pre t7 +. 0.8), vdp_d(0.8)()) in + let rec (t8, (x8, y8)) = ((0.0 -> pre t8 +. 0.9), vdp_d(0.9)()) in + let rec (t9, (x9, y9)) = ((0.0 -> pre t9 +. 1.0), vdp_d(1.0)()) in + print_endline (String.concat "\t" [string_of_float t0; "x0"; string_of_float x0; "y0"; string_of_float y0]); + print_endline (String.concat "\t" [string_of_float t1; "x1"; string_of_float x1; "y1"; string_of_float y1]); + print_endline (String.concat "\t" [string_of_float t2; "x2"; string_of_float x2; "y2"; string_of_float y2]); + print_endline (String.concat "\t" [string_of_float t3; "x3"; string_of_float x3; "y3"; string_of_float y3]); + print_endline (String.concat "\t" [string_of_float t4; "x4"; string_of_float x4; "y4"; string_of_float y4]); + print_endline (String.concat "\t" [string_of_float t5; "x5"; string_of_float x5; "y5"; string_of_float y5]); + print_endline (String.concat "\t" [string_of_float t6; "x6"; string_of_float x6; "y6"; string_of_float y6]); + print_endline (String.concat "\t" [string_of_float t7; "x7"; string_of_float x7; "y7"; string_of_float y7]); + print_endline (String.concat "\t" [string_of_float t8; "x8"; string_of_float x8; "y8"; string_of_float y8]); + print_endline (String.concat "\t" [string_of_float t9; "x9"; string_of_float x9; "y9"; string_of_float y9]) + +let input _ = () +let vdp_s = Solve.solve_sundials vdp_c + +let node main_c() = + let o = run vdp_s (Some (Solve.make(stop_time, input)) fby None) in + Solve.period'_t 1.0 print o diff --git a/exm/zelus/vdp/ztypes.ml b/exm/zelus/vdp/ztypes.ml new file mode 100644 index 0000000..ef5ae18 --- /dev/null +++ b/exm/zelus/vdp/ztypes.ml @@ -0,0 +1,16 @@ +include Std +include Ztypes +include Solvers + +module type IGNORE = sig end +module Defaultsolver : IGNORE = struct end + +module Zlsrun = struct + module Make (S : IGNORE) = struct + let go _ = () + end +end + +module Stdlib = struct + type nonrec 'a option = 'a option +end diff --git a/exm/zelus_2024/ball/ball.ml b/exm/zelus_2024/ball/ball.ml index b60cdf3..f4bbd40 100644 --- a/exm/zelus_2024/ball/ball.ml +++ b/exm/zelus_2024/ball/ball.ml @@ -1,58 +1,72 @@ (* The Zelus compiler, version 2024-dev (2025-06-4-15:49) *) open Ztypes +type ('c, 'b, 'a) machine_17 = + { mutable _up_16: 'c; + mutable y'_12: 'b; + mutable y_11: 'a } -type ('e, 'd, 'c, 'b, 'a) ball = - { mutable time: 'e; mutable major: 'd; mutable up: 'c; - mutable y': 'b; mutable y: 'a } - -let ball = - let machine cstate = - let alloc _ = - cstate.cmax <- cstate.cmax + 1; - cstate.zmax <- cstate.zmax + 1; - { time = -1.; - major = false; - up = { zin = false; zout = 1. }; - y' = -1.; - y = { pos = -1.; der = 0. }; - } in - let step self _ = - let cindex = cstate.cindex in - let cpos = ref cindex in - let zindex = cstate.zindex in - let zpos = ref zindex in - cstate.cindex <- cstate.cindex + 1; - cstate.zindex <- cstate.zindex + 1; - self.major <- cstate.major; - self.time <- cstate.time; - if cstate.major then - for i = cindex to 0 do Zls.set cstate.dvec i 0. done - else begin - self.y.pos <- Zls.get cstate.cvec !cpos; - cpos := !cpos + 1 - end; - let result = - self.up.zout <- -. self.y.pos; - if self.up.zin then self.y' <- -0.8 *. self.y'; - self.y.der <- self.y'; - self.y.pos, self.y', self.up.zin in - cpos := cindex; - if cstate.major then begin - Zls.set cstate.cvec !cpos self.y.pos; - cpos := !cpos + 1; - self.up.zin <- false - end else begin - self.up.zin <- Zls.get_zin cstate.zinvec !zpos; - zpos := !zpos + 1 - end; - zpos := zindex; - Zls.set cstate.zoutvec !zpos self.up.zout; - zpos := !zpos + 1; - Zls.set cstate.dvec !cpos self.y.der; - cpos := !cpos + 1; - result in - let reset self = - self.y.pos <- 50.; self.y' <- 0. in - Node { alloc; step; reset } in - machine +let (ball) = + let ball_10 = + let machine_17 cstate_18 = + + let machine_17_alloc _ = + cstate_18.cmax <- (+) cstate_18.cmax 2; + cstate_18.zmax <- (+) cstate_18.zmax 1; + { _up_16 = { zin = false; zout = 1. }; + y'_12 = { pos = (-1.); der = 0. }; + y_11 = { pos = (-1.); der = 0. } } in + let machine_17_step self _ = + ((let cindex_19 = cstate_18.cindex in + let cpos_21 = ref (cindex_19:int) in + let zindex_20 = cstate_18.zindex in + let zpos_22 = ref (zindex_20:int) in + cstate_18.cindex <- (+) cstate_18.cindex 2; + cstate_18.zindex <- (+) cstate_18.zindex 1; + (if cstate_18.major + then + for i_1 = cindex_19 to 1 + do Zls.set cstate_18.dvec i_1 0. done + else + ((self.y'_12.pos <- Zls.get cstate_18.cvec !cpos_21; + cpos_21 := (+) !cpos_21 1); + (self.y_11.pos <- Zls.get cstate_18.cvec !cpos_21; + cpos_21 := (+) !cpos_21 1))); + (let result_23 = + self._up_16.zout <- (~-.) self.y_11.pos; + self.y'_12.der <- (-9.81); + (let z_13 = self._up_16.zin in + let lx_15 = self.y'_12.pos in + (match z_13 with + | true -> + let v_14 = lx_15 in + self.y'_12.pos <- ( *. ) (-0.8) v_14 | _ -> () ); + self.y_11.der <- self.y'_12.pos; + (self.y_11.pos, self.y'_12.pos, z_13)) in + cpos_21 := cindex_19; + (if cstate_18.major + then + (((Zls.set cstate_18.cvec !cpos_21 self.y'_12.pos; + cpos_21 := (+) !cpos_21 1); + (Zls.set cstate_18.cvec !cpos_21 self.y_11.pos; + cpos_21 := (+) !cpos_21 1)); + ((self._up_16.zin <- false))) + else + (((self._up_16.zin <- Zls.get_zin cstate_18.zinvec + !zpos_22; + zpos_22 := (+) !zpos_22 1)); + zpos_22 := zindex_20; + ((Zls.set cstate_18.zoutvec !zpos_22 self._up_16.zout; + zpos_22 := (+) !zpos_22 1)); + ((Zls.set cstate_18.dvec !cpos_21 self.y'_12.der; + cpos_21 := (+) !cpos_21 1); + (Zls.set cstate_18.dvec !cpos_21 self.y_11.der; + cpos_21 := (+) !cpos_21 1)))); result_23)):(float * + float * + bool)) in + let machine_17_reset self = + ((self.y_11.pos <- 50.; self.y'_12.pos <- 0.):unit) in + Node { alloc = machine_17_alloc; step = machine_17_step; + reset = machine_17_reset } in + machine_17 in + ball_10 diff --git a/src/lib/hsim/sim.ml b/src/lib/hsim/sim.ml index 9251cd7..305180a 100644 --- a/src/lib/hsim/sim.ml +++ b/src/lib/hsim/sim.ml @@ -8,7 +8,7 @@ module Sim (S : SimState) = include S (** Discrete step. *) - let step_discrete + let dstep (s : ('a, 'b, 'ms, 'ss, 'zin) state) (step : 'ms -> time -> 'a -> 'b * 'ms) (hor : 'ms -> time) @@ -53,7 +53,7 @@ module Sim (S : SimState) = o, (set_last (Some o) (set_zin None s)) (** Continuous step. *) - let step_continuous + let cstep (s : ('a, 'b, 'ms, 'ss, 'zin) state) (step : 'ss -> time -> (time * (time -> 'y) * 'zin option) * 'ss) (cset : 'ms -> 'y -> 'ms) @@ -85,18 +85,20 @@ module Sim (S : SimState) = (** Simulation of a model with any solver. *) let run - (HNode m : ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode) - (DNode s : ('y, 'yder, 'zin, 'zout) solver) - : ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim - = let state = get_init m.state s.state in + (m : ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode def) + (s : ('y, 'yder, 'zin, 'zout) solver def) + : ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim def + = fun () -> + let HNode m = m () in + let DNode s = s () in + let state = get_init m.state s.state in let dstep ?(reinit=false) st = - let o, s = step_discrete st m.step m.horizon m.fder m.fzer m.cget m.zset + let o, s = dstep st m.step m.horizon m.fder m.fzer m.cget m.zset m.csize m.zsize m.jump s.reset reinit in Some o, s in let cstep st = - let o, s, _ = step_continuous st s.step m.cset m.fout m.horizon in + let o, s, _ = cstep st s.step m.cset m.fout m.horizon in Some o, s in - let step st = function | Some i -> let mode, now, stop = Discrete, 0.0, i.h in @@ -107,76 +109,26 @@ module Sim (S : SimState) = | Discrete -> dstep st | Continuous -> cstep st else None, st in - let reset (pm, ps) st = let ms = m.reset pm (get_mstate st) in let ss = s.reset ps (get_sstate st) in update ms ss (set_idle st) in - - DNode { state; step; reset } - - let rec run_assert : - 'a 'b. ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_a -> - (unit -> ('y, 'yder, 'zin, 'zout) solver) -> - ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim = - fun (HNodeA { body=m; assertions }) get_s -> - let DNode s = get_s () in - let al = List.map (fun a -> run_assert a get_s) assertions in - let state = get_init m.state s.state, al in - - let dstep ?(reinit=false) (st, al) = - let o, st = - step_discrete st m.step m.horizon m.fder m.fzer m.cget m.zset m.csize - m.zsize m.jump s.reset reinit in - let al = List.map (fun (DNode a) -> - let _, state = a.step a.state @@ Some (Utils.dot @@ get_mstate st) in - DNode { a with state }) al in - Some o, (st, al) in - - let cstep (st, al) = - let ({ h; _ } as o), st, u = - step_continuous st s.step m.cset m.fout m.horizon in - let al = List.map (fun (DNode a) -> - (* Step assertions repeatedly until they reach the horizon. *) - let rec step s = - let o, s = a.step s None in - match o with None -> s | Some _ -> step s in - let state = step (snd @@ a.step a.state (Some u)) in - DNode { a with state }) al in - (* Reset the model's state to the reached horizon. *) - let st = set_mstate (u.u h) st in - Some o, (st, al) in - - let step (st, al) = function - | Some input -> - let mode, now, stop = Discrete, 0.0, input.h in - dstep (set_running ~mode ~input ~now ~stop st, al) - | None -> - if is_running st then match get_mode st with - | Discrete -> dstep (st, al) - | Continuous -> cstep (st, al) - else None, (st, al) in - - let reset (pm, ps) (st, al) = - let ms = m.reset pm (get_mstate st) in - let ss = s.reset ps (get_sstate st) in - let al = List.map (fun (DNode a) -> - DNode { a with state = a.reset (pm, ps) a.state }) al in - update ms ss (set_idle st), al in - DNode { state; step; reset } let accelerate - (HNode m : ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode) - (DNodeC s : ('y, 'yder, 'zin, 'zout) solver_c) - : ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim - = let state = get_init m.state s.state in + (m : ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode def) + (s : ('y, 'yder, 'zin, 'zout) solver_c def) + : ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim def + = fun () -> + let HNode m = m () in + let DNodeC s = s () in + let state = get_init m.state s.state in let step_discrete ?(reinit=false) st = - let o, st = step_discrete st m.step m.horizon m.fder m.fzer m.cget + let o, st = dstep st m.step m.horizon m.fder m.fzer m.cget m.zset m.csize m.zsize m.jump s.reset reinit in Some o, st in let step_continuous st = - let o, st, _ = step_continuous st s.step m.cset m.fout m.horizon in + let o, st, _ = cstep st s.step m.cset m.fout m.horizon in o, st in let rec step st = function @@ -201,4 +153,121 @@ module Sim (S : SimState) = update ms ss (set_idle st) in DNode { state; step; reset } + + let rec run_assert_continuous : + 'a 'b. ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_a def -> + (('y, 'yder, 'zin, 'zout) solver def) -> + ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim def = + fun m mk_s () -> + let HNodeA { body=m; assertions } = m () in + let DNode s = mk_s () in + let al = List.map (fun a -> run_assert_continuous (fun () -> a) mk_s ()) + assertions in + let state = get_init m.state s.state, al in + + let dstep ?(reinit=false) (st, al) = + let o, st = + dstep st m.step m.horizon m.fder m.fzer m.cget m.zset m.csize + m.zsize m.jump s.reset reinit in + let al = List.map (fun (DNode a) -> + let _, state = a.step a.state (Some (Utils.dot (get_mstate st))) in + DNode { a with state }) al in + Some o, (st, al) in + + let cstep (st, al) = + let ({ h; _ } as o), st, u = cstep st s.step m.cset m.fout m.horizon in + let al = List.map (fun a -> Utils.run_on a u ignore) al in + let st = set_mstate (u.u h) st in + Some o, (st, al) in + + let step (st, al) = function + | Some input -> + let mode, now, stop = Discrete, 0.0, input.h in + dstep (set_running ~mode ~input ~now ~stop st, al) + | None -> + if is_running st then match get_mode st with + | Discrete -> dstep (st, al) + | Continuous -> cstep (st, al) + else None, (st, al) in + let reset (pm, ps) (st, al) = + let ms = m.reset pm (get_mstate st) in + let ss = s.reset ps (get_sstate st) in + let al = List.map (fun (DNode a) -> + DNode { a with state = a.reset (pm, ps) a.state }) al in + update ms ss (set_idle st), al in + DNode { state; step; reset } + + let rec run_assert_sample : + 'a 'b. int -> + (('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_a def) -> + (('y, 'yder, 'zin, 'zout) solver def) -> + ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim def = + fun n m get_s () -> + let HNodeA { body=m; assertions } = m () in + let DNode s = get_s () in + let al = List.map (fun a -> run_assert_sample n (fun () -> a) get_s ()) assertions in + let state = get_init m.state s.state, al in + let check v = List.iter (fun (_, v) -> assert v) @@ Utils.sample v n in + let dstep ?(reinit=false) (st, al) = + let o, st = + dstep st m.step m.horizon m.fder m.fzer m.cget m.zset m.csize m.zsize + m.jump s.reset reinit in + let al = List.map (fun (DNode a) -> + let o, state = a.step a.state @@ Some (Utils.dot @@ get_mstate st) in + Option.iter check o; DNode { a with state }) al in + Some o, (st, al) in + let cstep (st, al) = + let ({ h; _ } as o), st, u = cstep st s.step m.cset m.fout m.horizon in + let al = List.map (fun a -> Utils.run_on a u check) al in + let st = set_mstate (u.u h) st in + Some o, (st, al) in + let step (st, al) = function + | Some input -> + let mode, now, stop = Discrete, 0.0, input.h in + dstep (set_running ~mode ~input ~now ~stop st, al) + | None -> + if is_running st then match get_mode st with + | Discrete -> dstep (st, al) + | Continuous -> cstep (st, al) + else None, (st, al) in + let reset (pm, ps) (st, al) = + let ms = m.reset pm (get_mstate st) in + let ss = s.reset ps (get_sstate st) in + let al = List.map (fun (DNode a) -> + DNode { a with state=a.reset (pm, ps) a.state}) al in + update ms ss (set_idle st), al in + DNode { state; step; reset } + + let run_single_assert + (m : ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_sa def) + (s : ('y, 'yder, 'zin, 'zout) solver def) + : ('p * (('y, 'yder) ivp * ('y, 'zout) zc), 'a, 'b) sim def + = fun () -> + let (HNodeSA { model=m; check=(DNode c) }) = m () in + let (DNode s) = s () in + let state = get_init m.state s.state, (DNode c) in + let dstep ?(reinit=false) (st, DNode c) = + let o, st = dstep st m.step m.horizon m.fder m.fzer m.cget m.zset + m.csize m.zsize m.jump s.reset reinit in + let b, state = c.step c.state @@ Some (Utils.dot @@ get_mstate st) in + assert b; Some o, (st, DNode { c with state }) in + let cstep (st, (DNode c)) = + let o, st, u = cstep st s.step m.cset m.fout m.horizon in + let b, state = c.step c.state (Some u) in + assert b; Some o, (st, DNode { c with state }) in + let step (st, c) = function + | Some input -> + let mode, now, stop = Discrete, 0.0, input.h in + dstep (set_running ~mode ~input ~now ~stop st, c) + | None -> + if is_running st then match get_mode st with + | Discrete -> dstep (st, c) + | Continuous -> cstep (st, c) + else None, (st, c) in + let reset (pm, ps) (st, DNode c) = + let ms = m.reset pm (get_mstate st) in + let ss = s.reset ps (get_sstate st) in + let c = DNode { c with state=c.reset pm c.state } in + update ms ss (set_idle st), c in + DNode { state; step; reset } end diff --git a/src/lib/hsim/solver.ml b/src/lib/hsim/solver.ml index bb9b449..c3c25c6 100644 --- a/src/lib/hsim/solver.ml +++ b/src/lib/hsim/solver.ml @@ -3,15 +3,15 @@ open Types (** An Initial Value Problem. *) type ('y, 'yder) ivp = - { init : 'y; (** [y₀]: initial value of y. *) - fder : time -> 'y -> 'yder; (** [dy/dt]: derivative of y. *) - stop : time; (** Stop time. *) + { init : 'y; (** [y₀]: initial value of y. *) + fder : time -> 'y -> 'yder; (** [dy/dt]: derivative of y on [0,stop]. *) + stop : time; (** Stop time. *) size : int } (** A zero-crossing expression. *) type ('y, 'zout) zc = - { init : 'y; (** Value to watch for zero-crossings. *) - fzer : time -> 'y -> 'zout; (** Zero-crossing function. *) + { init : 'y; (** Value to watch for zero-crossings. *) + fzer : time -> 'y -> 'zout; (** Zero-crossing function. *) size : int } (** An ODE solver is a synchronous function with: @@ -55,9 +55,12 @@ type ('y, 'yder, 'zin, 'zout) solver_c = time * (time -> 'y) * 'zin option) dnode_c (** Build a full solver from an ODE solver and a zero-crossing solver. *) -let solver (DNode csolver : ('y, 'yder) csolver) - (DNode zsolver : ('y, 'zin, 'zout) zsolver) - : ('y, 'yder, 'zin, 'zout) solver = +let solver (csolver : ('y, 'yder) csolver def) + (zsolver : ('y, 'zin, 'zout) zsolver def) + : ('y, 'yder, 'zin, 'zout) solver def = +fun () -> + let DNode csolver = csolver () in + let DNode zsolver = zsolver () in let state = csolver.state, zsolver.state in let step (cstate, zstate) h = let (h', f), cstate = csolver.step cstate h in @@ -70,9 +73,12 @@ let solver (DNode csolver : ('y, 'yder) csolver) DNode { state; step; reset } (** Build a full solver supporting state copies. *) -let solver_c (DNodeC csolver : ('y, 'yder) csolver_c) - (DNodeC zsolver : ('y, 'zin, 'zout) zsolver_c) - : ('y, 'yder, 'zin, 'zout) solver_c = +let solver_c (csolver : ('y, 'yder) csolver_c def) + (zsolver : ('y, 'zin, 'zout) zsolver_c def) + : ('y, 'yder, 'zin, 'zout) solver_c def = +fun () -> + let DNodeC csolver = csolver () in + let DNodeC zsolver = zsolver () in let state = csolver.state, zsolver.state in let step (cstate, zstate) h = let (h', f), cstate = csolver.step cstate h in diff --git a/src/lib/hsim/types.ml b/src/lib/hsim/types.ml index 0f0e589..38057dc 100644 --- a/src/lib/hsim/types.ml +++ b/src/lib/hsim/types.ml @@ -1,4 +1,6 @@ +type 'a def = unit -> 'a + type time = float type continuity = Continuous | Discontinuous @@ -37,6 +39,10 @@ type ('s, 'p, 'a, 'b) drec_c = type ('p, 'a, 'b) dnode_c = DNodeC : ('s, 'p, 'a, 'b) drec_c -> ('p, 'a, 'b) dnode_c +(** The simulation of a hybrid system is a synchronous function on streams of + functions. *) +type ('p, 'a, 'b) sim = ('p, 'a signal, 'b signal) dnode + type ('s, 'p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hrec = { state: 's; step : 's -> time -> 'a -> 'b * 's; (** Step function. *) @@ -52,7 +58,7 @@ type ('s, 'p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hrec = csize : int; zsize : int } -(** A hybrid node. *) +(** A hybrid node instance. *) type ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode = HNode : ('s, 'p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hrec -> ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode @@ -61,12 +67,15 @@ type ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode = type ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_a = HNodeA : { body : ('s, 'p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hrec; - assertions : ('p, 's, unit, 'y, 'yder, 'zin, 'zout) hnode_a list + assertions : ('p, 's, bool, 'y, 'yder, 'zin, 'zout) hnode_a list } -> ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_a -(** The simulation of a hybrid system is a synchronous function on streams of - functions. *) -type ('p, 'a, 'b) sim = ('p, 'a signal, 'b signal) dnode +(** A hybrid node and a simulation of its assertions. *) +type ('p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hnode_sa = + HNodeSA : { + model : ('s, 'p, 'a, 'b, 'y, 'yder, 'zin, 'zout) hrec; + check : ('p, 's signal, bool) dnode; + } -> ('p, 'a, 'b, 'y,' yder, 'zin,' zout) hnode_sa (* Utils *) diff --git a/src/lib/hsim/utils.ml b/src/lib/hsim/utils.ml index 38c555a..7861650 100644 --- a/src/lib/hsim/utils.ml +++ b/src/lib/hsim/utils.ml @@ -58,8 +58,24 @@ let sample { h; u; _ } n = let sample_tracked (o, t) n = List.map (fun (h, v) -> h +. t, v) @@ sample o n +let period ?(offset=0.0) { h; u; _ } p = + let rec step now = + if now >= h then [], now -. h + else let l, o = step (now +. p) in + (now, u now) :: l, o in + if h <= 0.0 then [(0.0, u 0.0)], offset + else step offset + +let period_tracked ?(offset=0.0) (v, t) p = + let l, o = period ~offset v p in + List.map (fun (h, v) -> h +. t, v) l, o + (** Compose two nodes together. *) -let compose (DNode m) (DNode n) = +let compose (m : ('p, 'a, 'b) dnode def) (n : ('q, 'b, 'c) dnode def) + : ('p * 'q, 'a, 'c) dnode def = +fun () -> + let DNode m = m () in + let DNode n = n () in let state = m.state, n.state in let step (ms, ns) i = let v, ms = m.step ms i in @@ -73,9 +89,13 @@ let compose (DNode m) (DNode n) = (** Compose two simulations. *) let compose_sim - (DNode m : ('p, 'a, 'b) sim) - (DNode n : ('q, 'b, 'c) sim) -= let state = m.state, n.state in + (m : ('p, 'a, 'b) sim def) + (n : ('q, 'b, 'c) sim def) + : ('p * 'q, 'a, 'c) sim def = +fun () -> + let DNode m = m () in + let DNode n = n () in + let state = m.state, n.state in let step (ms, ns) = function | Some i -> let v, ms = m.step ms (Some i) in @@ -95,7 +115,9 @@ let compose_sim DNode { state; step; reset } (** Track the evolution of a signal in time. *) -let track : (unit, 'a signal, 'a signal_t) dnode = +let track + : (unit, 'a signal, 'a signal_t) dnode def = +fun () -> let state = 0.0 in let step now = function | None -> None, now @@ -104,17 +126,29 @@ let track : (unit, 'a signal, 'a signal_t) dnode = DNode { state; step; reset } (** Apply a function to a signal. *) -let map f = +let sigmap (f : 'a -> 'b) + : (unit, 'a option, 'b option) dnode def = +fun () -> let state = () in let step () = function None -> None, () | Some v -> Some (f v), () in let reset () () = () in DNode { state; step; reset } -let ignore _ n = +let dimap (i : 'a -> 'b) (o : 'c -> 'd) (n : ('p, 'b, 'c) dnode def) + : ('p, 'a, 'd) dnode def += fun () -> + let DNode { state; step; reset } = n () in + DNode { state; reset; step=fun s a -> let c, s = step s (i a) in o c, s } + +(* let preprocess (f : 'a -> 'b) (n : ('p, 'b, 'c) dnode def) *) + (* : ('p, 'a, 'c) dnode def *) +(* = *) + +let ignore _ n () = let state = () in let step () = function None -> None, () | Some _ -> Some (), () in let reset () () = () in - let DNode n = compose n @@ DNode { state; step; reset } in + let DNode n = compose n (fun () -> DNode { state; step; reset }) () in DNode { n with reset=fun p -> n.reset (p, ()) } let do_and_reset (DNode m) (DNode n) f = @@ -136,7 +170,7 @@ let run_on (DNode n) input use = let state = match out with None, s -> s | Some o, s -> use o; s in let rec loop state = let o, state = n.step state None in - match o with None -> () | Some o -> use o; loop state in + match o with None -> DNode { n with state } | Some o -> use o; loop state in loop state (** Run the model on multiple inputs. *) @@ -156,4 +190,3 @@ let run_until n h = run_on n { h; c=Discontinuous; u = fun _ -> () } let run_until_n n h k = let h = h /. float_of_int k in run_on_n n (List.init k (fun _ -> { h; c=Continuous; u=fun _ -> () })) - diff --git a/src/lib/solvers/statefulZ.ml b/src/lib/solvers/statefulZ.ml index aed275f..3a2ec59 100644 --- a/src/lib/solvers/statefulZ.ml +++ b/src/lib/solvers/statefulZ.ml @@ -7,7 +7,8 @@ module Functional = struct type ('state, 'vec) state = { state: 'state; vec: 'vec } - let zsolve () : (carray, zarray, carray) zsolver_c = + let zsolve : (carray, zarray, carray) zsolver_c def = + fun () -> let open Illinois in let state = @@ -38,7 +39,8 @@ module InPlace = struct type ('state, 'vec) state = { mutable state : 'state; mutable vec : 'vec } - let zsolve () : (carray, zarray, carray) zsolver_c = + let zsolve : (carray, zarray, carray) zsolver_c def = + fun () -> let open Illinois in let state = diff --git a/src/lib/std/lift.ml b/src/lib/std/lift.ml index ee72f9e..34f05ee 100644 --- a/src/lib/std/lift.ml +++ b/src/lib/std/lift.ml @@ -6,243 +6,202 @@ open Ztypes type ('s, 'a) state = { mutable state : 's; mutable input : 'a option; mutable time : time } -let lift - (f : cstate -> (time * 'a, 'b) node) -: (unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) Hsim.Types.hnode -= let cstate = - { cvec = cmake 0; dvec = cmake 0; cindex = 0; zindex = 0; - cend = 0; zend = 0; cmax = 0; zmax = 0; - zinvec = zmake 0; zoutvec = cmake 0; - major = false; horizon = max_float } in - let Node { alloc=f_alloc; step=f_step; reset=f_reset } = f cstate in +(* Wrappers around the [step] function. *) + +let mkfder (c : cstate) f der zin zout { state; time; _ } o i y = + c.major <- false; c.cvec <- y; c.dvec <- der; c.zinvec <- zin; + c.zoutvec <- zout; c.cindex <- 0; c.zindex <- 0; + ignore (f state (time +. o, i)); c.dvec + +let mkfzer (c : cstate) f der zin zout { state; time; _ } o i y = + c.major <- false; c.cvec <- y; c.dvec <- der; c.zinvec <- zin; + c.zoutvec <- zout; c.cindex <- 0; c.zindex <- 0; + ignore (f state (time +. o, i)); c.zoutvec + +let mkfout (c : cstate) f der zin zout { state; time; _ } o i y = + c.major <- false; c.cvec <- y; c.dvec <- der; c.zinvec <- zin; + c.zoutvec <- zout; c.cindex <- 0; c.zindex <- 0; f state (time +. o, i) + +let mkstep (c : cstate) f der zin zout ({ state; time; _ } as st) o i = + st.input <- Some i; st.time <- time +. o; c.major <- true; + c.horizon <- infinity; c.zinvec <- zin; c.zoutvec <- zout; c.dvec <- der; + c.cindex <- 0; c.zindex <- 0; let o = f state (st.time, i) in o, st + +let mkzset (c : cstate) f der zout time ({ state; input; _ } as s) zin = + c.major <- false; c.zoutvec <- zout; c.dvec <- der; c.zinvec <- zin; + c.cindex <- 0; c.zindex <- 0; ignore (f state (time, Option.get input)); s + +let mkcset (c : cstate) f der zin zout time ({ state; input; _ } as st) _ = + c.major <- false; c.horizon <- infinity; c.zinvec <- zin; c.zoutvec <- zout; + c.dvec <- der; c.cindex <- 0; c.zindex <- 0; + ignore (f state (time, Option.get input)); st + +let mkcget (c : cstate) f der zin zout time { state; input; _ } = + c.major <- false; c.horizon <- infinity; c.zinvec <- zin; c.zoutvec <- zout; + c.dvec <- der; c.cindex <- 0; c.zindex <- 0; + ignore (f state (time, Option.get input)); c.cvec + +(** Lift the inner record of a node. Needed to keep the typechecker aware of the + existential type. *) +let lift_inner (cs : cstate) (f : ('s, time * 'a, 'b) node_rec) + : (('s, 'a) state, unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) hrec += let { alloc=f_alloc; step=f_step; reset=f_reset } = f in let state = { state = f_alloc (); input = None; time = 0.0 } in - let csize, zsize = cstate.cmax, cstate.zmax in - let no_roots_in = zmake zsize in - let no_roots_out = cmake zsize in - let ignore_der = cmake csize in - let cstates = cmake csize in - cstate.cvec <- cstates; - f_reset state.state; - + let csize, zsize = cs.cmax, cs.zmax in + let no_zin, no_zout, no_der = zmake zsize, cmake zsize, cmake csize in + cs.cvec <- cmake csize; f_reset state.state; let no_time = -1.0 in - - (* the function that compute the derivatives *) - let fder { state; time; _ } offset input y = - cstate.major <- false; cstate.cvec <- y; cstate.dvec <- ignore_der; - cstate.zinvec <- no_roots_in; cstate.zoutvec <- no_roots_out; - cstate.cindex <- 0; cstate.zindex <- 0; - ignore (f_step state (time +. offset, input)); - cstate.dvec in - - (* the function that compute the zero-crossings *) - let fzer { state; time; _ } offset input y = - cstate.major <- false; cstate.cvec <- y; cstate.dvec <- ignore_der; - cstate.zinvec <- no_roots_in; cstate.zoutvec <- no_roots_out; - cstate.cindex <- 0; cstate.zindex <- 0; - ignore (f_step state (time +. offset, input)); - cstate.zoutvec in - - (* the function which compute the output during integration *) - let fout { state; time; _ } offset input y = - cstate.major <- false; cstate.cvec <- y; cstate.dvec <- ignore_der; - cstate.zinvec <- no_roots_in; cstate.zoutvec <- no_roots_out; - cstate.cindex <- 0; cstate.zindex <- 0; - f_step state (time +. offset, input) in - - (* the function which compute a discrete step *) - let step ({ state; time; _ } as st) offset input = - st.input <- Some input; - st.time <- time +. offset; - cstate.major <- true; - cstate.horizon <- infinity; - cstate.zinvec <- no_roots_in; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.cindex <- 0; - cstate.zindex <- 0; - let o = f_step state (st.time, input) in - o, st in - + let fder = mkfder cs f_step no_der no_zin no_zout in + let fzer = mkfzer cs f_step no_der no_zin no_zout in + let fout = mkfout cs f_step no_der no_zin no_zout in + let step = mkstep cs f_step no_der no_zin no_zout in let reset () ({ state; _ } as st) = f_reset state; st in - - (* horizon *) - let horizon { time; _ } = - cstate.horizon -. time in - + let horizon { time; _ } = cs.horizon -. time in let jump _ = true in + let zset = mkzset cs f_step no_der no_zout no_time in + let cset = mkcset cs f_step no_der no_zin no_zout no_time in + let cget = mkcget cs f_step no_der no_zin no_zout no_time in + { state; fder; fzer; step; fout; reset; + horizon; cset; cget; zset; zsize; csize; jump } - (* the function which sets the zinvector into the *) - (* internal zero-crossing variables *) - let zset ({ state; input; _ } as st) zinvec = - cstate.major <- false; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.zinvec <- zinvec; - cstate.cindex <- 0; - cstate.zindex <- 0; - ignore (f_step state (no_time, Option.get input)); - st in +(** Main lifting function. *) +let lift (f : cstate -> (time * 'a, 'b) node) + : (unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) Hsim.Types.hnode def += fun () -> + let cs = { cvec=cmake 0; dvec=cmake 0; zinvec=zmake 0; zoutvec=cmake 0; + cend=0; zend=0; zindex=0; cindex=0; cmax=0; zmax=0; major=false; + horizon=max_float } in + let Node m = f cs in + HNode (lift_inner cs m) - let cset ({ state; input; _ } as st) _ = - cstate.major <- false; - cstate.horizon <- infinity; - cstate.zinvec <- no_roots_in; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.cindex <- 0; - cstate.zindex <- 0; - ignore (f_step state (no_time, Option.get input)); - st in - - let cget { state; input; _ } = - cstate.major <- false; - cstate.horizon <- infinity; - cstate.zinvec <- no_roots_in; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.cindex <- 0; - cstate.zindex <- 0; - ignore (f_step state (no_time, Option.get input)); - cstate.cvec in - - HNode - { state; fder; fzer; step; fout; reset; - horizon; cset; cget; zset; zsize; csize; jump } - -let lift_hsim n = +(** Lift a simulation (obtained from zeluc with the [-s] flag). *) +let lift_hsim (n : unit hsimu) + : (unit, unit, unit, cvec, dvec, zinvec, zoutvec) Hsim.Types.hnode def += fun () -> let Hsim { alloc; step; reset; derivative; crossings; maxsize; horizon; _ } = n in - let s = alloc () in - let state = { state = s; input = None; time = 0.0 } in - let csize, zsize = maxsize s in - let no_roots_in = zmake zsize in - let no_roots_out = cmake zsize in - let ignore_der = cmake csize in - let cstates = cmake csize in - let no_time = -1.0 in - reset s; + let state = { state=alloc (); input=None; time=0.0 } in + let csize, zsize = maxsize state.state in + let no_zin, no_zout = zmake zsize, cmake zsize in + let no_der, pos = cmake csize, cmake csize in + let no_time = -1.0 in reset state.state; let fder { state; time; _ } offset () y = - derivative state y ignore_der no_roots_in no_roots_out (time +. offset); - ignore_der in + derivative state y no_der no_zin no_zout (time +. offset); + no_der in let fzer { state; time; _ } offset () y = - crossings state y no_roots_in no_roots_out (time +. offset); no_roots_out in + crossings state y no_zin no_zout (time +. offset); no_zout in let fout _ _ () _ = () in let step { state; time; _ } offset () = - step state cstates ignore_der no_roots_in (time +. offset), + step state pos no_der no_zin (time +. offset), { state; time=time +. offset; input=Some () } in - let reset _ ({ state; _ } as st) = reset state; st in + let reset () ({ state; _ } as st) = reset state; st in let horizon { state; time; _ } = horizon state -. time in let jump _ = true in let cset ({ state; _ } as st) _ = - derivative state cstates ignore_der no_roots_in no_roots_out no_time; st in + derivative state pos no_der no_zin no_zout no_time; st in let zset ({ state; _ } as st) zinvec = - derivative state cstates ignore_der zinvec no_roots_out no_time; st in + derivative state pos no_der zinvec no_zout no_time; st in let cget { state; _ } = - derivative state cstates ignore_der no_roots_in no_roots_out no_time; cstates in - + derivative state pos no_der no_zin no_zout no_time; pos in HNode { state; fder; fzer; fout; step; reset; horizon; jump; cget; cset; zset; csize; zsize } -let lift_2024 - (f : Ztypes.cstate_new -> (time * 'a, 'b) node) -: (unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) Hsim.Types.hnode -= let cstate = - { cvec = cmake 0; dvec = cmake 0; cindex = 0; zindex = 0; - cend = 0; zend = 0; cmax = 0; zmax = 0; - zinvec = zmake 0; zoutvec = cmake 0; - major = false; horizon = max_float; time=0.0 } in - let Node { alloc=f_alloc; step=f_step; reset=f_reset } = f cstate in + +(* Wrappers around the [step] function (for Zelus 2024). *) + +let nmkfder (c : cstate_new) f der zin zout { state; time; _ } o i y = + c.major <- false; c.cvec <- y; c.dvec <- der; c.zinvec <- zin; + c.zoutvec <- zout; c.cindex <- 0; c.zindex <- 0; c.time <- time; + ignore (f state (time +. o, i)); c.dvec + +let nmkfzer (c : cstate_new) f der zin zout { state; time; _ } o i y = + c.major <- false; c.cvec <- y; c.dvec <- der; c.zinvec <- zin; + c.zoutvec <- zout; c.cindex <- 0; c.zindex <- 0; c.time <- time; + ignore (f state (time +. o, i)); c.zoutvec + +let nmkfout (c : cstate_new) f der zin zout { state; time; _ } o i y = + c.major <- false; c.cvec <- y; c.dvec <- der; c.zinvec <- zin; c.time <- time; + c.zoutvec <- zout; c.cindex <- 0; c.zindex <- 0; f state (time +. o, i) + +let nmkstep (c : cstate_new) f der zin zout ({ state; time; _ } as s) o i = + s.input <- Some i; s.time <- time +. o; c.time <- time; + c.major <- true; c.horizon <- infinity; c.zinvec <- zin; + c.zoutvec <- zout; c.dvec <- der; c.cindex <- 0; c.zindex <- 0; + let o = f state (s.time, i) in o, s + +let nmkzset (c : cstate_new) f der zout time ({ state; input; _ } as s) zin = + c.major <- false; c.zoutvec <- zout; c.dvec <- der; c.zinvec <- zin; + c.cindex <- 0; c.zindex <- 0; ignore (f state (time, Option.get input)); s + +let nmkcset (c : cstate_new) f der zin zout time ({ state; input; _ } as st) _ = + c.major <- false; c.horizon <- infinity; c.zinvec <- zin; c.zoutvec <- zout; + c.dvec <- der; c.cindex <- 0; c.zindex <- 0; + ignore (f state (time, Option.get input)); st + +let nmkcget (c : cstate_new) f der zin zout time { state; input; _ } = + c.major <- false; c.horizon <- infinity; c.zinvec <- zin; c.zoutvec <- zout; + c.dvec <- der; c.cindex <- 0; c.zindex <- 0; + ignore (f state (time, Option.get input)); c.cvec + +(** Lift the inner record of a node. *) +let nlift_inner cs (f : ('s, time * 'a, 'b) node_rec) + : (('s, 'a) state, unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) hrec += let { alloc=f_alloc; step=f_step; reset=f_reset } = f in let state = { state = f_alloc (); input = None; time = 0.0 } in - let csize, zsize = cstate.cmax, cstate.zmax in - let no_roots_in = zmake zsize in - let no_roots_out = cmake zsize in - let ignore_der = cmake csize in - let cstates = cmake csize in - cstate.cvec <- cstates; - f_reset state.state; - + let csize, zsize = cs.cmax, cs.zmax in + let no_roots_in, no_roots_out = zmake zsize, cmake zsize in + let ignore_der = cmake csize in cs.cvec <- cmake csize; f_reset state.state; let no_time = -1.0 in - - (* the function that compute the derivatives *) - let fder { state; time; _ } offset input y = - cstate.major <- false; cstate.cvec <- y; cstate.dvec <- ignore_der; - cstate.zinvec <- no_roots_in; cstate.zoutvec <- no_roots_out; - cstate.cindex <- 0; cstate.zindex <- 0; cstate.time <- time; - ignore (f_step state (time +. offset, input)); - cstate.dvec in - - (* the function that compute the zero-crossings *) - let fzer { state; time; _ } offset input y = - cstate.major <- false; cstate.cvec <- y; cstate.dvec <- ignore_der; - cstate.zinvec <- no_roots_in; cstate.zoutvec <- no_roots_out; - cstate.cindex <- 0; cstate.zindex <- 0; cstate.time <- time; - ignore (f_step state (time +. offset, input)); - cstate.zoutvec in - - (* the function which compute the output during integration *) - let fout { state; time; _ } offset input y = - cstate.major <- false; cstate.cvec <- y; cstate.dvec <- ignore_der; - cstate.zinvec <- no_roots_in; cstate.zoutvec <- no_roots_out; - cstate.cindex <- 0; cstate.zindex <- 0; cstate.time <- time; - f_step state (time +. offset, input) in - - (* the function which compute a discrete step *) - let step ({ state; time; _ } as st) offset input = - st.input <- Some input; - st.time <- time +. offset; - cstate.time <- time; - cstate.major <- true; - cstate.horizon <- infinity; - cstate.zinvec <- no_roots_in; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.cindex <- 0; - cstate.zindex <- 0; - let o = f_step state (st.time, input) in - o, st in - + let fder = nmkfder cs f_step ignore_der no_roots_in no_roots_out in + let fzer = nmkfzer cs f_step ignore_der no_roots_in no_roots_out in + let fout = nmkfout cs f_step ignore_der no_roots_in no_roots_out in + let step = nmkstep cs f_step ignore_der no_roots_in no_roots_out in let reset () ({ state; _ } as st) = f_reset state; st in - - (* horizon *) - let horizon { time; _ } = - cstate.horizon -. time in - + let horizon { time; _ } = cs.horizon -. time in let jump _ = true in + let zset = nmkzset cs f_step ignore_der no_roots_out no_time in + let cset = nmkcset cs f_step ignore_der no_roots_in no_roots_out no_time in + let cget = nmkcget cs f_step ignore_der no_roots_in no_roots_out no_time in + { state; fder; fzer; step; fout; reset; + horizon; cset; cget; zset; zsize; csize; jump } - (* the function which sets the zinvector into the *) - (* internal zero-crossing variables *) - let zset ({ state; input; _ } as st) zinvec = - cstate.major <- false; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.zinvec <- zinvec; - cstate.cindex <- 0; - cstate.zindex <- 0; - ignore (f_step state (no_time, Option.get input)); - st in +let nlift (f : Ztypes.cstate_new -> (time * 'a, 'b) node) + : (unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) Hsim.Types.hnode def += fun () -> + let cs = { cvec=cmake 0; dvec=cmake 0; cindex=0; zindex=0; cend=0; zend=0; + cmax=0; zmax=0; zinvec=zmake 0; zoutvec=cmake 0; major=false; + horizon=max_float; time=0.0 } in + let Node m = f cs in + HNode (nlift_inner cs m) - let cset ({ state; input; _ } as st) _ = - cstate.major <- false; - cstate.horizon <- infinity; - cstate.zinvec <- no_roots_in; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.cindex <- 0; - cstate.zindex <- 0; - ignore (f_step state (no_time, Option.get input)); - st in +(** Wrap a discrete node into the format expected by Zélus. + Resets allocate a fresh node. *) +let wrap (n : ('p, 'a, 'b) dnode def) : ('a, 'b) node = + let alloc () = ref (n ()) in + let step s a = + let DNode n = !s in + let b, state = n.step n.state a in + s := DNode { n with state }; b in + let reset s = s := n () in + Node { alloc; step; reset } - let cget { state; input; _ } = - cstate.major <- false; - cstate.horizon <- infinity; - cstate.zinvec <- no_roots_in; - cstate.zoutvec <- no_roots_out; - cstate.dvec <- ignore_der; - cstate.cindex <- 0; - cstate.zindex <- 0; - ignore (f_step state (no_time, Option.get input)); - cstate.cvec in +(** Unwrap a Zélus node into a discrete node. *) +let unwrap (n : ('a, 'b) node) : (unit, 'a, 'b) dnode def = fun () -> + let Node { alloc; step; reset } = n in + let state = alloc () in + let step s a = let b = step s a in b, s in + let reset () s = reset s; s in + DNode { state; step; reset } - HNode - { state; fder; fzer; step; fout; reset; - horizon; cset; cget; zset; zsize; csize; jump } +(* let lift_assert (n : ('a, 'b) hnodea) *) + (* : (unit, 'a, 'b, cvec, dvec, zinvec, zoutvec) hnode_sa def *) +(* = fun () -> *) + (* let NodeA { body; check } = n in *) + (* let cs = { cvec=cmake 0; dvec=cmake 0; cindex=0; zindex=0; cend=0; zend=0; *) + (* cmax=0; zmax=0; zinvec=zmake 0; zoutvec=cmake 0; major=false; *) + (* horizon=max_float } in *) + (* let model = lift_inner cs (body cs) in *) + (* let proj ({ u; _ } as v) = { v with u=fun t -> (u t).state } in *) + (* let proj = Hsim.Utils.sigmap proj in *) + (* let check = Hsim.Utils.compose proj (unwrap check) in *) + (* HNodeSA { model; check } *) diff --git a/src/lib/std/output.ml b/src/lib/std/output.ml index 2c37032..05cfa3f 100644 --- a/src/lib/std/output.ml +++ b/src/lib/std/output.ml @@ -44,10 +44,10 @@ let print_limits { h; _ } = if h <= 0.0 then Format.printf "D: % .10e\n" 0.0 else Format.printf "C: % .10e\t% .10e\n" 0.0 h -let print samples n = - let DNode m = compose n (compose track (map (print_sample samples))) in +let print samples n () = + let DNode m = compose n (compose track (sigmap (print_sample samples))) () in DNode { m with reset=fun p -> m.reset (p, ((), ())) } -let print_h samples n = - let DNode m = compose n (compose track (map (print_sample_h samples))) in +let print_h samples n () = + let DNode m = compose n (compose track (sigmap (print_sample_h samples))) () in DNode { m with reset=fun p -> m.reset (p, ((), ())) } diff --git a/src/lib/std/runtime.ml b/src/lib/std/runtime.ml index b998de3..2989396 100644 --- a/src/lib/std/runtime.ml +++ b/src/lib/std/runtime.ml @@ -10,6 +10,7 @@ let opts = ref [ "-stop", Arg.Set_float stop, "\tStop time (default=10.0)"; "-debug", Arg.Set Common.Debug.debug, "\tShow debug information"; "-sundials", Arg.Set sundials, "\tUse sundials cvode"; + "-check", Arg.Set_int Solve.assertion_samples, "\tAssertion checking frequency (default: 0.0)"; ] let anon = ref (fun s -> Format.eprintf "Unexpected argument: %s\n" s; exit 1) @@ -29,7 +30,7 @@ let go let input = { h=(!stop); c=Discontinuous; u=input } in let output o = List.iter output @@ Hsim.Utils.sample_tracked o !sample in let solver = Solve.(if !sundials then Sundials else RK45) in - Hsim.Utils.run_on (Solve.build_sim solver model) input output + ignore @@ Hsim.Utils.run_on (Solve.build_sim solver model ()) input output let go_discrete (input : unit -> 'a) @@ -52,4 +53,4 @@ let go_2024 let input = { h=(!stop); c=Discontinuous; u=input } in let output o = List.iter output @@ Hsim.Utils.sample_tracked o !sample in let solver = Solve.(if !sundials then Sundials else RK45) in - Hsim.Utils.run_on (Solve.build_sim_2024 solver model) input output + ignore @@ Hsim.Utils.run_on (Solve.build_sim_2024 solver model ()) input output diff --git a/src/lib/std/solve.ml b/src/lib/std/solve.ml index 1072a6d..6c1ef94 100644 --- a/src/lib/std/solve.ml +++ b/src/lib/std/solve.ml @@ -27,15 +27,16 @@ let build_sim (model : Ztypes.cstate -> (time * 'a, 'b) Ztypes.node) : (unit * ((Ztypes.cvec, Ztypes.dvec) Solver.ivp * - (Ztypes.cvec, Ztypes.zoutvec) Solver.zc), 'a signal, 'b signal_t) dnode -= let model = Lift.lift model in + (Ztypes.cvec, Ztypes.zoutvec) Solver.zc), 'a signal, 'b signal_t) dnode def += fun () -> + let model = Lift.lift model in let solver = Hsim.Solver.solver (match solver with - | RK45 -> d_of_dc @@ Solvers.StatefulRK45.InPlace.csolve () - | Sundials -> Solvers.StatefulSundials.InPlace.csolve ()) - (d_of_dc @@ Solvers.StatefulZ.InPlace.zsolve ()) in + | RK45 -> (fun () -> d_of_dc @@ Solvers.StatefulRK45.InPlace.csolve ()) + | Sundials -> Solvers.StatefulSundials.InPlace.csolve) + (fun () -> d_of_dc @@ Solvers.StatefulZ.InPlace.zsolve ()) in let open Hsim.Sim.Sim(Hsim.State.InPlaceSimState) in - let DNode s = Hsim.Utils.(compose (run model solver) track) in + let DNode s = Hsim.Utils.(compose (run model solver) track) () in DNode { s with reset=fun p -> s.reset (p, ())} let build_sim_2024 @@ -43,15 +44,16 @@ let build_sim_2024 (model : Ztypes.cstate_new -> (time * 'a, 'b) Ztypes.node) : (unit * ((Ztypes.cvec, Ztypes.dvec) Solver.ivp * - (Ztypes.cvec, Ztypes.zoutvec) Solver.zc), 'a signal, 'b signal_t) dnode -= let model = Lift.lift_2024 model in + (Ztypes.cvec, Ztypes.zoutvec) Solver.zc), 'a signal, 'b signal_t) dnode def += fun () -> + let model = Lift.nlift model in let solver = Hsim.Solver.solver (match solver with - | RK45 -> d_of_dc @@ Solvers.StatefulRK45.InPlace.csolve () - | Sundials -> Solvers.StatefulSundials.InPlace.csolve ()) - (d_of_dc @@ Solvers.StatefulZ.InPlace.zsolve ()) in + | RK45 -> (fun () -> d_of_dc @@ Solvers.StatefulRK45.InPlace.csolve ()) + | Sundials -> Solvers.StatefulSundials.InPlace.csolve) + (fun () -> d_of_dc @@ Solvers.StatefulZ.InPlace.zsolve ()) in let open Hsim.Sim.Sim(Hsim.State.InPlaceSimState) in - let DNode s = Hsim.Utils.(compose (run model solver) track) in + let DNode s = Hsim.Utils.(compose (run model solver) track) () in DNode { s with reset=fun p -> s.reset (p, ())} (** Lift a hybrid node into a discrete node on streams of functions. *) @@ -59,21 +61,13 @@ let solve (solver : solver) (model : Ztypes.cstate -> (time * 'a, 'b) Ztypes.node) : ('a signal, 'b signal_t) Ztypes.node -= let DNode sim = build_sim solver model in - let alloc () = ref sim.state in - let step s a = let b, s' = sim.step !s a in s := s'; b in - let reset _ = () in - Ztypes.Node { alloc; step; reset } += Lift.wrap @@ build_sim solver model let solve_2024 (solver : solver) (model : Ztypes.cstate_new -> (time * 'a, 'b) Ztypes.node) : ('a signal, 'b signal_t) Ztypes.node -= let DNode sim = build_sim_2024 solver model in - let alloc () = ref sim.state in - let step s a = let b, s' = sim.step !s a in s := s'; b in - let reset _ = () in - Ztypes.Node { alloc; step; reset } += Lift.wrap @@ build_sim_2024 solver model let solve_ode45 m = solve RK45 m let solve_ode45_2024 m = solve_2024 RK45 m @@ -190,20 +184,26 @@ let synchr Ztypes.Node { alloc; step; reset } (** Sample a value [n] times and iterate [f] on the samples. *) -let iter n f = - let Ztypes.Node { alloc; step; reset } = f in +let iter + (n : int) + (f : ('a, unit) Ztypes.node) +: ('a signal_t, unit) Ztypes.node += let Node { alloc; step; reset } = f in let step s = Option.iter @@ fun (v, _) -> List.iter (fun (_, v) -> step s v) @@ Utils.sample v n in - Ztypes.Node { alloc; step; reset } + Node { alloc; step; reset } (** Sample a value [n] times and iterate [f] on the dated samples. *) -let iter_t n f = - let Ztypes.Node { alloc; step; reset } = f in +let iter_t + (n : int) + (f : (time * 'a, unit) Ztypes.node) +: ('a signal_t, unit) Ztypes.node += let Node { alloc; step; reset } = f in let step s = Option.iter @@ fun (v, h) -> List.iter (fun (t, v) -> step s (t +. h, v)) @@ Utils.sample v n in - Ztypes.Node { alloc; step; reset } + Node { alloc; step; reset } (** Sample a value [n] times and assert [f] on the samples. *) let check @@ -214,7 +214,7 @@ let check try assert (step s v) with Assert_failure _ -> (Format.eprintf "Assertion failed at time %.10e\n" now; exit 1) in - iter_t n (Ztypes.Node { alloc; reset; step }) + iter_t n (Node { alloc; reset; step }) (** Sample a value [n] times and assert [f] on the dated samples. *) let check_t @@ -226,3 +226,50 @@ let check_t with Assert_failure _ -> (Format.eprintf "Assertion failed at time %.10e\n" now; exit 1) in iter_t n (Ztypes.Node { alloc; reset; step }) + +let period' + (p : float) + (Node { alloc; step; reset } : ('a, unit) Ztypes.node) +: ('a signal_t, unit) Ztypes.node += let alloc () = ref (0.0, alloc ()) in + let step s = Option.iter @@ fun (v, _) -> + let offset, st = !s in + let l, o = Utils.period ~offset v p in + List.iter (fun (_, v) -> step st v) l; s := o, st in + let reset s = let _, st = !s in reset st; s := 0.0, st in + Node { alloc; step; reset } + +let period'_t + (p : float) + (Node { alloc; step; reset } : (time * 'a, unit) Ztypes.node) +: ('a signal_t, unit) Ztypes.node += let alloc () = ref (0.0, alloc ()) in + let step s = Option.iter @@ fun (v, h) -> + let offset, st = !s in + let l, o = Utils.period ~offset v p in + List.iter (fun (t, v) -> step st (t +. h, v)) l; s := o, st in + let reset s = let _, st = !s in reset st; s := 0.0, st in + Node { alloc; step; reset } + +let assertion_samples = ref 100 + +let build_assertion + (solver : solver) + (assertion : Ztypes.cstate -> (time * 'a, bool) Ztypes.node) +: ('a signal, bool) Ztypes.node += let n = build_sim solver assertion in + let n () = + let step st = function + | Some i -> + let v = ref true in + let st = Utils.run_on st i (fun (b, now) -> + let l = Utils.sample_tracked (b, now) !assertion_samples in + List.iter (fun (_, b) -> v := b && !v) l) in + !v, st + | None -> true, st in + let reset p (DNode n) = DNode { n with state=n.reset p n.state } in + DNode { state=n (); step; reset } in + Lift.wrap n + +let build_assertion_rk45 a = build_assertion RK45 a +let build_assertion_sundials a = build_assertion Sundials a diff --git a/src/lib/std/solve.mli b/src/lib/std/solve.mli index f936e45..5259995 100644 --- a/src/lib/std/solve.mli +++ b/src/lib/std/solve.mli @@ -1,4 +1,6 @@ +open Hsim.Types + type time = float type 'a value = 'a Hsim.Types.value type 'a signal = 'a value option @@ -10,13 +12,15 @@ val horizon : 'a value -> time val make : time * (time -> 'a) -> 'a value val apply : 'a value * time -> 'a +(* val sustain : 'a -> 'a value *) + val build_sim : solver -> (Ztypes.cstate -> (time * 'a, 'b) Ztypes.node) -> (unit * ((Ztypes.cvec, Ztypes.dvec) Hsim.Solver.ivp * (Ztypes.cvec, Ztypes.zoutvec) Hsim.Solver.zc), - 'a signal, 'b signal_t) Hsim.Types.dnode + 'a signal, 'b signal_t) Hsim.Types.dnode def val build_sim_2024 : solver -> @@ -24,7 +28,7 @@ val build_sim_2024 : (unit * ((Ztypes.cvec, Ztypes.dvec) Hsim.Solver.ivp * (Ztypes.cvec, Ztypes.zoutvec) Hsim.Solver.zc), - 'a signal, 'b signal_t) Hsim.Types.dnode + 'a signal, 'b signal_t) Hsim.Types.dnode def val solve : solver -> @@ -54,8 +58,29 @@ val synchr : ('a signal, 'c signal_t) Ztypes.node -> ('a signal, ('b * 'c) signal_t) Ztypes.node -val iter : int -> ('a, unit) Ztypes.node -> ('a signal_t, unit) Ztypes.node -val iter_t : int -> (time * 'a, unit) Ztypes.node -> ('a signal_t, unit) Ztypes.node +val iter : + int -> ('a, unit) Ztypes.node -> ('a signal_t, unit) Ztypes.node +val iter_t : + int -> (time * 'a, unit) Ztypes.node -> ('a signal_t, unit) Ztypes.node -val check : int -> ('a, bool) Ztypes.node -> ('a signal_t, unit) Ztypes.node -val check_t : int -> (time * 'a, bool) Ztypes.node -> ('a signal_t, unit) Ztypes.node +val check : + int -> ('a, bool) Ztypes.node -> ('a signal_t, unit) Ztypes.node +val check_t : + int -> (time * 'a, bool) Ztypes.node -> ('a signal_t, unit) Ztypes.node + +val period' : + float -> ('a, unit) Ztypes.node -> ('a signal_t, unit) Ztypes.node +val period'_t : + float -> (time * 'a, unit) Ztypes.node -> ('a signal_t, unit) Ztypes.node + +val assertion_samples : int ref +val build_assertion : + solver -> + (Ztypes.cstate -> (time * 'a, bool) Ztypes.node) -> + ('a signal, bool) Ztypes.node +val build_assertion_sundials : + (Ztypes.cstate -> (time * 'a, bool) Ztypes.node) -> + ('a signal, bool) Ztypes.node +val build_assertion_rk45 : + (Ztypes.cstate -> (time * 'a, bool) Ztypes.node) -> + ('a signal, bool) Ztypes.node diff --git a/src/lib/std/solve.zli b/src/lib/std/solve.zli index 7670f25..426d38f 100644 --- a/src/lib/std/solve.zli +++ b/src/lib/std/solve.zli @@ -16,8 +16,11 @@ val synchr : ('a signal -D-> 'c signal_t) -S-> 'a signal -D-> ('b * 'c) signal_t -val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit -val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit +val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit +val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit -val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit -val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit +val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit +val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit + +val period' : float -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit +val period'_t : float -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit diff --git a/src/lib/std/ztypes.ml b/src/lib/std/ztypes.ml index 6ce393f..2c5e032 100644 --- a/src/lib/std/ztypes.ml +++ b/src/lib/std/ztypes.ml @@ -25,12 +25,14 @@ type zero = bool (* a synchronous stream function with type 'a -D-> 'b *) (* is represented by an OCaml value of type ('a, 'b) node *) +type ('s, 'a, 'b) node_rec = { + alloc : unit -> 's; (* allocate the state *) + step : 's -> 'a -> 'b; (* compute a step *) + reset : 's -> unit; (* reset/inialize the state *) +} + type ('a, 'b) node = - Node: - { alloc : unit -> 's; (* allocate the state *) - step : 's -> 'a -> 'b; (* compute a step *) - reset : 's -> unit; (* reset/inialize the state *) - } -> ('a, 'b) node + Node: ('s, 'a, 'b) node_rec -> ('a, 'b) node (* the same with a method copy *) type ('a, 'b) cnode =