First major wave of PQ refactoring, including but not limited to:

* Default unit is more clearly stated in one place, not restated in many different places, and is not always the SI unit
* Converter strategy pattern in CMeasurementUnit, covering linear, affine, and different kinds of sexagesimal units
* General reorganization of CMeasurementUnit construction and CPhysicalQuantity methods, not removing any behvaiour
* Move duplicated method unitFromSymbol from derived classes into base class CMeasurementUnit
* For DBus, CPhysicalQuantity marshals both in its own unit and in the default unit
This commit is contained in:
Mathew Sutcliffe
2013-08-18 23:40:52 +01:00
parent a8036f1ce5
commit da8ba9aac3
26 changed files with 809 additions and 957 deletions

View File

@@ -6,6 +6,7 @@
#ifndef BLACKMISC_MATHEMATICS_H
#define BLACKMISC_MATHEMATICS_H
#include <QtCore/qmath.h>
#include <cmath>
namespace BlackMisc
{
@@ -70,6 +71,26 @@ public:
*/
static double roundEpsilon(double value, double epsilon);
/*!
* \brief Nearest integer not greater in magnitude than value, correcting for epsilon
* \param value
* \param epsilon
*/
static inline double trunc(double value, double epsilon = 1e-10)
{
return value < 0 ? ceil(value - epsilon) : floor(value + epsilon);
}
/*!
* \brief Fractional part of value
* \param value
*/
static inline double fract(double value)
{
double unused;
return modf(value, &unused);
}
/*!
* \brief PI
* \return