82 template<
int... MLTTAELI>
87 inline dim(
double _a_ ) :
a(_a_) {}
90 error.Cannot_Assign_Quantities_With_Incompatible_Dimensionalities;
95 template<
int... ANOTHER_MLTTAELI>
96 class Cannot_Assign_Quantities_With_Incompatible_Dimensionalities
97 operator = (
const dim<ANOTHER_MLTTAELI...> &other );
100 inline operator double () {
return a; }
104 return dim(
a / other.
a );
106 template<
int... ANOTHER_MLTTAELI>
107 class Cannot_Assign_Quantities_With_Incompatible_Dimensionalities
126 template<
int... MLTTAELI1,
int... MLTTAELI2>
inline
127 class Cannot_Add_Values_With_Mismatching_Dimensionality operator + ( const dim<MLTTAELI1...> &d1,
const dim<MLTTAELI2...> &d2 );
129 template<
int... MLTTAELI>
inline
131 return dim<MLTTAELI...>( d1.
a + d2.
a );
135 template<
int... MLTTAELI>
inline
137 return dim<MLTTAELI...>( -d.
a );
141 template<
int... MLTTAELI1,
int... MLTTAELI2>
inline
142 class Cannot_Subtract_Values_With_Mismatching_Dimensionality operator - ( const dim<MLTTAELI1...> &d1,
const dim<MLTTAELI2...> &d2 );
144 template<
int... MLTTAELI>
inline
146 return dim<MLTTAELI...>( d1.
a - d2.
a );
151 template<
int... MLTTAELI>
inline
156 template<
int... MLTTAELI1,
int... MLTTAELI2>
inline
158 dim<(MLTTAELI1+MLTTAELI2)...> u;
164 template<
int... MLTTAELI>
inline
166 return dim<MLTTAELI...>( u.
a * f );
168 template<
int... MLTTAELI>
inline
170 return dim<MLTTAELI...>( u.
a * f );
175 template<
int... MLTTAELI>
inline
180 template<
int... MLTTAELI1,
int... MLTTAELI2>
inline
182 dim<(MLTTAELI1-MLTTAELI2)...> u;
188 template<
int... MLTTAELI>
inline
194 template<
int... MLTTAELI>
inline
196 return dim<-MLTTAELI...>( f / u.
a );
227 namespace mechanical {
229 namespace electrical {
246 namespace radioactive {
259 inline angle operator "" _deg (
long double u ) {
260 return angle( u * ( PI / 360.0 ) );
262 inline angle operator "" _deg (
unsigned long long u ) {
263 return angle( u * ( PI / 360.0 ) );
267 #define make_unit(dimension,suffix,conversion) \
268 inline dimension operator "" _##suffix ( long double u ) { \
269 return dimension( conversion ); \
271 inline dimension operator "" _##suffix ( unsigned long long u ) { \
272 return dimension( conversion ); \
343 namespace mechanical {
345 namespace electrical {
370 namespace radioactive {
decltype(amount()/time()) catativity
Definition: dim.h:251
decltype(power()/current()) voltage
Definition: dim.h:231
u u u uF
Definition: dim.h:353
u u u u u kohm
Definition: dim.h:357
decltype(current()/voltage()) conductance
Definition: dim.h:234
u u u u pF
Definition: dim.h:355
u u u u u u S
Definition: dim.h:359
decltype(voltage()/current()) resistance
Definition: dim.h:233
decltype(charge()/voltage()) capacitance
Definition: dim.h:232
make_unit(charge, C, u) make_unit(charge
u u F
Definition: dim.h:351
decltype(current() *time()) charge
Definition: dim.h:230
decltype(flux()/current()) inductance
Definition: dim.h:240
decltype(flux()/area()) strength
Definition: dim.h:239
decltype(voltage() *time()) flux
Definition: dim.h:238
decltype(flux()/area()) illuminance
Definition: dim.h:244
decltype(luminos() *solid_angle()) flux
Definition: dim.h:243
decltype(energy()/mass()) dose
Definition: dim.h:248
decltype(1.0/time()) activity
Definition: dim.h:247
decltype(force() *length()) energy
Definition: dim.h:222
dim< 0, 0, 0, 0, 1, 0, 0, 0 > amount
Definition: dim.h:209
u u u u u u u u u fs
Definition: dim.h:295
decltype(energy()/time()) power
Definition: dim.h:224
u mg
Definition: dim.h:279
u u u u u day
Definition: dim.h:287
make_unit(mass, ton, u *1e3) make_unit(mass
u u u mm
Definition: dim.h:283
u u u u u u u u u u u u u u u u u u u u u u u u u u uJ
Definition: dim.h:331
u u u u u u u u u u u u u u u u u u u u uN
Definition: dim.h:319
u u u u u u u u u u u u u u u GB
Definition: dim.h:307
u u u u u u u u u u u u u u u u u u u u u u MPa
Definition: dim.h:323
decltype(area()/area()) solid_angle
Definition: dim.h:223
decltype(1.0/time()) frequency
Definition: dim.h:217
decltype(length()/time()) velocity
Definition: dim.h:218
u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u mW
Definition: dim.h:339
u u u u u u u u u u u u u u u u u u u u u u u u u u u u sr
Definition: dim.h:335
dim< 0, 0, 1, 0, 0, 0, 0, 0 > time
Definition: dim.h:207
class Cannot_Add_Values_With_Mismatching_Dimensionality operator+(const dim< MLTTAELI1... > &d1, const dim< MLTTAELI2... > &d2)
u u u u u u u ms
Definition: dim.h:291
u u u u u u min
Definition: dim.h:289
double operator/(const dim< MLTTAELI... > &u1, const dim< MLTTAELI... > &u2)
Definition: dim.h:176
u u u u u u u u u u u u u u u u PB
Definition: dim.h:309
u u u u nm
Definition: dim.h:285
u u u u u u u u u u u u u u u u u u u u u u u u u u u pJ
Definition: dim.h:333
decltype(mass() *acceleration()) force
Definition: dim.h:220
u u m
Definition: dim.h:281
decltype(force()/area()) pressure
Definition: dim.h:221
u u u u u u u u ns
Definition: dim.h:293
dim< 1, 0, 0, 0, 0, 0, 0, 0 > mass
Definition: dim.h:205
u u u u u u u u u u C
Definition: dim.h:297
u u u u u u u u u u u u u u KB
Definition: dim.h:305
decltype(length()/length()) angle
Definition: dim.h:215
dim< MLTTAELI... > operator-(const dim< MLTTAELI... > &d)
Definition: dim.h:136
u u u u u u u u u u u u u u u u u u u u u pN
Definition: dim.h:321
dim< 0, 0, 0, 0, 0, 0, 1, 0 > luminos
Definition: dim.h:211
u u u u u u u u u u u u u u u u u u u N
Definition: dim.h:317
u u u u u u u u u u u u u u u u u u u u u u u u u u u u u kW
Definition: dim.h:337
u u u u u u u u u u u u cd
Definition: dim.h:301
u u u u u u u u u u u u u u u u u u u u u u u Pa
Definition: dim.h:325
u u u u u u u u u u u u u u u u u u u u u u u u MJ
Definition: dim.h:327
u u u u u u u u u u u u u u u u u u G
Definition: dim.h:315
u u u u u u u u u u u Amp
Definition: dim.h:299
dim< 0, 0, 0, 0, 0, 1, 0, 0 > current
Definition: dim.h:210
u u u u u u u u u u u u u u u u u Hz
Definition: dim.h:313
dim< 0, 1, 0, 0, 0, 0, 0, 0 > length
Definition: dim.h:206
u u u u u u u u u u u u u u u u u u u u u u u u u J
Definition: dim.h:329
decltype(velocity()/time()) acceleration
Definition: dim.h:219
decltype(length() *length()) area
Definition: dim.h:216
u u u u u u u u u u u u u nibble
Definition: dim.h:303
double operator*(const dim< MLTTAELI... > &u1, const dim<-MLTTAELI... > &u2)
Definition: dim.h:152
friend ostream & operator<<(ostream &out, dim q)
Definition: dim.h:111
double a
Definition: dim.h:85
dim & operator=(const dim &other)
Definition: dim.h:94
dim(const dim &other)
Definition: dim.h:88
dim(double _a_)
Definition: dim.h:87
friend istream & operator>>(istream &in, dim q)
Definition: dim.h:115
dim convert_to(const dim &other)
Definition: dim.h:103
dim()
Definition: dim.h:86
dim(const dim< ANOTHER_MLTTAELI... > &error)
Definition: dim.h:89
Provides a number of utility functions used through the rest of the library.