diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2021-10-11 17:32:31 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2021-10-13 11:50:02 +0200 |
commit | 53d2deca802922aa70d574c9b60c028abf44987f (patch) | |
tree | e65eadaaca4513cefc0240aacf383161158e9419 /src | |
parent | 56fa18c2a493ed5db6b53841072d12950ac634ab (diff) |
Use ratios of natural logs rather than to base ten
Natural log is marginally cheaper to compute and a ratio of logs, to a
given base, doesn't actually depend on the base; log(a)/log(b) is the
logarithm of a to base b.
Tidy up some duplication into a use of a ternary expression to
simplify one use of this, in the process.
Change-Id: Ic91dc0b4e9255f20f2f6e3d71c32a37f759d623d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/charts/axis/chartaxiselement.cpp | 7 | ||||
-rw-r--r-- | src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp | 4 | ||||
-rw-r--r-- | src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp | 4 | ||||
-rw-r--r-- | src/charts/axis/logvalueaxis/polarchartlogvalueaxisangular.cpp | 6 | ||||
-rw-r--r-- | src/charts/axis/logvalueaxis/polarchartlogvalueaxisradial.cpp | 6 | ||||
-rw-r--r-- | src/charts/domain/logxlogydomain.cpp | 30 | ||||
-rw-r--r-- | src/charts/domain/logxlogypolardomain.cpp | 22 | ||||
-rw-r--r-- | src/charts/domain/logxydomain.cpp | 14 | ||||
-rw-r--r-- | src/charts/domain/logxypolardomain.cpp | 12 | ||||
-rw-r--r-- | src/charts/domain/xlogydomain.cpp | 14 | ||||
-rw-r--r-- | src/charts/domain/xlogypolardomain.cpp | 12 |
11 files changed, 63 insertions, 68 deletions
diff --git a/src/charts/axis/chartaxiselement.cpp b/src/charts/axis/chartaxiselement.cpp index 1155257b..692400ea 100644 --- a/src/charts/axis/chartaxiselement.cpp +++ b/src/charts/axis/chartaxiselement.cpp @@ -555,12 +555,7 @@ QStringList ChartAxisElement::createLogValueLabels(qreal min, qreal max, qreal b if (max <= min || ticks < 1) return labels; - int firstTick; - if (base > 1) - firstTick = qCeil(std::log10(min) / std::log10(base)); - else - firstTick = qCeil(std::log10(max) / std::log10(base)); - + const int firstTick = qCeil(qLn(base > 1 ? min : max) / qLn(base)); if (format.isEmpty()) { int n = 0; if (ticks > 1) diff --git a/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp b/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp index f20c9942..43abf724 100644 --- a/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp +++ b/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp @@ -53,8 +53,8 @@ QList<qreal> ChartLogValueAxisX::calculateLayout() const QList<qreal> points; points.resize(m_axis->tickCount()); - const qreal logMax = std::log10(m_axis->max()) / std::log10(m_axis->base()); - const qreal logMin = std::log10(m_axis->min()) / std::log10(m_axis->base()); + const qreal logMax = qLn(m_axis->max()) / qLn(m_axis->base()); + const qreal logMin = qLn(m_axis->min()) / qLn(m_axis->base()); const qreal leftEdge = qMin(logMin, logMax); const qreal ceilEdge = std::ceil(leftEdge); diff --git a/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp b/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp index 6f7b92af..8c65aa54 100644 --- a/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp +++ b/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp @@ -53,8 +53,8 @@ QList<qreal> ChartLogValueAxisY::calculateLayout() const QList<qreal> points; points.resize(m_axis->tickCount()); - const qreal logMax = std::log10(m_axis->max()) / std::log10(m_axis->base()); - const qreal logMin = std::log10(m_axis->min()) / std::log10(m_axis->base()); + const qreal logMax = qLn(m_axis->max()) / qLn(m_axis->base()); + const qreal logMin = qLn(m_axis->min()) / qLn(m_axis->base()); const qreal leftEdge = qMin(logMin, logMax); const qreal ceilEdge = std::ceil(leftEdge); diff --git a/src/charts/axis/logvalueaxis/polarchartlogvalueaxisangular.cpp b/src/charts/axis/logvalueaxis/polarchartlogvalueaxisangular.cpp index ad864796..aed8d9fc 100644 --- a/src/charts/axis/logvalueaxis/polarchartlogvalueaxisangular.cpp +++ b/src/charts/axis/logvalueaxis/polarchartlogvalueaxisangular.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -55,8 +55,8 @@ QList<qreal> PolarChartLogValueAxisAngular::calculateLayout() const QList<qreal> points; points.resize(logValueAxis->tickCount()); - const qreal logMax = std::log10(logValueAxis->max()) / std::log10(logValueAxis->base()); - const qreal logMin = std::log10(logValueAxis->min()) / std::log10(logValueAxis->base()); + const qreal logMax = qLn(logValueAxis->max()) / qLn(logValueAxis->base()); + const qreal logMin = qLn(logValueAxis->min()) / qLn(logValueAxis->base()); const qreal startEdge = qMin(logMin, logMax); const qreal delta = 360.0 / qAbs(logMax - logMin); const qreal initialSpan = (std::ceil(startEdge) - startEdge) * delta; diff --git a/src/charts/axis/logvalueaxis/polarchartlogvalueaxisradial.cpp b/src/charts/axis/logvalueaxis/polarchartlogvalueaxisradial.cpp index 122125c0..92d5664d 100644 --- a/src/charts/axis/logvalueaxis/polarchartlogvalueaxisradial.cpp +++ b/src/charts/axis/logvalueaxis/polarchartlogvalueaxisradial.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -54,8 +54,8 @@ QList<qreal> PolarChartLogValueAxisRadial::calculateLayout() const QList<qreal> points; points.resize(logValueAxis->tickCount()); - const qreal logMax = std::log10(logValueAxis->max()) / std::log10(logValueAxis->base()); - const qreal logMin = std::log10(logValueAxis->min()) / std::log10(logValueAxis->base()); + const qreal logMax = qLn(logValueAxis->max()) / qLn(logValueAxis->base()); + const qreal logMin = qLn(logValueAxis->min()) / qLn(logValueAxis->base()); const qreal innerEdge = logMin < logMax ? logMin : logMax; const qreal delta = (axisGeometry().width() / 2.0) / qAbs(logMax - logMin); const qreal initialSpan = (std::ceil(innerEdge) - innerEdge) * delta; diff --git a/src/charts/domain/logxlogydomain.cpp b/src/charts/domain/logxlogydomain.cpp index 575de135..2660ea18 100644 --- a/src/charts/domain/logxlogydomain.cpp +++ b/src/charts/domain/logxlogydomain.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -62,8 +62,8 @@ void LogXLogYDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal maxY) m_minX = minX; m_maxX = maxX; axisXChanged = true; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; if(!m_signalsBlocked) @@ -74,8 +74,8 @@ void LogXLogYDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal maxY) m_minY = minY; m_maxY = maxY; axisYChanged = true; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logLeftY = logMinY < logMaxY ? logMinY : logMaxY; m_logRightY = logMinY > logMaxY ? logMinY : logMaxY; if (!m_signalsBlocked) @@ -166,18 +166,18 @@ QPointF LogXLogYDomain::calculateGeometryPoint(const QPointF &point, bool &ok) c qreal x(0); qreal y(0); if (point.x() > 0 && point.y() > 0) { - x = ((std::log10(point.x()) / std::log10(m_logBaseX)) - m_logLeftX) * deltaX; - y = ((std::log10(point.y()) / std::log10(m_logBaseY)) - m_logLeftY) * deltaY; + x = ((qLn(point.x()) / qLn(m_logBaseX)) - m_logLeftX) * deltaX; + y = ((qLn(point.y()) / qLn(m_logBaseY)) - m_logLeftY) * deltaY; ok = true; } else { qWarning() << "Logarithms of zero and negative values are undefined."; ok = false; if (point.x() > 0) - x = ((std::log10(point.x()) / std::log10(m_logBaseX)) - m_logLeftX) * deltaX; + x = ((qLn(point.x()) / qLn(m_logBaseX)) - m_logLeftX) * deltaX; else x = 0; if (point.y() > 0) - y = ((std::log10(point.y()) / std::log10(m_logBaseY)) - m_logLeftY) * deltaY; + y = ((qLn(point.y()) / qLn(m_logBaseY)) - m_logLeftY) * deltaY; else y = 0; } @@ -198,10 +198,10 @@ QList<QPointF> LogXLogYDomain::calculateGeometryPoints(const QList<QPointF> &lis for (int i = 0; i < list.count(); ++i) { if (list[i].x() > 0 && list[i].y() > 0) { - qreal x = ((std::log10(list[i].x()) / std::log10(m_logBaseX)) - m_logLeftX) * deltaX; + qreal x = ((qLn(list[i].x()) / qLn(m_logBaseX)) - m_logLeftX) * deltaX; if (m_reverseX) x = m_size.width() - x; - qreal y = ((std::log10(list[i].y()) / std::log10(m_logBaseY)) - m_logLeftY) * deltaY; + qreal y = ((qLn(list[i].y()) / qLn(m_logBaseY)) - m_logLeftY) * deltaY; if (!m_reverseY) y = m_size.height() - y; result[i].setX(x); @@ -260,8 +260,8 @@ bool LogXLogYDomain::detachAxis(QAbstractAxis *axis) void LogXLogYDomain::handleVerticalAxisBaseChanged(qreal baseY) { m_logBaseY = baseY; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logLeftY = logMinY < logMaxY ? logMinY : logMaxY; m_logRightY = logMinY > logMaxY ? logMinY : logMaxY; emit updated(); @@ -270,8 +270,8 @@ void LogXLogYDomain::handleVerticalAxisBaseChanged(qreal baseY) void LogXLogYDomain::handleHorizontalAxisBaseChanged(qreal baseX) { m_logBaseX = baseX; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; emit updated(); diff --git a/src/charts/domain/logxlogypolardomain.cpp b/src/charts/domain/logxlogypolardomain.cpp index 1654b946..fc128851 100644 --- a/src/charts/domain/logxlogypolardomain.cpp +++ b/src/charts/domain/logxlogypolardomain.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -62,8 +62,8 @@ void LogXLogYPolarDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal max m_minX = minX; m_maxX = maxX; axisXChanged = true; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; if (!m_signalsBlocked) @@ -74,8 +74,8 @@ void LogXLogYPolarDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal max m_minY = minY; m_maxY = maxY; axisYChanged = true; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logInnerY = logMinY < logMaxY ? logMinY : logMaxY; m_logOuterY = logMinY > logMaxY ? logMinY : logMaxY; if (!m_signalsBlocked) @@ -155,7 +155,7 @@ qreal LogXLogYPolarDomain::toAngularCoordinate(qreal value, bool &ok) const } else { ok = true; const qreal tickSpan = 360.0 / qAbs(m_logRightX - m_logLeftX); - const qreal logValue = std::log10(value) / std::log10(m_logBaseX); + const qreal logValue = qLn(value) / qLn(m_logBaseX); const qreal valueDelta = logValue - m_logLeftX; retVal = valueDelta * tickSpan; @@ -172,7 +172,7 @@ qreal LogXLogYPolarDomain::toRadialCoordinate(qreal value, bool &ok) const } else { ok = true; const qreal tickSpan = m_radius / qAbs(m_logOuterY - m_logInnerY); - const qreal logValue = std::log10(value) / std::log10(m_logBaseY); + const qreal logValue = qLn(value) / qLn(m_logBaseY); const qreal valueDelta = logValue - m_logInnerY; retVal = valueDelta * tickSpan; @@ -234,8 +234,8 @@ bool LogXLogYPolarDomain::detachAxis(QAbstractAxis *axis) void LogXLogYPolarDomain::handleHorizontalAxisBaseChanged(qreal baseX) { m_logBaseX = baseX; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; emit updated(); @@ -244,8 +244,8 @@ void LogXLogYPolarDomain::handleHorizontalAxisBaseChanged(qreal baseX) void LogXLogYPolarDomain::handleVerticalAxisBaseChanged(qreal baseY) { m_logBaseY = baseY; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logInnerY = logMinY < logMaxY ? logMinY : logMaxY; m_logOuterY = logMinY > logMaxY ? logMinY : logMaxY; emit updated(); diff --git a/src/charts/domain/logxydomain.cpp b/src/charts/domain/logxydomain.cpp index 09f474c3..5a09fee8 100644 --- a/src/charts/domain/logxydomain.cpp +++ b/src/charts/domain/logxydomain.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -58,8 +58,8 @@ void LogXYDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal maxY) m_minX = minX; m_maxX = maxX; axisXChanged = true; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; if(!m_signalsBlocked) @@ -162,7 +162,7 @@ QPointF LogXYDomain::calculateGeometryPoint(const QPointF &point, bool &ok) cons if (!m_reverseY) y = m_size.height() - y; if (point.x() > 0) { - x = ((std::log10(point.x()) / std::log10(m_logBaseX)) - m_logLeftX) * deltaX; + x = ((qLn(point.x()) / qLn(m_logBaseX)) - m_logLeftX) * deltaX; if (m_reverseX) x = m_size.width() - x; ok = true; @@ -184,7 +184,7 @@ QList<QPointF> LogXYDomain::calculateGeometryPoints(const QList<QPointF> &list) for (int i = 0; i < list.count(); ++i) { if (list[i].x() > 0) { - qreal x = ((std::log10(list[i].x()) / std::log10(m_logBaseX)) - m_logLeftX) * deltaX; + qreal x = ((qLn(list[i].x()) / qLn(m_logBaseX)) - m_logLeftX) * deltaX; if (m_reverseX) x = m_size.width() - x; qreal y = (list[i].y() - m_minY) * deltaY; @@ -239,8 +239,8 @@ bool LogXYDomain::detachAxis(QAbstractAxis *axis) void LogXYDomain::handleHorizontalAxisBaseChanged(qreal baseX) { m_logBaseX = baseX; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; emit updated(); diff --git a/src/charts/domain/logxypolardomain.cpp b/src/charts/domain/logxypolardomain.cpp index 3c0140dc..11236d38 100644 --- a/src/charts/domain/logxypolardomain.cpp +++ b/src/charts/domain/logxypolardomain.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -58,8 +58,8 @@ void LogXYPolarDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal maxY) m_minX = minX; m_maxX = maxX; axisXChanged = true; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; if (!m_signalsBlocked) @@ -148,7 +148,7 @@ qreal LogXYPolarDomain::toAngularCoordinate(qreal value, bool &ok) const } else { ok = true; const qreal tickSpan = 360.0 / qAbs(m_logRightX - m_logLeftX); - const qreal logValue = std::log10(value) / std::log10(m_logBaseX); + const qreal logValue = qLn(value) / qLn(m_logBaseX); const qreal valueDelta = logValue - m_logLeftX; retVal = valueDelta * tickSpan; @@ -213,8 +213,8 @@ bool LogXYPolarDomain::detachAxis(QAbstractAxis *axis) void LogXYPolarDomain::handleHorizontalAxisBaseChanged(qreal baseX) { m_logBaseX = baseX; - qreal logMinX = std::log10(m_minX) / std::log10(m_logBaseX); - qreal logMaxX = std::log10(m_maxX) / std::log10(m_logBaseX); + qreal logMinX = qLn(m_minX) / qLn(m_logBaseX); + qreal logMaxX = qLn(m_maxX) / qLn(m_logBaseX); m_logLeftX = logMinX < logMaxX ? logMinX : logMaxX; m_logRightX = logMinX > logMaxX ? logMinX : logMaxX; emit updated(); diff --git a/src/charts/domain/xlogydomain.cpp b/src/charts/domain/xlogydomain.cpp index 21f7d761..c8bbcce9 100644 --- a/src/charts/domain/xlogydomain.cpp +++ b/src/charts/domain/xlogydomain.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -66,8 +66,8 @@ void XLogYDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal maxY) m_minY = minY; m_maxY = maxY; axisYChanged = true; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logLeftY = logMinY < logMaxY ? logMinY : logMaxY; m_logRightY = logMinY > logMaxY ? logMinY : logMaxY; if (!m_signalsBlocked) @@ -162,7 +162,7 @@ QPointF XLogYDomain::calculateGeometryPoint(const QPointF &point, bool &ok) cons x = m_size.width() - x; qreal y(0); if (point.y() > 0) { - y = ((std::log10(point.y()) / std::log10(m_logBaseY)) - m_logLeftY) * deltaY; + y = ((qLn(point.y()) / qLn(m_logBaseY)) - m_logLeftY) * deltaY; if (!m_reverseY) y = m_size.height() - y; ok = true; @@ -187,7 +187,7 @@ QList<QPointF> XLogYDomain::calculateGeometryPoints(const QList<QPointF> &list) qreal x = (list[i].x() - m_minX) * deltaX; if (m_reverseX) x = m_size.width() - x; - qreal y = ((std::log10(list[i].y()) / std::log10(m_logBaseY)) - m_logLeftY) * deltaY; + qreal y = ((qLn(list[i].y()) / qLn(m_logBaseY)) - m_logLeftY) * deltaY; if (!m_reverseY) y = m_size.height() - y; result[i].setX(x); @@ -236,8 +236,8 @@ bool XLogYDomain::detachAxis(QAbstractAxis *axis) void XLogYDomain::handleVerticalAxisBaseChanged(qreal baseY) { m_logBaseY = baseY; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logLeftY = logMinY < logMaxY ? logMinY : logMaxY; m_logRightY = logMinY > logMaxY ? logMinY : logMaxY; emit updated(); diff --git a/src/charts/domain/xlogypolardomain.cpp b/src/charts/domain/xlogypolardomain.cpp index 0b72ff84..3c05245f 100644 --- a/src/charts/domain/xlogypolardomain.cpp +++ b/src/charts/domain/xlogypolardomain.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Charts module of the Qt Toolkit. @@ -66,8 +66,8 @@ void XLogYPolarDomain::setRange(qreal minX, qreal maxX, qreal minY, qreal maxY) m_minY = minY; m_maxY = maxY; axisYChanged = true; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logInnerY = logMinY < logMaxY ? logMinY : logMaxY; m_logOuterY = logMinY > logMaxY ? logMinY : logMaxY; if (!m_signalsBlocked) @@ -156,7 +156,7 @@ qreal XLogYPolarDomain::toRadialCoordinate(qreal value, bool &ok) const } else { ok = true; const qreal tickSpan = m_radius / qAbs(m_logOuterY - m_logInnerY); - const qreal logValue = std::log10(value) / std::log10(m_logBaseY); + const qreal logValue = qLn(value) / qLn(m_logBaseY); const qreal valueDelta = logValue - m_logInnerY; retVal = valueDelta * tickSpan; @@ -208,8 +208,8 @@ bool XLogYPolarDomain::detachAxis(QAbstractAxis *axis) void XLogYPolarDomain::handleVerticalAxisBaseChanged(qreal baseY) { m_logBaseY = baseY; - qreal logMinY = std::log10(m_minY) / std::log10(m_logBaseY); - qreal logMaxY = std::log10(m_maxY) / std::log10(m_logBaseY); + qreal logMinY = qLn(m_minY) / qLn(m_logBaseY); + qreal logMaxY = qLn(m_maxY) / qLn(m_logBaseY); m_logInnerY = logMinY < logMaxY ? logMinY : logMaxY; m_logOuterY = logMinY > logMaxY ? logMinY : logMaxY; emit updated(); |