Skip to content

math: trigonometry still wrong for huge arguments #37839

@nsajko

Description

@nsajko

What version of Go are you using (go version)?

$ go version
go version devel +ae3f98c51b Sat Mar 7 00:35:52 2020 +0000 linux/amd64

Does this issue reproduce with the latest release?

Dunno. Probably.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/tmp/freedesktopCache/go-build"
GOENV="/home/nsajko/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/nsajko"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/nsajko/goNew"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/nsajko/goNew/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build573035198=/tmp/go-build -gno-record-gcc-switches"

What did you do?

Calculated sines, cosines, etc. of all kind of values, including huge ones. I had a different goal, but in the process I discovered this bug, because I compared Go's math functions' outputs with FriCAS (it can calculate with, e.g., 15000 digits of precision, which provides an effectively accurate result).

What did you expect to see?

Normally, I would just brush aside the meaningless results given huge arguments, but it seems Go actually supports that, having looked at some commit histories, Github issues, and src/math/huge_test.go. In particular, see 98521a5 @bmkessler and #6794.

Thus I would expect math.Sin and company to be accurate up to the last couple of bits of the mantissa (e.g., ULP error < 1000).

What did you see instead?

It seems the Payne-Hanek range reduction is not working properly as some inputs produce meaningless results given arguments above 10^31.

Some data for math.Sin, see attached file for more rangeReductionFailures.txt. Each line records a point where math.Sin is wrong in about 37 bits of the mantissa or more:

EDIT: added excerpt from the file for inputs around 2.6e+307

Input:   2.197000000000063281250000000000e+13     Have:   2.559435063127277198979925287858e-01     Want:   2.562412708565855457010229656589e-01     Diff:   2.977645438578258030304368730867e-04     ULP diff:        5364049155049
Input:   2.197000000000063671875000000000e+13     Have:   2.597176836301987035149352323060e-01     Want:   2.600151377550460329857173746859e-01     Diff:   2.974541248473294707821423799032e-04     ULP diff:        5358457143289
Input:   2.197000000000064062500000000000e+13     Have:   2.634878979753585426237805222627e-01     Want:   2.637850371424114159779605870426e-01     Diff:   2.971391670528733541800647799391e-04     ULP diff:        5352783368066
Input:   2.197000000000064453125000000000e+13     Have:   2.672540918193749837072914488090e-01     Want:   2.675509114946553190783617992565e-01     Diff:   2.968196752803353710703504475532e-04     ULP diff:        5347027915955
Input:   2.197000000000064843750000000000e+13     Have:   2.710162076947636444756994933414e-01     Want:   2.713127033491684048094327863510e-01     Diff:   2.964956544047603337332930095727e-04     ULP diff:        5341190874777
Input:   2.197000000000065234375000000000e+13     Have:   2.747741881962650345450072109088e-01     Want:   2.750703553056352279604368504806e-01     Diff:   2.961671093701934154296395718120e-04     ULP diff:        5335272333596
Input:   2.197000000000065625000000000000e+13     Have:   2.785279759817201883365100911760e-01     Want:   2.788238100269102015538180694421e-01     Diff:   2.958340451900132173079782660352e-04     ULP diff:        5329272382725
Input:   2.197000000000066015625000000000e+13     Have:   2.822775137729460204205622630980e-01     Want:   2.825730102398922305440009949962e-01     Diff:   2.954964669462101234387318982044e-04     ULP diff:        5323191113713
Input:   2.197000000000066406250000000000e+13     Have:   2.860227443566089600146540306014e-01     Want:   2.863178987363989014269805011281e-01     Diff:   2.951543797899414123264705267502e-04     ULP diff:        5317028619355
Input:   2.197000000000066796875000000000e+13     Have:   2.897636105850983079257332519774e-01     Want:   2.900584183740392285599796196038e-01     Diff:   2.948077889409206342463676264742e-04     ULP diff:        5310784993681
Input:   2.197000000000067187500000000000e+13     Have:   2.935000553773978726468385502812e-01     Want:   2.937945120770856788361413691746e-01     Diff:   2.944566996878061893028188933386e-04     ULP diff:        5304460331963
Input:   2.197000000000067578125000000000e+13     Have:   2.972320217199572733868251361855e-01     Want:   2.975261228373449751138934971095e-01     Diff:   2.941011173877017270683609240223e-04     ULP diff:        5298054730706
Input:   2.197000000000067968750000000000e+13     Have:   3.009594526675616332767049243557e-01     Want:   3.012531937150280669790447518608e-01     Diff:   2.937410474664337023398275050567e-04     ULP diff:        5291568287653
Input:   2.197000000000068359375000000000e+13     Have:   3.046822913442007729756255685061e-01     Want:   3.049756678396189357727052993141e-01     Diff:   2.933764954181627970797308080364e-04     ULP diff:        5285001101778
Input:   2.197000000000068750000000000000e+13     Have:   3.084004809439368499646150212357e-01     Want:   3.086934884107423449073337451409e-01     Diff:   2.930074668054949427187239052728e-04     ULP diff:        5278353273288
Input:   2.197000000000069140625000000000e+13     Have:   3.121139647317711651730576249975e-01     Want:   3.124065986990305909820619945094e-01     Diff:   2.926339672594258090043695119675e-04     ULP diff:        5271624903622
Input:   2.197000000000069531250000000000e+13     Have:   3.158226860445099704044480404264e-01     Want:   3.161149420469889781415417928656e-01     Diff:   2.922560024790077370937524392502e-04     ULP diff:        5264816095445
Input:   2.197000000000069921875000000000e+13     Have:   3.195265882916290545168180869950e-01     Want:   3.198184618698606818121277228784e-01     Diff:   2.918735782316272953096358833136e-04     ULP diff:        5257926952653
Input:   2.197000000000070312500000000000e+13     Have:   3.232256149561371638689877272554e-01     Want:   3.235171016564896695477671073604e-01     Diff:   2.914867003525056787793801049702e-04     ULP diff:        5250957580364
Input:   2.197000000000070703125000000000e+13     Have:   3.269197095954384790772451196972e-01     Want:   3.272108049701833998312849871581e-01     Diff:   2.910953747449207540398674609605e-04     ULP diff:        5243908084922
Input:   2.197000000000071093750000000000e+13     Have:   3.306088158421937039932458901603e-01     Want:   3.308995154495738555411321613065e-01     Diff:   2.906996073801515478862711461261e-04     ULP diff:        5236778573896
Input:   2.197000000000071484375000000000e+13     Have:   3.342928774051804885480976281542e-01     Want:   3.345831768094775227062598332850e-01     Diff:   2.902994042970341581622051307932e-04     ULP diff:        5229569156072
Input:   2.197000000000071875000000000000e+13     Have:   3.379718380701520197284537516680e-01     Want:   3.382617328417540925045159383444e-01     Diff:   2.898947716020727760621866764268e-04     ULP diff:        5222279941455
Input:   2.197000000000072265625000000000e+13     Have:   3.416456417006948353964901343716e-01     Want:   3.419351274161644971272266957385e-01     Diff:   2.894857154696617307365613669390e-04     ULP diff:        5214911041273
Input:   2.197000000000072656250000000000e+13     Have:   3.453142322390856389091595701757e-01     Want:   3.456033044812270027534850669326e-01     Diff:   2.890722421413638443254967569374e-04     ULP diff:        5207462567964
Input:   2.197000000000073046875000000000e+13     Have:   3.489775537071463928917580687994e-01     Want:   3.492662080650726919017756699759e-01     Diff:   2.886543579262990100176011765143e-04     ULP diff:        5199934635183
Input:   2.197000000000073437500000000000e+13     Have:   3.526355502070986358553739137278e-01     Want:   3.529237822762995024916676811699e-01     Diff:   2.882320692008666362937674421119e-04     ULP diff:        5192327357797
Input:   2.197000000000073828125000000000e+13     Have:   3.562881659224163555244047074666e-01     Want:   3.565759713048250456601806490653e-01     Diff:   2.878053824086901357759415986948e-04     ULP diff:        5184640851884
Input:   2.197000000000074218750000000000e+13     Have:   3.599353451186776964298985603818e-01     Want:   3.602227194227382023328232207859e-01     Diff:   2.873743040605059029246604040964e-04     ULP diff:        5176875234731
Input:   2.197000000000074609375000000000e+13     Have:   3.635770321444153907464169606101e-01     Want:   3.638639709851493875270023181656e-01     Diff:   2.869388407339967805853575555375e-04     ULP diff:        5169030624831
Input:   2.197000000000075000000000000000e+13     Have:   3.672131714319659123724193250382e-01     Want:   3.674996704310397599435589199857e-01     Diff:   2.864989990738475711395949474536e-04     ULP diff:        5161107141884
Input:   2.197000000000075390625000000000e+13     Have:   3.708437074983175207876229251269e-01     Want:   3.711297622841088772460693689936e-01     Diff:   2.860547857913564584464438667055e-04     ULP diff:        5153104906790
Input:   2.197000000000075781250000000000e+13     Have:   3.744685849459565285535234124836e-01     Want:   3.747541911536214076505757475388e-01     Diff:   2.856062076648790970523350551957e-04     ULP diff:        5145024041657
Input:   2.197000000000076171875000000000e+13     Have:   3.780877484637129581912518005993e-01     Want:   3.783729017352519541361743904417e-01     Diff:   2.851532715389959449225898424629e-04     ULP diff:        5136864669786
Input:   2.197000000000076562500000000000e+13     Have:   3.817011428276043116802895838191e-01     Want:   3.819858388119293790552433165431e-01     Diff:   2.846959843250673749537327239523e-04     ULP diff:        5128626915681
Input:   2.197000000000076953125000000000e+13     Have:   3.853087129016783407564616936725e-01     Want:   3.855929472546790193199228724552e-01     Diff:   2.842343530006785634611787827453e-04     ULP diff:        5120310905039
Input:   2.197000000000077343750000000000e+13     Have:   3.889104036388542073865437487257e-01     Want:   3.891941720234640134101766761887e-01     Diff:   2.837683846098060236329274630407e-04     ULP diff:        5111916764753
Input:   2.197000000000077734375000000000e+13     Have:   3.925061600817626450421471417940e-01     Want:   3.927894581680250740696180855593e-01     Diff:   2.832980862624290274709437653655e-04     ULP diff:        5103444622905
Input:   2.197000000000078125000000000000e+13     Have:   3.960959273635842325944622643874e-01     Want:   3.963787508287190952671608101809e-01     Diff:   2.828234651348626726985457935371e-04     ULP diff:        5094894608772
Input:   2.197000000000078515625000000000e+13     Have:   3.996796507088869465640357248049e-01     Want:   3.999619952373561493352838169812e-01     Diff:   2.823445284692027712480921763927e-04     ULP diff:        5086266852816
Input:   2.197000000000078906250000000000e+13     Have:   4.032572754344617149691032409464e-01     Want:   4.035391367180350963295154542720e-01     Diff:   2.818612835733813604122133256169e-04     ULP diff:        5077561486685
Input:   2.197000000000079296875000000000e+13     Have:   4.068287469501569164620491392270e-01     Want:   4.071101206879781386760441819206e-01     Diff:   2.813737378212222139950426935684e-04     ULP diff:        5068778643214
Input:   2.197000000000079687500000000000e+13     Have:   4.103940107597113806647826095286e-01     Want:   4.106748926583633219067337449815e-01     Diff:   2.808818986519412419511354528368e-04     ULP diff:        5059918456416
Input:   2.197000000000080078125000000000e+13     Have:   4.139530124615858341918794849335e-01     Want:   4.142333982351563137491723409767e-01     Diff:   2.803857735704795572928560432047e-04     ULP diff:        5050981061488
Input:   2.197000000000080468750000000000e+13     Have:   4.175056977497930699172457025270e-01     Want:   4.177855831199401848152774618939e-01     Diff:   2.798853701471148980317593668588e-04     ULP diff:        5041966594804
Input:   2.197000000000080859375000000000e+13     Have:   4.210520124147266174396975202399e-01     Want:   4.213313931107439680445736485126e-01     Diff:   2.793806960173506048761282727355e-04     ULP diff:        5032875193913
Input:   2.197000000000081250000000000000e+13     Have:   4.245919023439879147474584897282e-01     Want:   4.248707741028697748575382320269e-01     Diff:   2.788717588818601100797422986943e-04     ULP diff:        5023706997538
Input:   2.197000000000081640625000000000e+13     Have:   4.281253135232118145481194915192e-01     Want:   4.284036720897182459744101379329e-01     Diff:   2.783585665064314262906464136904e-04     ULP diff:        5014462145575
Input:   2.197000000000082031250000000000e+13     Have:   4.316521920368910913978766075161e-01     Want:   4.319300331636128920109740647604e-01     Diff:   2.778411267218006130974572442938e-04     ULP diff:        5005140779090
Input:   2.197000000000082421875000000000e+13     Have:   4.351724840691988394070222057053e-01     Want:   4.354498035166222691394466437487e-01     Diff:   2.773194474234297324244380433811e-04     ULP diff:        4995743040315
Input:   2.197000000000082812500000000000e+13     Have:   4.386861359048098707447138622229e-01     Want:   4.389629294413812665709428983973e-01     Diff:   2.767935365713958262290361744817e-04     ULP diff:        4986269072646
Input:   2.197000000000083203125000000000e+13     Have:   4.421930939297200602311477268813e-01     Want:   4.424693573319106731922545350244e-01     Diff:   2.762634021906129611068081430858e-04     ULP diff:        4976719020647
Input:   2.197000000000083593750000000000e+13     Have:   4.456933046320648017513121885713e-01     Want:   4.459690336844349678457888330740e-01     Diff:   2.757290523701660944766445027199e-04     ULP diff:        4967093030038
Input:   2.197000000000083984375000000000e+13     Have:   4.491867146029351332003898278344e-01     Want:   4.494619050981988328530292164942e-01     Diff:   2.751904952636996526393886597361e-04     ULP diff:        4957391247702
Input:   2.197000000000084375000000000000e+13     Have:   4.526732705371930287618909005687e-01     Want:   4.529479182762818356700051936059e-01     Diff:   2.746477390888069081142930372152e-04     ULP diff:        4947613821674
Input:   2.197000000000084765625000000000e+13     Have:   4.561529192342845817620400339365e-01     Want:   4.564270200264119448085864405584e-01     Diff:   2.741007921273630465464066219283e-04     ULP diff:        4937760901147
Input:   2.197000000000085156250000000000e+13     Have:   4.596256075990518552565333720850e-01     Want:   4.598991572617768808228788657289e-01     Diff:   2.735496627250255663454936438939e-04     ULP diff:        4927832636463
Input:   2.197000000000085546875000000000e+13     Have:   4.630912826425429562604563216155e-01     Want:   4.633642770018343015614448177075e-01     Diff:   2.729943592913453009884960920317e-04     ULP diff:        4917829179115
Input:   2.197000000000085937500000000000e+13     Have:   4.665498914828206666882692843501e-01     Want:   4.668223263731203220849863555486e-01     Diff:   2.724348902996553967170711985091e-04     ULP diff:        4907750681745
Input:   2.197000000000086328125000000000e+13     Have:   4.700013813457693534481052211049e-01     Want:   4.702732526100561472048866562545e-01     Diff:   2.718712642867937567814351496054e-04     ULP diff:        4897597298139
Input:   2.197000000000086718750000000000e+13     Have:   4.734456995659002132015302777290e-01     Want:   4.737170030557530941983657157834e-01     Diff:   2.713034898528809968354380544042e-04     ULP diff:        4887369183223
Input:   2.197000000000087109375000000000e+13     Have:   4.768827935871549072999187046662e-01     Want:   4.771535251628164497894601936423e-01     Diff:   2.707315756615424895414889761014e-04     ULP diff:        4877066493067
Input:   2.197000000000087500000000000000e+13     Have:   4.803126109637074758751396075240e-01     Want:   4.805827664941468846393490821356e-01     Diff:   2.701555304394087642094746115617e-04     ULP diff:        4866689384876
Input:   2.197000000000087890625000000000e+13     Have:   4.837350993607645865957067599084e-01     Want:   4.840046747237408131248059817153e-01     Diff:   2.695753629762265290992218069732e-04     ULP diff:        4856238016992
Input:   2.856100000000115000000000000000e+14     Have:   3.675982770314665804001208471163e-01     Want:   3.513038755892304854100416378060e-01     Diff:  -1.629440144223609499007920931035e-02     ULP diff:      293533841053919
Input:   2.856100000000115625000000000000e+14     Have:   4.249667541022760230973176476255e-01     Want:   4.090962128301270372965348087746e-01     Diff:  -1.587054127214898580078283885086e-02     ULP diff:      285898255037673
Input:   2.856100000000116250000000000000e+14     Have:   4.806757450926888997067010222963e-01     Want:   4.652910381146620477643693902792e-01     Diff:  -1.538470697802685194233163201716e-02     ULP diff:      277146242453784
Input:   2.856100000000116875000000000000e+14     Have:   5.345077075850710457416425924748e-01     Want:   5.196689118526798267794220009819e-01     Diff:  -1.483879573239121896222059149295e-02     ULP diff:      133655989862048
Input:   2.856100000000117500000000000000e+14     Have:   5.862524289179044112430005952774e-01     Want:   5.720174896109305739955175340583e-01     Diff:  -1.423493930697383724748306121910e-02     ULP diff:      128216934717058
Input:   2.856100000000118125000000000000e+14     Have:   6.357078470617316678925590167637e-01     Want:   6.221323513135383898031705030007e-01     Diff:  -1.357549574819327808938851376297e-02     ULP diff:      122277195185866
Input:   2.856100000000118750000000000000e+14     Have:   6.826808396670568379605015252309e-01     Want:   6.698177994980224481125219426758e-01     Diff:  -1.286304016903438984797958255513e-02     ULP diff:      115859965824230
Input:   2.856100000000119375000000000000e+14     Have:   7.326595164261566761609856257564e-01     Want:   7.148876235097005871210740224342e-01     Diff:  -1.777189291645608903991160332225e-02     ULP diff:      160074980632440
Input:   2.856100000000120000000000000000e+14     Have:   7.737385279645031532780308225483e-01     Want:   7.571658266503101808453379817365e-01     Diff:  -1.657270131419297243269284081180e-02     ULP diff:      149273622926244
Input:   2.856100000000120625000000000000e+14     Have:   8.117961071093062752623836786370e-01     Want:   7.964873134413491539973506405659e-01     Diff:  -1.530879366795712126503303807112e-02     ULP diff:      137889354917007
Input:   2.856100000000121250000000000000e+14     Have:   8.466836398284449671791662694886e-01     Want:   8.326985343183861409954715782078e-01     Diff:  -1.398510551005882618369469128083e-02     ULP diff:      125966631927676
Input:   2.856100000000121875000000000000e+14     Have:   8.782648910532515618143634128501e-01     Want:   8.656580852388235935990223879344e-01     Diff:  -1.260680581442796821534102491569e-02     ULP diff:      113552011936380
Input:   2.856100000000122500000000000000e+14     Have:   9.064165366735379425477958648116e-01     Want:   8.952372598616580301467138269800e-01     Diff:  -1.117927681187991240108203783166e-02     ULP diff:      100693973768508
Input:   2.856100000000123125000000000000e+14     Have:   9.310286451156077891511131383595e-01     Want:   9.213205521429876920791457450832e-01     Diff:  -9.708092972620097071967393276282e-03     ULP diff:       87442727787940
Input:   2.856100000000123750000000000000e+14     Have:   9.520051066226988822904786502477e-01     Want:   9.438061073846414350541067506128e-01     Diff:  -8.198999238057447236371899634833e-03     ULP diff:       73850019826653
Input:   2.856100000000124375000000000000e+14     Have:   9.692640085615263911833494603343e-01     Want:   9.626061199745959973128606179671e-01     Diff:  -6.657888586930393870488842367195e-03     ULP diff:       59968929118348
Input:   2.856100000000125000000000000000e+14     Have:   9.827379552893630298981975101924e-01     Want:   9.776471762660116082699346407026e-01     Diff:  -5.090779023351421628262869489845e-03     ULP diff:       45853661025182
Input:   2.856100000000125625000000000000e+14     Have:   9.923743313325819048742459926871e-01     Want:   9.888705412559519736248603294371e-01     Diff:  -3.503790076629931249385663249996e-03     ULP diff:       31559335366990
Input:   2.856100000000126250000000000000e+14     Have:   9.981355068489545789844896717113e-01     Want:   9.962323879443134577726937095576e-01     Diff:  -1.903118904641121211795962153701e-03     ULP diff:       17141771179567
Input:   2.856100000000126875000000000000e+14     Have:   9.999989845713798120030446625606e-01     Want:   9.997039684773230128200793842552e-01     Diff:  -2.950160940567991829652783053461e-04     ULP diff:        2657268742525
Input:   2.856100000000127500000000000000e+14     Have:   9.979574876592303134259509533877e-01     Want:   9.992717264072917826567277188587e-01     Diff:   1.314238748061469230776765471091e-03     ULP diff:       11837610272091
Input:   2.856100000000128125000000000000e+14     Have:   9.920189881142597032592789219052e-01     Want:   9.949373496302532648982719365449e-01     Diff:   2.918361515993561638993014639709e-03     ULP diff:       26286263671922
Input:   2.856100000000128750000000000000e+14     Have:   9.822066756501059980877244015574e-01     Want:   9.867177637947651680505600779725e-01     Diff:   4.511088144659169962835676415125e-03     ULP diff:       40632269774645
Input:   2.856100000000129375000000000000e+14     Have:   9.685588671369561586388385876489e-01     Want:   9.746450662076142634759889915586e-01     Diff:   6.086199070658104837150403909618e-03     ULP diff:       54819607733437
Input:   2.856100000000130000000000000000e+14     Have:   9.511288569749883903270415430597e-01     Want:   9.587664004945203322094471332093e-01     Diff:   7.637543519531941882405590149574e-03     ULP diff:       68792876297180
Input:   2.856100000000130625000000000000e+14     Have:   9.299847089808793709764245249971e-01     Want:   9.391437725052864671226870996179e-01     Diff:   9.159063524407096146262574620778e-03     ULP diff:       82497510151165
Input:   2.856100000000131250000000000000e+14     Have:   9.052089906000573282796040075482e-01     Want:   9.158538081822823473387984449801e-01     Diff:   1.064481758222501905919443743187e-02     ULP diff:       95879992993471
Input:   2.856100000000131875000000000000e+14     Have:   8.768984504825939607641771544877e-01     Want:   8.889874543377795923504436359508e-01     Diff:   1.208900385518563158626648146310e-02     ULP diff:      108888066514989
Input:   2.856100000000132500000000000000e+14     Have:   8.451636406817967239746280938562e-01     Want:   8.586496235085955275323499336082e-01     Diff:   1.348598282679880355772183975205e-02     ULP diff:      121470934466992
Input:   2.856100000000133125000000000000e+14     Have:   8.101284849508065821765967484680e-01     Want:   8.249587842748826727046207452076e-01     Diff:   1.483029932407609052802399673965e-02     ULP diff:      133579461019404
Input:   2.856100000000133750000000000000e+14     Have:   7.719297948229938421960127925558e-01     Want:   7.880464986428579177157871527015e-01     Diff:   1.611670381986407551977436014568e-02     ULP diff:      145166362635161
Input:   2.856100000000134375000000000000e+14     Have:   7.307167353658479136413461674238e-01     Want:   7.480569082979842132630210471689e-01     Diff:   1.734017293213629962167487974511e-02     ULP diff:      156186392711418
Input:   2.856100000000135000000000000000e+14     Have:   7.250279616505225233069609203085e-01     Want:   7.051461717347730084881618495274e-01     Diff:  -1.988178991574951481879907078110e-02     ULP diff:      179079243312056
Input:   2.856100000000135625000000000000e+14     Have:   6.805954064596974051326583321497e-01     Want:   6.594818544612054411757640082214e-01     Diff:  -2.111355199849196395689432392828e-02     ULP diff:      190173969825752
Input:   2.856100000000136250000000000000e+14     Have:   6.335051407715237559159504598938e-01     Want:   6.112422746590092659246806761075e-01     Diff:  -2.226286611251448999126978378627e-02     ULP diff:      200526071057039
Input:   2.856100000000136875000000000000e+14     Have:   5.839410510657729869166132630198e-01     Want:   5.606158068549755846277093951358e-01     Diff:  -2.332524421079740228890386788407e-02     ULP diff:      210095122272146
Input:   2.856100000000137500000000000000e+14     Have:   5.320966840520646723433628721978e-01     Want:   5.078001463224627309855918610992e-01     Diff:  -2.429653772960194135777101109852e-02     ULP diff:      218843756530857
Input:   2.856100000000138125000000000000e+14     Have:   4.781744908741075161806577398238e-01     Want:   4.530015370855843825914632816421e-01     Diff:  -2.517295378852313358919445818174e-02     ULP diff:      453475621207230
Input:   2.856100000000138750000000000000e+14     Have:   4.223850365423159614053361110564e-01     Want:   3.964339665407096147120569185063e-01     Diff:  -2.595107000160634669327919255011e-02     ULP diff:      467492916756400
Input:   2.856100000000139375000000000000e+14     Have:   3.649461776819502012436657878425e-01     Want:   3.383183298402588357056686163560e-01     Diff:  -2.662784784169136553799717148650e-02     ULP diff:      479684662470078
Input:   2.856100000000140000000000000000e+14     Have:   3.060822118076569897660021979391e-01     Want:   2.788815673018611995814808324212e-01     Diff:  -2.720064450579579018452136551787e-02     ULP diff:      490003249842157
Input:   2.856100000000140625000000000000e+14     Have:   2.460230014464748760083523393405e-01     Want:   2.183557782112706679988889391097e-01     Diff:  -2.766722323520420800946340023074e-02     ULP diff:      996816770019536
Input:   2.856100000000141250000000000000e+14     Have:   1.850030765295853363294753535229e-01     Want:   1.569773144796220432084510321147e-01     Diff:  -2.802576204996329312102432140819e-02     ULP diff:     1009734492199911
Input:   2.856100000000141875000000000000e+14     Have:   1.232607185579502745431668131459e-01     Want:   9.498585769427617120364004676958e-02     Diff:  -2.827486086367410333952676637637e-02     ULP diff:     2037418445593525
Input:   2.856100000000142500000000000000e+14     Have:   6.103703011815024559449938124089e-02     Want:   3.262348316735033670887844436947e-02     Diff:  -2.841354695079990888562093687142e-02     ULP diff:     4094823662716690
Input:   2.856100000000143125000000000000e+14     Have:  -1.425006618056619050668998305298e-03     Want:  -2.986628536319499080398109924772e-02     Diff:  -2.844127874513837153647166644532e-02     ULP diff:    20051086077311832
Input:   2.856100000000143750000000000000e+14     Have:  -6.388147873391539222076573878439e-02     Want:  -9.223942668854147319823510997594e-02     Diff:  -2.835794795462608097746937119155e-02     ULP diff:     2043405501463135
Input:   2.856100000000144375000000000000e+14     Have:  -1.260884950423945549680126987369e-01     Want:  -1.542523750266112103624038809357e-01     Diff:  -2.816387998421665539439118219889e-02     ULP diff:     1014710715217804
Input:   2.856100000000145000000000000000e+14     Have:  -1.878031384760519284515822846515e-01     Want:  -2.156629711412334504672116963775e-01     Diff:  -2.785983266518152201562941172597e-02     ULP diff:     1003756256076127
Input:   2.856100000000145625000000000000e+14     Have:  -2.487844146729847605303831414858e-01     Want:  -2.762314079687795409512318656198e-01     Diff:  -2.744699329579478042084872413398e-02     ULP diff:      516339113620659
Input:   2.856100000000146250000000000000e+14     Have:  -3.087941930546553859215919146664e-01     Want:  -3.357211670596144115208403491124e-01     Diff:  -2.692697400495902559924843444605e-02     ULP diff:      485073240379794
Input:   2.856100000000146875000000000000e+14     Have:  -3.675981367207045158451705901825e-01     Want:  -3.938999421775811193846550395392e-01     Diff:  -2.630180545687660353948444935668e-02     ULP diff:      473811205019043
Input:   2.856100000000147500000000000000e+14     Have:  -4.249666175295323533589453290915e-01     Want:  -4.505405464508811519408482126892e-01     Diff:  -2.557392892134879858190288359765e-02     ULP diff:      460698947042344
Input:   2.856100000000148125000000000000e+14     Have:  -4.806756127912772402765995138907e-01     Want:  -5.054217995319475464910397022322e-01     Diff:  -2.474618674067030621444018834154e-02     ULP diff:      396952440832981
Input:   2.856100000000148750000000000000e+14     Have:  -5.345075800716255765010487266409e-01     Want:  -5.583293913019684584497781543178e-01     Diff:  -2.382181123034288194872942767688e-02     ULP diff:      214567800360525
Input:   2.856100000000149375000000000000e+14     Have:  -5.862523066903625457158000244817e-01     Want:  -6.090567187473149290966034641315e-01     Diff:  -2.280441205695238338080343964975e-02     ULP diff:      205403883284188
Input:   2.856100000000150000000000000000e+14     Have:  -6.357077305973891645507478642685e-01     Want:  -6.574056927398875815882206552487e-01     Diff:  -2.169796214249841703747279098025e-02     ULP diff:      195437868439310
Input:   2.856100000000150625000000000000e+14     Have:  -6.887193757671621341387435677461e-01     Want:  -7.031875115709231849336902087089e-01     Diff:  -1.446813580376105079494664096273e-02     ULP diff:      130317382029128
Input:   2.856100000000151250000000000000e+14     Have:  -7.326594137418229735203567543067e-01     Want:  -7.462233982176265101315948413685e-01     Diff:  -1.356398447580353661123808706179e-02     ULP diff:      122173510861776
Input:   2.856100000000151875000000000000e+14     Have:  -7.737384323848787159860762585595e-01     Want:  -7.863452984636187803602069834596e-01     Diff:  -1.260686607874006437413072490017e-02     ULP diff:      113552554749047
Input:   2.856100000000152500000000000000e+14     Have:  -8.117960190076275450721254856035e-01     Want:  -8.233965371470558514133131211565e-01     Diff:  -1.160051813942830634118763555307e-02     ULP diff:      104488178340068
Input:   2.856100000000153125000000000000e+14     Have:  -8.466835595487471888276331810630e-01     Want:  -8.572324299737829056411442252283e-01     Diff:  -1.054887042503571681351104416535e-02     ULP diff:       95015777830741
Input:   2.856100000000153750000000000000e+14     Have:  -8.782648189090251911181894683978e-01     Want:  -8.877208485064063125946631771512e-01     Diff:  -9.456029597381121476473708753474e-03     ULP diff:       85172342742340
Input:   2.856100000000154375000000000000e+14     Have:  -9.064164729465047365408736368408e-01     Want:  -9.147427361230143771919642858848e-01     Diff:  -8.326263176509640651090649043908e-03     ULP diff:       74996311478235
Input:   1.461920290375737126573582162330e+31     Have:   7.408872655117226813104025495704e-01     Want:   2.401457595212431669895458696828e-02     Diff:  -7.168726895595983750197888184630e-01     ULP diff:    22269587102812117
Input:   1.461920290375737351753563530854e+31     Have:  -2.030728511215038056825221701729e-01     Want:  -6.082962058834183727284994347428e-01     Diff:  -4.052233547619145670459772645700e-01     ULP diff:     7169773853916941
Input:   1.461920290375737576933544899379e+31     Have:  -9.468766486679395244507873030670e-01     Want:   6.864670207863401429904115502723e-01     Diff:   1.633343669454279556418896390824e+00     ULP diff:  9221026475448593287
Input:   1.003517226963376623173225369743e+98     Have:  -4.506479397199250613859078384849e-01     Want:  -8.305869905436233935347445367370e-01     Diff:  -3.799390508236983321488366982521e-01     ULP diff:     3866710576000839
Input:   1.003517226963376774944232574878e+98     Have:   7.740446839024237579707232725923e-01     Want:  -9.709601679804962248709898631205e-01     Diff:  -1.745004851882919982841713135713e+00     ULP diff:  9221598379853340832
Input:   1.003517226963376926715239780013e+98     Have:   7.856165374785243349364804998913e-01     Want:  -9.942309933187718495872786661494e-01     Diff:  -1.779847530797296073501456703525e+00     ULP diff:  9221493004883603333
Input:   1.003517226963377078486246985148e+98     Have:  -4.340683551349220348214430487133e-01     Want:  -8.975928958336639729154171618575e-01     Diff:  -4.635245406987419380939741131442e-01     ULP diff:     4768917360028447
Input:   1.003517226963377230257254190283e+98     Have:  -9.734600448040724440801341188489e-01     Want:  -6.927008835172894229970097512705e-01     Diff:   2.807591612867830210831243675784e-01     ULP diff:     2528853708304018
Input:   1.003517226963377382028261395418e+98     Have:   1.280256394301604143393102930304e-02     Want:  -4.042658944283801236707631687750e-01     Diff:  -4.170684583713961668394176740549e-01     ULP diff:  9200951607433902027
Input:   1.003517226963377533799268600553e+98     Have:   9.790003669339090164314143294177e-01     Want:  -6.707454161626057176359694267376e-02     Diff:  -1.046074908550169491050496617390e+00     ULP diff:  9205876416687290664
Input:   1.003517226963377685570275805688e+98     Have:   4.108608070960971803131656088226e-01     Want:   2.782063156350947918937777103565e-01     Diff:  -1.326544914610023884193878984661e-01     ULP diff:     2389690873251172
Input:   1.003517226963377837341283010823e+98     Have:  -8.011999488326005947058661149640e-01     Want:   5.899341858495928958561194122012e-01     Diff:   1.391134134682193490561985527165e+00     ULP diff:  9221469124031882974
Input:   1.003517226963377989112290215959e+98     Have:  -7.575808724438353181085403775796e-01     Want:   1.489026238367884558133624750553e-01     Diff:   9.064834962806237461663272370060e-01     ULP diff:  9212905938140159469
Input:   1.003517226963378140883297421094e+98     Have:   4.733560816648008096052535620402e-01     Want:  -1.982701352523188464971326538944e-01     Diff:  -6.716262169171196561023862159345e-01     ULP diff:  9217484646593337020
Input:   1.003517226963378292654304626229e+98     Have:   9.624261820406536660499341451214e-01     Want:  -5.215305857271145262288314370380e-01     Diff:  -1.483956767767768081256463119644e+00     ULP diff:  9219400802368241913
Input:   1.003517226963378444425311831364e+98     Have:  -5.686520542882406853424370751782e-02     Want:  -7.818920004906626530782887130044e-01     Diff:  -7.250267950618385359717876781360e-01     ULP diff:    16861915778242263
Input:   1.003517226963378596196319036499e+98     Have:  -9.870346555821488676585317989520e-01     Want:  -9.479535712812361403223349043401e-01     Diff:   3.908108430091272733619689461193e-02     ULP diff:      352011113389651
Input:   1.003517226963378747967326241634e+98     Have:  -3.702750119196270839339035774174e-01     Want:  -9.996874934843469340250976529205e-01     Diff:  -6.294124815647198500911940755032e-01     ULP diff:     6837702450833242
Input:   1.003517226963378899738333446769e+98     Have:   8.267977802347802329663295495266e-01     Want:  -9.308544133416729593477612070274e-01     Diff:  -1.757652193576453303336393219070e+00     ULP diff:  9222434778026604547
Input:   1.003517226963379051509340651904e+98     Have:   7.280725639664793469307824125281e-01     Want:  -7.497559232899705383701416394615e-01     Diff:  -1.477828487256449996323226514505e+00     ULP diff:  9223176730516836977
Input:   1.003517226963379203280347857039e+98     Have:  -5.117236625639410840804544022831e-01     Want:  -4.782333509613166944163253901934e-01     Diff:   3.349031160262438966412901208969e-02     ULP diff:      497710454707639
Input:   1.003517226963379355051355062174e+98     Have:  -9.495214819084649704450384888332e-01     Want:  -1.490335925890341195465538248754e-01     Diff:   8.004878893194308231429090483289e-01     ULP diff:    12190227382550197
Input:   1.003517226963379506822362267309e+98     Have:   1.008173079940538618970435891242e-01     Want:   1.981403163296903136014748270100e-01     Diff:   9.732300833563645170443123788573e-02     ULP diff:     4377704214253940
Input:   1.003517226963379658593369472444e+98     Have:   9.931502710350913476489154163573e-01     Want:   5.214175734052951538544107279449e-01     Diff:  -4.717326976297961937945046884124e-01     ULP diff:     4248990402528058
Input:   1.003517226963379810364376677580e+98     Have:   3.289694479526278358960666992061e-01     Want:   2.298507968660201961075273402457e-01     Diff:  -9.911865108660763978853935896041e-02     ULP diff:     2148538655300465
Input:   1.003517226963379962135383882715e+98     Have:  -8.507884190932164525378311736858e-01     Want:  -1.168591414145243173594579388919e-01     Diff:   7.339292776786920935450098113506e-01     ULP diff:    12753431124841569
Input:   1.003517226963380113906391087850e+98     Have:  -6.971489725455978225809872128593e-01     Want:  -4.494753189259471093386366646882e-01     Diff:   2.476736536196507132423505481711e-01     ULP diff:     2685931818018132
Input:   1.003517226963380265677398292985e+98     Have:   5.490965160042143855534391150286e-01     Want:  -7.278826639927079567016221517406e-01     Diff:  -1.276979179996922342255061266769e+00     ULP diff:  9221761674395855836
Input:   1.003517226963380417448405498120e+98     Have:   9.347710295472195785038138637901e-01     Want:  -9.185039444852409751263166981516e-01     Diff:  -1.853274974032460553630130561942e+00     ULP diff:  9223225515978328746
Input:   1.003517226963380569219412703255e+98     Have:  -1.445734341917100651553340640021e-01     Want:  -9.983493395624399857624098331144e-01     Diff:  -8.537759053707298928515001534834e-01     ULP diff:    12790723767191296
Input:   1.003517226963380720990419908390e+98     Have:  -9.973353252932866119806476490339e-01     Want:  -9.577891199355853535379878849199e-01     Diff:   3.954620535770125844265976411407e-02     ULP diff:      356200551425721
Input:   1.003517226963380872761427113525e+98     Have:  -2.870244080986484869200126013311e-01     Want:  -8.017150384041965560655285116809e-01     Diff:  -5.146906303055480691455159103498e-01     ULP diff:     6554234654362179
Input:   1.003517226963381024532434318660e+98     Have:   8.731252305755298204203995737771e-01     Want:  -5.489503615158266569551415159367e-01     Diff:  -1.422075592091356366353238627198e+00     ULP diff:  9220452129215775491
Input:   1.304572395052395574725776142474e+99     Have:  -7.746188852460255125365051753761e-01     Want:  -9.215319367103936842866573897481e-01     Diff:  -1.469130514643681717501522143721e-01     ULP diff:     1323275127661582
Input:   1.304572395052395817559387670691e+99     Have:   5.125030677273919588188277884910e-01     Want:  -9.848402683971800852802402914676e-01     Diff:  -1.497343336124572044099068079959e+00     ULP diff:  9219117601572916446
Input:   1.304572395052396060392999198907e+99     Have:  -1.889396881988479048875007038077e-01     Want:  -8.658139219941526354418215305486e-01     Diff:  -6.768742337953047583098964423698e-01     ULP diff:     9998488092728466
Input:   1.304572395052396303226610727123e+99     Have:  -1.572769863786680766271075526674e-01     Want:  -3.414014983868754460338834633149e-01     Diff:  -1.841245120082073694067759106474e-01     ULP diff:     4987241653054548
Input:   1.304572395052396546060222255339e+99     Have:   4.846366277366762620459894606029e-01     Want:   3.428598380952896929052542418503e-01     Diff:  -1.417767896413865691407352187525e-01     ULP diff:     2554023587994935
Input:  2.647738350613641276917555217142e+307     Have:  -5.822149887759020363275919152102e-03     Want:   2.697399481573612978202447720832e-01     Diff:   2.755620980451203294592232850846e-01     ULP diff:  9198203717979160830
Input:  2.647738350613641775877632600822e+307     Have:  -4.633161064643914195393392674305e-01     Want:  -9.781979989546780718256968611968e-01     Diff:  -5.148818924902867077975088250241e-01     ULP diff:     4968062936833073
Input:  2.647738350613642274837709984502e+307     Have:   8.244837056559448651427146614878e-01     Want:  -1.447605612526073060042364204492e-01     Diff:  -9.692442669085521433913754663081e-01     ULP diff:  9212154097458625987
Input:  2.647738350613642773797787368182e+307     Have:  -9.935145621877253807596730439400e-01     Want:   9.966933201602750092007454441045e-01     Diff:   1.990207882348000278938116025529e+00     ULP diff:  9223343405148334457
Input:  2.647738350613643272757864751862e+307     Have:   9.310179179886934885956861762679e-01     Want:   1.741812115478588024464201566843e-02     Diff:  -9.135997968339075736565746410633e-01     ULP diff:    25883430421610728
Input:  2.647738350613643771717942135542e+307     Have:  -6.515579197620460227824423782295e-01     Want:  -9.989187449774226124077358690556e-01     Diff:  -3.473608252153765896252934908262e-01     ULP diff:     3128748166006156
Input:  2.647738350613644270678019519222e+307     Have:   2.202596068440736687410463900960e-01     Want:   1.102086501618143032921182111750e-01     Diff:  -1.100509566822593654489281789211e-01     ULP diff:     4497918121004397
Input:  2.647738350613644769638096902902e+307     Have:   2.623677537048322849777548526617e-01     Want:   9.848379458513325523938419792103e-01     Diff:   7.224701921465002119049358952907e-01     ULP diff:     8647833968006801
Input:  2.647738350613645268598174286582e+307     Have:  -6.838532320916130835541935084620e-01     Want:  -2.360363893358540798850242481421e-01     Diff:   4.478168427557590036691692603199e-01     ULP diff:     6662694416718150
Input:  2.647738350613645767558251670262e+307     Have:   9.459743330260754756722008096403e-01     Want:  -9.546807759757748312878788965463e-01     Diff:  -1.900655109001850195937777243671e+00     ULP diff:  9223293616188327831
Input:  2.647738350613646266518329053942e+307     Have:  -9.876466540264590143749501294224e-01     Want:   3.580111001803967796242034182796e-01     Diff:   1.345657754206855738488002316444e+00     ULP diff:  9216421861650778501
Input:  2.647738350613646765478406437622e+307     Have:   7.991589249231293434760914351500e-01     Want:   9.089395171984548937871295493096e-01     Diff:   1.097805922753255503110381141596e-01     ULP diff:      988815668927337
Input:  2.647738350613647264438483821302e+307     Have:  -4.244361111857667401281446473149e-01     Want:  -4.741416828583002729402551267412e-01     Diff:  -4.970557167253353281211047942634e-02     ULP diff:      895415976250638
Input:  2.647738350613647763398561204982e+307     Have:  -4.919680994484608438366279870024e-02     Want:  -8.483608440740537659507936041337e-01     Diff:  -7.991640341292076676893429976190e-01     ULP diff:    18565746154043610
Input:  2.647738350613648262358638588662e+307     Have:   5.113649625819026711681658525777e-01     Want:   5.825324363455064435868280270370e-01     Diff:   7.116747376360377241866217445931e-02     ULP diff:      641019616645331
Input:  2.647738350613648761318715972342e+307     Have:  -8.543652074157898068662575497001e-01     Want:   7.739336352427185206082071999845e-01     Diff:   1.628298842658508327474464749685e+00     ULP diff:  9222647573657840874
Input:  2.647738350613649260278793356021e+307     Have:   9.982651584917640041894060232153e-01     Want:   5.121574273593497705903132555250e-01     Diff:  -4.861077311324142335990927676903e-01     ULP diff:     4378469193579716
Input:  2.647738350613649759238870739701e+307     Have:  -9.095305352910352247874925524229e-01     Want:  -8.898551229426597819482935847191e-01     Diff:   1.967541234837544283919896770385e-02     ULP diff:      177220359441009
Input:  2.647738350613650258198948123381e+307     Have:   6.088399532258583768395965307718e-01     Want:  -3.984651607443360776805718614924e-01     Diff:  -1.007305113970194510031319623522e+00     ULP diff:  9220562604652246087
Input:  2.647738350613650757159025507061e+307     Have:  -1.662660026823717662747270651380e-01     Want:   9.407649914416227332480957556982e-01     Diff:   1.107030994123994416256095973949e+00     ULP diff:  9211881543932033107
Input:  2.647738350613651256119102890741e+307     Have:  -3.150543875436753737950823506253e-01     Want:   2.782683989665830082138597845187e-01     Diff:   5.933227865102583820089421351440e-01     ULP diff:  9222709359396982814
Input:  2.647738350613651755079180274421e+307     Have:   7.229548625330083355677857070987e-01     Want:  -9.763179305551511477645476588805e-01     Diff:  -1.699272793088159483332333365979e+00     ULP diff:  9221089945217307872
Input:  2.647738350613652254039257658101e+307     Have:  -9.623787606970602981348861248989e-01     Want:  -1.535292188463071305637441810177e-01     Diff:   8.088495418507531953267175595101e-01     ULP diff:    12144063448576416
Input:  2.647738350613652752999335041781e+307     Have:   9.775310098075119524807519155729e-01     Want:   9.959335785772100990698163514026e-01     Diff:   1.840256876969814658906443582964e-02     ULP diff:      165755603707745
Input:  2.647738350613653251959412425461e+307     Have:  -7.648805470088084756952184761758e-01     Want:   2.628384706937674994420284235730e-02     Diff:   7.911643940781851735977170392289e-01     ULP diff:  9201540410352460233
Input:  2.647738350613653750919489809141e+307     Have:   3.739831936797730072008505430858e-01     Want:  -9.992917321368568472905735688983e-01     Diff:  -1.373274925816629910002575343242e+00     ULP diff:  9216604699769229595

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions