tests sc_array_functions_test fail due to floating point precision
Milton Vandersloot
miltonrobertvandersloot1412 at protonmail.com
Sat Dec 9 11:37:25 UTC 2017
Hi Eike
On December 7, 2017 at 12:40 PM Eike Rathke wrote:
> On Saturday, 2017-12-02 02:47:03 -0500, Milton Vandersloot wrote:
> > I've also opened the other test documents in
> > sc/qa/unit/data/functions/array/fods/ using LibreOffice. The documents which
> > fail are linest.fods and also logest.fods. The others succeed.
>
>If your build completed ignoring these tests (i.e. produced a
>usable office under ./instdir/), could you please open the
>failing documents and tell us the cell addresses on the second
>sheet where tests fail and the actual values they produced?
Below are the numbers. Some remarks: Many errors are in the
range of 1E-11 to 1E-12 but some are way larger >1E30. I assume
this is due some division of a very small error.
Has someone done a/some theoretical error analysis of the
algorithms involved? (e.g. numeric (forward/backward) stability
and error estimates similar to what is well-known for LU
factorization and other algorithms.)
Who/What provided the reference values -- or reformulated --
what error do these numbers have (wrt to the mathematical
solution).
Best
Milton
Below are the first three columns (A-C). They are prefixed by the
line number (e.g. 'l21'). At the end I added the formula of the
TRUE/FALSE column. I included this as some tests round to
something different than 1E-12, e.g. line 5 in linest.fods.
logest.fods Sheet 2:
--------------------
l21: 538.89039831558 538.890398315583 FALSE (=ROUND(A21,12)=ROUND(B21,12))
off by 3E-12
linest.fods Sheet 2:
--------------------
l39: 12237.3616028624 12237.3616028623 FALSE (=ROUND(A39,12)=ROUND(B39,12))
off by 1E-10
l46: 1.15420554120705E+030 5.5523702096735E+030 FALSE (=ROUND(A46,12)=ROUND(B46,12))
off by 4.4E30
l66: 1.36570269395312E+030 3.73790456956461E+029 FALSE (=ROUND(A66,12)=ROUND(B66,12))
off by 1.E30
l99: 2029957.60481663 2029957.60481605 FALSE (=ROUND(A99,12)=ROUND(B99,12))
off by 6.E-7
l113: 1.11356775201247E+027 7.3824164159995E+026 FALSE (=ROUND(A113,12)=ROUND(B113,12))
off by 4E26
l156: 9942283.62964539 9942283.62965002 FALSE (=ROUND(A156,12)=ROUND(B156,12))
off by 5E-6
l157: 11577901.4177444 11577901.4177444 FALSE (=ROUND(A157,12)=ROUND(B157,12))
off by 0. This keeps me puzzling ... (increasing the number of significant digits yields zeros on both entries)
l163: -108.083609022555 -108.083609022579 FALSE (=ROUND(A163,12)=ROUND(B163,12))
off by 2.4E-11
l164: 34.8435504725302 34.8435504725221 FALSE (=ROUND(A164,12)=ROUND(B164,12))
off by 1.2E-11
l171: 2484916.49382756 2484916.49382742 FALSE (=ROUND(A171,12)=ROUND(B171,12))
off by 1.4E-6
l184: 2.7060018272122E-14 9.25081260404044E-13 FALSE (=ROUND(A184,12)=ROUND(B184,12))
off by 9E-13
l186: 4.04703891013103E+033 3.46285083263994E+030 FALSE (=ROUND(A186,12)=ROUND(B186,12))
off by 4E33
l189: 5.41123064912622E-14 1.84989825908131E-12 FALSE (=ROUND(A189,12)=ROUND(B189,12))
off by 1.8E-12
l201: 786024.499999976 786024.50000001 FALSE (=ROUND(A201,12)=ROUND(B201,12))
off by 4E-8
l216: 786024.499999976 786024.50000001 FALSE (=ROUND(A216,12)=ROUND(B216,12))
off by 4E-8
More information about the LibreOffice
mailing list