So if you add 999476637.6 together 1 million times, you get 999476637600000.0 which has an epsilon of 0.125. What is your point? As long as the epsilon of all intermediates/results are less that 1e-4 then all intermediates/results are valid "to the penny" (when rounded nearest, ties to even). This simple mathematical truth cannot be changed no matter how much you might wish it were not so. This applies to all binary floating point formats from Half-Precision to Octuple Precision. ``` qlite> select value-3, pow(10,value-3), epsilon(pow(10,value-3)) from wholenumber where value between 0 and 18; ┌─────────┬───────────────────┬──────────────────────────┐ │ value-3 │ pow(10,value-3) │ epsilon(pow(10,value-3)) │ ├─────────┼───────────────────┼──────────────────────────┤ │ -2 │ 0.01 │ 1.73472347597681e-18 │ │ -1 │ 0.1 │ 1.38777878078145e-17 │ │ 0 │ 1.0 │ 2.22044604925031e-16 │ │ 1 │ 10.0 │ 1.77635683940025e-15 │ │ 2 │ 100.0 │ 1.4210854715202e-14 │ │ 3 │ 1000.0 │ 1.13686837721616e-13 │ │ 4 │ 10000.0 │ 1.81898940354586e-12 │ │ 5 │ 100000.0 │ 1.45519152283669e-11 │ │ 6 │ 1000000.0 │ 1.16415321826935e-10 │ │ 7 │ 10000000.0 │ 1.86264514923096e-09 │ │ 8 │ 100000000.0 │ 1.49011611938477e-08 │ │ 9 │ 1000000000.0 │ 1.19209289550781e-07 │ │ 10 │ 10000000000.0 │ 1.9073486328125e-06 │ │ 11 │ 100000000000.0 │ 1.52587890625e-05 │ │ 12 │ 1000000000000.0 │ 0.0001220703125 │ │ 13 │ 10000000000000.0 │ 0.001953125 │ │ 14 │ 100000000000000.0 │ 0.015625 │ │ 15 │ 1.0e+15 │ 0.125 │ └─────────┴───────────────────┴──────────────────────────┘ ``` So as long as all values/intermediates/results are of a magnitude than 1e11 (for Binary64 Floating Point) you are assured that the rounded nearest half-to-even 2 decimal place result is perfectly accurate. For "extended precision" it is bigger, at 1e15 ``` sqlite> select value-3, pow(10,value-3), epsilon(pow(10,value-3),64) from wholenumber where value between 0 and 17; ┌─────────┬───────────────────┬─────────────────────────────┐ │ value-3 │ pow(10,value-3) │ epsilon(pow(10,value-3),64) │ ├─────────┼───────────────────┼─────────────────────────────┤ │ -2 │ 0.01 │ 8.470329472543e-22 │ │ -1 │ 0.1 │ 6.7762635780344e-21 │ │ 0 │ 1.0 │ 1.0842021724855e-19 │ │ 1 │ 10.0 │ 8.67361737988404e-19 │ │ 2 │ 100.0 │ 6.93889390390723e-18 │ │ 3 │ 1000.0 │ 5.55111512312578e-17 │ │ 4 │ 10000.0 │ 8.88178419700125e-16 │ │ 5 │ 100000.0 │ 7.105427357601e-15 │ │ 6 │ 1000000.0 │ 5.6843418860808e-14 │ │ 7 │ 10000000.0 │ 9.09494701772928e-13 │ │ 8 │ 100000000.0 │ 7.27595761418343e-12 │ │ 9 │ 1000000000.0 │ 5.82076609134674e-11 │ │ 10 │ 10000000000.0 │ 9.31322574615479e-10 │ │ 11 │ 100000000000.0 │ 7.45058059692383e-09 │ │ 12 │ 1000000000000.0 │ 5.96046447753906e-08 │ │ 13 │ 10000000000000.0 │ 9.5367431640625e-07 │ │ 14 │ 100000000000000.0 │ 7.62939453125e-06 │ │ 15 │ 1.0e+15 │ 6.103515625e-05 │ │ 16 │ 1.0e+16 │ 0.0009765625 │ │ 17 │ 1.0e+17 │ 0.0078125 │ └─────────┴───────────────────┴─────────────────────────────┘ ``` Similarly for Binary128 it is 1e29 ``` sqlite> select value-3, pow(10,value-3), epsilon(pow(10,value-3),113) from wholenumber where value between 0 and 34; ┌─────────┬───────────────────┬──────────────────────────────┐ │ value-3 │ pow(10,value-3) │ epsilon(pow(10,value-3),113) │ ├─────────┼───────────────────┼──────────────────────────────┤ │ -2 │ 0.01 │ 1.50463276905253e-36 │ │ -1 │ 0.1 │ 1.20370621524202e-35 │ │ 0 │ 1.0 │ 1.92592994438724e-34 │ │ 1 │ 10.0 │ 1.54074395550979e-33 │ │ 2 │ 100.0 │ 1.23259516440783e-32 │ │ 3 │ 1000.0 │ 9.86076131526265e-32 │ │ 4 │ 10000.0 │ 1.57772181044202e-30 │ │ 5 │ 100000.0 │ 1.26217744835362e-29 │ │ 6 │ 1000000.0 │ 1.0097419586829e-28 │ │ 7 │ 10000000.0 │ 1.61558713389263e-27 │ │ 8 │ 100000000.0 │ 1.29246970711411e-26 │ │ 9 │ 1000000000.0 │ 1.03397576569128e-25 │ │ 10 │ 10000000000.0 │ 1.65436122510606e-24 │ │ 11 │ 100000000000.0 │ 1.32348898008484e-23 │ │ 12 │ 1000000000000.0 │ 1.05879118406788e-22 │ │ 13 │ 10000000000000.0 │ 1.6940658945086e-21 │ │ 14 │ 100000000000000.0 │ 1.35525271560688e-20 │ │ 15 │ 1.0e+15 │ 1.0842021724855e-19 │ │ 16 │ 1.0e+16 │ 1.73472347597681e-18 │ │ 17 │ 1.0e+17 │ 1.38777878078145e-17 │ │ 18 │ 1.0e+18 │ 1.11022302462516e-16 │ │ 19 │ 1.0e+19 │ 1.77635683940025e-15 │ │ 20 │ 1.0e+20 │ 1.4210854715202e-14 │ │ 21 │ 1.0e+21 │ 1.13686837721616e-13 │ │ 22 │ 1.0e+22 │ 1.81898940354586e-12 │ │ 23 │ 1.0e+23 │ 1.45519152283669e-11 │ │ 24 │ 1.0e+24 │ 1.16415321826935e-10 │ │ 25 │ 1.0e+25 │ 1.86264514923096e-09 │ │ 26 │ 1.0e+26 │ 1.49011611938477e-08 │ │ 27 │ 1.0e+27 │ 1.19209289550781e-07 │ │ 28 │ 1.0e+28 │ 1.9073486328125e-06 │ │ 29 │ 1.0e+29 │ 1.52587890625e-05 │ │ 30 │ 1.0e+30 │ 0.0001220703125 │ │ 31 │ 1.0e+31 │ 0.0009765625 │ └─────────┴───────────────────┴──────────────────────────────┘ ``` And for Binary256 it would be 1e67 ``` sqlite> select value-3, pow(10,value-3), epsilon(pow(10,value-3),237) from wholenumber where value between 0 and 73; ┌─────────┬───────────────────┬──────────────────────────────┐ │ value-3 │ pow(10,value-3) │ epsilon(pow(10,value-3),237) │ ├─────────┼───────────────────┼──────────────────────────────┤ │ -2 │ 0.01 │ 7.07474928033337e-74 │ │ -1 │ 0.1 │ 5.6597994242667e-73 │ │ 0 │ 1.0 │ 9.05567907882671e-72 │ │ 1 │ 10.0 │ 7.24454326306137e-71 │ │ 2 │ 100.0 │ 5.7956346104491e-70 │ │ 3 │ 1000.0 │ 4.63650768835928e-69 │ │ 4 │ 10000.0 │ 7.41841230137484e-68 │ │ 5 │ 100000.0 │ 5.93472984109987e-67 │ │ 6 │ 1000000.0 │ 4.7477838728799e-66 │ │ 7 │ 10000000.0 │ 7.59645419660784e-65 │ │ 8 │ 100000000.0 │ 6.07716335728627e-64 │ │ 9 │ 1000000000.0 │ 4.86173068582902e-63 │ │ 10 │ 10000000000.0 │ 7.77876909732643e-62 │ │ 11 │ 100000000000.0 │ 6.22301527786114e-61 │ │ 12 │ 1000000000000.0 │ 4.97841222228891e-60 │ │ 13 │ 10000000000000.0 │ 7.96545955566226e-59 │ │ 14 │ 100000000000000.0 │ 6.37236764452981e-58 │ │ 15 │ 1.0e+15 │ 5.09789411562385e-57 │ │ 16 │ 1.0e+16 │ 8.15663058499816e-56 │ │ 17 │ 1.0e+17 │ 6.52530446799852e-55 │ │ 18 │ 1.0e+18 │ 5.22024357439882e-54 │ │ 19 │ 1.0e+19 │ 8.35238971903811e-53 │ │ 20 │ 1.0e+20 │ 6.68191177523049e-52 │ │ 21 │ 1.0e+21 │ 5.34552942018439e-51 │ │ 22 │ 1.0e+22 │ 8.55284707229503e-50 │ │ 23 │ 1.0e+23 │ 6.84227765783602e-49 │ │ 24 │ 1.0e+24 │ 5.47382212626882e-48 │ │ 25 │ 1.0e+25 │ 8.75811540203011e-47 │ │ 26 │ 1.0e+26 │ 7.00649232162409e-46 │ │ 27 │ 1.0e+27 │ 5.60519385729927e-45 │ │ 28 │ 1.0e+28 │ 8.96831017167883e-44 │ │ 29 │ 1.0e+29 │ 7.17464813734306e-43 │ │ 30 │ 1.0e+30 │ 5.73971850987445e-42 │ │ 31 │ 1.0e+31 │ 4.59177480789956e-41 │ │ 32 │ 1.0e+32 │ 7.3468396926393e-40 │ │ 33 │ 1.0e+33 │ 5.87747175411144e-39 │ │ 34 │ 1.0e+34 │ 4.70197740328915e-38 │ │ 35 │ 1.0e+35 │ 7.52316384526264e-37 │ │ 36 │ 1.0e+36 │ 6.01853107621011e-36 │ │ 37 │ 1.0e+37 │ 4.81482486096809e-35 │ │ 38 │ 1.0e+38 │ 7.70371977754894e-34 │ │ 39 │ 1.0e+39 │ 6.16297582203915e-33 │ │ 40 │ 1.0e+40 │ 4.93038065763132e-32 │ │ 41 │ 1.0e+41 │ 7.88860905221012e-31 │ │ 42 │ 1.0e+42 │ 6.31088724176809e-30 │ │ 43 │ 1.0e+43 │ 5.04870979341448e-29 │ │ 44 │ 1.0e+44 │ 8.07793566946316e-28 │ │ 45 │ 1.0e+45 │ 6.46234853557053e-27 │ │ 46 │ 1.0e+46 │ 5.16987882845642e-26 │ │ 47 │ 1.0e+47 │ 8.27180612553028e-25 │ │ 48 │ 1.0e+48 │ 6.61744490042422e-24 │ │ 49 │ 1.0e+49 │ 5.29395592033938e-23 │ │ 50 │ 1.0e+50 │ 8.470329472543e-22 │ │ 51 │ 1.0e+51 │ 6.7762635780344e-21 │ │ 52 │ 1.0e+52 │ 5.42101086242752e-20 │ │ 53 │ 1.0e+53 │ 8.67361737988404e-19 │ │ 54 │ 1.0e+54 │ 6.93889390390723e-18 │ │ 55 │ 1.0e+55 │ 5.55111512312578e-17 │ │ 56 │ 1.0e+56 │ 8.88178419700125e-16 │ │ 57 │ 1.0e+57 │ 7.105427357601e-15 │ │ 58 │ 1.0e+58 │ 5.6843418860808e-14 │ │ 59 │ 1.0e+59 │ 4.54747350886464e-13 │ │ 60 │ 1.0e+60 │ 7.27595761418343e-12 │ │ 61 │ 1.0e+61 │ 5.82076609134674e-11 │ │ 62 │ 1.0e+62 │ 4.65661287307739e-10 │ │ 63 │ 1.0e+63 │ 7.45058059692383e-09 │ │ 64 │ 1.0e+64 │ 5.96046447753906e-08 │ │ 65 │ 1.0e+65 │ 4.76837158203125e-07 │ │ 66 │ 1.0e+66 │ 7.62939453125e-06 │ │ 67 │ 1.0e+67 │ 6.103515625e-05 │ │ 68 │ 1.0e+68 │ 0.00048828125 │ │ 69 │ 1.0e+69 │ 0.0078125 │ │ 70 │ 1.0e+70 │ 0.0625 │ └─────────┴───────────────────┴──────────────────────────────┘ ```