|
CORSIKA
@c8_version@
The framework to simulate particle cascades for astroparticle physics
|
class "quantity" is the heart of the library. More...
#include <quantity.hpp>

Public Types | |
| typedef Dims | dimension_type |
| typedef T | value_type |
| typedef quantity< Dims, T > | this_type |
Public Member Functions | |
| template<typename X > | |
| constexpr | quantity (detail::magnitude_tag_t, X x) |
| public converting initializing constructor; requires magnitude_tag to prevent constructing a quantity from a raw magnitude. | |
| template<typename X > | |
| constexpr | quantity (quantity< Dims, X > const &x) |
| converting copy-assignment constructor. | |
| template<typename DX , typename X > | |
| constexpr auto | to (quantity< DX, X > const &x) const -> detail::Quotient< Dims, DX, T, X > |
| convert to compatible unit, for example: (3._dm).to(meter) gives 0.3; More... | |
| constexpr value_type | magnitude () const |
| the quantity's magnitude. | |
| constexpr dimension_type | dimension () const |
| the quantity's dimensions. | |
| template<typename _dim = dimension_type, std::enable_if_t< std::is_same_v< _dim, dimensionless_d >, bool > = true> | |
| operator double () const | |
Friends | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, X > & | operator+= (quantity< D, X > &x, quantity< D, Y > const &y) |
| quan += quan | |
| template<typename D , typename X > | |
| constexpr quantity< D, X > | operator+ (quantity< D, X > const &x) |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, detail::PromoteAdd< X, Y > > | operator+ (quantity< D, X > const &x, quantity< D, Y > const &y) |
| quan + quan | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, X > & | operator-= (quantity< D, X > &x, quantity< D, Y > const &y) |
| quan -= quan | |
| template<typename D , typename X > | |
| constexpr quantity< D, X > | operator- (quantity< D, X > const &x) |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, detail::PromoteAdd< X, Y > > | operator- (quantity< D, X > const &x, quantity< D, Y > const &y) |
| quan - quan | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, X > & | operator*= (quantity< D, X > &x, const Y &y) |
| quan *= num | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, detail::PromoteMul< X, Y > > | operator* (quantity< D, X > const &x, const Y &y) |
| quan * num | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, detail::PromoteMul< X, Y > > | operator* (const X &x, quantity< D, Y > const &y) |
| num * quan | |
| template<typename DX , typename DY , typename X , typename Y > | |
| constexpr detail::Product< DX, DY, X, Y > | operator* (quantity< DX, X > const &lhs, quantity< DY, Y > const &rhs) |
| quan * quan: | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, X > & | operator/= (quantity< D, X > &x, const Y &y) |
| quan /= num | |
| template<typename D , typename X , typename Y > | |
| constexpr quantity< D, detail::PromoteMul< X, Y > > | operator/ (quantity< D, X > const &x, const Y &y) |
| quan / num | |
| template<typename D , typename X , typename Y > | |
| constexpr detail::Reciprocal< D, X, Y > | operator/ (const X &x, quantity< D, Y > const &y) |
| num / quan | |
| template<typename DX , typename DY , typename X , typename Y > | |
| constexpr detail::Quotient< DX, DY, X, Y > | operator/ (quantity< DX, X > const &x, quantity< DY, Y > const &y) |
| quan / quan: | |
| template<typename D , typename X > | |
| constexpr quantity< D, X > | abs (quantity< D, X > const &x) |
| absolute value. | |
| template<int N, typename D , typename X > | |
| constexpr detail::Power< D, N, X > | nth_power (quantity< D, X > const &x) |
| N-th power. | |
| template<typename D , typename X > | |
| constexpr detail::Power< D, 2, X > | square (quantity< D, X > const &x) |
| square. | |
| template<typename D , typename X > | |
| constexpr detail::Power< D, 3, X > | cube (quantity< D, X > const &x) |
| cube. | |
| template<int N, typename D , typename X > | |
| detail::Root< D, N, X > constexpr | nth_root (quantity< D, X > const &x) |
| n-th root. | |
| template<typename D , typename X > | |
| detail::Root< D, 2, X > constexpr | sqrt (quantity< D, X > const &x) |
| square root. | |
| template<typename D , typename X > | |
| detail::Root< D, 3, X > constexpr | cbrt (quantity< D, X > const &x) |
| cubic root. | |
| template<typename D , typename X , typename Y > | |
| constexpr bool | operator== (quantity< D, X > const &x, quantity< D, Y > const &y) |
| equality. | |
| template<typename D , typename X , typename Y > | |
| constexpr bool | operator!= (quantity< D, X > const &x, quantity< D, Y > const &y) |
| inequality. | |
| template<typename D , typename X , typename Y > | |
| constexpr bool | operator< (quantity< D, X > const &x, quantity< D, Y > const &y) |
| less-than. | |
| template<typename D , typename X , typename Y > | |
| constexpr bool | operator<= (quantity< D, X > const &x, quantity< D, Y > const &y) |
| less-equal. | |
| template<typename D , typename X , typename Y > | |
| constexpr bool | operator> (quantity< D, X > const &x, quantity< D, Y > const &y) |
| greater-than. | |
| template<typename D , typename X , typename Y > | |
| constexpr bool | operator>= (quantity< D, X > const &x, quantity< D, Y > const &y) |
| greater-equal. | |
class "quantity" is the heart of the library.
It associates dimensions with a single "Rep" data member and protects it from dimensionally inconsistent use.
Definition at line 54 of file quantity.hpp.
|
inlinestatic |
We also define "infinity" for each type.
RU, Do 7. Jan 02:10:18 CET 2021
Definition at line 367 of file quantity.hpp.
|
inline |
convert to compatible unit, for example: (3._dm).to(meter) gives 0.3;
convert to given unit, for example: (3._dm).to(meter) gives 0.3;
Definition at line 338 of file quantity.hpp.
|
inlinestatic |
We need a "zero" of each type – for comparisons, to initialize running totals, etc.
Note: 0 m != 0 kg, since they are of different dimensionality. zero is really just defined for convenience, since quantity< length_d >::zero == 0 * meter, etc.
Definition at line 359 of file quantity.hpp.
|
friend |
Definition at line 528 of file quantity.hpp.
|
friend |
Definition at line 552 of file quantity.hpp.