Matrix Division on the 28C/S (and later)
|
03-04-2020, 04:39 PM
(This post was last modified: 03-04-2020 07:00 PM by Albert Chan.)
Post: #22
|
|||
|
|||
RE: Matrix Division on the 28C/S (and later)
(03-04-2020 12:29 PM)Thomas Okken Wrote: I'll write the new version of DOT next week, I think. I'll have to add FMA to the "phloat" functions, using bid128_fma() in the decimal version, and (I think) std::fma() in the binary version, and then implement the functions from your citations. DotFMA probably will not gain much accuracy. Example, if we fuse for every step, with tiny a, such that a+1=1 DotFMA([a 1 -1], [1 1 1]) = (a+1) - 1 = 1-1 = 0 However, fusing result at the end help (essentially "double" precision until final sum) see CompDot, CompDotFMA, http://rnc7.loria.fr/louvet_poster.pdf (03-04-2020 01:41 PM)J-F Garnier Wrote: Slightly changing the test to DOT( [ a -1 1 ] , [ 1 1 1] ), I noticed this difference between the 71B and the 28S/42S It seems 71B internal 15-digits precision is using Round-to-zero (chopping excess digits) Say, a = 1.00000000001e-15 DOT([a 1 -1], [1 1 1]) = (1.0000 00000 00000 10000 00000 01) - 1 ≈ (1.0000 00000 00000) - 1 = 0 DOT([a -1 1], [1 1 1]) = (-0.99999 99999 99998 99999 999999) + 1 ≈ (-0.99999 99999 99998) + 1 = 2E-15 |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)