sc/source/core/tool/interpr3.cxx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
New commits: commit f0241948bd5c68c50c380d9c38704da563a80ac4 Author: Winfried Donkers <winfrieddonk...@libreoffice.org> Date: Sat Dec 31 10:05:46 2016 +0100 tdf#104981 Fix deficiencies with PERCENTRANK functions. Added constraint check for significance argument. Replced inproper use of log() with log10(). Improved code efficiency a little bit. Change-Id: Ie918857e6a04ea9fcf18410f789d7252f9c1cfc8 Reviewed-on: https://gerrit.libreoffice.org/32528 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Eike Rathke <er...@redhat.com> (cherry picked from commit facb4e69e4c75839df89969206403d2e97146dbd) Reviewed-on: https://gerrit.libreoffice.org/32724 Tested-by: Eike Rathke <er...@redhat.com> diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx index 5a98900..3d80505 100644 --- a/sc/source/core/tool/interpr3.cxx +++ b/sc/source/core/tool/interpr3.cxx @@ -3538,6 +3538,11 @@ void ScInterpreter::ScPercentrank( bool bInclusive ) if ( !MustHaveParamCount( nParamCount, 2, 3 ) ) return; double fSignificance = ( nParamCount == 3 ? ::rtl::math::approxFloor( GetDouble() ) : 3.0 ); + if ( fSignificance < 1.0 ) + { + PushIllegalArgument(); + return; + } double fNum = GetDouble(); vector<double> aSortArray; GetSortArray( 1, aSortArray, nullptr, false, false ); @@ -3557,8 +3562,8 @@ void ScInterpreter::ScPercentrank( bool bInclusive ) fRes = GetPercentrank( aSortArray, fNum, bInclusive ); if ( fRes != 0.0 ) { - double fExp = ::rtl::math::approxFloor( log( fRes ) ); - fRes = ::rtl::math::round( fRes * pow( 10, -fExp + fSignificance - 1 ) ) / pow( 10, -fExp + fSignificance - 1 ); + double fExp = ::rtl::math::approxFloor( log10( fRes ) ) + 1.0 - fSignificance; + fRes = ::rtl::math::round( fRes * pow( 10, -fExp ) ) / pow( 10, -fExp ); } PushDouble( fRes ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits