sc/source/core/inc/interpre.hxx  |    1 +
 sc/source/core/tool/interpr3.cxx |   24 ++++++++++++++++++++++++
 sc/source/core/tool/interpr4.cxx |    4 ++--
 sc/source/ui/src/scfuncs.src     |    2 +-
 4 files changed, 28 insertions(+), 3 deletions(-)

New commits:
commit c3760e9099db9cf1be696347e2a0743a3cae1b20
Author: Winfried Donkers <winfrieddonk...@libreoffice.org>
Date:   Tue Dec 3 18:03:29 2013 +0100

    fdo#70797 fix incorrect argument handling of CHISQ.DIST
    
    Change-Id: I6187aa673034e6dc18f48f7b6b7ac88989ab55ec
    Reviewed-on: https://gerrit.libreoffice.org/6914
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Eike Rathke <er...@redhat.com>

diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx
index 4f60718..5171f30 100644
--- a/sc/source/core/inc/interpre.hxx
+++ b/sc/source/core/inc/interpre.hxx
@@ -754,6 +754,7 @@ void ScFDist();
 void ScFDist_LT();
 void ScChiDist();   // for LEGACY.CHIDIST, returns right tail
 void ScChiSqDist(); // returns left tail or density
+void ScChiSqDist_MS();
 void ScChiSqInv(); //invers to CHISQDIST
 void ScWeibull();
 void ScBetaDist();
diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx
index 9f5aa00..79934e6 100644
--- a/sc/source/core/tool/interpr3.cxx
+++ b/sc/source/core/tool/interpr3.cxx
@@ -721,6 +721,30 @@ void ScInterpreter::ScChiSqDist()
     }
 }
 
+void ScInterpreter::ScChiSqDist_MS()
+{
+    sal_uInt8 nParamCount = GetByte();
+    if ( !MustHaveParamCount( nParamCount, 3, 3 ) )
+        return;
+    bool bCumulative = GetBool();
+    double fDF = ::rtl::math::approxFloor( GetDouble() );
+    if ( fDF < 1.0 || fDF > 1E10 )
+        PushIllegalArgument();
+    else
+    {
+        double fX = GetDouble();
+        if ( fX < 0 )
+            PushIllegalArgument();
+        else
+        {
+            if ( bCumulative )
+                PushDouble( GetChiSqDistCDF( fX, fDF ) );
+            else
+                PushDouble( GetChiSqDistPDF( fX, fDF ) );
+        }
+    }
+}
+
 void ScInterpreter::ScGamma()
 {
     double x = GetDouble();
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 2a92252..b341eaa 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -4118,8 +4118,8 @@ StackVar ScInterpreter::Interpret()
                 case ocFDist_LT         : ScFDist_LT();                 break;
                 case ocChiDist          :
                 case ocChiDist_MS       : ScChiDist();                  break;
-                case ocChiSqDist        :
-                case ocChiSqDist_MS     : ScChiSqDist();                break;
+                case ocChiSqDist        : ScChiSqDist();                break;
+                case ocChiSqDist_MS     : ScChiSqDist_MS();             break;
                 case ocStandard         : ScStandard();                 break;
                 case ocAveDev           : ScAveDev();                   break;
                 case ocDevSq            : ScDevSq();                    break;
diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src
index d761adec..960177b 100644
--- a/sc/source/ui/src/scfuncs.src
+++ b/sc/source/ui/src/scfuncs.src
@@ -7793,7 +7793,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
         };
         String 7 // Description of Parameter 3
         {
-            Text [ en-US ] = "0 or FALSE calculates the probability density 
function. Any other value or TRUE or omitted calculates the cumulative 
distribution function." ;
+            Text [ en-US ] = "0 or FALSE calculates the probability density 
function. Any other value or TRUE calculates the cumulative distribution 
function." ;
         };
     };
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to