4f708d410d
* test: golden-pin the four de-duplicated indicators across all C-ABI bindings Extend gen_golden to emit reference fixtures for AdOscillator (ADOSC), IntradayIntensity, AwesomeOscillatorHistogram and AverageDrawdown, and replay them through the Go / C# / Java / R golden harnesses so their corrected definitions stay bit-identical to the Rust core in every binding. Go suite verified locally (gcc 13 + cgo): all 9 golden tests pass; C#/Java/R use the same fixtures and harness pattern (CI-verified). First step of extending the golden coverage beyond the seven archetype representatives. * test: golden-pin the scalar-output tranche (308 indicators) against Rust Extend gen_golden with a generated emit_scalar that writes reference fixtures for every single-f64-output indicator (scalar / candle / pairwise input) using valid constructor params, and add a manifest-driven generic Python golden replay that reconstructs each by its native name and checks it bit-for-bit against the Rust output. 308 indicators now value-tied to the Rust core in Python (pytest: 308/308). Takes golden coverage from the 7 archetype representatives to 308+ of the catalogue. 22 scalar indicators with non-default constructor constraints are skipped by gen_golden for now (logged), as are non-f64-output ones; multi-output, exotic inputs and the per-indicator arg arities of the C-ABI/Node replays follow. Generated + verified locally with the full toolchain. * test: golden-pin the multi-output tranche (70 indicators) in Python Add a generated emit_multi to gen_golden (per-indicator Output-field access, one CSV column per field) and a manifest-driven generic Python replay that checks every field of each multi-output indicator against the Rust reference. 70 multi-output indicators now value-tied to Rust in Python; combined with the scalar tranche, 378 indicators are golden-pinned. 8 multi with non-default param constraints and 5 with non-f64 Output fields (Option/Vec/i64) are deferred. pytest green. * test(golden): add 30 constraint-tuned indicators to scalar/multi golden suite Emit golden fixtures for 22 scalar-output and 8 multi-output indicators whose constructors need non-default parameters (Alma, Jma, Psar, T3, Mama, DoubleBollinger, ZigZag, ...). All 408 fixtures replay bit-for-bit through the Python binding. * test(golden): cover 36 missed scalar/multi indicators Add 26 single-output (LinearRegression family, HT cycle, Candle volatility estimators, DrawdownDuration) and 10 multi-output (BollingerBands, MACD/MACDEXT/MACDFIX, Camarilla, VWAP bands, ...) indicators to the golden suite. 444 fixtures replay bit-for-bit through the Python binding. * test(golden): cover 50 exotic-input indicators Add deterministic synthetic feeders for the DerivativesTick (17), CrossSection (15), Trade (8), TradeQuote (3) and OrderBook (7) families, derived from the shared OHLCV input series in both gen_golden and a new Python replay harness (test_golden_exotic). All 494 fixtures replay bit-for-bit through the Python binding. * test(golden): complete 514-indicator golden coverage Add the final tranches: 3 mixed multi-output indicators (Ichimoku, WilliamsFractals, LeadLagCrossCorrelation), 6 histogram profiles (time/volume seasonality + TPO/volume price profiles), 10 alt-chart bar builders and the footprint. Every one of the 514 distinct indicators now has a Rust-generated g_<Canonical>.csv fixture and a generic Python replay (scalar/multi/exotic/profile/bars), all passing bit-for-bit. * test(golden): add generic Node replay for all 514 indicators A manifest-driven node:test harness reconstructs every indicator by its native class, feeds the same synthetic stream derived from the shared golden input, and checks output bit-for-bit against the Rust reference fixtures (scalar/multi/exotic/profile/bars). node_manifest.json is generated from index.d.ts plus the Python-side manifests. 514/514 pass. * test(golden): add generated Go replay for all 514 indicators golden_all_test.go (generated by gen_golden_test.py) reconstructs every Go indicator, feeds the shared synthetic stream and checks output bit-for-bit against the Rust reference fixtures. A reflection-based comparator flattens multi-output structs, profiles and bar slices so one path covers all archetypes. This is the first C-ABI binding verified across the full catalogue. 514/514 pass. * test(golden): add generated C# replay for all 514 indicators GoldenAllTests.g.cs (generated by gen_golden_test.py) reconstructs every C# indicator, feeds the shared synthetic stream and checks output bit-for-bit against the Rust reference fixtures via a reflection-based flatten covering scalar/multi/profile/bar archetypes. 514/514 pass. Also add the '#nullable enable' directive the compiler requires to the generated Indicators.g.cs, clearing the four CS8669 warnings on the nullable double[] profile return types. * fix(java): marshal C ABI bool params correctly; add 514 golden replay The Java FFM binding marshalled the cross-section state flags (newHigh, newLow, aboveMa, onBuySignal) as JAVA_DOUBLE arrays, but the C ABI takes them as const bool* (one byte each), so the native side read the low byte of each 8-byte double and saw every flag as false. Add WickraNative. boolSegment and use it across the 15 cross-section indicators. Also pass the MacdExt MaType arguments as byte to match the uint8_t downcall descriptor (was int, throwing WrongMethodTypeException). Add GoldenAllTest.java (generated by gen_golden_test.py): a reflection runner replaying all 514 indicators against the Rust reference fixtures. The bugs above were found by this test; 514/514 now pass. * fix(r): marshal C ABI bool flags correctly; add 514 golden replay The R wrapper passed the cross-section state flags as (bool *)REAL(x), reinterpreting the 8-byte doubles as 1-byte bools so the native side read every flag as false. Add wk_bool_vec to convert each flag vector into a real C bool buffer and use it for all 15 cross-section update wrappers. Add test-golden-all.R + generated golden_specs.R: a reflective runner replaying all 514 indicators against the Rust reference fixtures. The bug above was found by this test; verified 514/514 pass locally. * test(golden): add WASM replay for all 514 indicators A manifest-driven node:test harness loads the nodejs-target wasm-pack build, reconstructs every indicator by its JS class, feeds the shared synthetic stream and checks output bit-for-bit against the Rust reference fixtures. wasm_manifest.json is generated from the wasm .d.ts plus the shared manifests; a recursive flattener covers scalar, multi (Reflect objects), profile and bar shapes. 514/514 pass locally (wasm-pack build --target nodejs, then node --test). * test(golden): add C and C++ replay for all 514 indicators golden_test.c (generated by gen_golden_test.py) drives every indicator through the C ABI (wickra.h) and checks output bit-for-bit against the Rust reference fixtures. golden_test.cpp #includes the same source so the identical runner is compiled and run under both gcc (C) and g++ (C++) via the CMake targets golden_test / golden_test_cpp — proving the extern "C" header is consumable from each language. Both 514/514 (verified via ctest). * test(golden): gofmt the generated Go golden replay * test(golden): make the Node fixture reader CRLF-safe and pin fixtures to LF
13 KiB
13 KiB
| 1 | pp | r1 | r2 | r3 | r4 | s1 | s2 | s3 | s4 |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 99.66666666666667 | 100.275 | 100.55 | 100.825 | 101.65 | 99.725 | 99.45 | 99.175 | 98.35 |
| 3 | 103.16267454598328 | 103.7780337561168 | 104.10086544562022 | 104.42369713512362 | 105.39219220363384 | 103.13237037710999 | 102.80953868760658 | 102.48670699810317 | 101.51821192959295 |
| 4 | 106.46632396532765 | 106.96961867057054 | 107.29281260719073 | 107.61600654381093 | 108.58558835367148 | 106.32323079733017 | 106.00003686070998 | 105.67684292408978 | 104.70726111422923 |
| 5 | 109.30969002905226 | 109.60221419837052 | 109.8711593004662 | 110.14010440256189 | 110.94693970884894 | 109.06432399417915 | 108.79537889208346 | 108.52643378998778 | 107.71959848370072 |
| 6 | 111.45910647185464 | 111.57257823345337 | 111.82476560723448 | 112.0769529810156 | 112.83351510235893 | 111.06820348589115 | 110.81601611211003 | 110.56382873832892 | 109.80726661698559 |
| 7 | 112.74199773788952 | 112.76387649333724 | 113.05280312063391 | 113.3417297479306 | 114.20850962982065 | 112.18602323874386 | 111.89709661144718 | 111.60816998415049 | 110.74139010226044 |
| 8 | 113.06847380764877 | 113.09245340010824 | 113.44643049143453 | 113.80040758276081 | 114.86233885673968 | 112.38449921745567 | 112.03052212612938 | 111.6765450348031 | 110.61461376082423 |
| 9 | 112.44424589558567 | 112.49132701898097 | 112.85056037147318 | 113.2097937239654 | 114.28749378144207 | 111.77286031399652 | 111.4136269615043 | 111.05439360901208 | 109.97669355153542 |
| 10 | 110.97251301246604 | 111.05574857922898 | 111.35686535294643 | 111.6579821266639 | 112.56133244781628 | 110.45351503179404 | 110.15239825807659 | 109.85128148435912 | 108.94793116320673 |
| 11 | 108.84406406881523 | 108.97799635816386 | 109.18219391398941 | 109.38639146981497 | 109.99898413729163 | 108.56960124651275 | 108.3654036906872 | 108.16120613486164 | 107.54861346738498 |
| 12 | 106.3166460187776 | 106.68075955248203 | 106.95031902436538 | 107.21987849624873 | 108.02855691189879 | 106.14164060871532 | 105.87208113683197 | 105.60252166494863 | 104.79384324929856 |
| 13 | 103.68631980047041 | 104.26141987598294 | 104.60029669339836 | 104.93917351081379 | 105.95580396306005 | 103.58366624115209 | 103.24478942373666 | 102.90591260632124 | 101.88928215407498 |
| 14 | 101.25473880483469 | 101.92448274323586 | 102.27416991942023 | 102.6238570956046 | 103.67291862415775 | 101.2251083908671 | 100.87542121468273 | 100.52573403849836 | 99.47667250994522 |
| 15 | 99.29680919958425 | 99.92444295706736 | 100.22654750597445 | 100.52865205488155 | 101.43496570160283 | 99.32023385925316 | 99.01812931034607 | 98.71602476143897 | 97.80971111471769 |
| 16 | 98.03294152441634 | 98.57027723602701 | 98.8563121961899 | 99.1423471563528 | 100.0004520368415 | 97.99820731570122 | 97.71217235553833 | 97.42613739537543 | 96.56803251488674 |
| 17 | 97.60915371740403 | 98.02044583881464 | 98.31619285428026 | 98.61193986974587 | 99.4991809161427 | 97.42895180788342 | 97.1332047924178 | 96.83745777695219 | 95.95021673055535 |
| 18 | 98.08685392291113 | 98.32478270657958 | 98.61121150151759 | 98.89764029645558 | 99.75692668126956 | 97.7519251167036 | 97.4654963217656 | 97.17906752682761 | 96.31978114201362 |
| 19 | 99.44252381095095 | 99.53703350309051 | 99.83221382945834 | 100.12739415582618 | 101.01293513492969 | 98.94667285035483 | 98.651492523987 | 98.35631219761916 | 97.47077121851565 |
| 20 | 101.57606521173501 | 101.5422908444415 | 101.81222656444285 | 102.08216228444422 | 102.89196944444832 | 101.00241940443875 | 100.7324836844374 | 100.46254796443603 | 99.65274080443193 |
| 21 | 104.32553529275576 | 104.32926258320965 | 104.66538059239568 | 105.0014986015817 | 106.00985262913977 | 103.65702656483761 | 103.32090855565158 | 102.98479054646556 | 101.97643651890749 |
| 22 | 107.48553552770288 | 107.55689891578143 | 107.90795281355214 | 108.25900671132284 | 109.31216840463496 | 106.85479112024004 | 106.50373722246933 | 106.15268332469863 | 105.09952163138651 |
| 23 | 110.82665131417549 | 110.9725900160979 | 111.2770410273523 | 111.5814920386067 | 112.49484507236991 | 110.3636879935891 | 110.0592369823347 | 109.7547859710803 | 108.84143293731708 |
| 24 | 114.11393840247109 | 114.3269385068177 | 114.53846337850163 | 114.74998825018555 | 115.38456286523734 | 113.90388876344986 | 113.69236389176592 | 113.480839020082 | 112.84626440503021 |
| 25 | 117.12329605763098 | 117.54705712667621 | 117.80971660947044 | 118.07237609226466 | 118.86035454064734 | 117.02173816108777 | 116.75907867829353 | 116.49641919549931 | 115.70844074711664 |
| 26 | 119.6553939855807 | 120.27872556278697 | 120.62077248708242 | 120.96281941137788 | 121.98896018426422 | 119.59463171419608 | 119.25258478990064 | 118.91053786560518 | 117.88439709271884 |
| 27 | 121.54740034135453 | 122.24423032717334 | 122.60846088659929 | 122.97269144602525 | 124.0653831243031 | 121.51576920832144 | 121.1515386488955 | 120.78730808946953 | 119.69461641119169 |
| 28 | 122.68295119326267 | 123.3073924174329 | 123.62935138111975 | 123.95131034480659 | 124.91718723586712 | 122.66347449005922 | 122.34151552637236 | 122.01955656268552 | 121.05367967162499 |
| 29 | 123.0005912206809 | 123.44138791563655 | 123.68387772282226 | 123.92636753000795 | 124.65383695156505 | 122.95640830126517 | 122.71391849407946 | 122.47142868689377 | 121.74395926533667 |
| 30 | 122.50041000814686 | 122.8043699910581 | 123.0627509012334 | 123.32113181140869 | 124.09627454193458 | 122.28760817070751 | 122.02922726053221 | 121.77084635035692 | 120.99570361983103 |
| 31 | 121.2480003897514 | 121.43656394581242 | 121.743435590803 | 122.0503072357936 | 122.97092217076536 | 120.82282065583124 | 120.51594901084066 | 120.20907736585006 | 119.2884624308783 |
| 32 | 119.37441415670385 | 119.4508496779621 | 119.78051450350664 | 120.11017932905116 | 121.09917380568476 | 118.79152002687304 | 118.4618552013285 | 118.13219037578398 | 117.14319589915038 |
| 33 | 117.0706953893436 | 117.04388229553408 | 117.34322035599752 | 117.64255841646096 | 118.54057259785128 | 116.4452061746072 | 116.14586811414375 | 115.84653005368031 | 114.94851587228999 |
| 34 | 114.57595201454465 | 114.56429357775264 | 114.87185496773508 | 115.17941635771751 | 116.10210052766485 | 113.94917079778776 | 113.64160940780532 | 113.33404801782288 | 112.41136384787555 |
| 35 | 112.1587734147477 | 112.25441963456801 | 112.58419820688923 | 112.91397677921046 | 113.90331249617411 | 111.59486248992557 | 111.26508391760436 | 110.93530534528313 | 109.94596962831947 |
| 36 | 110.09297423674845 | 110.29889128757917 | 110.59652945109374 | 110.89416761460834 | 111.78708210515208 | 109.70361496054998 | 109.40597679703541 | 109.10833863352082 | 108.21542414297707 |
| 37 | 108.62989574587948 | 108.96069883714864 | 109.218355274014 | 109.47601171087935 | 110.24898102147542 | 108.44538596341795 | 108.18772952655259 | 107.93007308968724 | 107.15710377909117 |
| 38 | 107.97053212992039 | 108.44066080423896 | 108.69068390914283 | 108.94070701404672 | 109.69077632875835 | 107.94061459443121 | 107.69059148952734 | 107.44056838462345 | 106.69049906991182 |
| 39 | 108.24129915337737 | 108.88756232781016 | 109.2206505376602 | 109.55373874751025 | 110.55300337706038 | 108.22138590811007 | 107.88829769826002 | 107.55520948840997 | 106.55594485885985 |
| 40 | 109.47714653729103 | 110.17185510429249 | 110.53699546523174 | 110.90213582617098 | 111.99755690898873 | 109.44157438241399 | 109.07643402147474 | 108.7112936605355 | 107.61587257771775 |
| 41 | 111.61489250420503 | 112.21228559059719 | 112.54440702038471 | 112.87652845017223 | 113.8728927395348 | 111.54804273102215 | 111.21592130123463 | 110.88379987144711 | 109.88743558208454 |
| 42 | 114.49824346605784 | 114.87984470625676 | 115.12541859251787 | 115.37099247877899 | 116.10771413756234 | 114.38869693373454 | 114.14312304747342 | 113.89754916121231 | 113.16082750242896 |
| 43 | 117.8942032754348 | 118.09616043868955 | 118.32463879103715 | 118.55311714338472 | 119.23855220042748 | 117.63920373399439 | 117.4107253816468 | 117.18224702929922 | 116.49681197225647 |
| 44 | 121.51880689228612 | 121.65250649348452 | 121.96878251475769 | 122.28505853603085 | 123.23388659985032 | 121.01995445093822 | 120.70367842966505 | 120.38740240839189 | 119.43857434457242 |
| 45 | 125.06867496722403 | 125.12761411184715 | 125.48048383231736 | 125.83335355278759 | 126.89196271419824 | 124.4218746709067 | 124.0690049504365 | 123.71613522996627 | 122.65752606855561 |
| 46 | 128.2540554225371 | 128.24868876856593 | 128.57664239005965 | 128.90459601155334 | 129.88845687603444 | 127.59278152557853 | 127.26482790408484 | 126.93687428259113 | 125.95301341811003 |
| 47 | 130.82894581221407 | 130.80892818262987 | 131.08001209974353 | 131.35109601685716 | 132.16434776819813 | 130.26676034840256 | 129.9956764312889 | 129.72459251417527 | 128.9113407628343 |
| 48 | 132.61456770121885 | 132.73386525487982 | 133.03077381531858 | 133.32768237575732 | 134.21840805707362 | 132.14004813400228 | 131.84313957356352 | 131.54623101312478 | 130.65550533180848 |
| 49 | 133.51372898547731 | 133.7734240495645 | 134.05375421164987 | 134.3340843737352 | 135.17507485999127 | 133.21276372539384 | 132.93243356330848 | 132.65210340122314 | 131.81111291496708 |
| 50 | 133.51518476304713 | 133.9537560811636 | 134.2509343968344 | 134.54811271250523 | 135.43964765951765 | 133.35939944982198 | 133.06222113415117 | 132.76504281848034 | 131.87350787146792 |
| 51 | 132.68866514679192 | 133.23806839554868 | 133.518668479668 | 133.79926856378734 | 134.6410688161453 | 132.67686822731002 | 132.3962681431907 | 132.11566805907137 | 131.2738678067134 |
| 52 | 131.17247746428333 | 131.8163220706958 | 132.12976573982044 | 132.44320940894505 | 133.38354041631897 | 131.18943473244653 | 130.8759910633219 | 130.56254739419728 | 129.62221638682337 |
| 53 | 129.1563006939515 | 129.81967906149674 | 130.17195239168734 | 130.52422572187794 | 131.58104571244974 | 129.11513240111555 | 128.76285907092495 | 128.41058574073435 | 127.35376575016255 |
| 54 | 126.86189674888487 | 127.40847514811799 | 127.73941377324154 | 128.0703523983651 | 129.06316827373576 | 126.74659789787088 | 126.41565927274733 | 126.08472064762378 | 125.09190477225312 |
| 55 | 124.52403581279573 | 124.84496825109156 | 125.09852231592498 | 125.35207638075842 | 126.11273857525872 | 124.33786012142468 | 124.08430605659126 | 123.83075199175782 | 123.07008979725752 |
| 56 | 122.37315973892662 | 122.49512526070693 | 122.7144703853985 | 122.93381551009008 | 123.59185088416483 | 122.05643501132376 | 121.83708988663219 | 121.6177447619406 | 120.95970938786586 |
| 57 | 120.62044223256866 | 120.6968255527843 | 121.01150452925984 | 121.32618350573539 | 122.27022043516199 | 120.06746759983324 | 119.7527886233577 | 119.43810964688215 | 118.49407271745555 |
| 58 | 119.44519828628948 | 119.48734463199692 | 119.85035959980887 | 120.21337456762083 | 121.30241947105671 | 118.76131469637299 | 118.39829972856104 | 118.03528476074908 | 116.9462398573132 |
| 59 | 118.98423170775713 | 119.00608999479411 | 119.35283004040464 | 119.69957008601519 | 120.73979022284678 | 118.31260990357305 | 117.96586985796252 | 117.61912981235197 | 116.57890967552038 |
| 60 | 119.32275870519 | 119.34716359875881 | 119.62092100222395 | 119.89467840568909 | 120.71595061608453 | 118.79964879182853 | 118.52589138836339 | 118.25213398489825 | 117.43086177450282 |
| 61 | 120.48694857241185 | 120.6291587967551 | 120.88414209142206 | 121.13912538608902 | 121.9040752700899 | 120.1191922074212 | 119.86420891275424 | 119.60922561808728 | 118.8442757340864 |
| 62 | 122.4387103823207 | 122.77161505708187 | 123.0531025818805 | 123.33459010667913 | 124.179052681075 | 122.2086400074846 | 121.92715248268598 | 121.64566495788735 | 120.80120238349147 |
| 63 | 125.07389544503057 | 125.6039558312047 | 125.93099755867671 | 126.25803928614873 | 127.23916446856478 | 124.94987237626066 | 124.62283064878865 | 124.29578892131663 | 123.31466373890058 |
| 64 | 128.2253492633656 | 128.84785962930889 | 129.16545587598398 | 129.4830521226591 | 130.43584086268444 | 128.21266713595864 | 127.89507088928353 | 127.57747464260842 | 126.62468590258308 |
| 65 | 131.67207090888238 | 132.2896676353533 | 132.57510839263853 | 132.86054914992377 | 133.71687142177942 | 131.71878612078288 | 131.43334536349766 | 131.14790460621242 | 130.29158233435678 |
| 66 | 135.15507483469676 | 135.7598309638397 | 136.08651263948047 | 136.41319431512125 | 137.3932393420436 | 135.10646761255816 | 134.7797859369174 | 134.45310426127662 | 133.47305923435428 |
| 67 | 138.3994880837803 | 138.8731449458564 | 139.1908911945168 | 139.5086374431772 | 140.46187618915837 | 138.2376524485356 | 137.91990619987521 | 137.60215995121482 | 136.64892120523365 |
| 68 | 141.1411629574787 | 141.39443335426606 | 141.6521293334611 | 141.9098253126561 | 142.68291325024117 | 140.87904139587604 | 140.621345416681 | 140.363649437486 | 139.59056149990093 |
| 69 | 143.154923777789 | 143.23994258729024 | 143.48863963810155 | 143.73733668891285 | 144.48342784134675 | 142.74254848566764 | 142.49385143485634 | 142.24515438404504 | 141.49906323161113 |
| 70 | 144.28078575968826 | 144.3010611099437 | 144.60419321846072 | 144.9073253269777 | 145.81672165252874 | 143.69479689290972 | 143.3916647843927 | 143.0885326758757 | 142.17913635032468 |
| 71 | 144.44430932083742 | 144.4709947348903 | 144.83046222475943 | 145.18992971462856 | 146.26833218423596 | 143.75205975515203 | 143.3925922652829 | 143.03312477541377 | 141.95472230580637 |
| 72 | 143.66778712039107 | 143.72015549733024 | 144.0737546092999 | 144.42735372126958 | 145.4881510571786 | 143.01295727339087 | 142.6593581614212 | 142.30575904945152 | 141.2449617135425 |
| 73 | 142.07015356602253 | 142.16055651565432 | 142.44688706980628 | 142.7332176239582 | 143.59220928641403 | 141.58789540735046 | 141.3015648531985 | 141.01523429904657 | 140.15624263659075 |
| 74 | 139.85515947975856 | 140.01986187563278 | 140.22721883471613 | 140.4345757937995 | 141.05664667104958 | 139.60514795746604 | 139.3977909983827 | 139.19043403929933 | 138.56836316204925 |
| 75 | 137.28916235919314 | 137.69477198042676 | 137.97931979885507 | 138.26386761728335 | 139.11751107256825 | 137.1256763435702 | 136.8411285251419 | 136.55658070671362 | 135.70293725142872 |
| 76 | 134.6714977766173 | 135.27173843175984 | 135.6168410695873 | 135.96194370741475 | 136.9972516208971 | 134.58153315610497 | 134.2364305182775 | 133.89132788045006 | 132.85601996696772 |
| 77 | 132.3015073284582 | 132.97365009660936 | 133.31904531782385 | 133.6644405390383 | 134.70062620268175 | 132.28285965418044 | 131.93746443296595 | 131.5920692117515 | 130.55588354810806 |
| 78 | 130.44669455820846 | 131.05478070846547 | 131.34450897737338 | 131.6342372462813 | 132.503422053005 | 130.47532417064966 | 130.18559590174175 | 129.89586763283384 | 129.02668282611012 |
| 79 | 129.31610321851522 | 129.83864309660322 | 130.12915987140326 | 130.41967664620327 | 131.2912269706034 | 129.25760954700314 | 128.9670927722031 | 128.6765759974031 | 127.80502567300299 |
| 80 | 129.04196344134022 | 129.4238197929536 | 129.7167951671137 | 130.00977054127378 | 130.88869666375405 | 128.83786904463344 | 128.54489367047333 | 128.25191829631325 | 127.37299217383298 |
| 81 | 129.6711671025228 | 129.8863359319469 | 130.17752707286533 | 130.4687182137838 | 131.3422916365392 | 129.30395365010995 | 129.0127625091915 | 128.72157136827303 | 127.84799794551763 |