|
SST
14.1.0
StructuralSimulationToolkit
|
Performs Unit math in full precision. More...
#include <unitAlgebra.h>
Data Structures | |
| class | InvalidNumberString |
| Exception for when number couldn't be parsed. More... | |
| class | InvalidUnitType |
| Exception for when units are not recognized or are invalid. More... | |
| class | NonMatchingUnits |
| Exception for when attempting operations between objects that do not have matching base units. More... | |
| class | UnitAlgebraException |
| Base exception for all exception classes in UnitAlgebra. More... | |
Public Member Functions | |
| void | init (const std::string &val) |
| UnitAlgebra (const std::string &val) | |
Create a new UnitAlgebra instance, and pre-populate with a parsed value. More... | |
| UnitAlgebra (const UnitAlgebra &)=default | |
| Copy constructor. | |
| void | print (std::ostream &stream, int32_t precision=6) |
| Print to an ostream the value. More... | |
| void | printWithBestSI (std::ostream &stream, int32_t precision=6) |
| Print to an ostream the value Formats the number using SI-prefixes. More... | |
| std::string | toString (int32_t precision=6) const |
| Return a string representation of this value. More... | |
| std::string | toStringBestSI (int32_t precision=6) const |
| Return a string representation of this value Formats the number using SI-prefixes. More... | |
| UnitAlgebra & | operator= (const std::string &v) |
| UnitAlgebra & | operator*= (const UnitAlgebra &v) |
| Multiply by an argument;. | |
| template<typename T > | |
| UnitAlgebra & | operator*= (const T &v) |
| Multiply by an argument;. | |
| UnitAlgebra & | operator/= (const UnitAlgebra &v) |
| Divide by an argument;. | |
| template<typename T > | |
| UnitAlgebra & | operator/= (const T &v) |
| Divide by an argument;. | |
| UnitAlgebra & | operator+= (const UnitAlgebra &v) |
| Add an argument;. | |
| template<typename T > | |
| UnitAlgebra & | operator+= (const T &v) |
| Multiply by an argument;. | |
| UnitAlgebra & | operator-= (const UnitAlgebra &v) |
| Subtract an argument;. | |
| template<typename T > | |
| UnitAlgebra & | operator-= (const T &v) |
| Divide by an argument;. | |
| bool | operator> (const UnitAlgebra &v) const |
| Compare if this object is greater than the argument. | |
| bool | operator>= (const UnitAlgebra &v) const |
| Compare if this object is greater than, or equal to, the argument. | |
| bool | operator< (const UnitAlgebra &v) const |
| Compare if this object is less than the argument. | |
| bool | operator<= (const UnitAlgebra &v) const |
| Compare if this object is less than, or equal to, the argument. | |
| bool | operator== (const UnitAlgebra &v) const |
| Compare if this object is equal to, the argument. | |
| bool | operator!= (const UnitAlgebra &v) const |
| Compare if this object is not equal to, the argument. | |
| UnitAlgebra & | invert () |
| Apply a reciprocal operation to the object. | |
| bool | hasUnits (const std::string &u) const |
| Returns true if the units in the parameter string are found in this object. | |
| sst_big_num | getValue () const |
| Return the raw value. | |
| int64_t | getRoundedValue () const |
| double | getDoubleValue () const |
| bool | isValueZero () const |
| void | serialize_order (SST::Core::Serialization::serializer &ser) |
Performs Unit math in full precision.
Allows operations such as multiplying a frequency by 2.
| UnitAlgebra::UnitAlgebra | ( | const std::string & | val | ) |
Create a new UnitAlgebra instance, and pre-populate with a parsed value.
| val | Value to parse. It is of the following format: val := NUMBER( )?UNITS NUMBER := (-)?[0-9]+(.[0-9]+)? UNITS := UNITGROUP(/UNITGROUP) UNITGROUP := UNIT(-UNIT)* UNIT := (SIPREFIX)?(BASEUNIT|COMPUNIT) SIPREFIX := {a,f,p,n,u,m,[kKMGTPE]i?} BASEUNIT := {s,B,b,events} COMPUNIT := {Hz,hz,Bps,bps,event} |
| int64_t UnitAlgebra::getRoundedValue | ( | ) | const |
Referenced by SST::TimeLord::getTimeConverter().
| void UnitAlgebra::print | ( | std::ostream & | stream, |
| int32_t | precision = 6 |
||
| ) |
Print to an ostream the value.
| stream | Output stream |
| precision | Number of digits to print. Default is 6. <= 0 is full precision. |
| void UnitAlgebra::printWithBestSI | ( | std::ostream & | stream, |
| int32_t | precision = 6 |
||
| ) |
Print to an ostream the value Formats the number using SI-prefixes.
| stream | Output stream |
| precision | Number of digits to print. Default is 6. <= 0 is full precision. |
| string UnitAlgebra::toString | ( | int32_t | precision = 6 | ) | const |
Return a string representation of this value.
| precision | Number of digits to print. Default is 6. <= 0 is full precision. |
| string UnitAlgebra::toStringBestSI | ( | int32_t | precision = 6 | ) | const |
Return a string representation of this value Formats the number using SI-prefixes.
| precision | Number of digits to print. Default is 6. <= 0 is full precision. |
References SST::decimal_fixedpoint< whole_words, fraction_words >::toString().
Referenced by SST::Simulation_impl::checkpoint_write_globals(), SST::SimulatorHeartbeat::execute(), SST::Core::Serialization::ObjectMapFundamental< TimeConverter * >::get(), and SST::TimeLord::getTimeConverter().