From b97a0df0f3234b4c1140ba1418d4b96a592afa4a Mon Sep 17 00:00:00 2001 From: Winfried Donkers Date: Sat, 30 Dec 2017 18:25:02 +0100 Subject: tdf#96821 fix corner cases for Calc function ROUND. For very large integer numbers, e.g. 2^52+1, ROUND produced incorrect results because rtl::math::round uses floor( number + 0.5 + small_correction_value ), which reduces the maximum possible mantissa resolution.a Correction of several unit test documents (Calc functions) with rounding errors that only became apparent with this fix. Change-Id: I1769c9939a3d6118d3bfbfdf8e41dd4619997232 Reviewed-on: https://gerrit.libreoffice.org/47179 Tested-by: Jenkins Reviewed-by: Eike Rathke --- .../data/functions/mathematical/fods/round.fods | 45 ++++++-- .../functions/statistical/fods/chisq.test.fods | 50 ++++----- .../data/functions/statistical/fods/chisqdist.fods | 40 +++---- .../data/functions/statistical/fods/chisqinv.fods | 118 ++++++++++----------- .../data/functions/statistical/fods/chitest.fods | 50 ++++----- .../data/functions/statistical/fods/stdevpa.fods | 28 ++--- .../data/functions/statistical/fods/t.dist.rt.fods | 66 ++++++------ .../unit/data/functions/statistical/fods/tinv.fods | 60 +++++------ 8 files changed, 240 insertions(+), 217 deletions(-) (limited to 'sc') diff --git a/sc/qa/unit/data/functions/mathematical/fods/round.fods b/sc/qa/unit/data/functions/mathematical/fods/round.fods index 0f0a5b9026c3..d75968c17bbe 100644 --- a/sc/qa/unit/data/functions/mathematical/fods/round.fods +++ b/sc/qa/unit/data/functions/mathematical/fods/round.fods @@ -2117,20 +2117,43 @@ - - - - - + + 4503599627370497 + + + 4503599627370497 + + + TRUE + + + =ROUND(2^52+1,0) + + + limit of resolution + + - - - - - + + + 4503599627370497 + + + 4503599627370497 + + + TRUE + + + =ROUND(2^52+1) + + + limit of resolution + + @@ -2380,4 +2403,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/chisq.test.fods b/sc/qa/unit/data/functions/statistical/fods/chisq.test.fods index 9eac30114eb7..648f8b864679 100644 --- a/sc/qa/unit/data/functions/statistical/fods/chisq.test.fods +++ b/sc/qa/unit/data/functions/statistical/fods/chisq.test.fods @@ -3803,7 +3803,7 @@ 1.16440189336067E-29 - + TRUE @@ -3866,7 +3866,7 @@ 9.03490480352966E-10 - + TRUE @@ -3934,7 +3934,7 @@ 1.34423459890025E-09 - + TRUE @@ -4000,7 +4000,7 @@ 0 - + TRUE @@ -4058,7 +4058,7 @@ 1.12896923737676E-11 - + TRUE @@ -4121,7 +4121,7 @@ 0.997916658208002 - + TRUE @@ -4184,7 +4184,7 @@ 0.001549713633046 - + TRUE @@ -4246,7 +4246,7 @@ 0.020252473072358 - + TRUE @@ -4306,7 +4306,7 @@ 1.66789802691649E-16 - + TRUE @@ -4358,7 +4358,7 @@ 0 - + TRUE @@ -4403,7 +4403,7 @@ 0.000308192017008 - + TRUE @@ -4435,7 +4435,7 @@ 0.816527699624637 - + TRUE @@ -4466,7 +4466,7 @@ 0.87928370831036 - + TRUE @@ -4507,7 +4507,7 @@ 0.911826184650631 - + TRUE @@ -4550,7 +4550,7 @@ 0.9314883584606 - + TRUE @@ -4581,7 +4581,7 @@ 0.944539492146675 - + TRUE @@ -4617,7 +4617,7 @@ 0.953774634535083 - + TRUE @@ -4655,7 +4655,7 @@ 0.960619865110165 - + TRUE @@ -4681,7 +4681,7 @@ 0.965875482278625 - + TRUE @@ -4707,7 +4707,7 @@ 0.970023721006623 - + TRUE @@ -4733,7 +4733,7 @@ 0.973371683412022 - + TRUE @@ -4792,7 +4792,7 @@ 0.726644540598389 - + TRUE @@ -4850,7 +4850,7 @@ 0.721391783070078 - + TRUE @@ -4908,7 +4908,7 @@ 0.999898925814582 - + TRUE @@ -5412,4 +5412,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/chisqdist.fods b/sc/qa/unit/data/functions/statistical/fods/chisqdist.fods index c9a69597b71e..6c4313b3bdaa 100644 --- a/sc/qa/unit/data/functions/statistical/fods/chisqdist.fods +++ b/sc/qa/unit/data/functions/statistical/fods/chisqdist.fods @@ -2832,10 +2832,10 @@ 0.111565080074215 - + 0.111565080074215 - + TRUE @@ -2868,7 +2868,7 @@ 0.77686983985157 - + TRUE @@ -2901,7 +2901,7 @@ 0.207553748710297 - + TRUE @@ -2965,7 +2965,7 @@ 0 - + TRUE @@ -3022,7 +3022,7 @@ 0.42759329552912 - + TRUE @@ -3099,7 +3099,7 @@ 0.103776874355149 - + TRUE @@ -3121,7 +3121,7 @@ 0.103776874355149 - + TRUE @@ -3145,7 +3145,7 @@ 0.77686983985157 - + TRUE @@ -3169,7 +3169,7 @@ 0.107981933026376 - + TRUE @@ -3192,7 +3192,7 @@ 0.712702504816354 - + TRUE @@ -3214,7 +3214,7 @@ 0.097304346659283 - + TRUE @@ -3240,7 +3240,7 @@ 0.679152801137866 - + TRUE @@ -3265,7 +3265,7 @@ 0 - + TRUE @@ -3290,7 +3290,7 @@ 0 - + TRUE @@ -3312,7 +3312,7 @@ 0.183939720585721 - + TRUE @@ -3334,7 +3334,7 @@ 0.632120558828558 - + TRUE @@ -3356,7 +3356,7 @@ 0.067667641618306 - + TRUE @@ -3380,7 +3380,7 @@ 0.864664716763387 - + TRUE @@ -4023,4 +4023,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/chisqinv.fods b/sc/qa/unit/data/functions/statistical/fods/chisqinv.fods index 2046696ba246..4bb9cc65d9df 100644 --- a/sc/qa/unit/data/functions/statistical/fods/chisqinv.fods +++ b/sc/qa/unit/data/functions/statistical/fods/chisqinv.fods @@ -3799,7 +3799,7 @@ 3.28302028675954 - + TRUE @@ -3858,7 +3858,7 @@ 1.83258146374831 - + TRUE @@ -3922,7 +3922,7 @@ 4.53504966643008 - + TRUE @@ -3984,7 +3984,7 @@ 5.40462670205885 - + TRUE @@ -4042,7 +4042,7 @@ 6.30379605958432 - + TRUE @@ -4101,7 +4101,7 @@ 7.22840922887967 - + TRUE @@ -4160,7 +4160,7 @@ 8.17520208558841 - + TRUE @@ -4218,7 +4218,7 @@ 9.14156135907027 - + TRUE @@ -4276,7 +4276,7 @@ 10.1253633400196 - + TRUE @@ -4328,7 +4328,7 @@ 11.1248597059224 - + TRUE @@ -4373,7 +4373,7 @@ 12.1385949123142 - + TRUE @@ -4405,7 +4405,7 @@ 13.1653452479781 - + TRUE @@ -4436,7 +4436,7 @@ 14.2040730851385 - + TRUE @@ -4467,7 +4467,7 @@ 3.07008840528929 - + TRUE @@ -4501,7 +4501,7 @@ 2.99990813275991 - + TRUE @@ -4527,7 +4527,7 @@ 9.23728542384152 - + TRUE @@ -4553,7 +4553,7 @@ 6.34581119552152 - + TRUE @@ -4581,7 +4581,7 @@ 5.13186707440182 - + TRUE @@ -4607,7 +4607,7 @@ 4.87843296656041 - + TRUE @@ -4633,7 +4633,7 @@ 5.98861669400425 - + TRUE @@ -4659,7 +4659,7 @@ 0.981793008255829 - + TRUE @@ -4685,7 +4685,7 @@ 2.75660369088146 - + TRUE @@ -4711,7 +4711,7 @@ 2.1113261237018 - + TRUE @@ -4737,7 +4737,7 @@ 2.0764999935322 - + TRUE @@ -4763,7 +4763,7 @@ 5.01515445024952 - + TRUE @@ -4789,7 +4789,7 @@ 15.2911628705065 - + TRUE @@ -4815,7 +4815,7 @@ 20.4461298047275 - + TRUE @@ -4841,7 +4841,7 @@ 16.3884014923503 - + TRUE @@ -4867,7 +4867,7 @@ 13.3824533053927 - + TRUE @@ -4893,7 +4893,7 @@ 7.91959455051006 - + TRUE @@ -4919,7 +4919,7 @@ 15.6557151216055 - + TRUE @@ -4945,7 +4945,7 @@ 24.5318147689017 - + TRUE @@ -4971,7 +4971,7 @@ 9.94221245771641 - + TRUE @@ -4997,7 +4997,7 @@ 0.000000 - + TRUE @@ -5049,7 +5049,7 @@ 0.454936 - + TRUE @@ -5075,7 +5075,7 @@ 0.015791 - + TRUE @@ -5129,7 +5129,7 @@ 0.010087 - + TRUE @@ -5155,7 +5155,7 @@ 0.188621 - + TRUE @@ -5181,7 +5181,7 @@ 0.584374 - + TRUE @@ -5207,7 +5207,7 @@ 1.126782 - + TRUE @@ -5233,7 +5233,7 @@ 1.769734 - + TRUE @@ -5259,7 +5259,7 @@ 2.48627982968339 - + TRUE @@ -5285,7 +5285,7 @@ 3.25953870534247 - + TRUE @@ -5311,7 +5311,7 @@ 4.07819909611163 - + TRUE @@ -5337,7 +5337,7 @@ 4.934270 - + TRUE @@ -5363,7 +5363,7 @@ 5.8218731997855 - + TRUE @@ -5389,7 +5389,7 @@ 6.73654101450682 - + TRUE @@ -5441,7 +5441,7 @@ 0.1 - + TRUE @@ -5465,7 +5465,7 @@ 0.3 - + TRUE @@ -5489,7 +5489,7 @@ 0.500000 - + TRUE @@ -5513,7 +5513,7 @@ 0.700000 - + TRUE @@ -5537,7 +5537,7 @@ 0.900000 - + TRUE @@ -5561,7 +5561,7 @@ 0.100000 - + TRUE @@ -5585,7 +5585,7 @@ 0.300000 - + TRUE @@ -5607,7 +5607,7 @@ 0.500000 - + TRUE @@ -5629,7 +5629,7 @@ 0.700000 - + TRUE @@ -5651,7 +5651,7 @@ 0.900000 - + TRUE @@ -5673,7 +5673,7 @@ 0.000000 - + TRUE @@ -6047,4 +6047,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/chitest.fods b/sc/qa/unit/data/functions/statistical/fods/chitest.fods index 62e3ab0f53b3..67f803af72ee 100644 --- a/sc/qa/unit/data/functions/statistical/fods/chitest.fods +++ b/sc/qa/unit/data/functions/statistical/fods/chitest.fods @@ -3803,7 +3803,7 @@ 1.16440189336067E-29 - + TRUE @@ -3866,7 +3866,7 @@ 9.03490480352966E-10 - + TRUE @@ -3934,7 +3934,7 @@ 1.34423459890025E-09 - + TRUE @@ -4000,7 +4000,7 @@ 0 - + TRUE @@ -4058,7 +4058,7 @@ 1.12896923737676E-11 - + TRUE @@ -4121,7 +4121,7 @@ 0.997916658208002 - + TRUE @@ -4184,7 +4184,7 @@ 0.001549713633046 - + TRUE @@ -4246,7 +4246,7 @@ 0.020252473072358 - + TRUE @@ -4306,7 +4306,7 @@ 1.66789802691649E-16 - + TRUE @@ -4358,7 +4358,7 @@ 0 - + TRUE @@ -4403,7 +4403,7 @@ 0.000308192017008 - + TRUE @@ -4435,7 +4435,7 @@ 0.816527699624637 - + TRUE @@ -4466,7 +4466,7 @@ 0.87928370831036 - + TRUE @@ -4507,7 +4507,7 @@ 0.911826184650631 - + TRUE @@ -4550,7 +4550,7 @@ 0.9314883584606 - + TRUE @@ -4581,7 +4581,7 @@ 0.944539492146675 - + TRUE @@ -4617,7 +4617,7 @@ 0.953774634535083 - + TRUE @@ -4655,7 +4655,7 @@ 0.960619865110165 - + TRUE @@ -4681,7 +4681,7 @@ 0.965875482278625 - + TRUE @@ -4707,7 +4707,7 @@ 0.970023721006623 - + TRUE @@ -4733,7 +4733,7 @@ 0.973371683412022 - + TRUE @@ -4792,7 +4792,7 @@ 0.726644540598389 - + TRUE @@ -4850,7 +4850,7 @@ 0.721391783070078 - + TRUE @@ -4908,7 +4908,7 @@ 0.999898925814582 - + TRUE @@ -5412,4 +5412,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/stdevpa.fods b/sc/qa/unit/data/functions/statistical/fods/stdevpa.fods index e0b43c6bef11..825f7b1961c6 100644 --- a/sc/qa/unit/data/functions/statistical/fods/stdevpa.fods +++ b/sc/qa/unit/data/functions/statistical/fods/stdevpa.fods @@ -3674,7 +3674,7 @@ 1.63299316185545 - + TRUE @@ -3728,7 +3728,7 @@ 4.04972501741921 - + TRUE @@ -3790,7 +3790,7 @@ 58.506579065081 - + TRUE @@ -3849,7 +3849,7 @@ 2.63899331455874 - + TRUE @@ -3908,7 +3908,7 @@ 1.41774468787578 - + TRUE @@ -3967,7 +3967,7 @@ 0 - + TRUE @@ -4026,7 +4026,7 @@ 0 - + TRUE @@ -4085,7 +4085,7 @@ 0.816496580927726 - + TRUE @@ -4139,7 +4139,7 @@ 26.0545581424825 - + TRUE @@ -4187,7 +4187,7 @@ 7.17538356723097 - + TRUE @@ -4233,7 +4233,7 @@ 14.6711451495785 - + TRUE @@ -4271,7 +4271,7 @@ 0.707106781186548 - + TRUE @@ -4306,7 +4306,7 @@ 2.63899331455874 - + TRUE @@ -6626,4 +6626,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/t.dist.rt.fods b/sc/qa/unit/data/functions/statistical/fods/t.dist.rt.fods index 4993d024932d..889a95d0f528 100644 --- a/sc/qa/unit/data/functions/statistical/fods/t.dist.rt.fods +++ b/sc/qa/unit/data/functions/statistical/fods/t.dist.rt.fods @@ -3806,7 +3806,7 @@ 0.17044656615103 - + TRUE @@ -3853,7 +3853,7 @@ 0.17044656615103 - + TRUE @@ -3901,7 +3901,7 @@ 0.035401977534017 - + TRUE @@ -3945,7 +3945,7 @@ 0.005533347843017 - + TRUE @@ -3991,7 +3991,7 @@ 0.000756039679406 - + TRUE @@ -4035,7 +4035,7 @@ 9.7257653128633E-05 - + TRUE @@ -4078,7 +4078,7 @@ 1.21632727555193E-05 - + TRUE @@ -4122,7 +4122,7 @@ 1.49794463195888E-06 - + TRUE @@ -4165,7 +4165,7 @@ 1.82496662157233E-07 - + TRUE @@ -4201,7 +4201,7 @@ 2.20213936459103E-08 - + TRUE @@ -4238,7 +4238,7 @@ 2.63151308116795E-09 - + TRUE @@ -4262,7 +4262,7 @@ 3.1123250806477E-10 - + TRUE @@ -4284,7 +4284,7 @@ 0.25 - + TRUE @@ -4306,7 +4306,7 @@ 0.091751709536137 - + TRUE @@ -4338,7 +4338,7 @@ 0.028834442811219 - + TRUE @@ -4362,7 +4362,7 @@ 0.008065044950046 - + TRUE @@ -4386,7 +4386,7 @@ 0.002052357990027 - + TRUE @@ -4412,7 +4412,7 @@ 0.000482267597208 - + TRUE @@ -4433,8 +4433,8 @@ 0.000105777425973 - - 0.000105777425973 + + 0.0001057774259772936 TRUE @@ -4460,7 +4460,7 @@ 0 - + TRUE @@ -4484,7 +4484,7 @@ 0.000486711984885 - + TRUE @@ -4508,7 +4508,7 @@ 0.046213155765838 - + TRUE @@ -4532,7 +4532,7 @@ 0.015049623948731 - + TRUE @@ -4556,7 +4556,7 @@ 1.04807918350441E-06 - + TRUE @@ -4580,7 +4580,7 @@ 0.175308331410104 - + TRUE @@ -4604,7 +4604,7 @@ 0.000246453330286 - + TRUE @@ -4628,7 +4628,7 @@ 0.001096064903346 - + TRUE @@ -4652,7 +4652,7 @@ 0.003745216940637 - + TRUE @@ -4700,7 +4700,7 @@ 0.5 - + TRUE @@ -4724,7 +4724,7 @@ 0.828281801931043 - + TRUE @@ -4748,7 +4748,7 @@ 0.027322464987961 - + TRUE @@ -5288,4 +5288,4 @@ - \ No newline at end of file + diff --git a/sc/qa/unit/data/functions/statistical/fods/tinv.fods b/sc/qa/unit/data/functions/statistical/fods/tinv.fods index 31c9cbebf555..89832a2a16c3 100644 --- a/sc/qa/unit/data/functions/statistical/fods/tinv.fods +++ b/sc/qa/unit/data/functions/statistical/fods/tinv.fods @@ -3766,7 +3766,7 @@ 0 - + TRUE @@ -3815,7 +3815,7 @@ 1.81246112281168 - + TRUE @@ -3863,7 +3863,7 @@ 1.54755976627494 - + TRUE @@ -3907,7 +3907,7 @@ 1.35621733402321 - + TRUE @@ -3953,7 +3953,7 @@ 1.20414624166526 - + TRUE @@ -3997,7 +3997,7 @@ 1.07628024458382 - + TRUE @@ -4040,7 +4040,7 @@ 0.964682373011799 - + TRUE @@ -4084,7 +4084,7 @@ 0.864667001798292 - + TRUE @@ -4163,7 +4163,7 @@ 0.688363806466199 - + TRUE @@ -4200,7 +4200,7 @@ 0.608595649161802 - + TRUE @@ -4224,7 +4224,7 @@ 0.532862791616333 - + TRUE @@ -4246,7 +4246,7 @@ 6.31375151467504 - + TRUE @@ -4268,7 +4268,7 @@ 2.28193058772768 - + TRUE @@ -4300,7 +4300,7 @@ 1.63774435369621 - + TRUE @@ -4324,7 +4324,7 @@ 1.34439755550909 - + TRUE @@ -4348,7 +4348,7 @@ 1.15576734289429 - + TRUE @@ -4398,7 +4398,7 @@ 0.896029644313764 - + TRUE @@ -4422,7 +4422,7 @@ 0.125944078921444 - + TRUE @@ -4446,7 +4446,7 @@ 0 - + TRUE @@ -4470,7 +4470,7 @@ 1.36163241825017 - + TRUE @@ -4494,7 +4494,7 @@ 1.070480073011 - + TRUE @@ -4518,7 +4518,7 @@ 0.793181382641255 - + TRUE @@ -4542,7 +4542,7 @@ 0.618938866571943 - + TRUE @@ -4566,7 +4566,7 @@ 0.457258216476513 - + TRUE @@ -4590,7 +4590,7 @@ 0.301894783862139 - + TRUE @@ -4614,7 +4614,7 @@ 0.148831111963765 - + TRUE @@ -4734,7 +4734,7 @@ 1.9431802805153 - + TRUE @@ -4758,7 +4758,7 @@ 0.365148 - + TRUE @@ -4782,7 +4782,7 @@ 0.365148 - + TRUE @@ -5314,4 +5314,4 @@ - \ No newline at end of file + -- cgit