As promised, some careful results from one of the tests in my doubled-precision library.Ā
Rows are iteration's of Jean-Michel Muller's roundoff-intolerant Å() function:
Columns are 32-bit floating point,64-bit floating point, my fast 128-bit library, Go big float, and Go rationals (printed as float)
Answers are good for a while, and then fail as they must. compare always to the right column.
Also, Dr. Kahan on the topic -- always read his every word!
How Futile are Mindless Assessments of Roundoff In Floating-Point Computation ?
Professor W. Kahan
§ 5, page 14
=== RUN Ā TestMuller
Ā 0: Ā 4.000000000 Ā 4.000000000000000000 +4.0000000000000000000000000000000e+00 4.0000000000000000000000000000000 4.0000000000000000000000000000000000000000000000000000000000000000000000ā¦
Ā 1: Ā 4.250000000 Ā 4.250000000000000000 +4.2500000000000000000000000000000e+00 4.2500000000000000000000000000000 4.2500000000000000000000000000000000000000000000000000000000000000000000ā¦
Ā 2: Ā 4.470588684 Ā 4.470588235294115975 +4.4705882352941176470588235294117e+00 4.4705882352941176470588235294118 4.4705882352941176470588235294117647058823529411764705882352941176470588ā¦
Ā 3: Ā 4.644744873 Ā 4.644736842105217534 +4.6447368421052631578947368421047e+00 4.6447368421052631578947368421053 4.6447368421052631578947368421052631578947368421052631578947368421052632ā¦
Ā 4: Ā 4.770706177 Ā 4.770538243625082941 +4.7705382436260623229461756373816e+00 4.7705382436260623229461756373938 4.7705382436260623229461756373937677053824362606232294617563739376770538ā¦
Ā 5: Ā 4.859214783 Ā 4.855700712568562949 +4.8557007125890736342042755341875e+00 4.8557007125890736342042755344418 4.8557007125890736342042755344418052256532066508313539192399049881235154ā¦
Ā 6: Ā 4.983123779 Ā 4.910847498660629640 +4.9108474990827932004402592585550e+00 4.9108474990827932004402592637887 4.9108474990827932004402592637886755533814357343769108474990827932004403ā¦
Ā 7: Ā 6.395431519 Ā 4.945537395530507752 +4.9455374041239167247733836966321e+00 4.9455374041239167247733838031676 4.9455374041239167247733838031676461798983962546070325729654348042633728ā¦
Ā 8: Ā 27.632629395 Ā 4.966962408040998866 +4.9669625817627005987119363335665e+00 4.9669625817627005987119384872579 4.9669625817627005987119384872578590383346845054961655244646085209448470ā¦
Ā 9: Ā 86.993759155 Ā 4.980042204293013697 +4.9800457013556311612685646399287e+00 4.9800457013556311612686079942904 4.9800457013556311612686079942903718963021236734644222853921922457735370ā¦
Ā 10: Ā 99.255508423 Ā 4.987909232795786352 +4.9879794484783922601392624051427e+00 4.9879794484783922601401328939769 4.9879794484783922601401328939769400999972111033913186330660946103656976ā¦
Ā 11: Ā 99.962585449 Ā 4.991362641314552206 +4.9927702880620680974721416957309e+00 4.9927702880620680974895925483283 4.9927702880620680974895925483282696604561239860070565468956074766812844ā¦
Ā 12: Ā 99.998130798 Ā 4.967455095552267608 +4.9956558915066340262745164361610e+00 4.9956558915066340266240282615671 4.9956558915066340266240282615670560447223264138375322338595040105640829ā¦
Ā 13: Ā 99.999908447 Ā 4.429690498308829660 +4.9973912683813441058976817599037e+00 4.9973912683813441128938690216426 4.9973912683813441128938690216425944791795065582105346913888017869771418ā¦
Ā 14: 100.000000000 Ā -7.817236578459315410 +4.9984339439448167790186456309858e+00 4.9984339439448169190138971781902 4.9984339439448169190138971781902382881448247682045125641413593279228615ā¦
Ā 15: 100.000000000 168.939167671064581100 +4.9990600719708910670530314075958e+00 4.9990600719708938678168396062869 4.9990600719708938678168396062869249162956010827138675312945769521384463ā¦
Ā 16: 100.000000000 102.039963152059272034 +4.9994359371467831224113039612204e+00 4.9994359371468391479978508864998 4.9994359371468391479978508864997899689960802031068986343509970885820809ā¦
Ā 17: 100.000000000 100.099947516249699220 +4.9996615241026469022949297281691e+00 4.9996615241037675377868879857271 4.9996615241037675377868879857270921122953326315959962489248369318086283ā¦
Ā 18: 100.000000000 100.004992040972439327 +4.9997969006910037174292363662054e+00 4.9997969007134179126629930746330 4.9997969007134179126629930746330014204806141590496819671038715851326606ā¦
Ā 19: 100.000000000 100.000249579237305397 +4.9998781350296295179302235821482e+00 4.9998781354779312492317320300204 4.9998781354779312492317320300204045157850179321411177471298083841044938ā¦
Ā 20: 100.000000000 100.000012478620163847 +4.9999268705383513445350585201744e+00 4.9999268795045999044664529810255 4.9999268795045999044664529810255297667014507019629318651153480676099193ā¦
Ā 21: 100.000000000 100.000000623921607712 +4.9999559477336189227766623157740e+00 4.9999561270611577381190152822945 4.9999561270611577381190152822944886054388799381889725655444194135741792ā¦
Ā 22: 100.000000000 100.000000031195796169 +4.9999700894239992550386653856177e+00 4.9999736760057124445790151493568 4.9999736760057124445790151493567643737503007922741653125691208832859521ā¦
Ā 23: 100.000000000 100.000000001559783414 +4.9999124734648500146469791816450e+00 4.9999842055202727079241797881427 4.9999842055202727079241797881426658531818881745189289851152851242815919ā¦
Ā 24: 100.000000000 100.000000000077989171 +4.9985558571549103233951637188660e+00 4.9999905232822276594072074700222 4.9999905232822276594072074700221895687712348995633004631696331458335230ā¦
Ā 25: 100.000000000 100.000000000003893774 +4.9712927027118246836857185407072e+00 4.9999943139585595936498116895205 4.9999943139585595936498116895205444125570648227907768610955390115520007ā¦
Ā 26: 100.000000000 100.000000000000198952 +4.4226495626383376905144334349236e+00 4.9999965883712560237063808793366 4.9999965883712560237063808793366290715938072692305936798744398732101066ā¦
Ā 27: 100.000000000 100.000000000000014211 -8.0543263668793762606068650955197e+00 4.9999979530213569079884128681396 4.9999979530213569079884128681395624212191657293654124963639370253143521ā¦
Ā 28: 100.000000000 100.000000000000000000 +1.6707840996047266994803982209542e+02 4.9999987718123113299993645145089 4.9999987718123113299993645145089043394808989018478270361242267297207022ā¦
Ā 29: 100.000000000 100.000000000000000000 +1.0200739261142367556227366287163e+02 4.9999992630872057845553229449429 4.9999992630872057845553229449428974248701745617859182826712196402811665ā¦
Ā 30: 100.000000000 100.000000000000000000 +1.0009839445249753858622122905694e+02 4.9999995578522583058676361926155 4.9999995578522583058676361926155306470579794114384348546804011194603975ā¦
Ā 31: 100.000000000 100.000000000000000000 +1.0000491488620529657993721950960e+02 4.9999997347113315241634489886704 4.9999997347113315241634489886703873209071815584704240641160206715019947ā¦
Ā 32: 100.000000000 100.000000000000000000 +1.0000024573221949273744163542145e+02 4.9999998408267904691283066991447 4.9999998408267904691283066991447461401245221411111941292349839150736202ā¦
Ā 33: 100.000000000 100.000000000000000000 +1.0000001228658038317581341424617e+02 4.9999999044960712411436113485087 4.9999999044960712411436113485086619025952254222132465962859727857685148ā¦
Ā 34: 100.000000000 100.000000000000000000 +1.0000000061432893169757060234937e+02 4.9999999426976416501660968977059 4.9999999426976416501660968977058746597449338657490050051607246193821182ā¦
Ā 35: 100.000000000 100.000000000000000000 +1.0000000003071644603674249773981e+02 4.9999999656185845960724209285520 4.9999999656185845960724209285520274032984329752720101455505569667883150ā¦
Ā 36: 100.000000000 100.000000000000000000 +1.0000000000153582229058229440059e+02 4.9999999793711506157936445604403 4.9999999793711506157936445604403478825768055203979330788072542784010734ā¦
Ā 37: 100.000000000 100.000000000000000000 +1.0000000000007679111420444293124e+02 4.9999999876226903184102552956254 4.9999999876226903184102552956254154564530233074230759247801804451248680ā¦
Ā 38: 100.000000000 100.000000000000000000 +1.0000000000000383955570051442571e+02 4.9999999925736141726624177373900 4.9999999925736141726624177373899846521814871450561974997770093507650710ā¦
Ā 39: 100.000000000 100.000000000000000000 +1.0000000000000019197778473457074e+02 4.9999999955441684969793058578266 4.9999999955441684969793058578265507221613846754127192411902416952952377ā¦
Ā 40: 100.000000000 100.000000000000000000 +1.0000000000000000959888922799422e+02 4.9999999973265010958050513865753 4.9999999973265010958050513865752991029792463868833735614796518031109060ā¦
Ā 41: 100.000000000 100.000000000000000000 +1.0000000000000000047994446113768e+02 4.9999999983959006566253192645988 4.9999999983959006566253192645987703517412541034104279060966324365686654ā¦
Ā 42: 100.000000000 100.000000000000000000 +1.0000000000000000002399722304902e+02 4.9999999990375403936664153942504 4.9999999990375403936664153942503908554421709588719708303898585404793654ā¦
Ā 43: 100.000000000 100.000000000000000000 +1.0000000000000000000119986115222e+02 4.9999999994225242360886898172700 4.9999999994225242360886898172699813847756164760214959144068009828924029ā¦
Ā 44: 100.000000000 100.000000000000000000 +1.0000000000000000000005999305760e+02 4.9999999996535145416131964994088 4.9999999996535145416131964994087728654592174856780594689249370593190948ā¦
Ā 45: 100.000000000 100.000000000000000000 +1.0000000000000000000000299965288e+02 4.9999999997921087249535116388994 4.9999999997921087249535116388994438064719403073280296047563240880153629ā¦
Ā 46: 100.000000000 100.000000000000000000 +1.0000000000000000000000014998264e+02 4.9999999998752652349669207294706 4.9999999998752652349669207294705960875781484796796781602905760999707614ā¦
Ā 47: 100.000000000 100.000000000000000000 +1.0000000000000000000000000749913e+02 4.9999999999251591409782853862894 4.9999999999251591409782853862893681758947903446625524375301891071583939ā¦
Ā 48: 100.000000000 100.000000000000000000 +1.0000000000000000000000000037496e+02 4.9999999999550954845862990932721 4.9999999999550954845862990932721178654499411656001666991067834528381427ā¦
Ā 49: 100.000000000 100.000000000000000000 +1.0000000000000000000000000001875e+02 4.9999999999730572907515374861027 4.9999999999730572907515374861027238298843581825471452918011046606547147ā¦
Ā 50: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000094e+02 4.9999999999838343744508353825118 4.9999999999838343744508353825118361660416654324053402436169810652257114ā¦
Ā 51: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000005e+02 4.9999999999903006246704698702132 4.9999999999903006246704698702131741017755891186085659779488544485080641ā¦
Ā 52: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999941803748022706327821 4.9999999999941803748022706327820904674397779407686765412987426353340860ā¦
Ā 53: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999965082248813583155048 4.9999999999965082248813583155047612301443053914242084554581965117999475ā¦
Ā 54: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999979049349288135262036 4.9999999999979049349288135262036392372468406372184837633675327240105601ā¦
Ā 55: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999987429609572875890065 4.9999999999987429609572875890064652414572617384587447652026097603020003ā¦
Ā 56: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999992457765743723637862 4.9999999999992457765743723637862205564265300645967804237671219621887640ā¦
Ā 57: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999995474659446233500094 4.9999999999995474659446233500093752419872416231419626221316696321618204ā¦
Ā 58: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999997284795667739854312 4.9999999999997284795667739854311765921136903843367833565912666882127043ā¦
Ā 59: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999998370877400643824119 4.9999999999998370877400643824119044761586174651005029403286560095136689ā¦
Ā 60: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999022526440386262623 4.9999999999999022526440386262622941532154389230146822149898257515887795ā¦
Ā 61: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999413515864231746108 4.9999999999999413515864231746108310202365002220119343179337646326275894ā¦
Ā 62: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999648109518539043537 4.9999999999999648109518539043537422423324924950902679597114922320542682ā¦
Ā 63: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999788865711123424637 4.9999999999999788865711123424636530522681059586273556210959868830755301ā¦
Ā 64: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999873319426674054247 4.9999999999999873319426674054246986058335627389825431745090925770748517ā¦
Ā 65: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999923991656004432356 4.9999999999999923991656004432355616023103092122499250394020004968086813ā¦
Ā 66: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999954394993602659344 4.9999999999999954394993602659344042393578472640359802718342049154159509ā¦
Ā 67: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999972636996161595581 4.9999999999999972636996161595581467636845065775581540693456601285917415ā¦
Ā 68: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999983582197696957340 4.9999999999999983582197696957339895774358313041128490803051031466354659ā¦
Ā 69: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999990149318618174401 4.9999999999999990149318618174400702933825446309125531072033187866180516ā¦
Ā 70: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999994089591170904639 4.9999999999999994089591170904639257329211032839264999036925254782439621ā¦
Ā 71: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999996453754702542783 4.9999999999999996453754702542783135202336295122791144899675278048175021ā¦
Ā 72: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999997872252821525670 4.9999999999999997872252821525669730211133260224569717187442231522023258ā¦
Ā 73: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999998723351692915402 4.9999999999999998723351692915401783798983290069057876102772323241125098ā¦
Ā 74: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999234011015749241 4.9999999999999999234011015749241050721419174257787170484823958766829884ā¦
Ā 75: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999540406609449545 4.9999999999999999540406609449544623391982016632558894788380589496296748ā¦
Ā 76: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999724243965669727 4.9999999999999999724243965669726771500476194327574448042131447577254700ā¦
Ā 77: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999834546379401836 4.9999999999999999834546379401836061987789030961838735426077722601924147ā¦
Ā 78: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999900727827641102 4.9999999999999999900727827641101636864174611748609102333197316917095417ā¦
Ā 79: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999940436696584661 4.9999999999999999940436696584660982000245196590907570761709464871917991ā¦
Ā 80: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999964262017950797 4.9999999999999999964262017950796589157573672589571701692026996825069414ā¦
Ā 81: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999978557210770478 4.9999999999999999978557210770477953479217763222352798310604083236190434ā¦
Ā 82: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999987134326462287 4.9999999999999999987134326462286772082013139414111198806392169302962769ā¦
Ā 83: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999992280595877372 4.9999999999999999992280595877372063247221576981518546417683057985281073ā¦
Ā 84: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999995368357526423 4.9999999999999999995368357526423237947617875788809785618500631502055925ā¦
Ā 85: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999997221014515854 4.9999999999999999997221014515853942768313300129249388167477476268768203ā¦
Ā 86: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999998332608709512 4.9999999999999999998332608709512365660895306953696498947168505492722285ā¦
Ā 87: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999998999565225707 4.9999999999999999998999565225707419396503821847630771145103663569655621ā¦
Ā 88: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999399739135424 4.9999999999999999999399739135424451637890282671727096526710479005311754ā¦
Ā 89: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999639843481255 4.9999999999999999999639843481254670982729845845769766098299530093665669ā¦
Ā 90: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999783906088753 4.9999999999999999999783906088752802589636350954845922604598055525967896ā¦
Ā 91: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999870343653252 4.9999999999999999999870343653251681553781250213965816223181428346555773ā¦
Ā 92: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999922206191951 4.9999999999999999999922206191951008932268548399160464291660989824125886ā¦
Ā 93: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999953323715171 4.9999999999999999999953323715170605359361056416977429415787361406993748ā¦
Ā 94: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999971994229102 4.9999999999999999999971994229102363215616607706079671952157093083619619ā¦
Ā 95: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999983196537461 4.9999999999999999999983196537461417929369955211769360320260739282306216ā¦
Ā 96: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999989917922477 4.9999999999999999999989917922476850757621969738785376765784377601915608ā¦
Ā 97: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999993950753486 4.9999999999999999999993950753486110454573180623491779865976682812204953ā¦
Ā 98: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999996370452092 4.9999999999999999999996370452091666272743907934974467289928189937561311ā¦
Ā 99: 100.000000000 100.000000000000000000 +1.0000000000000000000000000000000e+02 4.9999999999999999999997822271255 4.9999999999999999999997822271254999763646344602901264147280098852591988ā¦
--- PASS: TestMuller (0.00s)
PASS
ok Ā float128 0.011s
Be thoughtful in numerical computation.
Michael