[Libreoffice-commits] core.git: scaddins/source sc/source

BaiXiaochun (via logerrit) logerrit at kemper.freedesktop.org
Fri Jul 2 05:53:36 UTC 2021


 sc/source/core/tool/interpr2.cxx            |    4 ++--
 sc/source/core/tool/interpr3.cxx            |    6 +++---
 sc/source/core/tool/interpr7.cxx            |   10 ++--------
 scaddins/source/analysis/analysishelper.cxx |    6 ++----
 scaddins/source/pricing/black_scholes.cxx   |    3 +--
 5 files changed, 10 insertions(+), 19 deletions(-)

New commits:
commit 557d7a8bdad148501c491a060da74a6214284ca4
Author:     BaiXiaochun <bai.xiaochun.mofan at protonmail.com>
AuthorDate: Tue Jun 29 21:06:12 2021 +0200
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Fri Jul 2 07:53:02 2021 +0200

    Purge rtl::math:: ( erf / erfc / expm1  )
    
    Change-Id: Id0e0dce5f9a3bf0bb9ddc73e3aeaa8faf683ad2a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118134
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 632b04643a28..f4d906a7d8c1 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -1896,10 +1896,10 @@ double ScInterpreter::ScGetPMT(double fRate, double fNper, double fPv,
     {
         if (bPayInAdvance) // payment in advance
             fPayment = (fFv + fPv * exp( fNper * ::rtl::math::log1p(fRate) ) ) * fRate /
-                (::rtl::math::expm1( (fNper + 1) * ::rtl::math::log1p(fRate) ) - fRate);
+                (std::expm1( (fNper + 1) * ::rtl::math::log1p(fRate) ) - fRate);
         else  // payment in arrear
             fPayment = (fFv + fPv * exp(fNper * ::rtl::math::log1p(fRate) ) ) * fRate /
-                ::rtl::math::expm1( fNper * ::rtl::math::log1p(fRate) );
+                std::expm1( fNper * ::rtl::math::log1p(fRate) );
     }
     return -fPayment;
 }
diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx
index 9f5812a787a1..c2c91f621bfd 100644
--- a/sc/source/core/tool/interpr3.cxx
+++ b/sc/source/core/tool/interpr3.cxx
@@ -200,7 +200,7 @@ double ScInterpreter::phi(double x)
 
 double ScInterpreter::integralPhi(double x)
 { // Using gauss(x)+0.5 has severe cancellation errors for x<-4
-    return 0.5 * ::rtl::math::erfc(-x * 0.7071067811865475); // * 1/sqrt(2)
+    return 0.5 * std::erfc(-x * 0.7071067811865475); // * 1/sqrt(2)
 }
 
 double ScInterpreter::taylor(const double* pPolynom, sal_uInt16 nMax, double x)
@@ -875,7 +875,7 @@ double ScInterpreter::GetBetaDistPDF(double fX, double fA, double fB)
             return HUGE_VAL;
         }
         if (fX <= 0.01)
-            return fB + fB * ::rtl::math::expm1((fB-1.0) * ::rtl::math::log1p(-fX));
+            return fB + fB * std::expm1((fB-1.0) * ::rtl::math::log1p(-fX));
         else
             return fB * pow(0.5-fX+0.5,fB-1.0);
     }
@@ -994,7 +994,7 @@ double ScInterpreter::GetBetaDist(double fXin, double fAlpha, double fBeta)
         return pow(fXin, fAlpha);
     if (fAlpha == 1.0)
     //            1.0 - pow(1.0-fX,fBeta) is not accurate enough
-        return -::rtl::math::expm1(fBeta * ::rtl::math::log1p(-fXin));
+        return -std::expm1(fBeta * ::rtl::math::log1p(-fXin));
     //FIXME: need special algorithm for fX near fP for large fA,fB
     double fResult;
     // I use always continued fraction, power series are neither
diff --git a/sc/source/core/tool/interpr7.cxx b/sc/source/core/tool/interpr7.cxx
index d50a084acb75..7b2a7a7a563a 100644
--- a/sc/source/core/tool/interpr7.cxx
+++ b/sc/source/core/tool/interpr7.cxx
@@ -497,20 +497,14 @@ void ScInterpreter::ScErf()
 {
     sal_uInt8 nParamCount = GetByte();
     if (MustHaveParamCount( nParamCount, 1 ) )
-    {
-        double x = GetDouble();
-        PushDouble( ::rtl::math::erf( x ) );
-    }
+        PushDouble( std::erf( GetDouble() ) );
 }
 
 void ScInterpreter::ScErfc()
 {
     sal_uInt8 nParamCount = GetByte();
     if (MustHaveParamCount( nParamCount, 1 ) )
-    {
-        double x = GetDouble();
-        PushDouble( ::rtl::math::erfc( x ) );
-    }
+        PushDouble( std::erfc( GetDouble() ) );
 }
 
 void ScInterpreter::ScColor()
diff --git a/scaddins/source/analysis/analysishelper.cxx b/scaddins/source/analysis/analysishelper.cxx
index fd4de83c3ce2..405fdae9e5e6 100644
--- a/scaddins/source/analysis/analysishelper.cxx
+++ b/scaddins/source/analysis/analysishelper.cxx
@@ -732,16 +732,14 @@ OUString ConvertFromDec( double fNum, double fMin, double fMax, sal_uInt16 nBase
     return aRet;
 }
 
-// implementation moved to module sal, see #i97091#
 double Erf( double x )
 {
-    return ::rtl::math::erf(x);
+    return std::erf(x);
 }
 
-// implementation moved to module sal, see #i97091#
 double Erfc( double x )
 {
-    return ::rtl::math::erfc(x);
+    return std::erfc(x);
 }
 
 static bool IsNum( sal_Unicode c )
diff --git a/scaddins/source/pricing/black_scholes.cxx b/scaddins/source/pricing/black_scholes.cxx
index 57344d85cbec..88bdfc999b35 100644
--- a/scaddins/source/pricing/black_scholes.cxx
+++ b/scaddins/source/pricing/black_scholes.cxx
@@ -93,8 +93,7 @@ static double dnorm(double x) {
 }
 // cumulative normal distribution (see also ScInterpreter::integralPhi)
 static double pnorm(double x) {
-    //return 0.5*(erf(sqrt(0.5)*x)+1.0);       // windows may not have erf
-    return 0.5 * ::rtl::math::erfc(-x * 0.7071067811865475);
+    return 0.5 * std::erfc(-x * 0.7071067811865475);
 }
 
 // binary option cash (domestic)


More information about the Libreoffice-commits mailing list