Purge out rtl::math::setNan

Change-Id: If8794c105e279afd4437517d3e61f2f900eb6490
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118123
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
BaiXiaochun
2021-06-30 09:52:45 +02:00
committed by Mike Kaganski
parent e9dc82b761
commit 7838efe4b7
55 changed files with 252 additions and 377 deletions
+1 -4
View File
@@ -442,9 +442,6 @@ std::vector<std::vector<double> > getDataSeriesYValuesFromChartType( const Refer
CPPUNIT_ASSERT(xDSCont.is());
const Sequence<uno::Reference<chart2::XDataSeries> > aDataSeriesSeq = xDSCont->getDataSeries();
double fNan;
rtl::math::setNan(&fNan);
std::vector<std::vector<double> > aRet;
for (uno::Reference<chart2::XDataSeries> const & ds : aDataSeriesSeq)
{
@@ -472,7 +469,7 @@ std::vector<std::vector<double> > getDataSeriesYValuesFromChartType( const Refer
if (any >>= fVal)
aValues.push_back(fVal);
else
aValues.push_back(fNan);
aValues.push_back(std::numeric_limits<double>::quiet_NaN());
}
aRet.push_back(aValues);
}
@@ -28,7 +28,8 @@
#include <com/sun/star/chart/XChartDocument.hpp>
#include <float.h>
#include <rtl/math.hxx>
#include <cmath>
#include <limits>
#include <osl/diagnose.h>
using namespace ::com::sun::star;
@@ -57,7 +58,7 @@ uno::Sequence< uno::Sequence< double > > lcl_getNANInsteadDBL_MIN( const uno::Se
aRet[nOuter][nInner] = rData[nOuter][nInner];
double& rValue = aRet[nOuter][nInner];
if( rValue == DBL_MIN )
::rtl::math::setNan( &rValue );
rValue = std::numeric_limits<double>::quiet_NaN();
}
}
return aRet;
@@ -35,7 +35,6 @@
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
#include <vcl/virdev.hxx>
#include <rtl/math.hxx>
#include <o3tl/safeint.hxx>
#include <osl/diagnose.h>
#include <toolkit/helper/vclunohelper.hxx>
@@ -45,6 +44,7 @@
#include <com/sun/star/container/XIndexReplace.hpp>
#include <algorithm>
#include <limits>
using namespace ::com::sun::star;
@@ -489,10 +489,8 @@ DataBrowser::DataBrowser(const css::uno::Reference<css::awt::XWindow> &rParent,
m_rNumberEditController( new ::svt::FormattedFieldCellController( m_aNumberEditField.get() )),
m_rTextEditController( new ::svt::EditCellController( m_aTextEditField.get() ))
{
double fNan;
::rtl::math::setNan( & fNan );
Formatter& rFormatter = m_aNumberEditField->get_formatter();
rFormatter.SetDefaultValue( fNan );
rFormatter.SetDefaultValue( std::numeric_limits<double>::quiet_NaN() );
rFormatter.TreatAsNumber( true );
RenewTable();
}
@@ -741,16 +739,13 @@ OUString DataBrowser::GetCellText( sal_Int32 nRow, sal_uInt16 nColumnId ) const
double DataBrowser::GetCellNumber( sal_Int32 nRow, sal_uInt16 nColumnId ) const
{
double fResult;
::rtl::math::setNan( & fResult );
if(( nColumnId >= 1 ) && ( nRow >= 0 ) && m_apDataBrowserModel)
{
fResult = m_apDataBrowserModel->getCellNumber(
return m_apDataBrowserModel->getCellNumber(
static_cast< sal_Int32 >( nColumnId ) - 1, nRow );
}
return fResult;
return std::numeric_limits<double>::quiet_NaN();
}
void DataBrowser::Resize()
@@ -45,9 +45,8 @@
#include <tools/diagnose_ex.h>
#include <comphelper/property.hxx>
#include <rtl/math.hxx>
#include <algorithm>
#include <limits>
using namespace ::com::sun::star;
@@ -582,9 +581,6 @@ DataBrowserModel::eCellType DataBrowserModel::getCellType( sal_Int32 nAtColumn )
double DataBrowserModel::getCellNumber( sal_Int32 nAtColumn, sal_Int32 nAtRow )
{
double fResult;
::rtl::math::setNan( & fResult );
tDataColumnVector::size_type nIndex( nAtColumn );
if( nIndex < m_aColumns.size() &&
m_aColumns[ nIndex ].m_xLabeledDataSequence.is())
@@ -595,10 +591,10 @@ double DataBrowserModel::getCellNumber( sal_Int32 nAtColumn, sal_Int32 nAtRow )
{
Sequence< double > aValues( xData->getNumericalData());
if( nAtRow < aValues.getLength())
fResult = aValues[nAtRow];
return aValues[nAtRow];
}
}
return fResult;
return std::numeric_limits<double>::quiet_NaN();
}
uno::Any DataBrowserModel::getCellAny( sal_Int32 nAtColumn, sal_Int32 nAtRow )
+5 -5
View File
@@ -24,6 +24,8 @@
#include <rtl/ustring.hxx>
#include "charttoolsdllapi.hxx"
#include <limits>
namespace chart::CommonFunctors
{
@@ -43,15 +45,13 @@ template< typename T >
/** unary function to convert css::uno::Any into a double number.
<p>In case no number can be generated from the Any, NaN (see
rtl::math::SetNAN()) is returned.</p>
<p>In case no number can be generated from the Any, NaN is returned.</p>
*/
struct OOO_DLLPUBLIC_CHARTTOOLS AnyToDouble
{
double operator() ( const css::uno::Any & rAny )
{
double fResult;
::rtl::math::setNan( & fResult );
double fResult = std::numeric_limits<double>::quiet_NaN();
rAny >>= fResult;
return fResult;
}
@@ -97,7 +97,7 @@ struct OOO_DLLPUBLIC_CHARTTOOLS OUStringToDouble
double fResult = ::rtl::math::stringToDouble( rStr, '.', ',', & eConversionStatus );
if( eConversionStatus != rtl_math_ConversionStatus_Ok )
::rtl::math::setNan( & fResult );
return std::numeric_limits<double>::quiet_NaN();
return fResult;
}
+3 -2
View File
@@ -24,10 +24,11 @@
#include <com/sun/star/chart2/data/XDataSequence.hpp>
#include <com/sun/star/chart2/data/XNumericalDataSequence.hpp>
#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
#include <rtl/math.hxx>
#include <osl/diagnose.h>
#include <basegfx/matrix/b3dhommatrix.hxx>
#include <limits>
namespace chart
{
@@ -429,7 +430,7 @@ uno::Sequence< double > DataSequenceToDoubleSequence(
for(sal_Int32 nN=aValues.getLength();nN--;)
{
if( !(aValues[nN] >>= aResult[nN]) )
::rtl::math::setNan( &aResult[nN] );
aResult[nN] = std::numeric_limits<double>::quiet_NaN();
}
}
+3 -3
View File
@@ -57,6 +57,8 @@
#include <tools/diagnose_ex.h>
#include <sal/log.hxx>
#include <limits>
using namespace ::com::sun::star;
using namespace ::com::sun::star::chart2;
using namespace ::std;
@@ -975,8 +977,6 @@ void lcl_switchToDateCategories( const Reference< XChartDocument >& xChartDoc, c
{
Sequence< Sequence< Any > > aAnyCategories( xDataAccess->getAnyRowDescriptions() );
double fTest = 0.0;
double fNan = 0.0;
::rtl::math::setNan( & fNan );
sal_Int32 nN = aAnyCategories.getLength();
for( ; nN--; )
{
@@ -988,7 +988,7 @@ void lcl_switchToDateCategories( const Reference< XChartDocument >& xChartDoc, c
Any& rAny = rCat[0];
if( !(rAny>>=fTest) )
{
rAny <<= fNan;
rAny <<= std::numeric_limits<double>::quiet_NaN();
}
}
}
@@ -29,9 +29,11 @@
#include <com/sun/star/chart2/AxisType.hpp>
#include <o3tl/safeint.hxx>
#include <rtl/math.hxx>
#include <rtl/ustrbuf.hxx>
#include <tools/diagnose_ex.h>
#include <limits>
namespace chart
{
@@ -453,8 +455,7 @@ static bool lcl_fillDateCategories( const uno::Reference< data::XDataSequence >&
{
if( aAny.hasValue() && !bContainsEmptyString )//empty string does not count as non date value!
bOnlyDatesFound=false;
::rtl::math::setNan( &aDate );
rDateCategories.push_back( aDate );
rDateCategories.push_back( std::numeric_limits<double>::quiet_NaN() );
}
}
std::sort( rDateCategories.begin(), rDateCategories.end() );
@@ -19,6 +19,7 @@
#include <sal/config.h>
#include <limits>
#include <string_view>
#include <ExponentialRegressionCurveCalculator.hxx>
@@ -34,12 +35,10 @@ namespace chart
{
ExponentialRegressionCurveCalculator::ExponentialRegressionCurveCalculator()
: m_fLogSlope(0.0)
, m_fLogIntercept(0.0)
: m_fLogSlope(std::numeric_limits<double>::quiet_NaN())
, m_fLogIntercept(std::numeric_limits<double>::quiet_NaN())
, m_fSign(1.0)
{
::rtl::math::setNan( & m_fLogSlope );
::rtl::math::setNan( & m_fLogIntercept );
}
ExponentialRegressionCurveCalculator::~ExponentialRegressionCurveCalculator()
@@ -65,9 +64,9 @@ void SAL_CALL ExponentialRegressionCurveCalculator::recalculateRegression(
nMax = aValues.first.size();
if( nMax <= 1 )
{
::rtl::math::setNan( & m_fLogSlope );
::rtl::math::setNan( & m_fLogIntercept );
::rtl::math::setNan( & m_fCorrelationCoefficient );// actual it is coefficient of determination
m_fLogSlope = std::numeric_limits<double>::quiet_NaN();
m_fLogIntercept = std::numeric_limits<double>::quiet_NaN();
m_fCorrelationCoefficient = std::numeric_limits<double>::quiet_NaN();// actual it is coefficient of determination
return;
}
m_fSign = -1.0;
@@ -116,16 +115,13 @@ void SAL_CALL ExponentialRegressionCurveCalculator::recalculateRegression(
double SAL_CALL ExponentialRegressionCurveCalculator::getCurveValue( double x )
{
double fResult;
::rtl::math::setNan( & fResult );
if( ! ( std::isnan( m_fLogSlope ) ||
std::isnan( m_fLogIntercept )))
{
fResult = m_fSign * exp(m_fLogIntercept + x * m_fLogSlope);
return m_fSign * exp(m_fLogIntercept + x * m_fLogSlope);
}
return fResult;
return std::numeric_limits<double>::quiet_NaN();
}
uno::Sequence< geometry::RealPoint2D > SAL_CALL ExponentialRegressionCurveCalculator::getCurveValues(
+7 -19
View File
@@ -22,7 +22,6 @@
#include <strings.hrc>
#include <osl/diagnose.h>
#include <rtl/math.hxx>
#ifdef DEBUG_CHART2_TOOLS
#define DEBUG_INTERNAL_DATA 1
@@ -34,6 +33,7 @@
#include <algorithm>
#include <iterator>
#include <limits>
using ::com::sun::star::uno::Sequence;
@@ -129,10 +129,8 @@ void InternalData::setData( const Sequence< Sequence< double > >& rDataInRows )
m_aColumnLabels.resize( m_nColumnCount );
m_aData.resize( m_nRowCount * m_nColumnCount );
double fNan;
::rtl::math::setNan( & fNan );
// set all values to Nan
m_aData = fNan;
m_aData = std::numeric_limits<double>::quiet_NaN();
for( sal_Int32 nRow=0; nRow<m_nRowCount; ++nRow )
{
@@ -296,9 +294,7 @@ bool InternalData::enlargeData( sal_Int32 nColumnCount, sal_Int32 nRowCount )
if( bGrow )
{
double fNan;
::rtl::math::setNan( &fNan );
tDataType aNewData( fNan, nNewSize );
tDataType aNewData( std::numeric_limits<double>::quiet_NaN(), nNewSize );
// copy old data
for( int nCol=0; nCol<m_nColumnCount; ++nCol )
static_cast< tDataType >(
@@ -322,9 +318,7 @@ void InternalData::insertColumn( sal_Int32 nAfterIndex )
sal_Int32 nNewColumnCount = m_nColumnCount + 1;
sal_Int32 nNewSize( nNewColumnCount * m_nRowCount );
double fNan;
::rtl::math::setNan( &fNan );
tDataType aNewData( fNan, nNewSize );
tDataType aNewData( std::numeric_limits<double>::quiet_NaN(), nNewSize );
// copy old data
int nCol=0;
@@ -379,9 +373,7 @@ void InternalData::insertRow( sal_Int32 nAfterIndex )
sal_Int32 nNewRowCount = m_nRowCount + 1;
sal_Int32 nNewSize( m_nColumnCount * nNewRowCount );
double fNan;
::rtl::math::setNan( &fNan );
tDataType aNewData( fNan, nNewSize );
tDataType aNewData( std::numeric_limits<double>::quiet_NaN(), nNewSize );
// copy old data
sal_Int32 nIndex = nAfterIndex + 1;
@@ -416,9 +408,7 @@ void InternalData::deleteColumn( sal_Int32 nAtIndex )
sal_Int32 nNewColumnCount = m_nColumnCount - 1;
sal_Int32 nNewSize( nNewColumnCount * m_nRowCount );
double fNan;
::rtl::math::setNan( &fNan );
tDataType aNewData( fNan, nNewSize );
tDataType aNewData( std::numeric_limits<double>::quiet_NaN(), nNewSize );
// copy old data
int nCol=0;
@@ -450,9 +440,7 @@ void InternalData::deleteRow( sal_Int32 nAtIndex )
sal_Int32 nNewRowCount = m_nRowCount - 1;
sal_Int32 nNewSize( m_nColumnCount * nNewRowCount );
double fNan;
::rtl::math::setNan( &fNan );
tDataType aNewData( fNan, nNewSize );
tDataType aNewData( std::numeric_limits<double>::quiet_NaN(), nNewSize );
// copy old data
sal_Int32 nIndex = nAtIndex;
+4 -8
View File
@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <rtl/math.hxx>
#include <iterator>
#include <InternalDataProvider.hxx>
@@ -40,6 +38,7 @@
#include <comphelper/property.hxx>
#include <tools/diagnose_ex.h>
#include <limits>
#include <vector>
#include <algorithm>
@@ -1365,16 +1364,15 @@ uno::Sequence< OUString > SplitCategoriesProvider_ForComplexDescriptions::getStr
// ____ XDateCategories ____
Sequence< double > SAL_CALL InternalDataProvider::getDateCategories()
{
double fNan = InternalDataProvider::getNotANumber();
double fValue = fNan;
vector< vector< uno::Any > > aCategories( m_bDataInColumns ? m_aInternalData.getComplexRowLabels() : m_aInternalData.getComplexColumnLabels());
sal_Int32 nCount = aCategories.size();
Sequence< double > aDoubles( nCount );
sal_Int32 nN=0;
for (auto const& category : aCategories)
{
double fValue;
if( category.empty() || !(category[0]>>=fValue) )
fValue = fNan;
fValue = std::numeric_limits<double>::quiet_NaN();
aDoubles[nN++]=fValue;
}
return aDoubles;
@@ -1489,9 +1487,7 @@ void SAL_CALL InternalDataProvider::removeChartDataChangeEventListener(
double SAL_CALL InternalDataProvider::getNotANumber()
{
double fNan;
::rtl::math::setNan( & fNan );
return fNan;
return std::numeric_limits<double>::quiet_NaN();
}
sal_Bool SAL_CALL InternalDataProvider::isNotANumber( double nNumber )
@@ -30,11 +30,9 @@ namespace chart
{
LogarithmicRegressionCurveCalculator::LogarithmicRegressionCurveCalculator() :
m_fSlope( 0.0 ),
m_fIntercept( 0.0 )
m_fSlope( std::numeric_limits<double>::quiet_NaN() ),
m_fIntercept( std::numeric_limits<double>::quiet_NaN() )
{
::rtl::math::setNan( & m_fSlope );
::rtl::math::setNan( & m_fIntercept );
}
LogarithmicRegressionCurveCalculator::~LogarithmicRegressionCurveCalculator()
@@ -53,9 +51,9 @@ void SAL_CALL LogarithmicRegressionCurveCalculator::recalculateRegression(
const size_t nMax = aValues.first.size();
if( nMax <= 1 ) // at least 2 points
{
::rtl::math::setNan( & m_fSlope );
::rtl::math::setNan( & m_fIntercept );
::rtl::math::setNan( & m_fCorrelationCoefficient );
m_fSlope = std::numeric_limits<double>::quiet_NaN();
m_fIntercept = std::numeric_limits<double>::quiet_NaN();
m_fCorrelationCoefficient = std::numeric_limits<double>::quiet_NaN();
return;
}
@@ -89,16 +87,13 @@ void SAL_CALL LogarithmicRegressionCurveCalculator::recalculateRegression(
double SAL_CALL LogarithmicRegressionCurveCalculator::getCurveValue( double x )
{
double fResult;
::rtl::math::setNan( & fResult );
if( ! ( std::isnan( m_fSlope ) ||
std::isnan( m_fIntercept )))
{
fResult = m_fSlope * log( x ) + m_fIntercept;
return m_fSlope * log( x ) + m_fIntercept;
}
return fResult;
return std::numeric_limits<double>::quiet_NaN();
}
uno::Sequence< geometry::RealPoint2D > SAL_CALL LogarithmicRegressionCurveCalculator::getCurveValues(
@@ -20,7 +20,9 @@
#include <MeanValueRegressionCurveCalculator.hxx>
#include <osl/diagnose.h>
#include <rtl/math.hxx>
#include <cmath>
#include <limits>
using namespace ::com::sun::star;
@@ -28,9 +30,8 @@ namespace chart
{
MeanValueRegressionCurveCalculator::MeanValueRegressionCurveCalculator() :
m_fMeanValue( 0.0 )
m_fMeanValue( std::numeric_limits<double>::quiet_NaN() )
{
::rtl::math::setNan( & m_fMeanValue );
}
MeanValueRegressionCurveCalculator::~MeanValueRegressionCurveCalculator()
@@ -59,7 +60,7 @@ void SAL_CALL MeanValueRegressionCurveCalculator::recalculateRegression(
if( nMax == 0 )
{
::rtl::math::setNan( & m_fMeanValue );
m_fMeanValue = std::numeric_limits<double>::quiet_NaN();
}
else
{
@@ -22,7 +22,7 @@
#include <ResId.hxx>
#include <strings.hrc>
#include <rtl/math.hxx>
#include <limits>
#include <com/sun/star/chart2/MovingAverageType.hpp>
@@ -43,7 +43,7 @@ void SAL_CALL MovingAverageRegressionCurveCalculator::recalculateRegression(
const uno::Sequence< double >& aXValues,
const uno::Sequence< double >& aYValues )
{
::rtl::math::setNan( & m_fCorrelationCoefficient );
m_fCorrelationCoefficient = std::numeric_limits<double>::quiet_NaN();
RegressionCalculationHelper::tDoubleVectorPair aValues(
RegressionCalculationHelper::cleanup(
@@ -134,9 +134,7 @@ void MovingAverageRegressionCurveCalculator::calculateValues(
double SAL_CALL MovingAverageRegressionCurveCalculator::getCurveValue( double /*x*/ )
{
double fResult;
rtl::math::setNan(&fResult);
return fResult;
return std::numeric_limits<double>::quiet_NaN();
}
uno::Sequence< geometry::RealPoint2D > SAL_CALL MovingAverageRegressionCurveCalculator::getCurveValues(
@@ -21,6 +21,7 @@
#include <RegressionCalculationHelper.hxx>
#include <cmath>
#include <limits>
#include <rtl/math.hxx>
#include <rtl/ustrbuf.hxx>
@@ -90,7 +91,7 @@ void SAL_CALL PolynomialRegressionCurveCalculator::recalculateRegression(
const uno::Sequence< double >& aXValues,
const uno::Sequence< double >& aYValues )
{
rtl::math::setNan(&m_fCorrelationCoefficient);
m_fCorrelationCoefficient = std::numeric_limits<double>::quiet_NaN();
RegressionCalculationHelper::tDoubleVectorPair aValues(
RegressionCalculationHelper::cleanup( aXValues, aYValues, RegressionCalculationHelper::isValid()));
@@ -269,18 +270,13 @@ void SAL_CALL PolynomialRegressionCurveCalculator::recalculateRegression(
double SAL_CALL PolynomialRegressionCurveCalculator::getCurveValue( double x )
{
double fResult;
rtl::math::setNan(&fResult);
if (mCoefficients.empty())
{
return fResult;
}
return std::numeric_limits<double>::quiet_NaN();
sal_Int32 aNoCoefficients = static_cast<sal_Int32>(mCoefficients.size());
// Horner's method
fResult = 0.0;
double fResult = 0.0;
for (sal_Int32 i = aNoCoefficients - 1; i >= 0; i--)
{
fResult = mCoefficients[i] + (x * fResult);
@@ -21,6 +21,7 @@
#include <RegressionCalculationHelper.hxx>
#include <SpecialCharacters.hxx>
#include <limits>
#include <rtl/math.hxx>
#include <rtl/ustrbuf.hxx>
@@ -30,12 +31,10 @@ namespace chart
{
PotentialRegressionCurveCalculator::PotentialRegressionCurveCalculator()
: m_fSlope(0.0)
, m_fIntercept(0.0)
: m_fSlope(std::numeric_limits<double>::quiet_NaN())
, m_fIntercept(std::numeric_limits<double>::quiet_NaN())
, m_fSign(1.0)
{
::rtl::math::setNan( & m_fSlope );
::rtl::math::setNan( & m_fIntercept );
}
PotentialRegressionCurveCalculator::~PotentialRegressionCurveCalculator()
@@ -61,9 +60,9 @@ void SAL_CALL PotentialRegressionCurveCalculator::recalculateRegression(
nMax = aValues.first.size();
if( nMax <= 1 )
{
::rtl::math::setNan( & m_fSlope );
::rtl::math::setNan( & m_fIntercept );
::rtl::math::setNan( & m_fCorrelationCoefficient );
m_fSlope = std::numeric_limits<double>::quiet_NaN();
m_fIntercept = std::numeric_limits<double>::quiet_NaN();
m_fCorrelationCoefficient = std::numeric_limits<double>::quiet_NaN();
return;
}
m_fSign = -1.0;
@@ -101,16 +100,13 @@ void SAL_CALL PotentialRegressionCurveCalculator::recalculateRegression(
double SAL_CALL PotentialRegressionCurveCalculator::getCurveValue( double x )
{
double fResult;
::rtl::math::setNan( & fResult );
if( ! ( std::isnan( m_fSlope ) ||
std::isnan( m_fIntercept )))
{
fResult = m_fIntercept * pow( x, m_fSlope );
return m_fIntercept * pow( x, m_fSlope );
}
return fResult;
return std::numeric_limits<double>::quiet_NaN();
}
uno::Sequence< geometry::RealPoint2D > SAL_CALL PotentialRegressionCurveCalculator::getCurveValues(
@@ -37,17 +37,15 @@ namespace chart
{
RegressionCurveCalculator::RegressionCurveCalculator()
: m_fCorrelationCoefficient(0.0)
: m_fCorrelationCoefficient(std::numeric_limits<double>::quiet_NaN())
, mDegree(2)
, mForceIntercept(false)
, mInterceptValue(0.0)
, mInterceptValue(std::numeric_limits<double>::quiet_NaN())
, mPeriod(2)
, mXName("x")
, mYName("f(x)")
, mnMovingType(0)
{
rtl::math::setNan( &m_fCorrelationCoefficient );
rtl::math::setNan( &mInterceptValue );
}
RegressionCurveCalculator::~RegressionCurveCalculator()
+11 -21
View File
@@ -18,10 +18,12 @@
*/
#include <Scaling.hxx>
#include <rtl/math.hxx>
#include <com/sun/star/uno/RuntimeException.hpp>
#include <cppuhelper/supportsservice.hxx>
#include <cmath>
#include <limits>
namespace com::sun::star::uno { class XComponentContext; }
namespace
@@ -57,12 +59,9 @@ LogarithmicScaling::~LogarithmicScaling()
double SAL_CALL LogarithmicScaling::doScaling( double value )
{
double fResult;
if( std::isnan( value ) || std::isinf( value ) )
::rtl::math::setNan( & fResult );
else
fResult = log( value ) / m_fLogOfBase;
return fResult;
return std::numeric_limits<double>::quiet_NaN();
return std::log( value ) / m_fLogOfBase;
}
uno::Reference< XScaling > SAL_CALL LogarithmicScaling::getInverseScaling()
@@ -106,12 +105,9 @@ ExponentialScaling::~ExponentialScaling()
double SAL_CALL ExponentialScaling::doScaling( double value )
{
double fResult;
if( std::isnan( value ) || std::isinf( value ) )
::rtl::math::setNan( & fResult );
else
fResult = pow( m_fBase, value );
return fResult;
return std::numeric_limits<double>::quiet_NaN();
return std::pow( m_fBase, value );
}
uno::Reference< XScaling > SAL_CALL ExponentialScaling::getInverseScaling()
@@ -154,12 +150,9 @@ LinearScaling::~LinearScaling()
double SAL_CALL LinearScaling::doScaling( double value )
{
double fResult;
if( std::isnan( value ) || std::isinf( value ) )
::rtl::math::setNan( & fResult );
else
fResult = m_fOffset + m_fSlope * value;
return fResult;
return std::numeric_limits<double>::quiet_NaN();
return m_fOffset + m_fSlope * value;
}
uno::Reference< XScaling > SAL_CALL
@@ -205,12 +198,9 @@ PowerScaling::~PowerScaling()
double SAL_CALL PowerScaling::doScaling( double value )
{
double fResult;
if( std::isnan( value ) || std::isinf( value ) )
::rtl::math::setNan( & fResult );
else
fResult = pow( value, m_fExponent );
return fResult;
return std::numeric_limits<double>::quiet_NaN();
return std::pow( value, m_fExponent );
}
uno::Reference< XScaling > SAL_CALL
+11 -24
View File
@@ -22,7 +22,6 @@
#include <ErrorBar.hxx>
#include <unonames.hxx>
#include <rtl/math.hxx>
#include <rtl/ustrbuf.hxx>
#include <comphelper/processfactory.hxx>
#include <com/sun/star/chart2/XDataSeries.hpp>
@@ -33,6 +32,9 @@
#include <com/sun/star/chart/ErrorBarStyle.hpp>
#include <tools/diagnose_ex.h>
#include <cmath>
#include <limits>
using ::com::sun::star::uno::Sequence;
using ::com::sun::star::uno::Reference;
using namespace ::com::sun::star;
@@ -60,16 +62,11 @@ double lcl_getVariance( const Sequence< double > & rData, sal_Int32 & rOutValidC
}
}
double fResult;
if( rOutValidCount == 0 )
::rtl::math::setNan( & fResult );
else
{
const double fN = static_cast< double >( rOutValidCount );
fResult = (fQuadSum - fSum*fSum/fN) / fN;
}
return std::numeric_limits<double>::quiet_NaN();
return fResult;
const double fN = static_cast< double >( rOutValidCount );
return (fQuadSum - fSum*fSum/fN) / fN;
}
Reference< chart2::data::XLabeledDataSequence > lcl_getErrorBarLabeledSequence(
@@ -183,20 +180,11 @@ double StatisticsHelper::getStandardError( const Sequence< double > & rData )
{
sal_Int32 nValCount;
double fVar = lcl_getVariance( rData, nValCount );
double fResult;
if( nValCount == 0 ||
std::isnan( fVar ))
{
::rtl::math::setNan( & fResult );
}
else
{
// standard-deviation / sqrt(n)
fResult = sqrt( fVar ) / sqrt( double(nValCount) );
}
return fResult;
if( nValCount == 0 || std::isnan( fVar ))
return std::numeric_limits<double>::quiet_NaN();
// standard-deviation / sqrt(n)
return sqrt( fVar ) / sqrt( double(nValCount) );
}
Reference< chart2::data::XLabeledDataSequence > StatisticsHelper::getErrorLabeledDataSequenceFromDataSource(
@@ -238,8 +226,7 @@ double StatisticsHelper::getErrorFromDataSource(
bool bPositiveValue,
bool bYError /* = true */ )
{
double fResult = 0.0;
::rtl::math::setNan( & fResult );
double fResult = std::numeric_limits<double>::quiet_NaN();
Reference< chart2::data::XDataSequence > xValues(
StatisticsHelper::getErrorDataSequenceFromDataSource( xDataSource, bPositiveValue, bYError ));
+4 -2
View File
@@ -22,6 +22,8 @@
#include <rtl/math.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <limits>
namespace
{
@@ -55,7 +57,7 @@ double SAL_CALL DateScaling::doScaling( double value )
{
double fResult(value);
if( std::isnan( value ) || std::isinf( value ) )
::rtl::math::setNan( & fResult );
return std::numeric_limits<double>::quiet_NaN();
else
{
Date aDate(m_aNullDate);
@@ -131,7 +133,7 @@ double SAL_CALL InverseDateScaling::doScaling( double value )
{
double fResult(value);
if( std::isnan( value ) || std::isinf( value ) )
::rtl::math::setNan( & fResult );
return std::numeric_limits<double>::quiet_NaN();
else
{
switch( m_nTimeUnit )
@@ -23,6 +23,8 @@
#include <rtl/math.hxx>
#include <limits>
namespace chart
{
using namespace ::com::sun::star;
@@ -56,7 +58,7 @@ double MergedMinimumAndMaximumSupplier::getMinimumX()
fGlobalExtremum=fLocalExtremum;
}
if(std::isinf(fGlobalExtremum))
::rtl::math::setNan(&fGlobalExtremum);
return std::numeric_limits<double>::quiet_NaN();
return fGlobalExtremum;
}
@@ -71,7 +73,7 @@ double MergedMinimumAndMaximumSupplier::getMaximumX()
fGlobalExtremum=fLocalExtremum;
}
if(std::isinf(fGlobalExtremum))
::rtl::math::setNan(&fGlobalExtremum);
return std::numeric_limits<double>::quiet_NaN();
return fGlobalExtremum;
}
@@ -86,7 +88,7 @@ double MergedMinimumAndMaximumSupplier::getMinimumYInRange( double fMinimumX, do
fGlobalExtremum=fLocalExtremum;
}
if(std::isinf(fGlobalExtremum))
::rtl::math::setNan(&fGlobalExtremum);
return std::numeric_limits<double>::quiet_NaN();
return fGlobalExtremum;
}
@@ -101,7 +103,7 @@ double MergedMinimumAndMaximumSupplier::getMaximumYInRange( double fMinimumX, do
fGlobalExtremum=fLocalExtremum;
}
if(std::isinf(fGlobalExtremum))
::rtl::math::setNan(&fGlobalExtremum);
return std::numeric_limits<double>::quiet_NaN();
return fGlobalExtremum;
}
@@ -116,7 +118,7 @@ double MergedMinimumAndMaximumSupplier::getMinimumZ()
fGlobalExtremum=fLocalExtremum;
}
if(std::isinf(fGlobalExtremum))
::rtl::math::setNan(&fGlobalExtremum);
return std::numeric_limits<double>::quiet_NaN();
return fGlobalExtremum;
}
@@ -131,7 +133,7 @@ double MergedMinimumAndMaximumSupplier::getMaximumZ()
fGlobalExtremum=fLocalExtremum;
}
if(std::isinf(fGlobalExtremum))
::rtl::math::setNan(&fGlobalExtremum);
return std::numeric_limits<double>::quiet_NaN();
return fGlobalExtremum;
}
+2 -2
View File
@@ -109,8 +109,8 @@ ScaleAutomatism::ScaleAutomatism( const ScaleData& rSourceScale, const Date& rNu
void ScaleAutomatism::resetValueRange( )
{
::rtl::math::setNan( &m_fValueMinimum );
::rtl::math::setNan( &m_fValueMaximum );
m_fValueMinimum = std::numeric_limits<double>::quiet_NaN();
m_fValueMaximum = std::numeric_limits<double>::quiet_NaN();
}
void ScaleAutomatism::expandValueRange( double fMinimum, double fMaximum )
+3 -5
View File
@@ -44,6 +44,7 @@
#include <basegfx/numeric/ftools.hxx>
#include <algorithm>
#include <limits>
#include <memory>
using namespace ::com::sun::star;
@@ -1109,18 +1110,15 @@ double VCartesianAxis::getLabelLineIntersectionValue() const
double VCartesianAxis::getExtraLineIntersectionValue() const
{
double fNan;
rtl::math::setNan(&fNan);
if( !m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis )
return fNan;
return std::numeric_limits<double>::quiet_NaN();
double fMin = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMinX() : m_pPosHelper->getLogicMinY();
double fMax = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMaxX() : m_pPosHelper->getLogicMaxY();
if( *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis <= fMin
|| *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis >= fMax )
return fNan;
return std::numeric_limits<double>::quiet_NaN();
return *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis;
}
+5 -5
View File
@@ -36,7 +36,6 @@
#include <com/sun/star/chart/DataLabelPlacement.hpp>
#include <com/sun/star/chart/MissingValueTreatment.hpp>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <osl/diagnose.h>
@@ -45,10 +44,11 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <officecfg/Office/Compatibility.hxx>
#include <limits>
namespace chart
{
using namespace ::com::sun::star;
using namespace ::rtl::math;
using namespace ::com::sun::star::chart2;
AreaChart::AreaChart( const uno::Reference<XChartType>& xChartTypeModel
@@ -589,10 +589,10 @@ struct FormerPoint
: m_fX(fX), m_fY(fY), m_fZ(fZ)
{}
FormerPoint()
: m_fX(std::numeric_limits<double>::quiet_NaN())
, m_fY(std::numeric_limits<double>::quiet_NaN())
, m_fZ(std::numeric_limits<double>::quiet_NaN())
{
::rtl::math::setNan( &m_fX );
::rtl::math::setNan( &m_fY );
::rtl::math::setNan( &m_fZ );
}
double m_fX;
+4 -4
View File
@@ -394,11 +394,11 @@ struct FormerBarPoint
: m_fX(fX), m_fUpperY(fUpperY), m_fLowerY(fLowerY), m_fZ(fZ)
{}
FormerBarPoint()
: m_fX(std::numeric_limits<double>::quiet_NaN())
, m_fUpperY(std::numeric_limits<double>::quiet_NaN())
, m_fLowerY(std::numeric_limits<double>::quiet_NaN())
, m_fZ(std::numeric_limits<double>::quiet_NaN())
{
::rtl::math::setNan( &m_fX );
::rtl::math::setNan( &m_fUpperY );
::rtl::math::setNan( &m_fLowerY );
::rtl::math::setNan( &m_fZ );
}
double m_fX;
@@ -24,16 +24,16 @@
#include <LabelPositionHelper.hxx>
#include <com/sun/star/chart/DataLabelPlacement.hpp>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <osl/diagnose.h>
#include <com/sun/star/drawing/XShapes.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <limits>
namespace chart
{
using namespace ::com::sun::star;
using namespace ::rtl::math;
using namespace ::com::sun::star::chart2;
BubbleChart::BubbleChart( const uno::Reference<XChartType>& xChartTypeModel
@@ -145,10 +145,10 @@ struct FormerPoint
: m_fX(fX), m_fY(fY), m_fZ(fZ)
{}
FormerPoint()
: m_fX(std::numeric_limits<double>::quiet_NaN())
, m_fY(std::numeric_limits<double>::quiet_NaN())
, m_fZ(std::numeric_limits<double>::quiet_NaN())
{
::rtl::math::setNan( &m_fX );
::rtl::math::setNan( &m_fY );
::rtl::math::setNan( &m_fZ );
}
double m_fX;
+6 -5
View File
@@ -32,16 +32,16 @@
#include <com/sun/star/chart/DataLabelPlacement.hpp>
#include <com/sun/star/chart/MissingValueTreatment.hpp>
#include <rtl/math.hxx>
#include <osl/diagnose.h>
#include <com/sun/star/drawing/XShapes.hpp>
#include <officecfg/Office/Compatibility.hxx>
#include <limits>
namespace chart
{
using namespace ::com::sun::star;
using namespace ::rtl::math;
using namespace ::com::sun::star::chart2;
NetChart::NetChart( const uno::Reference<XChartType>& xChartTypeModel
@@ -301,10 +301,11 @@ struct FormerPoint
: m_fX(fX), m_fY(fY), m_fZ(fZ)
{}
FormerPoint()
: m_fX(std::numeric_limits<double>::quiet_NaN())
, m_fY(std::numeric_limits<double>::quiet_NaN())
, m_fZ(std::numeric_limits<double>::quiet_NaN())
{
::rtl::math::setNan( &m_fX );
::rtl::math::setNan( &m_fY );
::rtl::math::setNan( &m_fZ );
}
double m_fX;
+3 -4
View File
@@ -34,12 +34,12 @@
#include <com/sun/star/drawing/XShape.hpp>
#include <com/sun/star/drawing/XShapes.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <osl/diagnose.h>
#include <tools/diagnose_ex.h>
#include <tools/helpers.hxx>
#include <limits>
#include <memory>
using namespace ::com::sun::star;
@@ -198,9 +198,8 @@ PieChart::PieChart( const uno::Reference<XChartType>& xChartTypeModel
, m_pPosHelper( new PiePositionHelper( (m_nDimension==3) ? 0.0 : 90.0 ) )
, m_bUseRings(false)
, m_bSizeExcludesLabelsAndExplodedSegments(bExcludingPositioning)
, m_fMaxOffset(std::numeric_limits<double>::quiet_NaN())
{
::rtl::math::setNan(&m_fMaxOffset);
PlotterBase::m_pPosHelper = m_pPosHelper.get();
VSeriesPlotter::m_pMainPosHelper = m_pPosHelper.get();
m_pPosHelper->m_fRadiusOffset = 0.0;
@@ -711,7 +710,7 @@ void PieChart::createShapes()
nExplodeableSlot = m_aZSlots.front().size()-1;
m_aLabelInfoList.clear();
::rtl::math::setNan(&m_fMaxOffset);
m_fMaxOffset = std::numeric_limits<double>::quiet_NaN();
sal_Int32 n3DRelativeHeight = 100;
uno::Reference< beans::XPropertySet > xPropertySet( m_xChartTypeModel, uno::UNO_QUERY );
if ( (m_nDimension==3) && xPropertySet.is())
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <limits>
#include <memory>
#include <VSeriesPlotter.hxx>
#include <BaseGFXHelper.hxx>
@@ -808,8 +809,7 @@ double lcl_getErrorBarLogicLength(
bool bPositive,
bool bYError )
{
double fResult;
::rtl::math::setNan( & fResult );
double fResult = std::numeric_limits<double>::quiet_NaN();
try
{
switch( nErrorBarStyle )
@@ -1726,7 +1726,7 @@ double VSeriesPlotter::getMinimumYInRange( double fMinimumX, double fMaximumX, s
}
}
if(std::isinf(fMinimum))
::rtl::math::setNan(&fMinimum);
return std::numeric_limits<double>::quiet_NaN();
return fMinimum;
}
@@ -1759,7 +1759,7 @@ double VSeriesPlotter::getMaximumYInRange( double fMinimumX, double fMaximumX, s
}
}
if(std::isinf(fMaximum))
::rtl::math::setNan(&fMaximum);
return std::numeric_limits<double>::quiet_NaN();
return fMaximum;
}
@@ -1833,9 +1833,9 @@ void VSeriesPlotter::getMinimumAndMaximumX( double& rfMinimum, double& rfMaximum
}
}
if(std::isinf(rfMinimum))
::rtl::math::setNan(&rfMinimum);
rfMinimum = std::numeric_limits<double>::quiet_NaN();
if(std::isinf(rfMaximum))
::rtl::math::setNan(&rfMaximum);
rfMaximum = std::numeric_limits<double>::quiet_NaN();
}
void VSeriesPlotter::getMinimumAndMaximumYInContinuousXRange( double& rfMinY, double& rfMaxY, double fMinX, double fMaxX, sal_Int32 nAxisIndex ) const
@@ -1856,9 +1856,9 @@ void VSeriesPlotter::getMinimumAndMaximumYInContinuousXRange( double& rfMinY, do
}
}
if(std::isinf(rfMinY))
::rtl::math::setNan(&rfMinY);
rfMinY = std::numeric_limits<double>::quiet_NaN();
if(std::isinf(rfMaxY))
::rtl::math::setNan(&rfMaxY);
rfMaxY = std::numeric_limits<double>::quiet_NaN();
}
sal_Int32 VSeriesPlotter::getPointCount() const
@@ -1944,9 +1944,9 @@ void VDataSeriesGroup::getMinimumAndMaximumX( double& rfMinimum, double& rfMaxim
}
}
if(std::isinf(rfMinimum))
::rtl::math::setNan(&rfMinimum);
rfMinimum = std::numeric_limits<double>::quiet_NaN();
if(std::isinf(rfMaximum))
::rtl::math::setNan(&rfMaximum);
rfMaximum = std::numeric_limits<double>::quiet_NaN();
}
namespace {
@@ -2007,14 +2007,15 @@ public:
void getTotalRange(double& rfMin, double& rfMax) const
{
rtl::math::setNan(&rfMin);
rtl::math::setNan(&rfMax);
TotalStoreType aStore;
getTotalStore(aStore);
if (aStore.empty())
{
rfMin = std::numeric_limits<double>::quiet_NaN();
rfMax = std::numeric_limits<double>::quiet_NaN();
return;
}
TotalStoreType::const_iterator it = aStore.begin(), itEnd = aStore.end();
rfMin = it->second.first;
@@ -2085,8 +2086,8 @@ private:
void VDataSeriesGroup::getMinimumAndMaximumYInContinuousXRange(
double& rfMinY, double& rfMaxY, double fMinX, double fMaxX, sal_Int32 nAxisIndex ) const
{
::rtl::math::setNan(&rfMinY);
::rtl::math::setNan(&rfMaxY);
rfMinY = std::numeric_limits<double>::quiet_NaN();
rfMaxY = std::numeric_limits<double>::quiet_NaN();
if (m_aSeriesVector.empty())
// No data series. Bail out.
@@ -2145,12 +2146,11 @@ void VDataSeriesGroup::calculateYMinAndMaxForCategory( sal_Int32 nCategoryIndex
return;
}
double fTotalSum, fPositiveSum, fNegativeSum, fFirstPositiveY, fFirstNegativeY;
::rtl::math::setNan( &fTotalSum );
::rtl::math::setNan( &fPositiveSum );
::rtl::math::setNan( &fNegativeSum );
::rtl::math::setNan( &fFirstPositiveY );
::rtl::math::setNan( &fFirstNegativeY );
double fTotalSum = std::numeric_limits<double>::quiet_NaN();
double fPositiveSum = std::numeric_limits<double>::quiet_NaN();
double fNegativeSum = std::numeric_limits<double>::quiet_NaN();
double fFirstPositiveY = std::numeric_limits<double>::quiet_NaN();
double fFirstNegativeY = std::numeric_limits<double>::quiet_NaN();
if( bSeparateStackingForDifferentSigns )
{
@@ -2233,8 +2233,8 @@ void VDataSeriesGroup::calculateYMinAndMaxForCategoryRange(
nEndCategoryIndex=0;
for( sal_Int32 nCatIndex = nStartCategoryIndex; nCatIndex <= nEndCategoryIndex; nCatIndex++ )
{
double fMinimumY; ::rtl::math::setNan(&fMinimumY);
double fMaximumY; ::rtl::math::setNan(&fMaximumY);
double fMinimumY = std::numeric_limits<double>::quiet_NaN();
double fMaximumY = std::numeric_limits<double>::quiet_NaN();
calculateYMinAndMaxForCategory( nCatIndex
, bSeparateStackingForDifferentSigns, fMinimumY, fMaximumY, nAxisIndex );
+15 -34
View File
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <limits>
#include <memory>
#include <VDataSeries.hxx>
#include <ObjectIdentifier.hxx>
@@ -67,12 +68,7 @@ double VDataSequence::getValue( sal_Int32 index ) const
{
if( 0<=index && index<Doubles.getLength() )
return Doubles[index];
else
{
double fNan;
::rtl::math::setNan( & fNan );
return fNan;
}
return std::numeric_limits<double>::quiet_NaN();
}
sal_Int32 VDataSequence::detectNumberFormatKey( sal_Int32 index ) const
@@ -152,8 +148,8 @@ VDataSeries::VDataSeries( const uno::Reference< XDataSeries >& xDataSeries )
, m_pValueSequenceForDataLabelNumberFormatDetection(&m_aValues_Y)
, m_fXMeanValue(1.0)
, m_fYMeanValue(1.0)
, m_fXMeanValue(std::numeric_limits<double>::quiet_NaN())
, m_fYMeanValue(std::numeric_limits<double>::quiet_NaN())
, m_aAttributedDataPointIndexList()
@@ -171,9 +167,6 @@ VDataSeries::VDataSeries( const uno::Reference< XDataSeries >& xDataSeries )
, mpOldSeries(nullptr)
, mnPercent(0.0)
{
::rtl::math::setNan( & m_fXMeanValue );
::rtl::math::setNan( & m_fYMeanValue );
uno::Reference<data::XDataSource> xDataSource( xDataSeries, uno::UNO_QUERY );
uno::Sequence< uno::Reference<
@@ -272,14 +265,14 @@ void VDataSeries::doSortByXValues()
//prepare a vector for sorting
std::vector< std::vector< double > > aTmp;//outer vector are points, inner vector are the different values of the point
double fNan;
::rtl::math::setNan( & fNan );
sal_Int32 nPointIndex = 0;
for( nPointIndex=0; nPointIndex < m_nPointCount; nPointIndex++ )
{
aTmp.push_back(
{ ((nPointIndex < m_aValues_X.Doubles.getLength()) ? m_aValues_X.Doubles[nPointIndex] : fNan),
((nPointIndex < m_aValues_Y.Doubles.getLength()) ? m_aValues_Y.Doubles[nPointIndex] : fNan)
{ ((nPointIndex < m_aValues_X.Doubles.getLength()) ? m_aValues_X.Doubles[nPointIndex]
: std::numeric_limits<double>::quiet_NaN()),
((nPointIndex < m_aValues_Y.Doubles.getLength()) ? m_aValues_Y.Doubles[nPointIndex]
: std::numeric_limits<double>::quiet_NaN())
}
);
}
@@ -435,7 +428,7 @@ void VDataSeries::setAttachedAxisIndex( sal_Int32 nAttachedAxisIndex )
double VDataSeries::getXValue( sal_Int32 index ) const
{
double fRet = 0.0;
double fRet = std::numeric_limits<double>::quiet_NaN();
if(m_aValues_X.is())
{
if( 0<=index && index<m_aValues_X.getLength() )
@@ -447,16 +440,12 @@ double VDataSeries::getXValue( sal_Int32 index ) const
fRet = nOldVal + (fRet - nOldVal) * mnPercent;
}
}
else
::rtl::math::setNan( &fRet );
}
else
{
// #i70133# always return correct X position - needed for short data series
if( 0<=index /*&& index < m_nPointCount*/ )
fRet = index+1;//first category (index 0) matches with real number 1.0
else
::rtl::math::setNan( &fRet );
}
lcl_maybeReplaceNanWithZero( fRet, getMissingValueTreatment() );
return fRet;
@@ -464,7 +453,7 @@ double VDataSeries::getXValue( sal_Int32 index ) const
double VDataSeries::getYValue( sal_Int32 index ) const
{
double fRet = 0.0;
double fRet = std::numeric_limits<double>::quiet_NaN();
if(m_aValues_Y.is())
{
if( 0<=index && index<m_aValues_Y.getLength() )
@@ -476,16 +465,12 @@ double VDataSeries::getYValue( sal_Int32 index ) const
fRet = nOldVal + (fRet - nOldVal) * mnPercent;
}
}
else
::rtl::math::setNan( &fRet );
}
else
{
// #i70133# always return correct X position - needed for short data series
if( 0<=index /*&& index < m_nPointCount*/ )
fRet = index+1;//first category (index 0) matches with real number 1.0
else
::rtl::math::setNan( &fRet );
}
lcl_maybeReplaceNanWithZero( fRet, getMissingValueTreatment() );
return fRet;
@@ -493,8 +478,8 @@ double VDataSeries::getYValue( sal_Int32 index ) const
void VDataSeries::getMinMaxXValue(double& fMin, double& fMax) const
{
rtl::math::setNan( &fMax );
rtl::math::setNan( &fMin );
fMax = std::numeric_limits<double>::quiet_NaN();
fMin = std::numeric_limits<double>::quiet_NaN();
uno::Sequence< double > aValuesX = getAllX();
@@ -701,7 +686,7 @@ double VDataSeries::getMinimumofAllDifferentYValues( sal_Int32 index ) const
}
if( std::isinf(fMin) )
::rtl::math::setNan(&fMin);
return std::numeric_limits<double>::quiet_NaN();
return fMin;
}
@@ -737,7 +722,7 @@ double VDataSeries::getMaximumofAllDifferentYValues( sal_Int32 index ) const
}
if( std::isinf(fMax) )
::rtl::math::setNan(&fMax);
return std::numeric_limits<double>::quiet_NaN();
return fMax;
}
@@ -1112,11 +1097,7 @@ double VDataSeries::getValueByProperty( sal_Int32 nIndex, const OUString& rPropN
{
auto const itr = m_PropertyMap.find(rPropName);
if (itr == m_PropertyMap.end())
{
double fNan;
::rtl::math::setNan( &fNan );
return fNan;
}
return std::numeric_limits<double>::quiet_NaN();
const VDataSequence* pData = &itr->second;
double fValue = pData->getValue(nIndex);
@@ -738,11 +738,7 @@ void DatabaseDataProvider::impl_fillInternalDataProvider_throw(bool _bHasCategor
aValue.fill( column.nResultSetPosition, column.nDataType, xRow );
if ( aValue.isNull() )
{
double nValue;
::rtl::math::setNan( &nValue );
aRow.push_back( nValue );
}
aRow.push_back( std::numeric_limits<double>::quiet_NaN() );
else
aRow.push_back( aValue.getDouble() );
}
+3 -1
View File
@@ -24,6 +24,8 @@
#include <sal/mathconf.h>
#include <sal/types.h>
#include <limits>
// Store as 16-bits, since error values are stored in tokens and formula results,
// and that can matter
enum class FormulaError : sal_uInt16
@@ -96,7 +98,7 @@ enum class FormulaError : sal_uInt16
inline double CreateDoubleError( FormulaError nErr )
{
sal_math_Double smVal;
::rtl::math::setNan( &smVal.value );
smVal.value = std::numeric_limits<double>::quiet_NaN();
smVal.nan_parts.fraction_lo = static_cast<unsigned>(nErr);
return smVal.value;
}
+2 -4
View File
@@ -27,6 +27,7 @@
#include <drawingml/chart/typegroupconverter.hxx>
#include <cstdio>
#include <limits>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/chart/XChartDocument.hpp>
@@ -104,7 +105,6 @@
#include <set>
#include <unordered_set>
#include <rtl/math.hxx>
#include <o3tl/temporary.hxx>
#include <o3tl/sorted_vector.hxx>
@@ -416,8 +416,6 @@ static void lcl_fillCategoriesIntoStringVector(
static ::std::vector< double > lcl_getAllValuesFromSequence( const Reference< chart2::data::XDataSequence > & xSeq )
{
double fNan = 0.0;
::rtl::math::setNan( &fNan );
::std::vector< double > aResult;
Reference< chart2::data::XNumericalDataSequence > xNumSeq( xSeq, uno::UNO_QUERY );
@@ -429,7 +427,7 @@ static ::std::vector< double > lcl_getAllValuesFromSequence( const Reference< ch
else if( xSeq.is())
{
Sequence< uno::Any > aAnies( xSeq->getData());
aResult.resize( aAnies.getLength(), fNan );
aResult.resize( aAnies.getLength(), std::numeric_limits<double>::quiet_NaN() );
for( sal_Int32 i=0; i<aAnies.getLength(); ++i )
aAnies[i] >>= aResult[i];
}
+4 -5
View File
@@ -22,7 +22,8 @@
#include <svl/lstner.hxx>
#include <svl/itemprop.hxx>
#include <cppuhelper/implbase.hxx>
#include <rtl/math.hxx>
#include <limits>
class ScDocument;
@@ -44,12 +45,11 @@ struct ValueAndFormat
sal_uInt32 m_nNumberFormat;
explicit ValueAndFormat()
: m_fValue(0.0)
: m_fValue(std::numeric_limits<double>::quiet_NaN())
, m_aString()
, m_eType(ValueType::Empty)
, m_nNumberFormat(0)
{
rtl::math::setNan(&m_fValue);
}
explicit ValueAndFormat(double fValue, sal_uInt32 nNumberFormat)
@@ -60,12 +60,11 @@ struct ValueAndFormat
{}
explicit ValueAndFormat(OUString const & rString)
: m_fValue(0.0)
: m_fValue(std::numeric_limits<double>::quiet_NaN())
, m_aString(rString)
, m_eType(ValueType::String)
, m_nNumberFormat(0)
{
rtl::math::setNan(&m_fValue);
}
};
+2 -2
View File
@@ -90,6 +90,7 @@
#include <sfx2/sfxsids.hrc>
#include <iostream>
#include <limits>
#include <memory>
#include <vector>
@@ -2143,8 +2144,7 @@ void Test::testMatrix()
pMat->PutDouble(2.3, 2, 1);
pMat->PutDouble(-20, 2, 2);
double fNaN;
rtl::math::setNan(&fNaN);
static const double fNaN = std::numeric_limits<double>::quiet_NaN();
std::vector<double> aDoubles;
pMat->GetDoubleArray(aDoubles);
+6 -13
View File
@@ -64,8 +64,6 @@
#include <memory>
#include <numeric>
#include <math.h>
// factor from font size to optimal cell height (text width)
#define SC_ROT_BREAK_FACTOR 6
@@ -2472,8 +2470,6 @@ bool appendToBlock(
{
svl::SharedStringPool& rPool = pDoc->GetSharedStringPool();
size_t nLenRemain = nArrayLen - nPos;
double fNan;
rtl::math::setNan(&fNan);
for (sc::CellStoreType::iterator it = _it; it != itEnd; ++it)
{
@@ -2627,9 +2623,6 @@ copyFirstFormulaBlock(
sc::FormulaGroupContext& rCxt, const sc::CellStoreType::iterator& itBlk, size_t nArrayLen,
SCTAB nTab, SCCOL nCol )
{
double fNan;
rtl::math::setNan(&fNan);
size_t nLen = std::min(itBlk->size, nArrayLen);
sc::formula_block::iterator it = sc::formula_block::begin(*itBlk->data);
@@ -2661,7 +2654,8 @@ copyFirstFormulaBlock(
if (!pNumArray)
{
rCxt.m_NumArrays.push_back(
std::make_unique<sc::FormulaGroupContext::NumArrayType>(nArrayLen, fNan));
std::make_unique<sc::FormulaGroupContext::NumArrayType>(nArrayLen,
std::numeric_limits<double>::quiet_NaN()));
pNumArray = rCxt.m_NumArrays.back().get();
}
@@ -2741,9 +2735,6 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2
// So temporarily block the discarding.
ProtectFormulaGroupContext protectContext(&GetDoc());
double fNan;
rtl::math::setNan(&fNan);
// We need to fetch all cell values from row 0 to nRow2 for caching purposes.
sc::CellStoreType::iterator itBlk = maCells.begin();
switch (itBlk->type)
@@ -2763,7 +2754,8 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2
rCxt.m_NumArrays.push_back(
std::make_unique<sc::FormulaGroupContext::NumArrayType>(it, itEnd));
sc::FormulaGroupContext::NumArrayType& rArray = *rCxt.m_NumArrays.back();
rArray.resize(nRow2+1, fNan); // allocate to the requested length.
// allocate to the requested length.
rArray.resize(nRow2+1, std::numeric_limits<double>::quiet_NaN());
pColArray = rCxt.setCachedColArray(nTab, nCol, &rArray, nullptr);
if (!pColArray)
@@ -2877,7 +2869,8 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2
{
// Fill the whole length with NaN's.
rCxt.m_NumArrays.push_back(
std::make_unique<sc::FormulaGroupContext::NumArrayType>(nRow2+1, fNan));
std::make_unique<sc::FormulaGroupContext::NumArrayType>(nRow2+1,
std::numeric_limits<double>::quiet_NaN()));
sc::FormulaGroupContext::NumArrayType& rArray = *rCxt.m_NumArrays.back();
pColArray = rCxt.setCachedColArray(nTab, nCol, &rArray, nullptr);
if (!pColArray)
+4 -3
View File
@@ -47,6 +47,7 @@
#include <osl/diagnose.h>
#include <algorithm>
#include <limits>
#include <vector>
using ::rtl::math::approxEqual;
@@ -745,10 +746,10 @@ bool ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(SCROW nRow, const ScM
return std::find(aResults.begin(), aResults.end(), true) != aResults.end();
}
ScDBQueryDataIterator::Value::Value() :
mnError(FormulaError::NONE), mbIsNumber(true)
ScDBQueryDataIterator::Value::Value()
: mfValue(std::numeric_limits<double>::quiet_NaN())
, mnError(FormulaError::NONE), mbIsNumber(true)
{
::rtl::math::setNan(&mfValue);
}
ScDBQueryDataIterator::ScDBQueryDataIterator(ScDocument& rDocument, const ScInterpreterContext& rContext, std::unique_ptr<ScDBQueryParamBase> pParam) :
+5 -7
View File
@@ -1355,30 +1355,28 @@ public:
double ScDPObject::GetPivotData(const OUString& rDataFieldName, std::vector<sheet::DataPilotFieldFilter>& rFilters)
{
double fRet;
rtl::math::setNan(&fRet);
if (!mbEnableGetPivotData)
return fRet;
return std::numeric_limits<double>::quiet_NaN();
CreateObjects();
std::vector<const ScDPSaveDimension*> aDataDims;
pSaveData->GetAllDimensionsByOrientation(sheet::DataPilotFieldOrientation_DATA, aDataDims);
if (aDataDims.empty())
return fRet;
return std::numeric_limits<double>::quiet_NaN();
std::vector<const ScDPSaveDimension*>::iterator it = std::find_if(
aDataDims.begin(), aDataDims.end(),
FindByName(ScGlobal::getCharClassPtr()->uppercase(rDataFieldName)));
if (it == aDataDims.end())
return fRet;
return std::numeric_limits<double>::quiet_NaN();
size_t nDataIndex = std::distance(aDataDims.begin(), it);
uno::Reference<sheet::XDataPilotResults> xDPResults(xSource, uno::UNO_QUERY);
if (!xDPResults.is())
return fRet;
return std::numeric_limits<double>::quiet_NaN();
// Dimensions must be sorted in order of appearance, and row dimensions
// must come before column dimensions.
@@ -1391,7 +1389,7 @@ double ScDPObject::GetPivotData(const OUString& rDataFieldName, std::vector<shee
uno::Sequence<double> aRes = xDPResults->getFilteredResults(aFilters);
if (static_cast<sal_Int32>(nDataIndex) >= aRes.getLength())
return fRet;
return std::numeric_limits<double>::quiet_NaN();
return aRes[nDataIndex];
}
+2 -3
View File
@@ -58,6 +58,7 @@
#include <com/sun/star/sheet/XMembersAccess.hpp>
#include <com/sun/star/sheet/XMembersSupplier.hpp>
#include <limits>
#include <string_view>
#include <vector>
@@ -486,9 +487,7 @@ uno::Sequence<sheet::MemberResult> getVisiblePageMembersAsResults( const uno::Re
if (bVisible)
{
/* TODO: any numeric value to obtain? */
double fValue;
rtl::math::setNan(&fValue);
aRes.emplace_back(rName, aCaption, 0, fValue);
aRes.emplace_back(rName, aCaption, 0, std::numeric_limits<double>::quiet_NaN());
}
}
+4 -5
View File
@@ -11,13 +11,14 @@
#include <global.hxx>
#include <unotools/charclass.hxx>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <o3tl/hash_combine.hxx>
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
#include <com/sun/star/uno/Sequence.hxx>
#include <limits>
using namespace com::sun::star;
using namespace std;
@@ -171,7 +172,7 @@ void ScDPResultTree::add(
else
{
// This name pair already exists. Set the value to NaN.
rtl::math::setNan(&it->second);
it->second = std::numeric_limits<double>::quiet_NaN();
}
}
@@ -259,9 +260,7 @@ double ScDPResultTree::getLeafResult(const css::sheet::DataPilotFieldFilter& rFi
return it->second;
// Not found. Return an NaN.
double fNan;
rtl::math::setNan(&fNan);
return fNan;
return std::numeric_limits<double>::quiet_NaN();
}
#if DEBUG_PIVOT_TABLE
+3 -3
View File
@@ -40,6 +40,7 @@
#include <math.h>
#include <float.h>
#include <algorithm>
#include <limits>
#include <memory>
#include <unordered_map>
@@ -1335,8 +1336,7 @@ void ScDPResultMember::FillMemberResults(
OSL_ENSURE( rPos+nSize <= pSequences->getLength(), "bumm" );
bool bIsNumeric = false;
double fValue;
rtl::math::setNan(&fValue);
double fValue = std::numeric_limits<double>::quiet_NaN();
OUString aName;
if ( pMemberName ) // if pMemberName != NULL, use instead of real member name
{
@@ -1498,7 +1498,7 @@ void ScDPResultMember::FillMemberResults(
}
}
rtl::math::setNan(&fValue); /* TODO: any numeric value to obtain? */
fValue = std::numeric_limits<double>::quiet_NaN(); /* TODO: any numeric value to obtain? */
pArray[rPos].Name = aName;
pArray[rPos].Caption = aSubStr;
pArray[rPos].Flags = ( pArray[rPos].Flags |
+3 -2
View File
@@ -17,7 +17,6 @@
#include <formula/vectortoken.hxx>
#include <scmatrix.hxx>
#include <sal/log.hxx>
#include <rtl/math.hxx>
#include <opencl/openclwrapper.hxx>
#include <opencl/OpenCLZone.hxx>
@@ -31,6 +30,8 @@
#include "op_spreadsheet.hxx"
#include "op_addin.hxx"
#include <limits>
#include <com/sun/star/sheet/FormulaLanguage.hpp>
// FIXME: The idea that somebody would bother to (now and then? once a year? once a month?) manually
@@ -322,7 +323,7 @@ size_t VectorRef::Marshal( cl_kernel k, int argno, int, cl_program )
throw OpenCLError("clEnqueueMapBuffer", err, __FILE__, __LINE__);
for (size_t i = 0; i < szHostBuffer / sizeof(double); i++)
rtl::math::setNan(&pNanBuffer[i]);
pNanBuffer[i] = std::numeric_limits<double>::quiet_NaN();
err = clEnqueueUnmapMemObject(kEnv.mpkCmdQueue, mpClmem,
pNanBuffer, 0, nullptr, nullptr);
// FIXME: Is it intentional to not throw an OpenCLError even if the clEnqueueUnmapMemObject() fails?
+3 -4
View File
@@ -23,6 +23,7 @@
#include <sal/log.hxx>
#include <cstdio>
#include <limits>
#include <unordered_map>
#include <vector>
@@ -118,11 +119,9 @@ void FormulaGroupContext::ensureNumArray( ColArray& rColArray, size_t nArrayLen
if (rColArray.mpNumArray)
return;
double fNan;
rtl::math::setNan(&fNan);
m_NumArrays.push_back(
std::make_unique<sc::FormulaGroupContext::NumArrayType>(nArrayLen, fNan));
std::make_unique<sc::FormulaGroupContext::NumArrayType>(nArrayLen,
std::numeric_limits<double>::quiet_NaN()));
rColArray.mpNumArray = m_NumArrays.back().get();
}
+1 -3
View File
@@ -3902,9 +3902,7 @@ double applyImplicitIntersection(const sc::RangeMatrix& rMat, const ScAddress& r
return rMat.mpMat->GetDouble(nOffset, 0);
}
double fVal;
rtl::math::setNan(&fVal);
return fVal;
return std::numeric_limits<double>::quiet_NaN();
}
// Test for Functions that evaluate an error code and directly set nGlobalError to 0
+3 -1
View File
@@ -23,6 +23,8 @@
#include <osl/diagnose.h>
#include <oox/helper/binaryinputstream.hxx>
#include <limits>
namespace oox::xls {
namespace {
@@ -68,7 +70,7 @@ const sal_Int32 BIFF_RK_VALUEMASK = 0xFFFFFFFC;
default: OSL_FAIL( "BiffHelper::calcDoubleFromError - unknown error code" );
}
sal_math_Double aMathDouble;
::rtl::math::setNan( &aMathDouble.value );
aMathDouble.value = std::numeric_limits<double>::quiet_NaN();
aMathDouble.nan_parts.fraction_lo = nApiError;
return aMathDouble.value;
}
+4 -3
View File
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <limits>
#include <memory>
#include <orcusinterface.hxx>
@@ -259,11 +260,11 @@ void ScOrcusNamedExpression::commit()
ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, Type eType)
: maPos(rPos)
, meType(eType)
, mfValue(std::numeric_limits<double>::quiet_NaN())
, mnIndex1(0)
, mnIndex2(0)
, meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
{
rtl::math::setNan(&mfValue);
}
ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, double fValue)
@@ -279,11 +280,11 @@ ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, double fVa
ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, uint32_t nIndex)
: maPos(rPos)
, meType(Type::String)
, mfValue(std::numeric_limits<double>::quiet_NaN())
, mnIndex1(nIndex)
, mnIndex2(0)
, meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
{
rtl::math::setNan(&mfValue);
}
ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, const OUString& rFormula,
@@ -291,11 +292,11 @@ ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, const OUSt
: maPos(rPos)
, meType(Type::Formula)
, maStr1(rFormula)
, mfValue(std::numeric_limits<double>::quiet_NaN())
, mnIndex1(0)
, mnIndex2(0)
, meGrammar(eGrammar)
{
rtl::math::setNan(&mfValue);
}
ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles) :
+2 -3
View File
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <limits>
#include <memory>
#include "xmlcelli.hxx"
#include "xmlimprt.hxx"
@@ -117,7 +118,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
ScXMLImportContext( rImport ),
mpEditEngine(GetScImport().GetEditEngine()),
mnCurParagraph(0),
fValue(0.0),
fValue(std::numeric_limits<double>::quiet_NaN()),
nMergedRows(1),
nMatrixRows(0),
nRepeatedRows(nTempRepeatedRows),
@@ -142,8 +143,6 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
mbHasStyle(false),
mbPossibleEmptyDisplay(false)
{
rtl::math::setNan(&fValue); // NaN by default
rXMLImport.GetTables().AddColumn(bTempIsCovered);
std::optional<OUString> xStyleName;
+1 -1
View File
@@ -373,8 +373,8 @@ ScSolverValueDialog::ScSolverValueDialog(weld::Window* pParent)
: GenericDialogController(pParent, "modules/scalc/ui/doubledialog.ui", "DoubleDialog")
, m_xFrame(m_xBuilder->weld_frame("frame"))
, m_xEdValue(m_xBuilder->weld_entry("value"))
, m_fMaxValue(std::numeric_limits<double>::quiet_NaN())
{
::rtl::math::setNan(&m_fMaxValue);
}
ScSolverValueDialog::~ScSolverValueDialog()
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <limits>
#include <memory>
#include <sal/config.h>
@@ -287,9 +288,6 @@ void PivotTableDataProvider::collectPivotTableData()
return;
const uno::Sequence<uno::Sequence<sheet::DataResult>> xDataResultsSequence = xDPResults->getResults();
double fNan;
rtl::math::setNan(&fNan);
std::unordered_set<size_t> aValidRowIndex;
size_t nRowIndex = 0;
@@ -304,7 +302,8 @@ void PivotTableDataProvider::collectPivotTableData()
continue;
if (rDataResult.Flags == 0 || rDataResult.Flags & css::sheet::DataResultFlags::HASDATA)
{
aRow.emplace_back(rDataResult.Flags ? rDataResult.Value : fNan, 0);
aRow.emplace_back(rDataResult.Flags ? rDataResult.Value
: std::numeric_limits<double>::quiet_NaN(), 0);
if (rDataResult.Flags != 0) // set as valid only if we have data
{
bRowEmpty = false;
+5 -8
View File
@@ -59,7 +59,7 @@
#include <comphelper/processfactory.hxx>
#include <comphelper/sequence.hxx>
#include <rtl/math.hxx>
#include <limits>
SC_SIMPLE_SERVICE_INFO( ScChart2DataProvider, "ScChart2DataProvider",
"com.sun.star.chart2.data.DataProvider")
@@ -2323,10 +2323,10 @@ void ScChart2DataSource::AddLabeledSequence(const uno::Reference < chart2::data:
// DataSequence ==============================================================
ScChart2DataSequence::Item::Item() :
mfValue(0.0), mbIsValue(false)
ScChart2DataSequence::Item::Item()
: mfValue(std::numeric_limits<double>::quiet_NaN())
, mbIsValue(false)
{
::rtl::math::setNan(&mfValue);
}
ScChart2DataSequence::HiddenRangeListener::HiddenRangeListener(ScChart2DataSequence& rParent) :
@@ -2907,15 +2907,12 @@ uno::Sequence< double > SAL_CALL ScChart2DataSequence::getNumericalData()
BuildDataCache();
double fNAN;
::rtl::math::setNan(&fNAN);
sal_Int32 nCount = m_aDataArray.size();
uno::Sequence<double> aSeq(nCount);
double* pArr = aSeq.getArray();
for (const Item& rItem : m_aDataArray)
{
*pArr = rItem.mbIsValue ? rItem.mfValue : fNAN;
*pArr = rItem.mbIsValue ? rItem.mfValue : std::numeric_limits<double>::quiet_NaN();
++pArr;
}
+5 -9
View File
@@ -27,7 +27,6 @@
#include <com/sun/star/util/DateTime.hpp>
#include <com/sun/star/util/XNumberFormatTypes.hpp>
#include <com/sun/star/util/NumberFormat.hpp>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <tools/date.hxx>
#include <tools/time.hxx>
@@ -37,6 +36,7 @@
#include <i18nlangtag/languagetag.hxx>
#include <comphelper/processfactory.hxx>
#include <limits>
#include <memory>
#include <unordered_map>
@@ -152,8 +152,7 @@ namespace svt
virtual double convertToDouble( Any const & i_value ) const override
{
double returnValue(0);
::rtl::math::setNan( &returnValue );
double returnValue = std::numeric_limits<double>::quiet_NaN();
OSL_VERIFY( i_value >>= returnValue );
return returnValue;
}
@@ -210,8 +209,7 @@ namespace svt
virtual double convertToDouble( Any const & i_value ) const override
{
double returnValue(0);
::rtl::math::setNan( &returnValue );
double returnValue = std::numeric_limits<double>::quiet_NaN();
// extract actual UNO value
DateTime aDateTimeValue;
@@ -242,8 +240,7 @@ namespace svt
virtual double convertToDouble( Any const & i_value ) const override
{
double returnValue(0);
::rtl::math::setNan( &returnValue );
double returnValue = std::numeric_limits<double>::quiet_NaN();
// extract
css::util::Date aDateValue;
@@ -270,8 +267,7 @@ namespace svt
virtual double convertToDouble( Any const & i_value ) const override
{
double returnValue(0);
::rtl::math::setNan( &returnValue );
double returnValue = std::numeric_limits<double>::quiet_NaN();
// extract
css::util::Time aTimeValue;
+4 -7
View File
@@ -22,6 +22,7 @@
#include <memory>
#include <vector>
#include <algorithm>
#include <limits>
#include <cppuhelper/interfacecontainer.hxx>
#include <o3tl/any.hxx>
@@ -92,7 +93,6 @@
#include <SwStyleNameMapper.hxx>
#include <frmatr.hxx>
#include <sortopt.hxx>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <editeng/frmdiritem.hxx>
#include <comphelper/interfacecontainer2.hxx>
@@ -885,12 +885,9 @@ double SwXCell::getValue()
{
SolarMutexGuard aGuard;
// #i112652# a table cell may contain NaN as a value, do not filter that
double fRet;
if(IsValid() && !getString().isEmpty())
fRet = m_pBox->GetFrameFormat()->GetTableBoxValue().GetValue();
else
::rtl::math::setNan( &fRet );
return fRet;
return m_pBox->GetFrameFormat()->GetTableBoxValue().GetValue();
return std::numeric_limits<double>::quiet_NaN();
}
void SwXCell::setValue(double rValue)
@@ -1212,7 +1209,7 @@ double SwXCell::GetForcedNumericalValue() const
}
double fTmp;
if (!const_cast<SwDoc*>(GetDoc())->IsNumberFormat(const_cast<SwXCell*>(this)->getString(), nFIndex, fTmp))
::rtl::math::setNan(&fTmp);
return std::numeric_limits<double>::quiet_NaN();
return fTmp;
}
+2 -8
View File
@@ -33,6 +33,7 @@
#include <vcl/weld.hxx>
#include <i18nlangtag/languagetag.hxx>
#include <unotools/syslocale.hxx>
#include <limits>
#include <map>
#include <rtl/math.hxx>
#include <rtl/ustrbuf.hxx>
@@ -859,14 +860,7 @@ void Formatter::SetValue(double dVal)
double Formatter::GetValue()
{
if ( !ImplGetValue( m_dCurrentValue ) )
{
double dValue;
if (m_bEnableNaN)
::rtl::math::setNan(&dValue);
else
dValue = m_dDefaultValue;
UpdateCurrentValue(dValue);
}
UpdateCurrentValue(m_bEnableNaN ? std::numeric_limits<double>::quiet_NaN() : m_dDefaultValue);
m_ValueState = valueDouble;
return m_dCurrentValue;
+2 -5
View File
@@ -46,6 +46,7 @@
#include <rtl/math.hxx>
#include <o3tl/sorted_vector.hxx>
#include <limits>
#include <vector>
#include <algorithm>
#include <queue>
@@ -629,8 +630,6 @@ uno::Sequence< OUString > lcl_DataSequenceToStringSequence(
}
::std::vector< double > lcl_getAllValuesFromSequence( const Reference< chart2::data::XDataSequence > & xSeq )
{
double fNan = 0.0;
::rtl::math::setNan( &fNan );
::std::vector< double > aResult;
if(!xSeq.is())
return aResult;
@@ -810,11 +809,9 @@ lcl_TableData lcl_getDataForLocalTable(
// resize data
aResult.aDataInRows.resize( nNumRows );
double fNan = 0.0;
::rtl::math::setNan( &fNan );
for (auto& aData: aResult.aDataInRows)
aData.resize(nNumColumns, fNan);
aData.resize(nNumColumns, std::numeric_limits<double>::quiet_NaN());
aResult.aColumnDescriptions.resize( nNumColumns );
aResult.aComplexColumnDescriptions.realloc( nNumColumns );
aResult.aRowDescriptions.resize( nNumRows );
+4 -9
View File
@@ -27,7 +27,6 @@
#include "transporttypes.hxx"
#include <XMLStringBufferImportContext.hxx>
#include <o3tl/safeint.hxx>
#include <rtl/math.hxx>
#include <sal/log.hxx>
#include <xmloff/xmlnamespace.hxx>
#include <xmloff/xmltoken.hxx>
@@ -42,6 +41,7 @@
#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
#include <limits>
#include <vector>
#include <algorithm>
#include <iterator>
@@ -65,10 +65,8 @@ struct lcl_ApplyCellToData
explicit lcl_ApplyCellToData( Sequence< double > & rOutData ) :
m_rData( rOutData ),
m_nIndex( 0 ),
m_nSize( rOutData.getLength()),
m_fNaN( 0.0 )
m_nSize( rOutData.getLength())
{
::rtl::math::setNan( &m_fNaN );
}
void operator() ( const SchXMLCell & rCell )
@@ -78,7 +76,7 @@ struct lcl_ApplyCellToData
if( rCell.eType == SCH_CELL_TYPE_FLOAT )
m_rData[m_nIndex] = rCell.fValue;
else
m_rData[m_nIndex] = m_fNaN;
m_rData[m_nIndex] = std::numeric_limits<double>::quiet_NaN();
}
++m_nIndex;
}
@@ -92,7 +90,6 @@ private:
Sequence< double > & m_rData;
sal_Int32 m_nIndex;
sal_Int32 m_nSize;
double m_fNaN;
};
void lcl_fillRangeMapping(
@@ -741,10 +738,8 @@ void SchXMLTableHelper::applyTableToInternalDataProvider(
// values
Sequence< double >& rTargetRow = aDataInRows[nRow];
lcl_ApplyCellToData aApplyCellToData = ::std::for_each( rRow.begin() + nColOffset, rRow.end(), lcl_ApplyCellToData( rTargetRow ) );
double fNaN = 0.0;
::rtl::math::setNan( &fNaN );
for( sal_Int32 nCurrentIndex = aApplyCellToData.getCurrentIndex(); nCurrentIndex<nNumColumns; nCurrentIndex++ )
rTargetRow[nCurrentIndex] = fNaN;//#i110615#
rTargetRow[nCurrentIndex] = std::numeric_limits<double>::quiet_NaN();//#i110615#
}
}
}