summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/math.hxx16
1 files changed, 11 insertions, 5 deletions
diff --git a/sc/inc/math.hxx b/sc/inc/math.hxx
index d97cdf14dae3..2740d76665c1 100644
--- a/sc/inc/math.hxx
+++ b/sc/inc/math.hxx
@@ -49,12 +49,18 @@ inline double div( const double& fNumerator, const double& fDenominator )
*/
inline double divide( const double& fNumerator, const double& fDenominator )
{
- if (fDenominator == 0.0) {
- if (std::isfinite(fNumerator) && fNumerator != 0.0) {
- return std::copysign( std::numeric_limits<double>::infinity(), fNumerator);
- } else {
- return std::numeric_limits<double>::quiet_NaN();
+ if (fDenominator == 0.0)
+ {
+ double fVal;
+ if (rtl::math::isFinite( fNumerator) && fNumerator != 0.0)
+ {
+ rtl::math::setInf( &fVal, rtl::math::isSignBitSet( fNumerator));
}
+ else
+ {
+ rtl::math::setNan( &fVal);
+ }
+ return fVal;
}
return fNumerator / fDenominator;
}