tdf#130975 replace `rtl::math::isNan` with `std::isnan`.

Change-Id: I5d53e6369d35093445b2efd8936bbf8c6775ff47
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90451
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 4850f33..68a1420 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -531,8 +531,8 @@ void Chart2ImportTest::testDOCXChartEmptySeries()
    CPPUNIT_ASSERT_EQUAL(2.4, aValues[1][0]);
    CPPUNIT_ASSERT_EQUAL(4.4, aValues[1][1]);
    //test the third series (empty) values
    CPPUNIT_ASSERT(rtl::math::isNan(aValues[2][0]));
    CPPUNIT_ASSERT(rtl::math::isNan(aValues[2][1]));
    CPPUNIT_ASSERT(std::isnan(aValues[2][0]));
    CPPUNIT_ASSERT(std::isnan(aValues[2][1]));
}

void Chart2ImportTest::testDOCXChartValuesSize()
@@ -596,13 +596,13 @@ void Chart2ImportTest::testPPTXSparseChartSeries()

    std::vector<std::vector<double> > aValues = getDataSeriesYValuesFromChartType(xCT);
    CPPUNIT_ASSERT_EQUAL(size_t(2), aValues.size());
    CPPUNIT_ASSERT( rtl::math::isNan( aValues[0][0] ) );
    CPPUNIT_ASSERT( std::isnan( aValues[0][0] ) );
    CPPUNIT_ASSERT_EQUAL(2.5,  aValues[0][1]);
    CPPUNIT_ASSERT_EQUAL(3.5,  aValues[0][2]);
    CPPUNIT_ASSERT( rtl::math::isNan( aValues[0][3] ) );
    CPPUNIT_ASSERT( std::isnan( aValues[0][3] ) );
    CPPUNIT_ASSERT_EQUAL(-2.4, aValues[1][0]);
    CPPUNIT_ASSERT( rtl::math::isNan( aValues[1][1] ) );
    CPPUNIT_ASSERT( rtl::math::isNan( aValues[1][2] ) );
    CPPUNIT_ASSERT( std::isnan( aValues[1][1] ) );
    CPPUNIT_ASSERT( std::isnan( aValues[1][2] ) );
    CPPUNIT_ASSERT_EQUAL(-2.8, aValues[1][3]);
}

@@ -1633,17 +1633,17 @@ void Chart2ImportTest::testInternalDataProvider() {
    // Parse empty first and last
    xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{\"\";42;42;\"\"}");
    xSequence = xDataSeq->getData();
    CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[0].getValue())));
    CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[0].getValue())));
    CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[1]);
    CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[2]);
    CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[3].getValue())));
    CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[3].getValue())));

    // Parse empty middle
    xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"\";\"\";42}");
    xSequence = xDataSeq->getData();
    CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
    CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[1].getValue())) );
    CPPUNIT_ASSERT( rtl::math::isNan( *static_cast<const double*>(xSequence[2].getValue())) );
    CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[1].getValue())) );
    CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[2].getValue())) );
    CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[3]);

    // Parse mixed types, numeric only role
@@ -2277,10 +2277,10 @@ void Chart2ImportTest::testXaxisValues()
    Sequence<uno::Any> xSequence = xDataSeq->getData();
    // test X values
    CPPUNIT_ASSERT_EQUAL(uno::Any(0.04), xSequence[0]);
    CPPUNIT_ASSERT(rtl::math::isNan(*static_cast<const double*>(xSequence[1].getValue())));
    CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[1].getValue())));
    CPPUNIT_ASSERT_EQUAL(uno::Any(0.16), xSequence[2]);
    CPPUNIT_ASSERT_EQUAL(uno::Any(0.11), xSequence[3]);
    CPPUNIT_ASSERT(rtl::math::isNan(*static_cast<const double*>(xSequence[4].getValue())));
    CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[4].getValue())));
}

void Chart2ImportTest::testTdf123504()
diff --git a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx
index 7451469..48a448e 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx
@@ -76,7 +76,7 @@ uno::Sequence< uno::Sequence< double > > lcl_getDBL_MINInsteadNAN( const uno::Se
        {
            aRet[nOuter][nInner] = rData[nOuter][nInner];
            double& rValue = aRet[nOuter][nInner];
            if( ::rtl::math::isNan( rValue ) )
            if( std::isnan( rValue ) )
                rValue = DBL_MIN;
        }
    }
@@ -533,7 +533,7 @@ double SAL_CALL ChartDataWrapper::getNotANumber()
sal_Bool SAL_CALL ChartDataWrapper::isNotANumber( double nNumber )
{
    return nNumber == DBL_MIN
        || ::rtl::math::isNan( nNumber )
        || std::isnan( nNumber )
        || std::isinf( nNumber );
}

diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx
index 415a38b..5887d85 100644
--- a/chart2/source/controller/dialogs/DataBrowser.cxx
+++ b/chart2/source/controller/dialogs/DataBrowser.cxx
@@ -705,7 +705,7 @@ OUString DataBrowser::GetCellText( long nRow, sal_uInt16 nColumnId ) const
            double fData( m_apDataBrowserModel->getCellNumber( nColIndex, nRow ));
            Color nLabelColor;

            if( ! ::rtl::math::isNan( fData ) &&
            if( ! std::isnan( fData ) &&
                m_spNumberFormatterWrapper.get() )
            {
                bool bColorChanged = false;
@@ -723,7 +723,7 @@ OUString DataBrowser::GetCellText( long nRow, sal_uInt16 nColumnId ) const
                aResult = aText;
            else if( aAny>>=fDouble )
            {
                if( ! ::rtl::math::isNan( fDouble ) && m_spNumberFormatterWrapper.get() )
                if( ! std::isnan( fDouble ) && m_spNumberFormatterWrapper.get() )
                {
                    // If a numberformat was available here we could directly
                    // obtain the corresponding edit format in
@@ -1140,7 +1140,7 @@ void DataBrowser::InitController(
    {
        // treat invalid and empty text as Nan
        m_aNumberEditField->EnableNotANumber( true );
        if( ::rtl::math::isNan( GetCellNumber( nRow, nCol )))
        if( std::isnan( GetCellNumber( nRow, nCol )))
            m_aNumberEditField->SetTextValue( OUString());
        else
            m_aNumberEditField->SetValue( GetCellNumber( nRow, nCol ) );
diff --git a/chart2/source/inc/CommonFunctors.hxx b/chart2/source/inc/CommonFunctors.hxx
index d9daef1..10d32f5 100644
--- a/chart2/source/inc/CommonFunctors.hxx
+++ b/chart2/source/inc/CommonFunctors.hxx
@@ -69,7 +69,7 @@ struct OOO_DLLPUBLIC_CHARTTOOLS AnyToString
    {
        if( auto pDouble = o3tl::tryAccess<double>(rAny) )
        {
            if( ::rtl::math::isNan(*pDouble) )
            if( std::isnan(*pDouble) )
                return OUString();
            return ::rtl::math::doubleToUString(
                * pDouble,
diff --git a/chart2/source/inc/RegressionCalculationHelper.hxx b/chart2/source/inc/RegressionCalculationHelper.hxx
index bf99b5c..a5b2b3b 100644
--- a/chart2/source/inc/RegressionCalculationHelper.hxx
+++ b/chart2/source/inc/RegressionCalculationHelper.hxx
@@ -64,8 +64,8 @@ class isValid
{
public:
    bool operator()( double x, double y )
    { return ! ( ::rtl::math::isNan( x ) ||
                 ::rtl::math::isNan( y ) ||
    { return ! ( std::isnan( x ) ||
                 std::isnan( y ) ||
                 std::isinf( x ) ||
                 std::isinf( y ) );
    }
@@ -75,8 +75,8 @@ class isValidAndXPositive
{
public:
    bool operator()( double x, double y )
    { return ! ( ::rtl::math::isNan( x ) ||
                 ::rtl::math::isNan( y ) ||
    { return ! ( std::isnan( x ) ||
                 std::isnan( y ) ||
                 std::isinf( x ) ||
                 std::isinf( y ) ||
                 x <= 0.0 );
@@ -87,8 +87,8 @@ class isValidAndYPositive
{
public:
    bool operator()( double x, double y )
    { return ! ( ::rtl::math::isNan( x ) ||
                 ::rtl::math::isNan( y ) ||
    { return ! ( std::isnan( x ) ||
                 std::isnan( y ) ||
                 std::isinf( x ) ||
                 std::isinf( y ) ||
                 y <= 0.0 );
@@ -99,8 +99,8 @@ class isValidAndYNegative
{
public:
    bool operator()( double x, double y )
    { return ! ( ::rtl::math::isNan( x ) ||
                 ::rtl::math::isNan( y ) ||
    { return ! ( std::isnan( x ) ||
                 std::isnan( y ) ||
                 std::isinf( x ) ||
                 std::isinf( y ) ||
                 y >= 0.0 );
@@ -111,8 +111,8 @@ class isValidAndBothPositive
{
public:
    bool operator()( double x, double y )
    { return ! ( ::rtl::math::isNan( x ) ||
                 ::rtl::math::isNan( y ) ||
    { return ! ( std::isnan( x ) ||
                 std::isnan( y ) ||
                 std::isinf( x ) ||
                 std::isinf( y ) ||
                 x <= 0.0 ||
@@ -124,8 +124,8 @@ class isValidAndXPositiveAndYNegative
{
public:
    bool operator()( double x, double y )
    { return ! ( ::rtl::math::isNan( x ) ||
                 ::rtl::math::isNan( y ) ||
    { return ! ( std::isnan( x ) ||
                 std::isnan( y ) ||
                 std::isinf( x ) ||
                 std::isinf( y ) ||
                 x <= 0.0 ||
diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx
index 75d51c6..78c9cf5 100644
--- a/chart2/source/tools/AxisHelper.cxx
+++ b/chart2/source/tools/AxisHelper.cxx
@@ -214,7 +214,7 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis(
                                    sal_Int32 nCount = aCats.getLength();
                                    for( sal_Int32 i = 0; i < nCount; ++i )
                                    {
                                        if( (aCats[i]>>=fTest) && !::rtl::math::isNan(fTest) )
                                        if( (aCats[i]>>=fTest) && !std::isnan(fTest) )
                                        {
                                            bHasValidDoubles=true;
                                            break;
diff --git a/chart2/source/tools/ExplicitCategoriesProvider.cxx b/chart2/source/tools/ExplicitCategoriesProvider.cxx
index 845b55a..401d6eaa 100644
--- a/chart2/source/tools/ExplicitCategoriesProvider.cxx
+++ b/chart2/source/tools/ExplicitCategoriesProvider.cxx
@@ -192,7 +192,7 @@ void ExplicitCategoriesProvider::convertCategoryAnysToText( uno::Sequence< OUStr
            double fDouble = 0;
            if( aAny>>=fDouble )
            {
                if( !::rtl::math::isNan(fDouble) )
                if( !std::isnan(fDouble) )
                    aText = aNumberFormatterWrapper.getFormattedString(
                        nAxisNumberFormat, fDouble, nLabelColor, bColorChanged );
            }
@@ -438,7 +438,7 @@ static bool lcl_fillDateCategories( const uno::Reference< data::XDataSequence >&
                bool bContainsNan = false;
                if( (aAny>>=aTest) && aTest.isEmpty() ) //empty String
                    bContainsEmptyString = true;
                else if( (aAny>>=fTest) &&  ::rtl::math::isNan(fTest) )
                else if( (aAny>>=fTest) &&  std::isnan(fTest) )
                    bContainsNan = true;

                if( !bContainsEmptyString && !bContainsNan )
diff --git a/chart2/source/tools/ExponentialRegressionCurveCalculator.cxx b/chart2/source/tools/ExponentialRegressionCurveCalculator.cxx
index 2c2b813..600afa7 100644
--- a/chart2/source/tools/ExponentialRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/ExponentialRegressionCurveCalculator.cxx
@@ -115,8 +115,8 @@ double SAL_CALL ExponentialRegressionCurveCalculator::getCurveValue( double x )
    double fResult;
    ::rtl::math::setNan( & fResult );

    if( ! ( ::rtl::math::isNan( m_fLogSlope ) ||
            ::rtl::math::isNan( m_fLogIntercept )))
    if( ! ( std::isnan( m_fLogSlope ) ||
            std::isnan( m_fLogIntercept )))
    {
        fResult = m_fSign * exp(m_fLogIntercept + x * m_fLogSlope);
    }
diff --git a/chart2/source/tools/InternalDataProvider.cxx b/chart2/source/tools/InternalDataProvider.cxx
index a02c9e7..08d03b4 100644
--- a/chart2/source/tools/InternalDataProvider.cxx
+++ b/chart2/source/tools/InternalDataProvider.cxx
@@ -1485,7 +1485,7 @@ double SAL_CALL InternalDataProvider::getNotANumber()

sal_Bool SAL_CALL InternalDataProvider::isNotANumber( double nNumber )
{
    return ::rtl::math::isNan( nNumber )
    return std::isnan( nNumber )
        || std::isinf( nNumber );
}
// lang::XInitialization:
diff --git a/chart2/source/tools/LogarithmicRegressionCurveCalculator.cxx b/chart2/source/tools/LogarithmicRegressionCurveCalculator.cxx
index d164918..3c48641 100644
--- a/chart2/source/tools/LogarithmicRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/LogarithmicRegressionCurveCalculator.cxx
@@ -92,8 +92,8 @@ double SAL_CALL LogarithmicRegressionCurveCalculator::getCurveValue( double x )
    double fResult;
    ::rtl::math::setNan( & fResult );

    if( ! ( ::rtl::math::isNan( m_fSlope ) ||
            ::rtl::math::isNan( m_fIntercept )))
    if( ! ( std::isnan( m_fSlope ) ||
            std::isnan( m_fIntercept )))
    {
        fResult = m_fSlope * log( x ) + m_fIntercept;
    }
diff --git a/chart2/source/tools/MeanValueRegressionCurveCalculator.cxx b/chart2/source/tools/MeanValueRegressionCurveCalculator.cxx
index ad8c6dd..4fe6bea 100644
--- a/chart2/source/tools/MeanValueRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/MeanValueRegressionCurveCalculator.cxx
@@ -48,7 +48,7 @@ void SAL_CALL MeanValueRegressionCurveCalculator::recalculateRegression(

    for( sal_Int32 i = 0; i < nDataLength; ++i )
    {
        if( ::rtl::math::isNan( pY[i] ) ||
        if( std::isnan( pY[i] ) ||
            std::isinf( pY[i] ))
            --nMax;
        else
@@ -71,7 +71,7 @@ void SAL_CALL MeanValueRegressionCurveCalculator::recalculateRegression(
            double fErrorSum = 0.0;
            for( sal_Int32 i = 0; i < nDataLength; ++i )
            {
                if( !::rtl::math::isNan( pY[i] ) &&
                if( !std::isnan( pY[i] ) &&
                    !std::isinf( pY[i] ))
                {
                    double v = m_fMeanValue - pY[i];
diff --git a/chart2/source/tools/PotentialRegressionCurveCalculator.cxx b/chart2/source/tools/PotentialRegressionCurveCalculator.cxx
index abda608..5ced438 100644
--- a/chart2/source/tools/PotentialRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/PotentialRegressionCurveCalculator.cxx
@@ -104,8 +104,8 @@ double SAL_CALL PotentialRegressionCurveCalculator::getCurveValue( double x )
    double fResult;
    ::rtl::math::setNan( & fResult );

    if( ! ( ::rtl::math::isNan( m_fSlope ) ||
            ::rtl::math::isNan( m_fIntercept )))
    if( ! ( std::isnan( m_fSlope ) ||
            std::isnan( m_fIntercept )))
    {
        fResult = m_fIntercept * pow( x, m_fSlope );
    }
diff --git a/chart2/source/tools/Scaling.cxx b/chart2/source/tools/Scaling.cxx
index b8bed82..82ce814 100644
--- a/chart2/source/tools/Scaling.cxx
+++ b/chart2/source/tools/Scaling.cxx
@@ -58,7 +58,7 @@ LogarithmicScaling::~LogarithmicScaling()
double SAL_CALL LogarithmicScaling::doScaling( double value )
{
    double fResult;
    if( ::rtl::math::isNan( value ) || std::isinf( value ) )
    if( std::isnan( value ) || std::isinf( value ) )
        ::rtl::math::setNan( & fResult );
    else
        fResult = log( value ) / m_fLogOfBase;
@@ -107,7 +107,7 @@ ExponentialScaling::~ExponentialScaling()
double SAL_CALL ExponentialScaling::doScaling( double value )
{
    double fResult;
    if( ::rtl::math::isNan( value ) || std::isinf( value ) )
    if( std::isnan( value ) || std::isinf( value ) )
        ::rtl::math::setNan( & fResult );
    else
        fResult = pow( m_fBase, value );
@@ -155,7 +155,7 @@ LinearScaling::~LinearScaling()
double SAL_CALL LinearScaling::doScaling( double value )
{
    double fResult;
    if( ::rtl::math::isNan( value ) || std::isinf( value ) )
    if( std::isnan( value ) || std::isinf( value ) )
        ::rtl::math::setNan( & fResult );
    else
        fResult = m_fOffset + m_fSlope * value;
@@ -206,7 +206,7 @@ PowerScaling::~PowerScaling()
double SAL_CALL PowerScaling::doScaling( double value )
{
    double fResult;
    if( ::rtl::math::isNan( value ) || std::isinf( value ) )
    if( std::isnan( value ) || std::isinf( value ) )
        ::rtl::math::setNan( & fResult );
    else
        fResult = pow( value, m_fExponent );
diff --git a/chart2/source/tools/StatisticsHelper.cxx b/chart2/source/tools/StatisticsHelper.cxx
index 25e2743..f90edf2f 100644
--- a/chart2/source/tools/StatisticsHelper.cxx
+++ b/chart2/source/tools/StatisticsHelper.cxx
@@ -51,7 +51,7 @@ double lcl_getVariance( const Sequence< double > & rData, sal_Int32 & rOutValidC
    for( sal_Int32 i = 0; i < nCount; ++i )
    {
        const double fData = rData[i];
        if( ::rtl::math::isNan( fData ))
        if( std::isnan( fData ))
            --rOutValidCount;
        else
        {
@@ -173,7 +173,7 @@ double StatisticsHelper::getVariance(
double StatisticsHelper::getStandardDeviation( const Sequence< double > & rData )
{
    double fResult = getVariance( rData );
    if( ! ::rtl::math::isNan( fResult ))
    if( ! std::isnan( fResult ))
        fResult = sqrt( fResult );

    return fResult;
@@ -186,7 +186,7 @@ double StatisticsHelper::getStandardError( const Sequence< double > & rData )
    double fResult;

    if( nValCount == 0 ||
        ::rtl::math::isNan( fVar ))
        std::isnan( fVar ))
    {
        ::rtl::math::setNan( & fResult );
    }
diff --git a/chart2/source/view/axes/DateHelper.cxx b/chart2/source/view/axes/DateHelper.cxx
index 6006d3e..f705a73 100644
--- a/chart2/source/view/axes/DateHelper.cxx
+++ b/chart2/source/view/axes/DateHelper.cxx
@@ -68,7 +68,7 @@ bool DateHelper::IsLessThanOneYearAway( const Date& rD1, const Date& rD2 )

double DateHelper::RasterizeDateValue( double fValue, const Date& rNullDate, long TimeResolution )
{
    if (rtl::math::isNan(fValue))
    if (std::isnan(fValue))
        return fValue;

    Date aDate(rNullDate); aDate.AddDays(::rtl::math::approxFloor(fValue));
diff --git a/chart2/source/view/axes/DateScaling.cxx b/chart2/source/view/axes/DateScaling.cxx
index 8285600..292f24b 100644
--- a/chart2/source/view/axes/DateScaling.cxx
+++ b/chart2/source/view/axes/DateScaling.cxx
@@ -53,7 +53,7 @@ DateScaling::~DateScaling()
double SAL_CALL DateScaling::doScaling( double value )
{
    double fResult(value);
    if( ::rtl::math::isNan( value ) || std::isinf( value ) )
    if( std::isnan( value ) || std::isinf( value ) )
        ::rtl::math::setNan( & fResult );
    else
    {
@@ -129,7 +129,7 @@ InverseDateScaling::~InverseDateScaling()
double SAL_CALL InverseDateScaling::doScaling( double value )
{
    double fResult(value);
    if( ::rtl::math::isNan( value ) || std::isinf( value ) )
    if( std::isnan( value ) || std::isinf( value ) )
        ::rtl::math::setNan( & fResult );
    else
    {
diff --git a/chart2/source/view/axes/ScaleAutomatism.cxx b/chart2/source/view/axes/ScaleAutomatism.cxx
index b467af2..1adcfe64 100644
--- a/chart2/source/view/axes/ScaleAutomatism.cxx
+++ b/chart2/source/view/axes/ScaleAutomatism.cxx
@@ -119,9 +119,9 @@ void ScaleAutomatism::expandValueRange( double fMinimum, double fMaximum )
    // so they need to be reset tdf#96807
    if( (m_fValueMinimum == 0.0) && (m_fValueMaximum == 0.0) )
        resetValueRange();
    if( (fMinimum < m_fValueMinimum) || ::rtl::math::isNan( m_fValueMinimum ) )
    if( (fMinimum < m_fValueMinimum) || std::isnan( m_fValueMinimum ) )
        m_fValueMinimum = fMinimum;
    if( (fMaximum > m_fValueMaximum) || ::rtl::math::isNan( m_fValueMaximum ) )
    if( (fMaximum > m_fValueMaximum) || std::isnan( m_fValueMaximum ) )
        m_fValueMaximum = fMaximum;
}

@@ -174,7 +174,7 @@ void ScaleAutomatism::calculateExplicitScaleAndIncrement(
    {
        if( m_aSourceScale.AxisType==AxisType::PERCENT )
            rExplicitScale.Minimum = 0.0;
        else if( ::rtl::math::isNan( m_fValueMinimum ) )
        else if( std::isnan( m_fValueMinimum ) )
        {
            if( m_aSourceScale.AxisType==AxisType::DATE )
                rExplicitScale.Minimum = 36526.0; //1.1.2000
@@ -190,7 +190,7 @@ void ScaleAutomatism::calculateExplicitScaleAndIncrement(
    {
        if( m_aSourceScale.AxisType==AxisType::PERCENT )
            rExplicitScale.Maximum = 1.0;
        else if( ::rtl::math::isNan( m_fValueMaximum ) )
        else if( std::isnan( m_fValueMaximum ) )
        {
            if( m_aSourceScale.AxisType==AxisType::DATE )
                rExplicitScale.Maximum = 40179.0; //1.1.2010
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 52dc4bd..dbf360a 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -1957,7 +1957,7 @@ void VCartesianAxis::createShapes()
        if( !AxisHelper::isAxisPositioningEnabled() )
        {
            double fExtraLineCrossesOtherAxis = getExtraLineIntersectionValue();
            if (!rtl::math::isNan(fExtraLineCrossesOtherAxis))
            if (!std::isnan(fExtraLineCrossesOtherAxis))
            {
                B2DVector aStart, aEnd;
                AxisLabelAlignment aLabelAlign = m_aAxisProperties.maLabelAlignment;
diff --git a/chart2/source/view/charttypes/AreaChart.cxx b/chart2/source/view/charttypes/AreaChart.cxx
index 1ec356f..74e8525 100644
--- a/chart2/source/view/charttypes/AreaChart.cxx
+++ b/chart2/source/view/charttypes/AreaChart.cxx
@@ -668,7 +668,7 @@ void AreaChart::createShapes()
                    m_pPosHelper = &getPlottingPositionHelper(nAttachedAxisIndex);

                    double fAdd = pSeries->getYValue( nIndex );
                    if( !::rtl::math::isNan(fAdd) && !std::isinf(fAdd) )
                    if( !std::isnan(fAdd) && !std::isinf(fAdd) )
                        rLogicYSumMap[nAttachedAxisIndex] += fabs( fAdd );
                }
            }
@@ -712,7 +712,7 @@ void AreaChart::createShapes()
                    double fLogicX = pSeries->getXValue(nIndex);
                    if (bDateCategory)
                    {
                        if (rtl::math::isNan(fLogicX))
                        if (std::isnan(fLogicX))
                            continue;

                        fLogicX = DateHelper::RasterizeDateValue( fLogicX, m_aNullDate, m_nTimeResolution );
@@ -729,9 +729,9 @@ void AreaChart::createShapes()
                        fLogicY = fabs( fLogicY )/rLogicYSumMap[nAttachedAxisIndex];
                    }

                    if(    ::rtl::math::isNan(fLogicX) || std::isinf(fLogicX)
                            || ::rtl::math::isNan(fLogicY) || std::isinf(fLogicY)
                            || ::rtl::math::isNan(fLogicZ) || std::isinf(fLogicZ) )
                    if(    std::isnan(fLogicX) || std::isinf(fLogicX)
                            || std::isnan(fLogicY) || std::isinf(fLogicY)
                            || std::isnan(fLogicZ) || std::isinf(fLogicZ) )
                    {
                        if( pSeries->getMissingValueTreatment() == css::chart::MissingValueTreatment::LEAVE_GAP )
                        {
diff --git a/chart2/source/view/charttypes/BarChart.cxx b/chart2/source/view/charttypes/BarChart.cxx
index e50fbe3..88e8f6e 100644
--- a/chart2/source/view/charttypes/BarChart.cxx
+++ b/chart2/source/view/charttypes/BarChart.cxx
@@ -537,9 +537,9 @@ void BarChart::createShapes()
                rXSlot.calculateYMinAndMaxForCategory( nPointIndex
                    , isSeparateStackingForDifferentSigns( 1 ), fMinimumY, fMaximumY, nAttachedAxisIndex );

                if( !::rtl::math::isNan( fMaximumY ) && fMaximumY > 0)
                if( !std::isnan( fMaximumY ) && fMaximumY > 0)
                    aLogicYSumMap[nAttachedAxisIndex] += fMaximumY;
                if( !::rtl::math::isNan( fMinimumY ) && fMinimumY < 0)
                if( !std::isnan( fMinimumY ) && fMinimumY < 0)
                    aLogicYSumMap[nAttachedAxisIndex] += fabs(fMinimumY);
            }
        }
@@ -571,11 +571,11 @@ void BarChart::createShapes()
                        , isSeparateStackingForDifferentSigns( 1 ), fMinimumY, fMaximumY, nAttachedAxisIndex );

                double fLogicPositiveYSum = 0.0;
                if( !::rtl::math::isNan( fMaximumY ) )
                if( !std::isnan( fMaximumY ) )
                    fLogicPositiveYSum = fMaximumY;

                double fLogicNegativeYSum = 0.0;
                if( !::rtl::math::isNan( fMinimumY ) )
                if( !std::isnan( fMinimumY ) )
                    fLogicNegativeYSum = fMinimumY;

                if( pPosHelper->isPercentY() )
@@ -646,7 +646,7 @@ void BarChart::createShapes()
                    //collect data point information (logic coordinates, style ):
                    double fUnscaledLogicX = pSeries->getXValue( nPointIndex );
                    fUnscaledLogicX = DateHelper::RasterizeDateValue( fUnscaledLogicX, m_aNullDate, m_nTimeResolution );
                    if(rtl::math::isNan(fUnscaledLogicX))
                    if(std::isnan(fUnscaledLogicX))
                        continue;//point not visible
                    if(fUnscaledLogicX<pPosHelper->getLogicMinX())
                        continue;//point not visible
@@ -657,7 +657,7 @@ void BarChart::createShapes()
                    double fLogicX = pPosHelper->getScaledSlotPos( fUnscaledLogicX, fSlotX );

                    double fLogicBarHeight = pSeries->getYValue( nPointIndex );
                    if( ::rtl::math::isNan( fLogicBarHeight )) //no value at this category
                    if( std::isnan( fLogicBarHeight )) //no value at this category
                        continue;

                    double fLogicValueForLabeDisplay = fLogicBarHeight;
@@ -867,7 +867,7 @@ void BarChart::createShapes()
                            if(bHasFillColorMapping)
                            {
                                double nPropVal = pSeries->getValueByProperty(nPointIndex, "FillColor");
                                if(!rtl::math::isNan(nPropVal))
                                if(!std::isnan(nPropVal))
                                {
                                    uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY_THROW );
                                    xProps->setPropertyValue("FillColor", uno::Any(static_cast<sal_Int32>(nPropVal)));
diff --git a/chart2/source/view/charttypes/BubbleChart.cxx b/chart2/source/view/charttypes/BubbleChart.cxx
index e664d32..395814c 100644
--- a/chart2/source/view/charttypes/BubbleChart.cxx
+++ b/chart2/source/view/charttypes/BubbleChart.cxx
@@ -102,7 +102,7 @@ drawing::Direction3D BubbleChart::transformToScreenBubbleSize( double fLogicSize
{
    drawing::Direction3D aRet(0,0,0);

    if( ::rtl::math::isNan(fLogicSize) || std::isinf(fLogicSize) )
    if( std::isnan(fLogicSize) || std::isinf(fLogicSize) )
        return aRet;

    double fMaxSize = m_fMaxLogicBubbleSize;
@@ -224,11 +224,11 @@ void BubbleChart::createShapes()
                    if( fBubbleSize<0.0 )
                        continue;

                    if( fBubbleSize == 0.0 || ::rtl::math::isNan(fBubbleSize) )
                    if( fBubbleSize == 0.0 || std::isnan(fBubbleSize) )
                        continue;

                    if(    ::rtl::math::isNan(fLogicX) || std::isinf(fLogicX)
                        || ::rtl::math::isNan(fLogicY) || std::isinf(fLogicY) )
                    if(    std::isnan(fLogicX) || std::isinf(fLogicX)
                        || std::isnan(fLogicY) || std::isinf(fLogicY) )
                        continue;

                    bool bIsVisible = rPosHelper.isLogicVisible(fLogicX, fLogicY, fLogicZ);
@@ -282,7 +282,7 @@ void BubbleChart::createShapes()
                        if(bHasFillColorMapping)
                        {
                            double nPropVal = pSeries->getValueByProperty(nIndex, "FillColor");
                            if(!rtl::math::isNan(nPropVal))
                            if(!std::isnan(nPropVal))
                            {
                                uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY_THROW );
                                xProps->setPropertyValue("FillColor", uno::Any(static_cast<sal_Int32>(nPropVal)));
@@ -291,7 +291,7 @@ void BubbleChart::createShapes()
                        if(bHasBorderColorMapping)
                        {
                            double nPropVal = pSeries->getValueByProperty(nIndex, "LineColor");
                            if(!rtl::math::isNan(nPropVal))
                            if(!std::isnan(nPropVal))
                            {
                                uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY_THROW );
                                xProps->setPropertyValue("LineColor", uno::Any(static_cast<sal_Int32>(nPropVal)));
diff --git a/chart2/source/view/charttypes/NetChart.cxx b/chart2/source/view/charttypes/NetChart.cxx
index 6683928..3fea8f9 100644
--- a/chart2/source/view/charttypes/NetChart.cxx
+++ b/chart2/source/view/charttypes/NetChart.cxx
@@ -373,7 +373,7 @@ void NetChart::createShapes()
                    m_pPosHelper = &getPlottingPositionHelper(nAttachedAxisIndex);

                    double fAdd = pSeries->getYValue( nIndex );
                    if( !::rtl::math::isNan(fAdd) && !std::isinf(fAdd) )
                    if( !std::isnan(fAdd) && !std::isinf(fAdd) )
                        aLogicYSumMap[nAttachedAxisIndex] += fabs( fAdd );
                }
            }
@@ -411,7 +411,7 @@ void NetChart::createShapes()
                        fLogicX = DateHelper::RasterizeDateValue( fLogicX, m_aNullDate, m_nTimeResolution );
                    double fLogicY = pSeries->getYValue(nIndex);

                    if( m_bArea && ( ::rtl::math::isNan(fLogicY) || std::isinf(fLogicY) ) )
                    if( m_bArea && ( std::isnan(fLogicY) || std::isinf(fLogicY) ) )
                    {
                        if( pSeries->getMissingValueTreatment() == css::chart::MissingValueTreatment::LEAVE_GAP )
                        {
@@ -431,9 +431,9 @@ void NetChart::createShapes()
                        fLogicY = fabs( fLogicY )/aLogicYSumMap[nAttachedAxisIndex];
                    }

                    if(    ::rtl::math::isNan(fLogicX) || std::isinf(fLogicX)
                        || ::rtl::math::isNan(fLogicY) || std::isinf(fLogicY)
                        || ::rtl::math::isNan(fLogicZ) || std::isinf(fLogicZ) )
                    if(    std::isnan(fLogicX) || std::isinf(fLogicX)
                        || std::isnan(fLogicY) || std::isinf(fLogicY)
                        || std::isnan(fLogicZ) || std::isinf(fLogicZ) )
                    {
                        if( pSeries->getMissingValueTreatment() == css::chart::MissingValueTreatment::LEAVE_GAP )
                        {
diff --git a/chart2/source/view/charttypes/PieChart.cxx b/chart2/source/view/charttypes/PieChart.cxx
index 94037cd..0214d0f 100644
--- a/chart2/source/view/charttypes/PieChart.cxx
+++ b/chart2/source/view/charttypes/PieChart.cxx
@@ -399,7 +399,7 @@ double PieChart::getMinimumX()
}
double PieChart::getMaxOffset()
{
    if (!::rtl::math::isNan(m_fMaxOffset))
    if (!std::isnan(m_fMaxOffset))
        // Value already cached.  Use it.
        return m_fMaxOffset;

@@ -592,7 +592,7 @@ void PieChart::createShapes()
            {
                //@todo warn somehow that negative values are treated as positive
            }
            if( ::rtl::math::isNan(fY) )
            if( std::isnan(fY) )
                continue;
            aParam.mfLogicYSum += fabs(fY);
        }
@@ -624,7 +624,7 @@ void PieChart::createShapes()
            uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = getSeriesGroupShape(pSeries, xSeriesTarget);
            ///collect data point information (logic coordinates, style ):
            double fLogicYValue = fabs(pSeries->getYValue( nPointIndex ));
            if( ::rtl::math::isNan(fLogicYValue) )
            if( std::isnan(fLogicYValue) )
                continue;
            if(fLogicYValue==0.0)//@todo: continue also if the resolution is too small
                continue;
@@ -678,7 +678,7 @@ void PieChart::createShapes()
                if(bHasFillColorMapping)
                {
                    double nPropVal = pSeries->getValueByProperty(nPointIndex, "FillColor");
                    if(!rtl::math::isNan(nPropVal))
                    if(!std::isnan(nPropVal))
                    {
                        uno::Reference< beans::XPropertySet > xProps( xPointShape, uno::UNO_QUERY_THROW );
                        xProps->setPropertyValue("FillColor", uno::Any(static_cast<sal_Int32>( nPropVal)));
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index 27c5fe2..492dcc8 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -842,8 +842,8 @@ double lcl_getErrorBarLogicLength(
                                             : OUString("NegativeError") ) >>= fPercent )
                {
                    if( nIndex >=0 && nIndex < rData.getLength() &&
                        ! ::rtl::math::isNan( rData[nIndex] ) &&
                        ! ::rtl::math::isNan( fPercent ))
                        ! std::isnan( rData[nIndex] ) &&
                        ! std::isnan( fPercent ))
                    {
                        fResult = rData[nIndex] * fPercent / 100.0;
                    }
@@ -1427,9 +1427,9 @@ void VSeriesPlotter::createRegressionCurvesShapes( VDataSeries const & rVDataSer
            if(!bAverageLine)
                m_pPosHelper->doLogicScaling( &fLogicX, &fLogicY, &fLogicZ );

            if(!rtl::math::isNan(fLogicX) && !std::isinf(fLogicX) &&
               !rtl::math::isNan(fLogicY) && !std::isinf(fLogicY) &&
               !rtl::math::isNan(fLogicZ) && !std::isinf(fLogicZ) )
            if(!std::isnan(fLogicX) && !std::isinf(fLogicX) &&
               !std::isnan(fLogicY) && !std::isinf(fLogicY) &&
               !std::isnan(fLogicZ) && !std::isinf(fLogicZ) )
            {
                aRegressionPoly.SequenceX[0][nRealPointCount] = fLogicX;
                aRegressionPoly.SequenceY[0][nRealPointCount] = fLogicY;
@@ -1661,7 +1661,7 @@ long VSeriesPlotter::calculateTimeResolutionOnXAxis()

    std::vector<double>::const_iterator aIt = rDateCategories.begin(), aEnd = rDateCategories.end();

    aIt = std::find_if(aIt, aEnd, [](const double& rDateCategory) { return !rtl::math::isNan(rDateCategory); });
    aIt = std::find_if(aIt, aEnd, [](const double& rDateCategory) { return !std::isnan(rDateCategory); });
    if (aIt == aEnd)
        return nRet;

@@ -1673,7 +1673,7 @@ long VSeriesPlotter::calculateTimeResolutionOnXAxis()
    ++aIt;
    for(;aIt!=aEnd;++aIt)
    {
        if (rtl::math::isNan(*aIt))
        if (std::isnan(*aIt))
            continue;

        Date aCurrent(aNullDate); aCurrent.AddDays(rtl::math::approxFloor(*aIt));
@@ -1836,9 +1836,9 @@ void VSeriesPlotter::getMinimumAndMaximiumX( double& rfMinimum, double& rfMaximu
        {
            double fLocalMinimum, fLocalMaximum;
            XSlot.getMinimumAndMaximiumX( fLocalMinimum, fLocalMaximum );
            if( !::rtl::math::isNan(fLocalMinimum) && fLocalMinimum< rfMinimum )
            if( !std::isnan(fLocalMinimum) && fLocalMinimum< rfMinimum )
                rfMinimum = fLocalMinimum;
            if( !::rtl::math::isNan(fLocalMaximum) && fLocalMaximum> rfMaximum )
            if( !std::isnan(fLocalMaximum) && fLocalMaximum> rfMaximum )
                rfMaximum = fLocalMaximum;
        }
    }
@@ -1859,9 +1859,9 @@ void VSeriesPlotter::getMinimumAndMaximiumYInContinuousXRange( double& rfMinY, d
        {
            double fLocalMinimum, fLocalMaximum;
            XSlot.getMinimumAndMaximiumYInContinuousXRange( fLocalMinimum, fLocalMaximum, fMinX, fMaxX, nAxisIndex );
            if( !::rtl::math::isNan(fLocalMinimum) && fLocalMinimum< rfMinY )
            if( !std::isnan(fLocalMinimum) && fLocalMinimum< rfMinY )
                rfMinY = fLocalMinimum;
            if( !::rtl::math::isNan(fLocalMaximum) && fLocalMaximum> rfMaxY )
            if( !std::isnan(fLocalMaximum) && fLocalMaximum> rfMaxY )
                rfMaxY = fLocalMaximum;
        }
    }
@@ -1945,7 +1945,7 @@ void VDataSeriesGroup::getMinimumAndMaximiumX( double& rfMinimum, double& rfMaxi
        for(sal_Int32 nN=0;nN<nPointCount;nN++)
        {
            double fX = pSeries->getXValue( nN );
            if( ::rtl::math::isNan(fX) )
            if( std::isnan(fX) )
                continue;
            if(rfMaximum<fX)
                rfMaximum=fX;
@@ -2114,7 +2114,7 @@ void VDataSeriesGroup::getMinimumAndMaximiumYInContinuousXRange(
                continue;

            double fX = pSeries->getXValue(i);
            if (rtl::math::isNan(fX))
            if (std::isnan(fX))
                continue;

            if (fX < fMinX || fX > fMaxX)
@@ -2122,7 +2122,7 @@ void VDataSeriesGroup::getMinimumAndMaximiumYInContinuousXRange(
                continue;

            double fY = pSeries->getYValue(i);
            if (::rtl::math::isNan(fY))
            if (std::isnan(fY))
                continue;

            aRangeCalc.setValue(fX, fY);
@@ -2174,21 +2174,21 @@ void VDataSeriesGroup::calculateYMinAndMaxForCategory( sal_Int32 nCategoryIndex

            if( fValueMaxY >= 0 )
            {
                if( ::rtl::math::isNan( fPositiveSum ) )
                if( std::isnan( fPositiveSum ) )
                    fPositiveSum = fFirstPositiveY = fValueMaxY;
                else
                    fPositiveSum += fValueMaxY;
            }
            if( fValueMinY < 0 )
            {
                if(::rtl::math::isNan( fNegativeSum ))
                if(std::isnan( fNegativeSum ))
                    fNegativeSum = fFirstNegativeY = fValueMinY;
                else
                    fNegativeSum += fValueMinY;
            }
        }
        rfMinimumY = ::rtl::math::isNan( fNegativeSum ) ? fFirstPositiveY : fNegativeSum;
        rfMaximumY = ::rtl::math::isNan( fPositiveSum ) ? fFirstNegativeY : fPositiveSum;
        rfMinimumY = std::isnan( fNegativeSum ) ? fFirstPositiveY : fNegativeSum;
        rfMaximumY = std::isnan( fPositiveSum ) ? fFirstNegativeY : fPositiveSum;
    }
    else
    {
@@ -2200,7 +2200,7 @@ void VDataSeriesGroup::calculateYMinAndMaxForCategory( sal_Int32 nCategoryIndex
            double fValueMinY = pSeries->getMinimumofAllDifferentYValues( nCategoryIndex );
            double fValueMaxY = pSeries->getMaximumofAllDifferentYValues( nCategoryIndex );

            if( ::rtl::math::isNan( fTotalSum ) )
            if( std::isnan( fTotalSum ) )
            {
                rfMinimumY = fValueMinY;
                rfMaximumY = fTotalSum = fValueMaxY;
diff --git a/chart2/source/view/main/PlotterBase.cxx b/chart2/source/view/main/PlotterBase.cxx
index c5cd481..6479668 100644
--- a/chart2/source/view/main/PlotterBase.cxx
+++ b/chart2/source/view/main/PlotterBase.cxx
@@ -95,11 +95,11 @@ uno::Reference< drawing::XShapes > PlotterBase::createGroupShape(

bool PlotterBase::isValidPosition( const drawing::Position3D& rPos )
{
    if( ::rtl::math::isNan(rPos.PositionX) )
    if( std::isnan(rPos.PositionX) )
        return false;
    if( ::rtl::math::isNan(rPos.PositionY) )
    if( std::isnan(rPos.PositionY) )
        return false;
    if( ::rtl::math::isNan(rPos.PositionZ) )
    if( std::isnan(rPos.PositionZ) )
        return false;
    if( std::isinf(rPos.PositionX) )
        return false;
diff --git a/chart2/source/view/main/VDataSeries.cxx b/chart2/source/view/main/VDataSeries.cxx
index 8b3a9c1..b6c4adc 100644
--- a/chart2/source/view/main/VDataSeries.cxx
+++ b/chart2/source/view/main/VDataSeries.cxx
@@ -116,7 +116,7 @@ void lcl_clearIfNoValuesButTextIsContained( VDataSequence& rData, const uno::Ref
    sal_Int32 nCount = rData.Doubles.getLength();
    for( sal_Int32 i = 0; i < nCount; ++i )
    {
        if( !::rtl::math::isNan( rData.Doubles[i] ) )
        if( !std::isnan( rData.Doubles[i] ) )
            return;
    }
    //no double value is contained
@@ -137,7 +137,7 @@ void lcl_clearIfNoValuesButTextIsContained( VDataSequence& rData, const uno::Ref
void lcl_maybeReplaceNanWithZero( double& rfValue, sal_Int32 nMissingValueTreatment )
{
    if( nMissingValueTreatment == css::chart::MissingValueTreatment::USE_ZERO
        && (::rtl::math::isNan(rfValue) || std::isinf(rfValue)) )
        && (std::isnan(rfValue) || std::isinf(rfValue)) )
            rfValue = 0.0;
}

@@ -501,7 +501,7 @@ void VDataSeries::getMinMaxXValue(double& fMin, double& fMax) const
    if(aValuesX.hasElements())
    {
        sal_Int32 i = 0;
        while ( i < aValuesX.getLength() && ::rtl::math::isNan(aValuesX[i]) )
        while ( i < aValuesX.getLength() && std::isnan(aValuesX[i]) )
            i++;
        if ( i < aValuesX.getLength() )
            fMax = fMin = aValuesX[i++];
@@ -770,7 +770,7 @@ uno::Sequence< double > const & VDataSeries::getAllY() const

double VDataSeries::getXMeanValue() const
{
    if( ::rtl::math::isNan( m_fXMeanValue ) )
    if( std::isnan( m_fXMeanValue ) )
    {
        uno::Reference< XRegressionCurveCalculator > xCalculator( RegressionCurveHelper::createRegressionCurveCalculatorByServiceName( "com.sun.star.chart2.MeanValueRegressionCurve" ) );
        uno::Sequence< double > aXValuesDummy;
@@ -782,7 +782,7 @@ double VDataSeries::getXMeanValue() const

double VDataSeries::getYMeanValue() const
{
    if( ::rtl::math::isNan( m_fYMeanValue ) )
    if( std::isnan( m_fYMeanValue ) )
    {
        uno::Reference< XRegressionCurveCalculator > xCalculator(
            RegressionCurveHelper::createRegressionCurveCalculatorByServiceName("com.sun.star.chart2.MeanValueRegressionCurve"));
diff --git a/comphelper/source/container/enumerablemap.cxx b/comphelper/source/container/enumerablemap.cxx
index f9e5cfa..9c61964 100644
--- a/comphelper/source/container/enumerablemap.cxx
+++ b/comphelper/source/container/enumerablemap.cxx
@@ -471,7 +471,7 @@ namespace comphelper
        {
            double nValue(0);
            if ( _keyOrValue >>= nValue )
                if ( ::rtl::math::isNan( nValue ) )
                if ( std::isnan( nValue ) )
                    throw IllegalArgumentException(
                        "NaN (not-a-number) not supported by this implementation.",
                        *const_cast< EnumerableMap* >( this ), 0 );
diff --git a/connectivity/source/drivers/file/FNumericFunctions.cxx b/connectivity/source/drivers/file/FNumericFunctions.cxx
index a71abc3..d2188cb 100644
--- a/connectivity/source/drivers/file/FNumericFunctions.cxx
+++ b/connectivity/source/drivers/file/FNumericFunctions.cxx
@@ -108,7 +108,7 @@ ORowSetValue OOp_Ln::operate(const ORowSetValue& lhs) const

    double nVal(lhs);
    nVal = log(nVal);
    if ( rtl::math::isNan(nVal) )
    if ( std::isnan(nVal) )
        return ORowSetValue();
    return nVal;
}
@@ -124,7 +124,7 @@ ORowSetValue OOp_Log::operate(const std::vector<ORowSetValue>& lhs) const
    if ( nSize == 2 && !lhs[0].isNull() )
        nVal /= log(static_cast<double>(lhs[0]));

    if ( rtl::math::isNan(nVal) )
    if ( std::isnan(nVal) )
        return ORowSetValue();
    return nVal;
}
@@ -135,7 +135,7 @@ ORowSetValue OOp_Log10::operate(const ORowSetValue& lhs) const
        return lhs;

    double nVal = log(static_cast<double>(lhs));
    if ( rtl::math::isNan(nVal) )
    if ( std::isnan(nVal) )
        return ORowSetValue();
    nVal /= log(10.0);
    return nVal;
@@ -155,7 +155,7 @@ ORowSetValue OOp_Sqrt::operate(const ORowSetValue& lhs) const
        return lhs;

    double nVal = sqrt(static_cast<double>(lhs));
    if ( rtl::math::isNan(nVal) )
    if ( std::isnan(nVal) )
        return ORowSetValue();
    return nVal;
}
diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
index d5678db..83fdf73 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -269,7 +269,7 @@ sal_uInt32 TIFFReader::ReadIntData()
        break;
        case 11 :
            pTIFF->ReadFloat( nFLOAT );
            if (!rtl::math::isNan(nFLOAT) && nFLOAT > SAL_MIN_INT32 - 1.0
            if (!std::isnan(nFLOAT) && nFLOAT > SAL_MIN_INT32 - 1.0
                && nFLOAT < SAL_MAX_INT32 + 1.0)
            {
                nUINT32a = static_cast<sal_Int32>(nFLOAT);
@@ -281,7 +281,7 @@ sal_uInt32 TIFFReader::ReadIntData()
        break;
        case 12 :
            pTIFF->ReadDouble( nDOUBLE );
            if (!rtl::math::isNan(nDOUBLE) && nDOUBLE > SAL_MIN_INT32 - 1.0
            if (!std::isnan(nDOUBLE) && nDOUBLE > SAL_MIN_INT32 - 1.0
                && nDOUBLE < SAL_MAX_INT32 + 1.0)
            {
                nUINT32a = static_cast<sal_Int32>(nDOUBLE);
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 1d0aed9..3e0ed3f 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -2526,7 +2526,7 @@ void ChartExport::exportSeriesValues( const Reference< chart2::data::XDataSequen

    for( sal_Int32 i = 0; i < ptCount; i++ )
    {
        if (!rtl::math::isNan(aValues[i]))
        if (!std::isnan(aValues[i]))
        {
            pFS->startElement(FSNS(XML_c, XML_pt), XML_idx, OString::number(i));
            pFS->startElement(FSNS(XML_c, XML_v));
diff --git a/sal/qa/rtl/math/test-rtl-math.cxx b/sal/qa/rtl/math/test-rtl-math.cxx
index df89963..4843d66 100644
--- a/sal/qa/rtl/math/test-rtl-math.cxx
+++ b/sal/qa/rtl/math/test-rtl-math.cxx
@@ -65,14 +65,14 @@ public:
                '.', ',', &status, &end);
        CPPUNIT_ASSERT_EQUAL(rtl_math_ConversionStatus_Ok, status);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(3), end);
        CPPUNIT_ASSERT_EQUAL(true, rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));

        res = rtl::math::stringToDouble(
                OUString("NaN1.23"),
                '.', ',', &status, &end);
        CPPUNIT_ASSERT_EQUAL(rtl_math_ConversionStatus_Ok, status);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(3), end);
        CPPUNIT_ASSERT_EQUAL(true, rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));

        res = rtl::math::stringToDouble(
                OUString("INF"),
@@ -366,7 +366,7 @@ public:
        CPPUNIT_ASSERT_EQUAL(-1.0,res);
        rtl::math::setNan( &x);
        res = rtl::math::erf(x);
        CPPUNIT_ASSERT_EQUAL(true,rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
        x = 3.0;
        res = rtl::math::erf(-x);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( -rtl::math::erf(x), res, 1E-12);
@@ -385,7 +385,7 @@ public:
        CPPUNIT_ASSERT_EQUAL(2.0,res);
        rtl::math::setNan( &x);
        res = rtl::math::erfc(x);
        CPPUNIT_ASSERT_EQUAL(true,rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
        x = 3.0;
        res = rtl::math::erfc(-x);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 2.0 - rtl::math::erfc(x), res, 1E-12);
@@ -408,7 +408,7 @@ public:
        CPPUNIT_ASSERT_EQUAL(-1.0,res);
        rtl::math::setNan( &x);
        res = rtl::math::expm1(x);
        CPPUNIT_ASSERT_EQUAL(true,rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
    }

    void test_log1p() {
@@ -428,26 +428,26 @@ public:
        CPPUNIT_ASSERT_EQUAL(true, std::isinf(res) && std::signbit(res));
        x = -1.1;
        res = rtl::math::log1p(x);
        CPPUNIT_ASSERT_EQUAL(true, rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
        rtl::math::setInf( &x, true);
        res = rtl::math::log1p(x);
        CPPUNIT_ASSERT_EQUAL(true, rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
        rtl::math::setNan( &x);
        res = rtl::math::log1p(x);
        CPPUNIT_ASSERT_EQUAL(true,rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
    }

    void test_acosh() {
        double res;

        res = rtl::math::acosh(-1.0); // NaN
        CPPUNIT_ASSERT(rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));

        res = rtl::math::acosh(0.0); // NaN
        CPPUNIT_ASSERT(rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));

        res = rtl::math::acosh(0.5); // NaN
        CPPUNIT_ASSERT(rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));

        CPPUNIT_ASSERT_EQUAL(0.0, rtl::math::acosh(1.0));

@@ -488,7 +488,7 @@ public:
        double res;

        res = rtl::math::atanh(-2.0); // NaN
        CPPUNIT_ASSERT(rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));

        res = rtl::math::atanh(-1.0); // -Inf
        CPPUNIT_ASSERT(std::signbit(res));
@@ -501,7 +501,7 @@ public:
        CPPUNIT_ASSERT(std::isinf(res));

        res = rtl::math::atanh(2.0); // NaN
        CPPUNIT_ASSERT(rtl::math::isNan(res));
        CPPUNIT_ASSERT(std::isnan(res));
    }

    CPPUNIT_TEST_SUITE(Test);
diff --git a/sal/rtl/math.cxx b/sal/rtl/math.cxx
index d35156a..135035e 100644
--- a/sal/rtl/math.cxx
+++ b/sal/rtl/math.cxx
@@ -241,7 +241,7 @@ void doubleToString(typename T::String ** pResult,
    if (bSign)
        fValue = -fValue;

    if (rtl::math::isNan(fValue))
    if (std::isnan(fValue))
    {
        // #i112652# XMLSchema-2
        sal_Int32 nCapacity = RTL_CONSTASCII_LENGTH("NaN");
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 9b6f41a..964247b 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -1851,8 +1851,8 @@ void Test::testMatrix()
        CPPUNIT_ASSERT_EQUAL(SAL_N_ELEMENTS(pChecks), aDoubles.size());
        for (size_t i = 0, n = aDoubles.size(); i < n; ++i)
        {
            if (rtl::math::isNan(pChecks[i]))
                CPPUNIT_ASSERT_MESSAGE("NaN is expected, but it's not.", rtl::math::isNan(aDoubles[i]));
            if (std::isnan(pChecks[i]))
                CPPUNIT_ASSERT_MESSAGE("NaN is expected, but it's not.", std::isnan(aDoubles[i]));
            else
                CPPUNIT_ASSERT_EQUAL(pChecks[i], aDoubles[i]);
        }
@@ -1867,8 +1867,8 @@ void Test::testMatrix()
        CPPUNIT_ASSERT_EQUAL(SAL_N_ELEMENTS(pChecks), aDoubles.size());
        for (size_t i = 0, n = aDoubles.size(); i < n; ++i)
        {
            if (rtl::math::isNan(pChecks[i]))
                CPPUNIT_ASSERT_MESSAGE("NaN is expected, but it's not.", rtl::math::isNan(aDoubles[i]));
            if (std::isnan(pChecks[i]))
                CPPUNIT_ASSERT_MESSAGE("NaN is expected, but it's not.", std::isnan(aDoubles[i]));
            else
                CPPUNIT_ASSERT_EQUAL(pChecks[i], aDoubles[i]);
        }
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index f9babfa..f62185f 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -221,7 +221,7 @@ bool isEmpty( const formula::VectorRefArray& rArray, size_t nPos )
    }

    if (rArray.mpNumericArray)
        return rtl::math::isNan(rArray.mpNumericArray[nPos]);
        return std::isnan(rArray.mpNumericArray[nPos]);
    else
        return true;
}
@@ -705,33 +705,33 @@ void Test::testFetchVectorRefArray()
    aArray = m_pDoc->FetchVectorRefArray(ScAddress(0,0,0), 3); // A1:A3
    CPPUNIT_ASSERT_MESSAGE("Array should have a numeric array.", aArray.mpNumericArray);
    CPPUNIT_ASSERT_MESSAGE("Array should NOT have a string array.", !aArray.mpStringArray);
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[2]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[2]));

    // Totally empty range in a non-empty column (Column B).
    m_pDoc->SetString(ScAddress(1,10,0), "Some text"); // B11
    aArray = m_pDoc->FetchVectorRefArray(ScAddress(1,0,0), 3); // B1:B3
    CPPUNIT_ASSERT_MESSAGE("Array should have a numeric array.", aArray.mpNumericArray);
    CPPUNIT_ASSERT_MESSAGE("Array should NOT have a string array.", !aArray.mpStringArray);
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[2]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[2]));

    aArray = m_pDoc->FetchVectorRefArray(ScAddress(1,12,0), 3); // B13:B15
    CPPUNIT_ASSERT_MESSAGE("Array should have a numeric array.", aArray.mpNumericArray);
    CPPUNIT_ASSERT_MESSAGE("Array should NOT have a string array.", !aArray.mpStringArray);
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[2]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[2]));

    // These values come from a cache because of the call above.
    aArray = m_pDoc->FetchVectorRefArray(ScAddress(1,1,0), 3); // B2:B4
    CPPUNIT_ASSERT_MESSAGE("Array should have a numeric array.", aArray.mpNumericArray);
    CPPUNIT_ASSERT_MESSAGE("Array should NOT have a string array.", !aArray.mpStringArray);
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(rtl::math::isNan(aArray.mpNumericArray[2]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[0]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[1]));
    CPPUNIT_ASSERT(std::isnan(aArray.mpNumericArray[2]));

    // The column begins with a string header at row 1 (Column C).
    m_pDoc->SetString(ScAddress(2,0,0), "MyHeader");
diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx
index bd58c00..4c2a189 100644
--- a/sc/source/core/data/dptabsrc.cxx
+++ b/sc/source/core/data/dptabsrc.cxx
@@ -403,7 +403,7 @@ uno::Sequence<double> ScDPSource::getFilteredResults(
    {
        // Try to get result from the leaf nodes.
        double fVal = maResFilterSet.getLeafResult(aFilters[0]);
        if (!rtl::math::isNan(fVal))
        if (!std::isnan(fVal))
        {
            uno::Sequence<double> aRet(1);
            aRet[0] = fVal;
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 37b25cc..891fcbc7 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -3724,7 +3724,7 @@ void ScInterpreter::ScGetPivotData()
    }

    double fVal = pDPObj->GetPivotData(aDataFieldName, aFilters);
    if (rtl::math::isNan(fVal))
    if (std::isnan(fVal))
    {
        PushError(FormulaError::NoRef);
        return;
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index b76837a..f1506f6 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -4667,7 +4667,7 @@ StackVar ScInterpreter::Interpret()
                    {
                        // This matrix represents a range reference. Apply implicit intersection.
                        double fVal = applyImplicitIntersection(aMat, aPos);
                        if (rtl::math::isNan(fVal))
                        if (std::isnan(fVal))
                            PushNoValue();
                        else
                            PushInt(fVal);
diff --git a/scaddins/source/analysis/financial.cxx b/scaddins/source/analysis/financial.cxx
index c32f61e..cf41b26 100644
--- a/scaddins/source/analysis/financial.cxx
+++ b/scaddins/source/analysis/financial.cxx
@@ -561,8 +561,8 @@ double SAL_CALL AnalysisAddIn::getXirr(
        }
        while( bContLoop && (++nIter < nMaxIter) );
        nIter = 0;
        if (  ::rtl::math::isNan(fResultRate)  || std::isinf(fResultRate)
            ||::rtl::math::isNan(fResultValue) || std::isinf(fResultValue))
        if (  std::isnan(fResultRate)  || std::isinf(fResultRate)
            ||std::isnan(fResultValue) || std::isinf(fResultValue))
            bContLoop = true;

        ++nIterScan;
diff --git a/svx/source/items/e3ditem.cxx b/svx/source/items/e3ditem.cxx
index 6ce7e4f..971fb1b 100644
--- a/svx/source/items/e3ditem.cxx
+++ b/svx/source/items/e3ditem.cxx
@@ -58,7 +58,7 @@ SvxB3DVectorItem* SvxB3DVectorItem::Clone( SfxItemPool* /*pPool*/ ) const

bool SvxB3DVectorItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
{
    assert(!rtl::math::isNan(aVal.getX()) && !rtl::math::isNan(aVal.getY()) && !rtl::math::isNan(aVal.getZ()));
    assert(!std::isnan(aVal.getX()) && !std::isnan(aVal.getY()) && !std::isnan(aVal.getZ()));

    drawing::Direction3D aDirection;

@@ -82,7 +82,7 @@ bool SvxB3DVectorItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
    aVal.setY(aDirection.DirectionY);
    aVal.setZ(aDirection.DirectionZ);

    assert(!rtl::math::isNan(aVal.getX()) && !rtl::math::isNan(aVal.getY()) && !rtl::math::isNan(aVal.getZ()));
    assert(!std::isnan(aVal.getX()) && !std::isnan(aVal.getY()) && !std::isnan(aVal.getZ()));

    return true;
}
diff --git a/sw/source/core/attr/cellatr.cxx b/sw/source/core/attr/cellatr.cxx
index 908a9d2..a0a459e 100644
--- a/sw/source/core/attr/cellatr.cxx
+++ b/sw/source/core/attr/cellatr.cxx
@@ -213,8 +213,8 @@ bool SwTableBoxValue::operator==( const SfxPoolItem& rAttr ) const
    assert(SfxPoolItem::operator==(rAttr));
    SwTableBoxValue const& rOther( static_cast<SwTableBoxValue const&>(rAttr) );
    // items with NaN should be equal to enable pooling
    return ::rtl::math::isNan( m_nValue )
        ?   ::rtl::math::isNan( rOther.m_nValue )
    return std::isnan( m_nValue )
        ?   std::isnan( rOther.m_nValue )
        :   ( m_nValue == rOther.m_nValue );
}

diff --git a/test/source/diff/diff.cxx b/test/source/diff/diff.cxx
index 19a334c..e0ba939 100644
--- a/test/source/diff/diff.cxx
+++ b/test/source/diff/diff.cxx
@@ -302,7 +302,7 @@ bool XMLDiff::compareAttributes(xmlNodePtr node1, xmlNodePtr node2)
        double dVal1 = xmlXPathCastStringToNumber(val1);
        double dVal2 = xmlXPathCastStringToNumber(val2);

        if(!rtl::math::isNan(dVal1) || !rtl::math::isNan(dVal2))
        if(!std::isnan(dVal1) || !std::isnan(dVal2))
        {
            //compare by value and respect tolerance
            tolerance tol;
diff --git a/vcl/source/control/fmtfield.cxx b/vcl/source/control/fmtfield.cxx
index 2b738f0..07b2d4e 100644
--- a/vcl/source/control/fmtfield.cxx
+++ b/vcl/source/control/fmtfield.cxx
@@ -727,7 +727,7 @@ void FormattedField::ReFormat()
        if (TreatingAsNumber())
        {
            double dValue = GetValue();
            if ( m_bEnableNaN && ::rtl::math::isNan( dValue ) )
            if ( m_bEnableNaN && std::isnan( dValue ) )
                return;
            ImplSetValue( dValue, true );
        }
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index 7b38849..dd56e8f 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -663,7 +663,7 @@ uno::Sequence< OUString > lcl_DataSequenceToStringSequence(
        {
            //lcl_clearIfNoValuesButTextIsContained - replace by indices if the values are not appropriate
            bool bHasValue = std::any_of(aValuesSequence.begin(), aValuesSequence.end(),
                [](double fValue) { return !::rtl::math::isNan( fValue ); });
                [](double fValue) { return !std::isnan( fValue ); });
            if(!bHasValue)
            {
                //no double value is contained
@@ -2491,7 +2491,7 @@ namespace
        if( xNumericalDataSequence.is() )
        {
            Sequence< double >  aDoubles( xNumericalDataSequence->getNumericalData() );
            if (std::any_of(aDoubles.begin(), aDoubles.end(), [](double fDouble) { return !::rtl::math::isNan( fDouble ); }))
            if (std::any_of(aDoubles.begin(), aDoubles.end(), [](double fDouble) { return !std::isnan( fDouble ); }))
                return false;//have double value
        }
        else
@@ -2499,7 +2499,7 @@ namespace
            aData = xDataSequence->getData();
            double fDouble = 0.0;
            bool bHaveDouble = std::any_of(aData.begin(), aData.end(),
                [&fDouble](const uno::Any& rData) { return (rData >>= fDouble) && !::rtl::math::isNan( fDouble ); });
                [&fDouble](const uno::Any& rData) { return (rData >>= fDouble) && !std::isnan( fDouble ); });
            if (bHaveDouble)
                return false;//have double value
        }
diff --git a/xmloff/source/draw/ximp3dscene.cxx b/xmloff/source/draw/ximp3dscene.cxx
index 2d9c1b4..5fe0674 100644
--- a/xmloff/source/draw/ximp3dscene.cxx
+++ b/xmloff/source/draw/ximp3dscene.cxx
@@ -69,7 +69,7 @@ SdXML3DLightContext::SdXML3DLightContext(
            {
                ::basegfx::B3DVector aVal;
                SvXMLUnitConverter::convertB3DVector(aVal, sValue);
                if (!rtl::math::isNan(aVal.getX()) && !rtl::math::isNan(aVal.getY()) && !rtl::math::isNan(aVal.getZ()))
                if (!std::isnan(aVal.getX()) && !std::isnan(aVal.getY()) && !std::isnan(aVal.getZ()))
                {
                    maDirection = aVal;
                }