units
Use physical dimensions at compile-time or run-time.
units.hpp
Go to the documentation of this file.
1 /// @file vnix/units.hpp
2 ///
3 /// @brief Definition of various units in namespaces
4 /// vnix::units::flt,
5 /// vnix::units::dbl, and
6 /// vnix::units::ldbl.
7 ///
8 /// @copyright 2019 Thomas E. Vaughan; all rights reserved.
9 /// @license BSD three-clause; see LICENSE.
10 
11 // This file was machine-generated from 'units.hpp.erb'.
12 
13 #ifndef VNIX_UNITS_HPP
14 #define VNIX_UNITS_HPP
15 
16 #include <vnix/units/dimval.hpp>
17 
18 namespace vnix {
19 namespace units {
20 
21 
22 constexpr dim length_dim(1,0,0,0,0); ///< Exponents for length.
23 constexpr dim mass_dim(0,1,0,0,0); ///< Exponents for mass.
24 constexpr dim time_dim(0,0,1,0,0); ///< Exponents for time.
25 constexpr dim charge_dim(0,0,0,1,0); ///< Exponents for charge.
26 constexpr dim temperature_dim(0,0,0,0,1); ///< Exponents for temperature.
27 
28 
29 /// Template structs that user would use only to extend the library. Each
30 /// template struct defined in impl is called by a vnix::units function whose
31 /// name is the same as the struct.
32 namespace impl {
33 
34 /// Template used to construct a number of meters.
35 /// @tparam T Numeric type (float, double, etc.).
36 template <typename T>
37 struct meters : public basic_statdim<length_dim.encode(), T> {
38  /// Scale factor.
39  constexpr static long double const sf = 1;
40 
41  /// Initialize from number of meters.
42  constexpr meters(T v) :
43  basic_statdim<length_dim.encode(), T>(
44  sf*v,
45  length_dim)
46  {}
47 };
48 
49 template <typename T>
50 constexpr long double const meters<T>::sf;
51 
52 /// Template-variable for symbol for meters.
53 /// @tparam T Numeric type (float, double, etc.).
54 template <typename T> constexpr meters<T> m(T(1));
55 
56 /// Template used to construct a number of centimeters.
57 /// @tparam T Numeric type (float, double, etc.).
58 template <typename T>
59 struct centimeters : public basic_statdim<length_dim.encode(), T> {
60  /// Scale factor.
61  constexpr static long double const sf = 0.01;
62 
63  /// Initialize from number of centimeters.
64  constexpr centimeters(T v) :
65  basic_statdim<length_dim.encode(), T>(
66  sf * meters<T>::sf * v,
67  length_dim)
68  {}
69 };
70 
71 template <typename T>
72 constexpr long double const centimeters<T>::sf;
73 
74 /// Template-variable for symbol for centimeters.
75 /// @tparam T Numeric type (float, double, etc.).
76 template <typename T> constexpr centimeters<T> cm(T(1));
77 
78 /// Template used to construct a number of millimeters.
79 /// @tparam T Numeric type (float, double, etc.).
80 template <typename T>
81 struct millimeters : public basic_statdim<length_dim.encode(), T> {
82  /// Scale factor.
83  constexpr static long double const sf = 0.001;
84 
85  /// Initialize from number of millimeters.
86  constexpr millimeters(T v) :
87  basic_statdim<length_dim.encode(), T>(
88  sf * meters<T>::sf * v,
89  length_dim)
90  {}
91 };
92 
93 template <typename T>
94 constexpr long double const millimeters<T>::sf;
95 
96 /// Template-variable for symbol for millimeters.
97 /// @tparam T Numeric type (float, double, etc.).
98 template <typename T> constexpr millimeters<T> mm(T(1));
99 
100 /// Template used to construct a number of micrometers.
101 /// @tparam T Numeric type (float, double, etc.).
102 template <typename T>
103 struct micrometers : public basic_statdim<length_dim.encode(), T> {
104  /// Scale factor.
105  constexpr static long double const sf = 1.0e-06;
106 
107  /// Initialize from number of micrometers.
108  constexpr micrometers(T v) :
109  basic_statdim<length_dim.encode(), T>(
110  sf * meters<T>::sf * v,
111  length_dim)
112  {}
113 };
114 
115 template <typename T>
116 constexpr long double const micrometers<T>::sf;
117 
118 /// Template-variable for symbol for micrometers.
119 /// @tparam T Numeric type (float, double, etc.).
120 template <typename T> constexpr micrometers<T> mum(T(1));
121 
122 /// Template used to construct a number of nanometers.
123 /// @tparam T Numeric type (float, double, etc.).
124 template <typename T>
125 struct nanometers : public basic_statdim<length_dim.encode(), T> {
126  /// Scale factor.
127  constexpr static long double const sf = 1.0e-09;
128 
129  /// Initialize from number of nanometers.
130  constexpr nanometers(T v) :
131  basic_statdim<length_dim.encode(), T>(
132  sf * meters<T>::sf * v,
133  length_dim)
134  {}
135 };
136 
137 template <typename T>
138 constexpr long double const nanometers<T>::sf;
139 
140 /// Template-variable for symbol for nanometers.
141 /// @tparam T Numeric type (float, double, etc.).
142 template <typename T> constexpr nanometers<T> nm(T(1));
143 
144 /// Template used to construct a number of picometers.
145 /// @tparam T Numeric type (float, double, etc.).
146 template <typename T>
147 struct picometers : public basic_statdim<length_dim.encode(), T> {
148  /// Scale factor.
149  constexpr static long double const sf = 1.0e-12;
150 
151  /// Initialize from number of picometers.
152  constexpr picometers(T v) :
153  basic_statdim<length_dim.encode(), T>(
154  sf * meters<T>::sf * v,
155  length_dim)
156  {}
157 };
158 
159 template <typename T>
160 constexpr long double const picometers<T>::sf;
161 
162 /// Template-variable for symbol for picometers.
163 /// @tparam T Numeric type (float, double, etc.).
164 template <typename T> constexpr picometers<T> pm(T(1));
165 
166 /// Template used to construct a number of femtometers.
167 /// @tparam T Numeric type (float, double, etc.).
168 template <typename T>
169 struct femtometers : public basic_statdim<length_dim.encode(), T> {
170  /// Scale factor.
171  constexpr static long double const sf = 1.0e-15;
172 
173  /// Initialize from number of femtometers.
174  constexpr femtometers(T v) :
175  basic_statdim<length_dim.encode(), T>(
176  sf * meters<T>::sf * v,
177  length_dim)
178  {}
179 };
180 
181 template <typename T>
182 constexpr long double const femtometers<T>::sf;
183 
184 /// Template-variable for symbol for femtometers.
185 /// @tparam T Numeric type (float, double, etc.).
186 template <typename T> constexpr femtometers<T> fm(T(1));
187 
188 /// Template used to construct a number of kilometers.
189 /// @tparam T Numeric type (float, double, etc.).
190 template <typename T>
191 struct kilometers : public basic_statdim<length_dim.encode(), T> {
192  /// Scale factor.
193  constexpr static long double const sf = 1000.0;
194 
195  /// Initialize from number of kilometers.
196  constexpr kilometers(T v) :
197  basic_statdim<length_dim.encode(), T>(
198  sf * meters<T>::sf * v,
199  length_dim)
200  {}
201 };
202 
203 template <typename T>
204 constexpr long double const kilometers<T>::sf;
205 
206 /// Template-variable for symbol for kilometers.
207 /// @tparam T Numeric type (float, double, etc.).
208 template <typename T> constexpr kilometers<T> km(T(1));
209 
210 /// Template used to construct a number of megameters.
211 /// @tparam T Numeric type (float, double, etc.).
212 template <typename T>
213 struct megameters : public basic_statdim<length_dim.encode(), T> {
214  /// Scale factor.
215  constexpr static long double const sf = 1000000.0;
216 
217  /// Initialize from number of megameters.
218  constexpr megameters(T v) :
219  basic_statdim<length_dim.encode(), T>(
220  sf * meters<T>::sf * v,
221  length_dim)
222  {}
223 };
224 
225 template <typename T>
226 constexpr long double const megameters<T>::sf;
227 
228 /// Template-variable for symbol for megameters.
229 /// @tparam T Numeric type (float, double, etc.).
230 template <typename T> constexpr megameters<T> Mm(T(1));
231 
232 /// Template used to construct a number of grams.
233 /// @tparam T Numeric type (float, double, etc.).
234 template <typename T>
235 struct grams : public basic_statdim<mass_dim.encode(), T> {
236  /// Scale factor.
237  constexpr static long double const sf = 1;
238 
239  /// Initialize from number of grams.
240  constexpr grams(T v) :
241  basic_statdim<mass_dim.encode(), T>(
242  sf*v,
243  mass_dim)
244  {}
245 };
246 
247 template <typename T>
248 constexpr long double const grams<T>::sf;
249 
250 /// Template-variable for symbol for grams.
251 /// @tparam T Numeric type (float, double, etc.).
252 template <typename T> constexpr grams<T> g(T(1));
253 
254 /// Template used to construct a number of milligrams.
255 /// @tparam T Numeric type (float, double, etc.).
256 template <typename T>
257 struct milligrams : public basic_statdim<mass_dim.encode(), T> {
258  /// Scale factor.
259  constexpr static long double const sf = 0.001;
260 
261  /// Initialize from number of milligrams.
262  constexpr milligrams(T v) :
263  basic_statdim<mass_dim.encode(), T>(
264  sf * grams<T>::sf * v,
265  mass_dim)
266  {}
267 };
268 
269 template <typename T>
270 constexpr long double const milligrams<T>::sf;
271 
272 /// Template-variable for symbol for milligrams.
273 /// @tparam T Numeric type (float, double, etc.).
274 template <typename T> constexpr milligrams<T> mg(T(1));
275 
276 /// Template used to construct a number of micrograms.
277 /// @tparam T Numeric type (float, double, etc.).
278 template <typename T>
279 struct micrograms : public basic_statdim<mass_dim.encode(), T> {
280  /// Scale factor.
281  constexpr static long double const sf = 1.0e-06;
282 
283  /// Initialize from number of micrograms.
284  constexpr micrograms(T v) :
285  basic_statdim<mass_dim.encode(), T>(
286  sf * grams<T>::sf * v,
287  mass_dim)
288  {}
289 };
290 
291 template <typename T>
292 constexpr long double const micrograms<T>::sf;
293 
294 /// Template-variable for symbol for micrograms.
295 /// @tparam T Numeric type (float, double, etc.).
296 template <typename T> constexpr micrograms<T> mug(T(1));
297 
298 /// Template used to construct a number of nanograms.
299 /// @tparam T Numeric type (float, double, etc.).
300 template <typename T>
301 struct nanograms : public basic_statdim<mass_dim.encode(), T> {
302  /// Scale factor.
303  constexpr static long double const sf = 1.0e-09;
304 
305  /// Initialize from number of nanograms.
306  constexpr nanograms(T v) :
307  basic_statdim<mass_dim.encode(), T>(
308  sf * grams<T>::sf * v,
309  mass_dim)
310  {}
311 };
312 
313 template <typename T>
314 constexpr long double const nanograms<T>::sf;
315 
316 /// Template-variable for symbol for nanograms.
317 /// @tparam T Numeric type (float, double, etc.).
318 template <typename T> constexpr nanograms<T> ng(T(1));
319 
320 /// Template used to construct a number of picograms.
321 /// @tparam T Numeric type (float, double, etc.).
322 template <typename T>
323 struct picograms : public basic_statdim<mass_dim.encode(), T> {
324  /// Scale factor.
325  constexpr static long double const sf = 1.0e-12;
326 
327  /// Initialize from number of picograms.
328  constexpr picograms(T v) :
329  basic_statdim<mass_dim.encode(), T>(
330  sf * grams<T>::sf * v,
331  mass_dim)
332  {}
333 };
334 
335 template <typename T>
336 constexpr long double const picograms<T>::sf;
337 
338 /// Template-variable for symbol for picograms.
339 /// @tparam T Numeric type (float, double, etc.).
340 template <typename T> constexpr picograms<T> pg(T(1));
341 
342 /// Template used to construct a number of kilograms.
343 /// @tparam T Numeric type (float, double, etc.).
344 template <typename T>
345 struct kilograms : public basic_statdim<mass_dim.encode(), T> {
346  /// Scale factor.
347  constexpr static long double const sf = 1000.0;
348 
349  /// Initialize from number of kilograms.
350  constexpr kilograms(T v) :
351  basic_statdim<mass_dim.encode(), T>(
352  sf * grams<T>::sf * v,
353  mass_dim)
354  {}
355 };
356 
357 template <typename T>
358 constexpr long double const kilograms<T>::sf;
359 
360 /// Template-variable for symbol for kilograms.
361 /// @tparam T Numeric type (float, double, etc.).
362 template <typename T> constexpr kilograms<T> kg(T(1));
363 
364 /// Template used to construct a number of megagrams.
365 /// @tparam T Numeric type (float, double, etc.).
366 template <typename T>
367 struct megagrams : public basic_statdim<mass_dim.encode(), T> {
368  /// Scale factor.
369  constexpr static long double const sf = 1000000.0;
370 
371  /// Initialize from number of megagrams.
372  constexpr megagrams(T v) :
373  basic_statdim<mass_dim.encode(), T>(
374  sf * grams<T>::sf * v,
375  mass_dim)
376  {}
377 };
378 
379 template <typename T>
380 constexpr long double const megagrams<T>::sf;
381 
382 /// Template-variable for symbol for megagrams.
383 /// @tparam T Numeric type (float, double, etc.).
384 template <typename T> constexpr megagrams<T> Mg(T(1));
385 
386 /// Template used to construct a number of seconds.
387 /// @tparam T Numeric type (float, double, etc.).
388 template <typename T>
389 struct seconds : public basic_statdim<time_dim.encode(), T> {
390  /// Scale factor.
391  constexpr static long double const sf = 1;
392 
393  /// Initialize from number of seconds.
394  constexpr seconds(T v) :
395  basic_statdim<time_dim.encode(), T>(
396  sf*v,
397  time_dim)
398  {}
399 };
400 
401 template <typename T>
402 constexpr long double const seconds<T>::sf;
403 
404 /// Template-variable for symbol for seconds.
405 /// @tparam T Numeric type (float, double, etc.).
406 template <typename T> constexpr seconds<T> s(T(1));
407 
408 /// Template used to construct a number of milliseconds.
409 /// @tparam T Numeric type (float, double, etc.).
410 template <typename T>
411 struct milliseconds : public basic_statdim<time_dim.encode(), T> {
412  /// Scale factor.
413  constexpr static long double const sf = 0.001;
414 
415  /// Initialize from number of milliseconds.
416  constexpr milliseconds(T v) :
417  basic_statdim<time_dim.encode(), T>(
418  sf * seconds<T>::sf * v,
419  time_dim)
420  {}
421 };
422 
423 template <typename T>
424 constexpr long double const milliseconds<T>::sf;
425 
426 /// Template-variable for symbol for milliseconds.
427 /// @tparam T Numeric type (float, double, etc.).
428 template <typename T> constexpr milliseconds<T> ms(T(1));
429 
430 /// Template used to construct a number of microseconds.
431 /// @tparam T Numeric type (float, double, etc.).
432 template <typename T>
433 struct microseconds : public basic_statdim<time_dim.encode(), T> {
434  /// Scale factor.
435  constexpr static long double const sf = 1.0e-06;
436 
437  /// Initialize from number of microseconds.
438  constexpr microseconds(T v) :
439  basic_statdim<time_dim.encode(), T>(
440  sf * seconds<T>::sf * v,
441  time_dim)
442  {}
443 };
444 
445 template <typename T>
446 constexpr long double const microseconds<T>::sf;
447 
448 /// Template-variable for symbol for microseconds.
449 /// @tparam T Numeric type (float, double, etc.).
450 template <typename T> constexpr microseconds<T> mus(T(1));
451 
452 /// Template used to construct a number of nanoseconds.
453 /// @tparam T Numeric type (float, double, etc.).
454 template <typename T>
455 struct nanoseconds : public basic_statdim<time_dim.encode(), T> {
456  /// Scale factor.
457  constexpr static long double const sf = 1.0e-09;
458 
459  /// Initialize from number of nanoseconds.
460  constexpr nanoseconds(T v) :
461  basic_statdim<time_dim.encode(), T>(
462  sf * seconds<T>::sf * v,
463  time_dim)
464  {}
465 };
466 
467 template <typename T>
468 constexpr long double const nanoseconds<T>::sf;
469 
470 /// Template-variable for symbol for nanoseconds.
471 /// @tparam T Numeric type (float, double, etc.).
472 template <typename T> constexpr nanoseconds<T> ns(T(1));
473 
474 /// Template used to construct a number of picoseconds.
475 /// @tparam T Numeric type (float, double, etc.).
476 template <typename T>
477 struct picoseconds : public basic_statdim<time_dim.encode(), T> {
478  /// Scale factor.
479  constexpr static long double const sf = 1.0e-12;
480 
481  /// Initialize from number of picoseconds.
482  constexpr picoseconds(T v) :
483  basic_statdim<time_dim.encode(), T>(
484  sf * seconds<T>::sf * v,
485  time_dim)
486  {}
487 };
488 
489 template <typename T>
490 constexpr long double const picoseconds<T>::sf;
491 
492 /// Template-variable for symbol for picoseconds.
493 /// @tparam T Numeric type (float, double, etc.).
494 template <typename T> constexpr picoseconds<T> ps(T(1));
495 
496 /// Template used to construct a number of femtoseconds.
497 /// @tparam T Numeric type (float, double, etc.).
498 template <typename T>
499 struct femtoseconds : public basic_statdim<time_dim.encode(), T> {
500  /// Scale factor.
501  constexpr static long double const sf = 1.0e-15;
502 
503  /// Initialize from number of femtoseconds.
504  constexpr femtoseconds(T v) :
505  basic_statdim<time_dim.encode(), T>(
506  sf * seconds<T>::sf * v,
507  time_dim)
508  {}
509 };
510 
511 template <typename T>
512 constexpr long double const femtoseconds<T>::sf;
513 
514 /// Template-variable for symbol for femtoseconds.
515 /// @tparam T Numeric type (float, double, etc.).
516 template <typename T> constexpr femtoseconds<T> fs(T(1));
517 
518 /// Template used to construct a number of coulombs.
519 /// @tparam T Numeric type (float, double, etc.).
520 template <typename T>
521 struct coulombs : public basic_statdim<charge_dim.encode(), T> {
522  /// Scale factor.
523  constexpr static long double const sf = 1;
524 
525  /// Initialize from number of coulombs.
526  constexpr coulombs(T v) :
527  basic_statdim<charge_dim.encode(), T>(
528  sf*v,
529  charge_dim)
530  {}
531 };
532 
533 template <typename T>
534 constexpr long double const coulombs<T>::sf;
535 
536 /// Template-variable for symbol for coulombs.
537 /// @tparam T Numeric type (float, double, etc.).
538 template <typename T> constexpr coulombs<T> C(T(1));
539 
540 /// Template used to construct a number of millicoulombs.
541 /// @tparam T Numeric type (float, double, etc.).
542 template <typename T>
543 struct millicoulombs : public basic_statdim<charge_dim.encode(), T> {
544  /// Scale factor.
545  constexpr static long double const sf = 0.001;
546 
547  /// Initialize from number of millicoulombs.
548  constexpr millicoulombs(T v) :
549  basic_statdim<charge_dim.encode(), T>(
550  sf * coulombs<T>::sf * v,
551  charge_dim)
552  {}
553 };
554 
555 template <typename T>
556 constexpr long double const millicoulombs<T>::sf;
557 
558 /// Template-variable for symbol for millicoulombs.
559 /// @tparam T Numeric type (float, double, etc.).
560 template <typename T> constexpr millicoulombs<T> mC(T(1));
561 
562 /// Template used to construct a number of microcoulombs.
563 /// @tparam T Numeric type (float, double, etc.).
564 template <typename T>
565 struct microcoulombs : public basic_statdim<charge_dim.encode(), T> {
566  /// Scale factor.
567  constexpr static long double const sf = 1.0e-06;
568 
569  /// Initialize from number of microcoulombs.
570  constexpr microcoulombs(T v) :
571  basic_statdim<charge_dim.encode(), T>(
572  sf * coulombs<T>::sf * v,
573  charge_dim)
574  {}
575 };
576 
577 template <typename T>
578 constexpr long double const microcoulombs<T>::sf;
579 
580 /// Template-variable for symbol for microcoulombs.
581 /// @tparam T Numeric type (float, double, etc.).
582 template <typename T> constexpr microcoulombs<T> muC(T(1));
583 
584 /// Template used to construct a number of nanocoulombs.
585 /// @tparam T Numeric type (float, double, etc.).
586 template <typename T>
587 struct nanocoulombs : public basic_statdim<charge_dim.encode(), T> {
588  /// Scale factor.
589  constexpr static long double const sf = 1.0e-09;
590 
591  /// Initialize from number of nanocoulombs.
592  constexpr nanocoulombs(T v) :
593  basic_statdim<charge_dim.encode(), T>(
594  sf * coulombs<T>::sf * v,
595  charge_dim)
596  {}
597 };
598 
599 template <typename T>
600 constexpr long double const nanocoulombs<T>::sf;
601 
602 /// Template-variable for symbol for nanocoulombs.
603 /// @tparam T Numeric type (float, double, etc.).
604 template <typename T> constexpr nanocoulombs<T> nC(T(1));
605 
606 /// Template used to construct a number of picocoulombs.
607 /// @tparam T Numeric type (float, double, etc.).
608 template <typename T>
609 struct picocoulombs : public basic_statdim<charge_dim.encode(), T> {
610  /// Scale factor.
611  constexpr static long double const sf = 1.0e-12;
612 
613  /// Initialize from number of picocoulombs.
614  constexpr picocoulombs(T v) :
615  basic_statdim<charge_dim.encode(), T>(
616  sf * coulombs<T>::sf * v,
617  charge_dim)
618  {}
619 };
620 
621 template <typename T>
622 constexpr long double const picocoulombs<T>::sf;
623 
624 /// Template-variable for symbol for picocoulombs.
625 /// @tparam T Numeric type (float, double, etc.).
626 template <typename T> constexpr picocoulombs<T> pC(T(1));
627 
628 /// Template used to construct a number of kelvins.
629 /// @tparam T Numeric type (float, double, etc.).
630 template <typename T>
631 struct kelvins : public basic_statdim<temperature_dim.encode(), T> {
632  /// Scale factor.
633  constexpr static long double const sf = 1;
634 
635  /// Initialize from number of kelvins.
636  constexpr kelvins(T v) :
637  basic_statdim<temperature_dim.encode(), T>(
638  sf*v,
640  {}
641 };
642 
643 template <typename T>
644 constexpr long double const kelvins<T>::sf;
645 
646 /// Template-variable for symbol for kelvins.
647 /// @tparam T Numeric type (float, double, etc.).
648 template <typename T> constexpr kelvins<T> K(T(1));
649 
650 /// Template used to construct a number of millikelvins.
651 /// @tparam T Numeric type (float, double, etc.).
652 template <typename T>
653 struct millikelvins : public basic_statdim<temperature_dim.encode(), T> {
654  /// Scale factor.
655  constexpr static long double const sf = 0.001;
656 
657  /// Initialize from number of millikelvins.
658  constexpr millikelvins(T v) :
659  basic_statdim<temperature_dim.encode(), T>(
660  sf * kelvins<T>::sf * v,
662  {}
663 };
664 
665 template <typename T>
666 constexpr long double const millikelvins<T>::sf;
667 
668 /// Template-variable for symbol for millikelvins.
669 /// @tparam T Numeric type (float, double, etc.).
670 template <typename T> constexpr millikelvins<T> mK(T(1));
671 
672 /// Template used to construct a number of microkelvins.
673 /// @tparam T Numeric type (float, double, etc.).
674 template <typename T>
675 struct microkelvins : public basic_statdim<temperature_dim.encode(), T> {
676  /// Scale factor.
677  constexpr static long double const sf = 1.0e-06;
678 
679  /// Initialize from number of microkelvins.
680  constexpr microkelvins(T v) :
681  basic_statdim<temperature_dim.encode(), T>(
682  sf * kelvins<T>::sf * v,
684  {}
685 };
686 
687 template <typename T>
688 constexpr long double const microkelvins<T>::sf;
689 
690 /// Template-variable for symbol for microkelvins.
691 /// @tparam T Numeric type (float, double, etc.).
692 template <typename T> constexpr microkelvins<T> muK(T(1));
693 
694 /// Template used to construct a number of nanokelvins.
695 /// @tparam T Numeric type (float, double, etc.).
696 template <typename T>
697 struct nanokelvins : public basic_statdim<temperature_dim.encode(), T> {
698  /// Scale factor.
699  constexpr static long double const sf = 1.0e-09;
700 
701  /// Initialize from number of nanokelvins.
702  constexpr nanokelvins(T v) :
703  basic_statdim<temperature_dim.encode(), T>(
704  sf * kelvins<T>::sf * v,
706  {}
707 };
708 
709 template <typename T>
710 constexpr long double const nanokelvins<T>::sf;
711 
712 /// Template-variable for symbol for nanokelvins.
713 /// @tparam T Numeric type (float, double, etc.).
714 template <typename T> constexpr nanokelvins<T> nK(T(1));
715 
716 /// Template used to construct a number of feet.
717 /// @tparam T Numeric type (float, double, etc.).
718 template <typename T>
719 struct feet : public basic_statdim<(m<float>.d()).encode(), T> {
720  /// Scale factor.
721  constexpr static long double const sf = 0.3048*m<long double>.sf;
722 
723  /// Initialize from number of feet.
724  constexpr feet(T v) :
725  basic_statdim<(m<float>.d()).encode(), T>(
726  sf*v,
727  m<float>.d())
728  {}
729 };
730 
731 template <typename T>
732 constexpr long double const feet<T>::sf;
733 
734 /// Template-variable for symbol for feet.
735 /// @tparam T Numeric type (float, double, etc.).
736 template <typename T> constexpr feet<T> ft(T(1));
737 
738 /// Template used to construct a number of kilofeet.
739 /// @tparam T Numeric type (float, double, etc.).
740 template <typename T>
741 struct kilofeet : public basic_statdim<(m<float>.d()).encode(), T> {
742  /// Scale factor.
743  constexpr static long double const sf = 1000.0;
744 
745  /// Initialize from number of kilofeet.
746  constexpr kilofeet(T v) :
747  basic_statdim<(m<float>.d()).encode(), T>(
748  sf * feet<T>::sf * v,
749  m<float>.d())
750  {}
751 };
752 
753 template <typename T>
754 constexpr long double const kilofeet<T>::sf;
755 
756 /// Template-variable for symbol for kilofeet.
757 /// @tparam T Numeric type (float, double, etc.).
758 template <typename T> constexpr kilofeet<T> kft(T(1));
759 
760 /// Template used to construct a number of inches.
761 /// @tparam T Numeric type (float, double, etc.).
762 template <typename T>
763 struct inches : public basic_statdim<(ft<float>.d()).encode(), T> {
764  /// Scale factor.
765  constexpr static long double const sf = ft<long double>.sf/12;
766 
767  /// Initialize from number of inches.
768  constexpr inches(T v) :
769  basic_statdim<(ft<float>.d()).encode(), T>(
770  sf*v,
771  ft<float>.d())
772  {}
773 };
774 
775 template <typename T>
776 constexpr long double const inches<T>::sf;
777 
778 /// Template-variable for symbol for inches.
779 /// @tparam T Numeric type (float, double, etc.).
780 template <typename T> constexpr inches<T> in(T(1));
781 
782 /// Template used to construct a number of yards.
783 /// @tparam T Numeric type (float, double, etc.).
784 template <typename T>
785 struct yards : public basic_statdim<(ft<float>.d()).encode(), T> {
786  /// Scale factor.
787  constexpr static long double const sf = 3*ft<long double>.sf;
788 
789  /// Initialize from number of yards.
790  constexpr yards(T v) :
791  basic_statdim<(ft<float>.d()).encode(), T>(
792  sf*v,
793  ft<float>.d())
794  {}
795 };
796 
797 template <typename T>
798 constexpr long double const yards<T>::sf;
799 
800 /// Template-variable for symbol for yards.
801 /// @tparam T Numeric type (float, double, etc.).
802 template <typename T> constexpr yards<T> yd(T(1));
803 
804 /// Template used to construct a number of miles.
805 /// @tparam T Numeric type (float, double, etc.).
806 template <typename T>
807 struct miles : public basic_statdim<(ft<float>.d()).encode(), T> {
808  /// Scale factor.
809  constexpr static long double const sf = 5280*ft<long double>.sf;
810 
811  /// Initialize from number of miles.
812  constexpr miles(T v) :
813  basic_statdim<(ft<float>.d()).encode(), T>(
814  sf*v,
815  ft<float>.d())
816  {}
817 };
818 
819 template <typename T>
820 constexpr long double const miles<T>::sf;
821 
822 /// Template-variable for symbol for miles.
823 /// @tparam T Numeric type (float, double, etc.).
824 template <typename T> constexpr miles<T> mi(T(1));
825 
826 /// Template used to construct a number of newtons.
827 /// @tparam T Numeric type (float, double, etc.).
828 template <typename T>
829 struct newtons : public basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T> {
830  /// Scale factor.
831  constexpr static long double const sf = kg<long double>.sf*m<long double>.sf/s<long double>.sf/s<long double>.sf;
832 
833  /// Initialize from number of newtons.
834  constexpr newtons(T v) :
835  basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T>(
836  sf*v,
837  kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d())
838  {}
839 };
840 
841 template <typename T>
842 constexpr long double const newtons<T>::sf;
843 
844 /// Template-variable for symbol for newtons.
845 /// @tparam T Numeric type (float, double, etc.).
846 template <typename T> constexpr newtons<T> N(T(1));
847 
848 /// Template used to construct a number of millinewtons.
849 /// @tparam T Numeric type (float, double, etc.).
850 template <typename T>
851 struct millinewtons : public basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T> {
852  /// Scale factor.
853  constexpr static long double const sf = 0.001;
854 
855  /// Initialize from number of millinewtons.
856  constexpr millinewtons(T v) :
857  basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T>(
858  sf * newtons<T>::sf * v,
859  kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d())
860  {}
861 };
862 
863 template <typename T>
864 constexpr long double const millinewtons<T>::sf;
865 
866 /// Template-variable for symbol for millinewtons.
867 /// @tparam T Numeric type (float, double, etc.).
868 template <typename T> constexpr millinewtons<T> mN(T(1));
869 
870 /// Template used to construct a number of micronewtons.
871 /// @tparam T Numeric type (float, double, etc.).
872 template <typename T>
873 struct micronewtons : public basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T> {
874  /// Scale factor.
875  constexpr static long double const sf = 1.0e-06;
876 
877  /// Initialize from number of micronewtons.
878  constexpr micronewtons(T v) :
879  basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T>(
880  sf * newtons<T>::sf * v,
881  kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d())
882  {}
883 };
884 
885 template <typename T>
886 constexpr long double const micronewtons<T>::sf;
887 
888 /// Template-variable for symbol for micronewtons.
889 /// @tparam T Numeric type (float, double, etc.).
890 template <typename T> constexpr micronewtons<T> muN(T(1));
891 
892 /// Template used to construct a number of kilonewtons.
893 /// @tparam T Numeric type (float, double, etc.).
894 template <typename T>
895 struct kilonewtons : public basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T> {
896  /// Scale factor.
897  constexpr static long double const sf = 1000.0;
898 
899  /// Initialize from number of kilonewtons.
900  constexpr kilonewtons(T v) :
901  basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T>(
902  sf * newtons<T>::sf * v,
903  kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d())
904  {}
905 };
906 
907 template <typename T>
908 constexpr long double const kilonewtons<T>::sf;
909 
910 /// Template-variable for symbol for kilonewtons.
911 /// @tparam T Numeric type (float, double, etc.).
912 template <typename T> constexpr kilonewtons<T> kN(T(1));
913 
914 /// Template used to construct a number of meganewtons.
915 /// @tparam T Numeric type (float, double, etc.).
916 template <typename T>
917 struct meganewtons : public basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T> {
918  /// Scale factor.
919  constexpr static long double const sf = 1000000.0;
920 
921  /// Initialize from number of meganewtons.
922  constexpr meganewtons(T v) :
923  basic_statdim<(kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d()).encode(), T>(
924  sf * newtons<T>::sf * v,
925  kg<float>.d()+m<float>.d()-s<float>.d()-s<float>.d())
926  {}
927 };
928 
929 template <typename T>
930 constexpr long double const meganewtons<T>::sf;
931 
932 /// Template-variable for symbol for meganewtons.
933 /// @tparam T Numeric type (float, double, etc.).
934 template <typename T> constexpr meganewtons<T> MN(T(1));
935 
936 /// Template used to construct a number of dynes.
937 /// @tparam T Numeric type (float, double, etc.).
938 template <typename T>
939 struct dynes : public basic_statdim<(g<float>.d()+cm<float>.d()-s<float>.d()-s<float>.d()).encode(), T> {
940  /// Scale factor.
941  constexpr static long double const sf = g<long double>.sf*cm<long double>.sf/s<long double>.sf/s<long double>.sf;
942 
943  /// Initialize from number of dynes.
944  constexpr dynes(T v) :
945  basic_statdim<(g<float>.d()+cm<float>.d()-s<float>.d()-s<float>.d()).encode(), T>(
946  sf*v,
947  g<float>.d()+cm<float>.d()-s<float>.d()-s<float>.d())
948  {}
949 };
950 
951 template <typename T>
952 constexpr long double const dynes<T>::sf;
953 
954 /// Template-variable for symbol for dynes.
955 /// @tparam T Numeric type (float, double, etc.).
956 template <typename T> constexpr dynes<T> dyn(T(1));
957 
958 /// Template used to construct a number of joules.
959 /// @tparam T Numeric type (float, double, etc.).
960 template <typename T>
961 struct joules : public basic_statdim<(N<float>.d()+m<float>.d()).encode(), T> {
962  /// Scale factor.
963  constexpr static long double const sf = N<long double>.sf*m<long double>.sf;
964 
965  /// Initialize from number of joules.
966  constexpr joules(T v) :
967  basic_statdim<(N<float>.d()+m<float>.d()).encode(), T>(
968  sf*v,
969  N<float>.d()+m<float>.d())
970  {}
971 };
972 
973 template <typename T>
974 constexpr long double const joules<T>::sf;
975 
976 /// Template-variable for symbol for joules.
977 /// @tparam T Numeric type (float, double, etc.).
978 template <typename T> constexpr joules<T> J(T(1));
979 
980 /// Template used to construct a number of millijoules.
981 /// @tparam T Numeric type (float, double, etc.).
982 template <typename T>
983 struct millijoules : public basic_statdim<(N<float>.d()+m<float>.d()).encode(), T> {
984  /// Scale factor.
985  constexpr static long double const sf = 0.001;
986 
987  /// Initialize from number of millijoules.
988  constexpr millijoules(T v) :
989  basic_statdim<(N<float>.d()+m<float>.d()).encode(), T>(
990  sf * joules<T>::sf * v,
991  N<float>.d()+m<float>.d())
992  {}
993 };
994 
995 template <typename T>
996 constexpr long double const millijoules<T>::sf;
997 
998 /// Template-variable for symbol for millijoules.
999 /// @tparam T Numeric type (float, double, etc.).
1000 template <typename T> constexpr millijoules<T> mJ(T(1));
1001 
1002 /// Template used to construct a number of microjoules.
1003 /// @tparam T Numeric type (float, double, etc.).
1004 template <typename T>
1005 struct microjoules : public basic_statdim<(N<float>.d()+m<float>.d()).encode(), T> {
1006  /// Scale factor.
1007  constexpr static long double const sf = 1.0e-06;
1008 
1009  /// Initialize from number of microjoules.
1010  constexpr microjoules(T v) :
1011  basic_statdim<(N<float>.d()+m<float>.d()).encode(), T>(
1012  sf * joules<T>::sf * v,
1013  N<float>.d()+m<float>.d())
1014  {}
1015 };
1016 
1017 template <typename T>
1018 constexpr long double const microjoules<T>::sf;
1019 
1020 /// Template-variable for symbol for microjoules.
1021 /// @tparam T Numeric type (float, double, etc.).
1022 template <typename T> constexpr microjoules<T> muJ(T(1));
1023 
1024 /// Template used to construct a number of kilojoules.
1025 /// @tparam T Numeric type (float, double, etc.).
1026 template <typename T>
1027 struct kilojoules : public basic_statdim<(N<float>.d()+m<float>.d()).encode(), T> {
1028  /// Scale factor.
1029  constexpr static long double const sf = 1000.0;
1030 
1031  /// Initialize from number of kilojoules.
1032  constexpr kilojoules(T v) :
1033  basic_statdim<(N<float>.d()+m<float>.d()).encode(), T>(
1034  sf * joules<T>::sf * v,
1035  N<float>.d()+m<float>.d())
1036  {}
1037 };
1038 
1039 template <typename T>
1040 constexpr long double const kilojoules<T>::sf;
1041 
1042 /// Template-variable for symbol for kilojoules.
1043 /// @tparam T Numeric type (float, double, etc.).
1044 template <typename T> constexpr kilojoules<T> kJ(T(1));
1045 
1046 /// Template used to construct a number of megajoules.
1047 /// @tparam T Numeric type (float, double, etc.).
1048 template <typename T>
1049 struct megajoules : public basic_statdim<(N<float>.d()+m<float>.d()).encode(), T> {
1050  /// Scale factor.
1051  constexpr static long double const sf = 1000000.0;
1052 
1053  /// Initialize from number of megajoules.
1054  constexpr megajoules(T v) :
1055  basic_statdim<(N<float>.d()+m<float>.d()).encode(), T>(
1056  sf * joules<T>::sf * v,
1057  N<float>.d()+m<float>.d())
1058  {}
1059 };
1060 
1061 template <typename T>
1062 constexpr long double const megajoules<T>::sf;
1063 
1064 /// Template-variable for symbol for megajoules.
1065 /// @tparam T Numeric type (float, double, etc.).
1066 template <typename T> constexpr megajoules<T> MJ(T(1));
1067 
1068 /// Template used to construct a number of gigajoules.
1069 /// @tparam T Numeric type (float, double, etc.).
1070 template <typename T>
1071 struct gigajoules : public basic_statdim<(N<float>.d()+m<float>.d()).encode(), T> {
1072  /// Scale factor.
1073  constexpr static long double const sf = 1000000000.0;
1074 
1075  /// Initialize from number of gigajoules.
1076  constexpr gigajoules(T v) :
1077  basic_statdim<(N<float>.d()+m<float>.d()).encode(), T>(
1078  sf * joules<T>::sf * v,
1079  N<float>.d()+m<float>.d())
1080  {}
1081 };
1082 
1083 template <typename T>
1084 constexpr long double const gigajoules<T>::sf;
1085 
1086 /// Template-variable for symbol for gigajoules.
1087 /// @tparam T Numeric type (float, double, etc.).
1088 template <typename T> constexpr gigajoules<T> GJ(T(1));
1089 
1090 /// Template used to construct a number of ergs.
1091 /// @tparam T Numeric type (float, double, etc.).
1092 template <typename T>
1093 struct ergs : public basic_statdim<(dyn<float>.d()+cm<float>.d()).encode(), T> {
1094  /// Scale factor.
1095  constexpr static long double const sf = dyn<long double>.sf*cm<long double>.sf;
1096 
1097  /// Initialize from number of ergs.
1098  constexpr ergs(T v) :
1099  basic_statdim<(dyn<float>.d()+cm<float>.d()).encode(), T>(
1100  sf*v,
1101  dyn<float>.d()+cm<float>.d())
1102  {}
1103 };
1104 
1105 template <typename T>
1106 constexpr long double const ergs<T>::sf;
1107 
1108 /// Template-variable for symbol for ergs.
1109 /// @tparam T Numeric type (float, double, etc.).
1110 template <typename T> constexpr ergs<T> erg(T(1));
1111 
1112 /// Template used to construct a number of watts.
1113 /// @tparam T Numeric type (float, double, etc.).
1114 template <typename T>
1115 struct watts : public basic_statdim<(J<float>.d()-s<float>.d()).encode(), T> {
1116  /// Scale factor.
1117  constexpr static long double const sf = J<long double>.sf/s<long double>.sf;
1118 
1119  /// Initialize from number of watts.
1120  constexpr watts(T v) :
1121  basic_statdim<(J<float>.d()-s<float>.d()).encode(), T>(
1122  sf*v,
1123  J<float>.d()-s<float>.d())
1124  {}
1125 };
1126 
1127 template <typename T>
1128 constexpr long double const watts<T>::sf;
1129 
1130 /// Template-variable for symbol for watts.
1131 /// @tparam T Numeric type (float, double, etc.).
1132 template <typename T> constexpr watts<T> W(T(1));
1133 
1134 /// Template used to construct a number of milliwatts.
1135 /// @tparam T Numeric type (float, double, etc.).
1136 template <typename T>
1137 struct milliwatts : public basic_statdim<(J<float>.d()-s<float>.d()).encode(), T> {
1138  /// Scale factor.
1139  constexpr static long double const sf = 0.001;
1140 
1141  /// Initialize from number of milliwatts.
1142  constexpr milliwatts(T v) :
1143  basic_statdim<(J<float>.d()-s<float>.d()).encode(), T>(
1144  sf * watts<T>::sf * v,
1145  J<float>.d()-s<float>.d())
1146  {}
1147 };
1148 
1149 template <typename T>
1150 constexpr long double const milliwatts<T>::sf;
1151 
1152 /// Template-variable for symbol for milliwatts.
1153 /// @tparam T Numeric type (float, double, etc.).
1154 template <typename T> constexpr milliwatts<T> mW(T(1));
1155 
1156 /// Template used to construct a number of microwatts.
1157 /// @tparam T Numeric type (float, double, etc.).
1158 template <typename T>
1159 struct microwatts : public basic_statdim<(J<float>.d()-s<float>.d()).encode(), T> {
1160  /// Scale factor.
1161  constexpr static long double const sf = 1.0e-06;
1162 
1163  /// Initialize from number of microwatts.
1164  constexpr microwatts(T v) :
1165  basic_statdim<(J<float>.d()-s<float>.d()).encode(), T>(
1166  sf * watts<T>::sf * v,
1167  J<float>.d()-s<float>.d())
1168  {}
1169 };
1170 
1171 template <typename T>
1172 constexpr long double const microwatts<T>::sf;
1173 
1174 /// Template-variable for symbol for microwatts.
1175 /// @tparam T Numeric type (float, double, etc.).
1176 template <typename T> constexpr microwatts<T> muW(T(1));
1177 
1178 /// Template used to construct a number of kilowatts.
1179 /// @tparam T Numeric type (float, double, etc.).
1180 template <typename T>
1181 struct kilowatts : public basic_statdim<(J<float>.d()-s<float>.d()).encode(), T> {
1182  /// Scale factor.
1183  constexpr static long double const sf = 1000.0;
1184 
1185  /// Initialize from number of kilowatts.
1186  constexpr kilowatts(T v) :
1187  basic_statdim<(J<float>.d()-s<float>.d()).encode(), T>(
1188  sf * watts<T>::sf * v,
1189  J<float>.d()-s<float>.d())
1190  {}
1191 };
1192 
1193 template <typename T>
1194 constexpr long double const kilowatts<T>::sf;
1195 
1196 /// Template-variable for symbol for kilowatts.
1197 /// @tparam T Numeric type (float, double, etc.).
1198 template <typename T> constexpr kilowatts<T> kW(T(1));
1199 
1200 /// Template used to construct a number of megawatts.
1201 /// @tparam T Numeric type (float, double, etc.).
1202 template <typename T>
1203 struct megawatts : public basic_statdim<(J<float>.d()-s<float>.d()).encode(), T> {
1204  /// Scale factor.
1205  constexpr static long double const sf = 1000000.0;
1206 
1207  /// Initialize from number of megawatts.
1208  constexpr megawatts(T v) :
1209  basic_statdim<(J<float>.d()-s<float>.d()).encode(), T>(
1210  sf * watts<T>::sf * v,
1211  J<float>.d()-s<float>.d())
1212  {}
1213 };
1214 
1215 template <typename T>
1216 constexpr long double const megawatts<T>::sf;
1217 
1218 /// Template-variable for symbol for megawatts.
1219 /// @tparam T Numeric type (float, double, etc.).
1220 template <typename T> constexpr megawatts<T> MW(T(1));
1221 
1222 /// Template used to construct a number of gigawatts.
1223 /// @tparam T Numeric type (float, double, etc.).
1224 template <typename T>
1225 struct gigawatts : public basic_statdim<(J<float>.d()-s<float>.d()).encode(), T> {
1226  /// Scale factor.
1227  constexpr static long double const sf = 1000000000.0;
1228 
1229  /// Initialize from number of gigawatts.
1230  constexpr gigawatts(T v) :
1231  basic_statdim<(J<float>.d()-s<float>.d()).encode(), T>(
1232  sf * watts<T>::sf * v,
1233  J<float>.d()-s<float>.d())
1234  {}
1235 };
1236 
1237 template <typename T>
1238 constexpr long double const gigawatts<T>::sf;
1239 
1240 /// Template-variable for symbol for gigawatts.
1241 /// @tparam T Numeric type (float, double, etc.).
1242 template <typename T> constexpr gigawatts<T> GW(T(1));
1243 
1244 /// Template used to construct a number of amperes.
1245 /// @tparam T Numeric type (float, double, etc.).
1246 template <typename T>
1247 struct amperes : public basic_statdim<(C<float>.d()-s<float>.d()).encode(), T> {
1248  /// Scale factor.
1249  constexpr static long double const sf = C<long double>.sf/s<long double>.sf;
1250 
1251  /// Initialize from number of amperes.
1252  constexpr amperes(T v) :
1253  basic_statdim<(C<float>.d()-s<float>.d()).encode(), T>(
1254  sf*v,
1255  C<float>.d()-s<float>.d())
1256  {}
1257 };
1258 
1259 template <typename T>
1260 constexpr long double const amperes<T>::sf;
1261 
1262 /// Template-variable for symbol for amperes.
1263 /// @tparam T Numeric type (float, double, etc.).
1264 template <typename T> constexpr amperes<T> A(T(1));
1265 
1266 /// Template used to construct a number of milliamperes.
1267 /// @tparam T Numeric type (float, double, etc.).
1268 template <typename T>
1269 struct milliamperes : public basic_statdim<(C<float>.d()-s<float>.d()).encode(), T> {
1270  /// Scale factor.
1271  constexpr static long double const sf = 0.001;
1272 
1273  /// Initialize from number of milliamperes.
1274  constexpr milliamperes(T v) :
1275  basic_statdim<(C<float>.d()-s<float>.d()).encode(), T>(
1276  sf * amperes<T>::sf * v,
1277  C<float>.d()-s<float>.d())
1278  {}
1279 };
1280 
1281 template <typename T>
1282 constexpr long double const milliamperes<T>::sf;
1283 
1284 /// Template-variable for symbol for milliamperes.
1285 /// @tparam T Numeric type (float, double, etc.).
1286 template <typename T> constexpr milliamperes<T> mA(T(1));
1287 
1288 /// Template used to construct a number of microamperes.
1289 /// @tparam T Numeric type (float, double, etc.).
1290 template <typename T>
1291 struct microamperes : public basic_statdim<(C<float>.d()-s<float>.d()).encode(), T> {
1292  /// Scale factor.
1293  constexpr static long double const sf = 1.0e-06;
1294 
1295  /// Initialize from number of microamperes.
1296  constexpr microamperes(T v) :
1297  basic_statdim<(C<float>.d()-s<float>.d()).encode(), T>(
1298  sf * amperes<T>::sf * v,
1299  C<float>.d()-s<float>.d())
1300  {}
1301 };
1302 
1303 template <typename T>
1304 constexpr long double const microamperes<T>::sf;
1305 
1306 /// Template-variable for symbol for microamperes.
1307 /// @tparam T Numeric type (float, double, etc.).
1308 template <typename T> constexpr microamperes<T> muA(T(1));
1309 
1310 } // namespace impl
1311 
1312 
1313 /// Produce dimensioned quantity from number of meters.
1314 /// @tparam T Numeric type stored in dimensioned quantity.
1315 /// @param v Number of meters
1316 template <typename T>
1317 constexpr auto meters(T v) { return impl::meters<T>(v); }
1318 
1319 /// Produce dimensioned quantity from number of centimeters.
1320 /// @tparam T Numeric type stored in dimensioned quantity.
1321 /// @param v Number of centimeters
1322 template <typename T>
1323 constexpr auto centimeters(T v) { return impl::centimeters<T>(v); };
1324 
1325 /// Produce dimensioned quantity from number of millimeters.
1326 /// @tparam T Numeric type stored in dimensioned quantity.
1327 /// @param v Number of millimeters
1328 template <typename T>
1329 constexpr auto millimeters(T v) { return impl::millimeters<T>(v); };
1330 
1331 /// Produce dimensioned quantity from number of micrometers.
1332 /// @tparam T Numeric type stored in dimensioned quantity.
1333 /// @param v Number of micrometers
1334 template <typename T>
1335 constexpr auto micrometers(T v) { return impl::micrometers<T>(v); };
1336 
1337 /// Produce dimensioned quantity from number of nanometers.
1338 /// @tparam T Numeric type stored in dimensioned quantity.
1339 /// @param v Number of nanometers
1340 template <typename T>
1341 constexpr auto nanometers(T v) { return impl::nanometers<T>(v); };
1342 
1343 /// Produce dimensioned quantity from number of picometers.
1344 /// @tparam T Numeric type stored in dimensioned quantity.
1345 /// @param v Number of picometers
1346 template <typename T>
1347 constexpr auto picometers(T v) { return impl::picometers<T>(v); };
1348 
1349 /// Produce dimensioned quantity from number of femtometers.
1350 /// @tparam T Numeric type stored in dimensioned quantity.
1351 /// @param v Number of femtometers
1352 template <typename T>
1353 constexpr auto femtometers(T v) { return impl::femtometers<T>(v); };
1354 
1355 /// Produce dimensioned quantity from number of kilometers.
1356 /// @tparam T Numeric type stored in dimensioned quantity.
1357 /// @param v Number of kilometers
1358 template <typename T>
1359 constexpr auto kilometers(T v) { return impl::kilometers<T>(v); };
1360 
1361 /// Produce dimensioned quantity from number of megameters.
1362 /// @tparam T Numeric type stored in dimensioned quantity.
1363 /// @param v Number of megameters
1364 template <typename T>
1365 constexpr auto megameters(T v) { return impl::megameters<T>(v); };
1366 
1367 /// Produce dimensioned quantity from number of grams.
1368 /// @tparam T Numeric type stored in dimensioned quantity.
1369 /// @param v Number of grams
1370 template <typename T>
1371 constexpr auto grams(T v) { return impl::grams<T>(v); }
1372 
1373 /// Produce dimensioned quantity from number of milligrams.
1374 /// @tparam T Numeric type stored in dimensioned quantity.
1375 /// @param v Number of milligrams
1376 template <typename T>
1377 constexpr auto milligrams(T v) { return impl::milligrams<T>(v); };
1378 
1379 /// Produce dimensioned quantity from number of micrograms.
1380 /// @tparam T Numeric type stored in dimensioned quantity.
1381 /// @param v Number of micrograms
1382 template <typename T>
1383 constexpr auto micrograms(T v) { return impl::micrograms<T>(v); };
1384 
1385 /// Produce dimensioned quantity from number of nanograms.
1386 /// @tparam T Numeric type stored in dimensioned quantity.
1387 /// @param v Number of nanograms
1388 template <typename T>
1389 constexpr auto nanograms(T v) { return impl::nanograms<T>(v); };
1390 
1391 /// Produce dimensioned quantity from number of picograms.
1392 /// @tparam T Numeric type stored in dimensioned quantity.
1393 /// @param v Number of picograms
1394 template <typename T>
1395 constexpr auto picograms(T v) { return impl::picograms<T>(v); };
1396 
1397 /// Produce dimensioned quantity from number of kilograms.
1398 /// @tparam T Numeric type stored in dimensioned quantity.
1399 /// @param v Number of kilograms
1400 template <typename T>
1401 constexpr auto kilograms(T v) { return impl::kilograms<T>(v); };
1402 
1403 /// Produce dimensioned quantity from number of megagrams.
1404 /// @tparam T Numeric type stored in dimensioned quantity.
1405 /// @param v Number of megagrams
1406 template <typename T>
1407 constexpr auto megagrams(T v) { return impl::megagrams<T>(v); };
1408 
1409 /// Produce dimensioned quantity from number of seconds.
1410 /// @tparam T Numeric type stored in dimensioned quantity.
1411 /// @param v Number of seconds
1412 template <typename T>
1413 constexpr auto seconds(T v) { return impl::seconds<T>(v); }
1414 
1415 /// Produce dimensioned quantity from number of milliseconds.
1416 /// @tparam T Numeric type stored in dimensioned quantity.
1417 /// @param v Number of milliseconds
1418 template <typename T>
1419 constexpr auto milliseconds(T v) { return impl::milliseconds<T>(v); };
1420 
1421 /// Produce dimensioned quantity from number of microseconds.
1422 /// @tparam T Numeric type stored in dimensioned quantity.
1423 /// @param v Number of microseconds
1424 template <typename T>
1425 constexpr auto microseconds(T v) { return impl::microseconds<T>(v); };
1426 
1427 /// Produce dimensioned quantity from number of nanoseconds.
1428 /// @tparam T Numeric type stored in dimensioned quantity.
1429 /// @param v Number of nanoseconds
1430 template <typename T>
1431 constexpr auto nanoseconds(T v) { return impl::nanoseconds<T>(v); };
1432 
1433 /// Produce dimensioned quantity from number of picoseconds.
1434 /// @tparam T Numeric type stored in dimensioned quantity.
1435 /// @param v Number of picoseconds
1436 template <typename T>
1437 constexpr auto picoseconds(T v) { return impl::picoseconds<T>(v); };
1438 
1439 /// Produce dimensioned quantity from number of femtoseconds.
1440 /// @tparam T Numeric type stored in dimensioned quantity.
1441 /// @param v Number of femtoseconds
1442 template <typename T>
1443 constexpr auto femtoseconds(T v) { return impl::femtoseconds<T>(v); };
1444 
1445 /// Produce dimensioned quantity from number of coulombs.
1446 /// @tparam T Numeric type stored in dimensioned quantity.
1447 /// @param v Number of coulombs
1448 template <typename T>
1449 constexpr auto coulombs(T v) { return impl::coulombs<T>(v); }
1450 
1451 /// Produce dimensioned quantity from number of millicoulombs.
1452 /// @tparam T Numeric type stored in dimensioned quantity.
1453 /// @param v Number of millicoulombs
1454 template <typename T>
1455 constexpr auto millicoulombs(T v) { return impl::millicoulombs<T>(v); };
1456 
1457 /// Produce dimensioned quantity from number of microcoulombs.
1458 /// @tparam T Numeric type stored in dimensioned quantity.
1459 /// @param v Number of microcoulombs
1460 template <typename T>
1461 constexpr auto microcoulombs(T v) { return impl::microcoulombs<T>(v); };
1462 
1463 /// Produce dimensioned quantity from number of nanocoulombs.
1464 /// @tparam T Numeric type stored in dimensioned quantity.
1465 /// @param v Number of nanocoulombs
1466 template <typename T>
1467 constexpr auto nanocoulombs(T v) { return impl::nanocoulombs<T>(v); };
1468 
1469 /// Produce dimensioned quantity from number of picocoulombs.
1470 /// @tparam T Numeric type stored in dimensioned quantity.
1471 /// @param v Number of picocoulombs
1472 template <typename T>
1473 constexpr auto picocoulombs(T v) { return impl::picocoulombs<T>(v); };
1474 
1475 /// Produce dimensioned quantity from number of kelvins.
1476 /// @tparam T Numeric type stored in dimensioned quantity.
1477 /// @param v Number of kelvins
1478 template <typename T>
1479 constexpr auto kelvins(T v) { return impl::kelvins<T>(v); }
1480 
1481 /// Produce dimensioned quantity from number of millikelvins.
1482 /// @tparam T Numeric type stored in dimensioned quantity.
1483 /// @param v Number of millikelvins
1484 template <typename T>
1485 constexpr auto millikelvins(T v) { return impl::millikelvins<T>(v); };
1486 
1487 /// Produce dimensioned quantity from number of microkelvins.
1488 /// @tparam T Numeric type stored in dimensioned quantity.
1489 /// @param v Number of microkelvins
1490 template <typename T>
1491 constexpr auto microkelvins(T v) { return impl::microkelvins<T>(v); };
1492 
1493 /// Produce dimensioned quantity from number of nanokelvins.
1494 /// @tparam T Numeric type stored in dimensioned quantity.
1495 /// @param v Number of nanokelvins
1496 template <typename T>
1497 constexpr auto nanokelvins(T v) { return impl::nanokelvins<T>(v); };
1498 
1499 /// Produce dimensioned quantity from number of feet.
1500 /// @tparam T Numeric type stored in dimensioned quantity.
1501 /// @param v Number of feet.
1502 template <typename T>
1503 constexpr auto feet(T v) { return impl::feet<T>(v); }
1504 
1505 /// Produce dimensioned quantity from number of kilofeet.
1506 /// @tparam T Numeric type stored in dimensioned quantity.
1507 /// @param v Number of kilofeet.
1508 template <typename T>
1509 constexpr auto kilofeet(T v) { return impl::kilofeet<T>(v); }
1510 
1511 /// Produce dimensioned quantity from number of inches.
1512 /// @tparam T Numeric type stored in dimensioned quantity.
1513 /// @param v Number of inches.
1514 template <typename T>
1515 constexpr auto inches(T v) { return impl::inches<T>(v); }
1516 
1517 /// Produce dimensioned quantity from number of yards.
1518 /// @tparam T Numeric type stored in dimensioned quantity.
1519 /// @param v Number of yards.
1520 template <typename T>
1521 constexpr auto yards(T v) { return impl::yards<T>(v); }
1522 
1523 /// Produce dimensioned quantity from number of miles.
1524 /// @tparam T Numeric type stored in dimensioned quantity.
1525 /// @param v Number of miles.
1526 template <typename T>
1527 constexpr auto miles(T v) { return impl::miles<T>(v); }
1528 
1529 /// Produce dimensioned quantity from number of newtons.
1530 /// @tparam T Numeric type stored in dimensioned quantity.
1531 /// @param v Number of newtons.
1532 template <typename T>
1533 constexpr auto newtons(T v) { return impl::newtons<T>(v); }
1534 
1535 /// Produce dimensioned quantity from number of millinewtons.
1536 /// @tparam T Numeric type stored in dimensioned quantity.
1537 /// @param v Number of millinewtons.
1538 template <typename T>
1539 constexpr auto millinewtons(T v) { return impl::millinewtons<T>(v); }
1540 
1541 /// Produce dimensioned quantity from number of micronewtons.
1542 /// @tparam T Numeric type stored in dimensioned quantity.
1543 /// @param v Number of micronewtons.
1544 template <typename T>
1545 constexpr auto micronewtons(T v) { return impl::micronewtons<T>(v); }
1546 
1547 /// Produce dimensioned quantity from number of kilonewtons.
1548 /// @tparam T Numeric type stored in dimensioned quantity.
1549 /// @param v Number of kilonewtons.
1550 template <typename T>
1551 constexpr auto kilonewtons(T v) { return impl::kilonewtons<T>(v); }
1552 
1553 /// Produce dimensioned quantity from number of meganewtons.
1554 /// @tparam T Numeric type stored in dimensioned quantity.
1555 /// @param v Number of meganewtons.
1556 template <typename T>
1557 constexpr auto meganewtons(T v) { return impl::meganewtons<T>(v); }
1558 
1559 /// Produce dimensioned quantity from number of dynes.
1560 /// @tparam T Numeric type stored in dimensioned quantity.
1561 /// @param v Number of dynes.
1562 template <typename T>
1563 constexpr auto dynes(T v) { return impl::dynes<T>(v); }
1564 
1565 /// Produce dimensioned quantity from number of joules.
1566 /// @tparam T Numeric type stored in dimensioned quantity.
1567 /// @param v Number of joules.
1568 template <typename T>
1569 constexpr auto joules(T v) { return impl::joules<T>(v); }
1570 
1571 /// Produce dimensioned quantity from number of millijoules.
1572 /// @tparam T Numeric type stored in dimensioned quantity.
1573 /// @param v Number of millijoules.
1574 template <typename T>
1575 constexpr auto millijoules(T v) { return impl::millijoules<T>(v); }
1576 
1577 /// Produce dimensioned quantity from number of microjoules.
1578 /// @tparam T Numeric type stored in dimensioned quantity.
1579 /// @param v Number of microjoules.
1580 template <typename T>
1581 constexpr auto microjoules(T v) { return impl::microjoules<T>(v); }
1582 
1583 /// Produce dimensioned quantity from number of kilojoules.
1584 /// @tparam T Numeric type stored in dimensioned quantity.
1585 /// @param v Number of kilojoules.
1586 template <typename T>
1587 constexpr auto kilojoules(T v) { return impl::kilojoules<T>(v); }
1588 
1589 /// Produce dimensioned quantity from number of megajoules.
1590 /// @tparam T Numeric type stored in dimensioned quantity.
1591 /// @param v Number of megajoules.
1592 template <typename T>
1593 constexpr auto megajoules(T v) { return impl::megajoules<T>(v); }
1594 
1595 /// Produce dimensioned quantity from number of gigajoules.
1596 /// @tparam T Numeric type stored in dimensioned quantity.
1597 /// @param v Number of gigajoules.
1598 template <typename T>
1599 constexpr auto gigajoules(T v) { return impl::gigajoules<T>(v); }
1600 
1601 /// Produce dimensioned quantity from number of ergs.
1602 /// @tparam T Numeric type stored in dimensioned quantity.
1603 /// @param v Number of ergs.
1604 template <typename T>
1605 constexpr auto ergs(T v) { return impl::ergs<T>(v); }
1606 
1607 /// Produce dimensioned quantity from number of watts.
1608 /// @tparam T Numeric type stored in dimensioned quantity.
1609 /// @param v Number of watts.
1610 template <typename T>
1611 constexpr auto watts(T v) { return impl::watts<T>(v); }
1612 
1613 /// Produce dimensioned quantity from number of milliwatts.
1614 /// @tparam T Numeric type stored in dimensioned quantity.
1615 /// @param v Number of milliwatts.
1616 template <typename T>
1617 constexpr auto milliwatts(T v) { return impl::milliwatts<T>(v); }
1618 
1619 /// Produce dimensioned quantity from number of microwatts.
1620 /// @tparam T Numeric type stored in dimensioned quantity.
1621 /// @param v Number of microwatts.
1622 template <typename T>
1623 constexpr auto microwatts(T v) { return impl::microwatts<T>(v); }
1624 
1625 /// Produce dimensioned quantity from number of kilowatts.
1626 /// @tparam T Numeric type stored in dimensioned quantity.
1627 /// @param v Number of kilowatts.
1628 template <typename T>
1629 constexpr auto kilowatts(T v) { return impl::kilowatts<T>(v); }
1630 
1631 /// Produce dimensioned quantity from number of megawatts.
1632 /// @tparam T Numeric type stored in dimensioned quantity.
1633 /// @param v Number of megawatts.
1634 template <typename T>
1635 constexpr auto megawatts(T v) { return impl::megawatts<T>(v); }
1636 
1637 /// Produce dimensioned quantity from number of gigawatts.
1638 /// @tparam T Numeric type stored in dimensioned quantity.
1639 /// @param v Number of gigawatts.
1640 template <typename T>
1641 constexpr auto gigawatts(T v) { return impl::gigawatts<T>(v); }
1642 
1643 /// Produce dimensioned quantity from number of amperes.
1644 /// @tparam T Numeric type stored in dimensioned quantity.
1645 /// @param v Number of amperes.
1646 template <typename T>
1647 constexpr auto amperes(T v) { return impl::amperes<T>(v); }
1648 
1649 /// Produce dimensioned quantity from number of milliamperes.
1650 /// @tparam T Numeric type stored in dimensioned quantity.
1651 /// @param v Number of milliamperes.
1652 template <typename T>
1653 constexpr auto milliamperes(T v) { return impl::milliamperes<T>(v); }
1654 
1655 /// Produce dimensioned quantity from number of microamperes.
1656 /// @tparam T Numeric type stored in dimensioned quantity.
1657 /// @param v Number of microamperes.
1658 template <typename T>
1659 constexpr auto microamperes(T v) { return impl::microamperes<T>(v); }
1660 
1661 
1662 /// Single-precision dimensions and units.
1663 namespace flt {
1664 
1665 /// Type of dimensioned value whose dimension is not known at compile-time.
1666 using dyndim = basic_dyndim<float>;
1667 
1668 /// Interpret a number, suffixed with '_m',
1669 /// as a (literal) number of meters.
1670 constexpr auto operator"" _m(long double v) {
1671  return meters(float(v));
1672 }
1673 
1674 /// Constant-expression symbol for m.
1675 constexpr auto m = impl::m<float>;
1676 
1677 /// Type for variable of dimension length.
1678 using length = basic_statdim<length_dim.encode(), float>;
1679 
1680 /// Interpret a number, suffixed with '_cm',
1681 /// as a (literal) number of centimeters.
1682 constexpr auto operator"" _cm(long double v) {
1683  return centimeters(float(v));
1684 }
1685 
1686 /// Constant-expression symbol for cm.
1687 constexpr auto cm = impl::cm<float>;
1688 
1689 /// Interpret a number, suffixed with '_mm',
1690 /// as a (literal) number of millimeters.
1691 constexpr auto operator"" _mm(long double v) {
1692  return millimeters(float(v));
1693 }
1694 
1695 /// Constant-expression symbol for mm.
1696 constexpr auto mm = impl::mm<float>;
1697 
1698 /// Interpret a number, suffixed with '_mum',
1699 /// as a (literal) number of micrometers.
1700 constexpr auto operator"" _mum(long double v) {
1701  return micrometers(float(v));
1702 }
1703 
1704 /// Constant-expression symbol for mum.
1705 constexpr auto mum = impl::mum<float>;
1706 
1707 /// Interpret a number, suffixed with '_nm',
1708 /// as a (literal) number of nanometers.
1709 constexpr auto operator"" _nm(long double v) {
1710  return nanometers(float(v));
1711 }
1712 
1713 /// Constant-expression symbol for nm.
1714 constexpr auto nm = impl::nm<float>;
1715 
1716 /// Interpret a number, suffixed with '_pm',
1717 /// as a (literal) number of picometers.
1718 constexpr auto operator"" _pm(long double v) {
1719  return picometers(float(v));
1720 }
1721 
1722 /// Constant-expression symbol for pm.
1723 constexpr auto pm = impl::pm<float>;
1724 
1725 /// Interpret a number, suffixed with '_fm',
1726 /// as a (literal) number of femtometers.
1727 constexpr auto operator"" _fm(long double v) {
1728  return femtometers(float(v));
1729 }
1730 
1731 /// Constant-expression symbol for fm.
1732 constexpr auto fm = impl::fm<float>;
1733 
1734 /// Interpret a number, suffixed with '_km',
1735 /// as a (literal) number of kilometers.
1736 constexpr auto operator"" _km(long double v) {
1737  return kilometers(float(v));
1738 }
1739 
1740 /// Constant-expression symbol for km.
1741 constexpr auto km = impl::km<float>;
1742 
1743 /// Interpret a number, suffixed with '_Mm',
1744 /// as a (literal) number of megameters.
1745 constexpr auto operator"" _Mm(long double v) {
1746  return megameters(float(v));
1747 }
1748 
1749 /// Constant-expression symbol for Mm.
1750 constexpr auto Mm = impl::Mm<float>;
1751 
1752 /// Interpret a number, suffixed with '_g',
1753 /// as a (literal) number of grams.
1754 constexpr auto operator"" _g(long double v) {
1755  return grams(float(v));
1756 }
1757 
1758 /// Constant-expression symbol for g.
1759 constexpr auto g = impl::g<float>;
1760 
1761 /// Type for variable of dimension mass.
1762 using mass = basic_statdim<mass_dim.encode(), float>;
1763 
1764 /// Interpret a number, suffixed with '_mg',
1765 /// as a (literal) number of milligrams.
1766 constexpr auto operator"" _mg(long double v) {
1767  return milligrams(float(v));
1768 }
1769 
1770 /// Constant-expression symbol for mg.
1771 constexpr auto mg = impl::mg<float>;
1772 
1773 /// Interpret a number, suffixed with '_mug',
1774 /// as a (literal) number of micrograms.
1775 constexpr auto operator"" _mug(long double v) {
1776  return micrograms(float(v));
1777 }
1778 
1779 /// Constant-expression symbol for mug.
1780 constexpr auto mug = impl::mug<float>;
1781 
1782 /// Interpret a number, suffixed with '_ng',
1783 /// as a (literal) number of nanograms.
1784 constexpr auto operator"" _ng(long double v) {
1785  return nanograms(float(v));
1786 }
1787 
1788 /// Constant-expression symbol for ng.
1789 constexpr auto ng = impl::ng<float>;
1790 
1791 /// Interpret a number, suffixed with '_pg',
1792 /// as a (literal) number of picograms.
1793 constexpr auto operator"" _pg(long double v) {
1794  return picograms(float(v));
1795 }
1796 
1797 /// Constant-expression symbol for pg.
1798 constexpr auto pg = impl::pg<float>;
1799 
1800 /// Interpret a number, suffixed with '_kg',
1801 /// as a (literal) number of kilograms.
1802 constexpr auto operator"" _kg(long double v) {
1803  return kilograms(float(v));
1804 }
1805 
1806 /// Constant-expression symbol for kg.
1807 constexpr auto kg = impl::kg<float>;
1808 
1809 /// Interpret a number, suffixed with '_Mg',
1810 /// as a (literal) number of megagrams.
1811 constexpr auto operator"" _Mg(long double v) {
1812  return megagrams(float(v));
1813 }
1814 
1815 /// Constant-expression symbol for Mg.
1816 constexpr auto Mg = impl::Mg<float>;
1817 
1818 /// Interpret a number, suffixed with '_s',
1819 /// as a (literal) number of seconds.
1820 constexpr auto operator"" _s(long double v) {
1821  return seconds(float(v));
1822 }
1823 
1824 /// Constant-expression symbol for s.
1825 constexpr auto s = impl::s<float>;
1826 
1827 /// Type for variable of dimension time.
1828 using time = basic_statdim<time_dim.encode(), float>;
1829 
1830 /// Interpret a number, suffixed with '_ms',
1831 /// as a (literal) number of milliseconds.
1832 constexpr auto operator"" _ms(long double v) {
1833  return milliseconds(float(v));
1834 }
1835 
1836 /// Constant-expression symbol for ms.
1837 constexpr auto ms = impl::ms<float>;
1838 
1839 /// Interpret a number, suffixed with '_mus',
1840 /// as a (literal) number of microseconds.
1841 constexpr auto operator"" _mus(long double v) {
1842  return microseconds(float(v));
1843 }
1844 
1845 /// Constant-expression symbol for mus.
1846 constexpr auto mus = impl::mus<float>;
1847 
1848 /// Interpret a number, suffixed with '_ns',
1849 /// as a (literal) number of nanoseconds.
1850 constexpr auto operator"" _ns(long double v) {
1851  return nanoseconds(float(v));
1852 }
1853 
1854 /// Constant-expression symbol for ns.
1855 constexpr auto ns = impl::ns<float>;
1856 
1857 /// Interpret a number, suffixed with '_ps',
1858 /// as a (literal) number of picoseconds.
1859 constexpr auto operator"" _ps(long double v) {
1860  return picoseconds(float(v));
1861 }
1862 
1863 /// Constant-expression symbol for ps.
1864 constexpr auto ps = impl::ps<float>;
1865 
1866 /// Interpret a number, suffixed with '_fs',
1867 /// as a (literal) number of femtoseconds.
1868 constexpr auto operator"" _fs(long double v) {
1869  return femtoseconds(float(v));
1870 }
1871 
1872 /// Constant-expression symbol for fs.
1873 constexpr auto fs = impl::fs<float>;
1874 
1875 /// Interpret a number, suffixed with '_C',
1876 /// as a (literal) number of coulombs.
1877 constexpr auto operator"" _C(long double v) {
1878  return coulombs(float(v));
1879 }
1880 
1881 /// Constant-expression symbol for C.
1882 constexpr auto C = impl::C<float>;
1883 
1884 /// Type for variable of dimension charge.
1885 using charge = basic_statdim<charge_dim.encode(), float>;
1886 
1887 /// Interpret a number, suffixed with '_mC',
1888 /// as a (literal) number of millicoulombs.
1889 constexpr auto operator"" _mC(long double v) {
1890  return millicoulombs(float(v));
1891 }
1892 
1893 /// Constant-expression symbol for mC.
1894 constexpr auto mC = impl::mC<float>;
1895 
1896 /// Interpret a number, suffixed with '_muC',
1897 /// as a (literal) number of microcoulombs.
1898 constexpr auto operator"" _muC(long double v) {
1899  return microcoulombs(float(v));
1900 }
1901 
1902 /// Constant-expression symbol for muC.
1903 constexpr auto muC = impl::muC<float>;
1904 
1905 /// Interpret a number, suffixed with '_nC',
1906 /// as a (literal) number of nanocoulombs.
1907 constexpr auto operator"" _nC(long double v) {
1908  return nanocoulombs(float(v));
1909 }
1910 
1911 /// Constant-expression symbol for nC.
1912 constexpr auto nC = impl::nC<float>;
1913 
1914 /// Interpret a number, suffixed with '_pC',
1915 /// as a (literal) number of picocoulombs.
1916 constexpr auto operator"" _pC(long double v) {
1917  return picocoulombs(float(v));
1918 }
1919 
1920 /// Constant-expression symbol for pC.
1921 constexpr auto pC = impl::pC<float>;
1922 
1923 /// Interpret a number, suffixed with '_K',
1924 /// as a (literal) number of kelvins.
1925 constexpr auto operator"" _K(long double v) {
1926  return kelvins(float(v));
1927 }
1928 
1929 /// Constant-expression symbol for K.
1930 constexpr auto K = impl::K<float>;
1931 
1932 /// Type for variable of dimension temperature.
1933 using temperature = basic_statdim<temperature_dim.encode(), float>;
1934 
1935 /// Interpret a number, suffixed with '_mK',
1936 /// as a (literal) number of millikelvins.
1937 constexpr auto operator"" _mK(long double v) {
1938  return millikelvins(float(v));
1939 }
1940 
1941 /// Constant-expression symbol for mK.
1942 constexpr auto mK = impl::mK<float>;
1943 
1944 /// Interpret a number, suffixed with '_muK',
1945 /// as a (literal) number of microkelvins.
1946 constexpr auto operator"" _muK(long double v) {
1947  return microkelvins(float(v));
1948 }
1949 
1950 /// Constant-expression symbol for muK.
1951 constexpr auto muK = impl::muK<float>;
1952 
1953 /// Interpret a number, suffixed with '_nK',
1954 /// as a (literal) number of nanokelvins.
1955 constexpr auto operator"" _nK(long double v) {
1956  return nanokelvins(float(v));
1957 }
1958 
1959 /// Constant-expression symbol for nK.
1960 constexpr auto nK = impl::nK<float>;
1961 
1962 /// Constant-expression symbol for ft.
1963 constexpr auto ft = impl::ft<float>;
1964 
1965 /// Interpret a number, suffixed with '_ft',
1966 /// as a (literal) number of feet.
1967 constexpr auto operator"" _ft(long double v) {
1968  return float(v)*ft;
1969 }
1970 
1971 /// Constant-expression symbol for kft.
1972 constexpr auto kft = impl::kft<float>;
1973 
1974 /// Interpret a number, suffixed with '_kft',
1975 /// as a (literal) number of kilofeet.
1976 constexpr auto operator"" _kft(long double v) {
1977  return float(v)*kft;
1978 }
1979 
1980 /// Constant-expression symbol for in.
1981 constexpr auto in = impl::in<float>;
1982 
1983 /// Interpret a number, suffixed with '_in',
1984 /// as a (literal) number of inches.
1985 constexpr auto operator"" _in(long double v) {
1986  return float(v)*in;
1987 }
1988 
1989 /// Constant-expression symbol for yd.
1990 constexpr auto yd = impl::yd<float>;
1991 
1992 /// Interpret a number, suffixed with '_yd',
1993 /// as a (literal) number of yards.
1994 constexpr auto operator"" _yd(long double v) {
1995  return float(v)*yd;
1996 }
1997 
1998 /// Constant-expression symbol for mi.
1999 constexpr auto mi = impl::mi<float>;
2000 
2001 /// Interpret a number, suffixed with '_mi',
2002 /// as a (literal) number of miles.
2003 constexpr auto operator"" _mi(long double v) {
2004  return float(v)*mi;
2005 }
2006 
2007 /// Constant-expression symbol for N.
2008 constexpr auto N = impl::N<float>;
2009 
2010 /// Interpret a number, suffixed with '_N',
2011 /// as a (literal) number of newtons.
2012 constexpr auto operator"" _N(long double v) {
2013  return float(v)*N;
2014 }
2015 
2016 /// Constant-expression symbol for mN.
2017 constexpr auto mN = impl::mN<float>;
2018 
2019 /// Interpret a number, suffixed with '_mN',
2020 /// as a (literal) number of millinewtons.
2021 constexpr auto operator"" _mN(long double v) {
2022  return float(v)*mN;
2023 }
2024 
2025 /// Constant-expression symbol for muN.
2026 constexpr auto muN = impl::muN<float>;
2027 
2028 /// Interpret a number, suffixed with '_muN',
2029 /// as a (literal) number of micronewtons.
2030 constexpr auto operator"" _muN(long double v) {
2031  return float(v)*muN;
2032 }
2033 
2034 /// Constant-expression symbol for kN.
2035 constexpr auto kN = impl::kN<float>;
2036 
2037 /// Interpret a number, suffixed with '_kN',
2038 /// as a (literal) number of kilonewtons.
2039 constexpr auto operator"" _kN(long double v) {
2040  return float(v)*kN;
2041 }
2042 
2043 /// Constant-expression symbol for MN.
2044 constexpr auto MN = impl::MN<float>;
2045 
2046 /// Interpret a number, suffixed with '_MN',
2047 /// as a (literal) number of meganewtons.
2048 constexpr auto operator"" _MN(long double v) {
2049  return float(v)*MN;
2050 }
2051 
2052 /// Constant-expression symbol for dyn.
2053 constexpr auto dyn = impl::dyn<float>;
2054 
2055 /// Interpret a number, suffixed with '_dyn',
2056 /// as a (literal) number of dynes.
2057 constexpr auto operator"" _dyn(long double v) {
2058  return float(v)*dyn;
2059 }
2060 
2061 /// Constant-expression symbol for J.
2062 constexpr auto J = impl::J<float>;
2063 
2064 /// Interpret a number, suffixed with '_J',
2065 /// as a (literal) number of joules.
2066 constexpr auto operator"" _J(long double v) {
2067  return float(v)*J;
2068 }
2069 
2070 /// Constant-expression symbol for mJ.
2071 constexpr auto mJ = impl::mJ<float>;
2072 
2073 /// Interpret a number, suffixed with '_mJ',
2074 /// as a (literal) number of millijoules.
2075 constexpr auto operator"" _mJ(long double v) {
2076  return float(v)*mJ;
2077 }
2078 
2079 /// Constant-expression symbol for muJ.
2080 constexpr auto muJ = impl::muJ<float>;
2081 
2082 /// Interpret a number, suffixed with '_muJ',
2083 /// as a (literal) number of microjoules.
2084 constexpr auto operator"" _muJ(long double v) {
2085  return float(v)*muJ;
2086 }
2087 
2088 /// Constant-expression symbol for kJ.
2089 constexpr auto kJ = impl::kJ<float>;
2090 
2091 /// Interpret a number, suffixed with '_kJ',
2092 /// as a (literal) number of kilojoules.
2093 constexpr auto operator"" _kJ(long double v) {
2094  return float(v)*kJ;
2095 }
2096 
2097 /// Constant-expression symbol for MJ.
2098 constexpr auto MJ = impl::MJ<float>;
2099 
2100 /// Interpret a number, suffixed with '_MJ',
2101 /// as a (literal) number of megajoules.
2102 constexpr auto operator"" _MJ(long double v) {
2103  return float(v)*MJ;
2104 }
2105 
2106 /// Constant-expression symbol for GJ.
2107 constexpr auto GJ = impl::GJ<float>;
2108 
2109 /// Interpret a number, suffixed with '_GJ',
2110 /// as a (literal) number of gigajoules.
2111 constexpr auto operator"" _GJ(long double v) {
2112  return float(v)*GJ;
2113 }
2114 
2115 /// Constant-expression symbol for erg.
2116 constexpr auto erg = impl::erg<float>;
2117 
2118 /// Interpret a number, suffixed with '_erg',
2119 /// as a (literal) number of ergs.
2120 constexpr auto operator"" _erg(long double v) {
2121  return float(v)*erg;
2122 }
2123 
2124 /// Constant-expression symbol for W.
2125 constexpr auto W = impl::W<float>;
2126 
2127 /// Interpret a number, suffixed with '_W',
2128 /// as a (literal) number of watts.
2129 constexpr auto operator"" _W(long double v) {
2130  return float(v)*W;
2131 }
2132 
2133 /// Constant-expression symbol for mW.
2134 constexpr auto mW = impl::mW<float>;
2135 
2136 /// Interpret a number, suffixed with '_mW',
2137 /// as a (literal) number of milliwatts.
2138 constexpr auto operator"" _mW(long double v) {
2139  return float(v)*mW;
2140 }
2141 
2142 /// Constant-expression symbol for muW.
2143 constexpr auto muW = impl::muW<float>;
2144 
2145 /// Interpret a number, suffixed with '_muW',
2146 /// as a (literal) number of microwatts.
2147 constexpr auto operator"" _muW(long double v) {
2148  return float(v)*muW;
2149 }
2150 
2151 /// Constant-expression symbol for kW.
2152 constexpr auto kW = impl::kW<float>;
2153 
2154 /// Interpret a number, suffixed with '_kW',
2155 /// as a (literal) number of kilowatts.
2156 constexpr auto operator"" _kW(long double v) {
2157  return float(v)*kW;
2158 }
2159 
2160 /// Constant-expression symbol for MW.
2161 constexpr auto MW = impl::MW<float>;
2162 
2163 /// Interpret a number, suffixed with '_MW',
2164 /// as a (literal) number of megawatts.
2165 constexpr auto operator"" _MW(long double v) {
2166  return float(v)*MW;
2167 }
2168 
2169 /// Constant-expression symbol for GW.
2170 constexpr auto GW = impl::GW<float>;
2171 
2172 /// Interpret a number, suffixed with '_GW',
2173 /// as a (literal) number of gigawatts.
2174 constexpr auto operator"" _GW(long double v) {
2175  return float(v)*GW;
2176 }
2177 
2178 /// Constant-expression symbol for A.
2179 constexpr auto A = impl::A<float>;
2180 
2181 /// Interpret a number, suffixed with '_A',
2182 /// as a (literal) number of amperes.
2183 constexpr auto operator"" _A(long double v) {
2184  return float(v)*A;
2185 }
2186 
2187 /// Constant-expression symbol for mA.
2188 constexpr auto mA = impl::mA<float>;
2189 
2190 /// Interpret a number, suffixed with '_mA',
2191 /// as a (literal) number of milliamperes.
2192 constexpr auto operator"" _mA(long double v) {
2193  return float(v)*mA;
2194 }
2195 
2196 /// Constant-expression symbol for muA.
2197 constexpr auto muA = impl::muA<float>;
2198 
2199 /// Interpret a number, suffixed with '_muA',
2200 /// as a (literal) number of microamperes.
2201 constexpr auto operator"" _muA(long double v) {
2202  return float(v)*muA;
2203 }
2204 
2205 using speed = decltype(m/s);
2206 using acceleration = decltype(m/s/s);
2207 using momentum = decltype(g*m/s);
2208 using force = decltype(N/1);
2209 using current = decltype(C/s);
2210 using energy = decltype(J/1);
2211 using power = decltype(W/1);
2212 using area = decltype(m*m);
2213 using volume = decltype(m*m*m);
2214 using pressure = decltype(N/m/m);
2215 
2216 } // namespace flt
2217 
2218 
2219 /// Double-precision dimensions and units.
2220 namespace dbl {
2221 
2222 /// Type of dimensioned value whose dimension is not known at compile-time.
2223 using dyndim = basic_dyndim<double>;
2224 
2225 /// Interpret a number, suffixed with '_m',
2226 /// as a (literal) number of meters.
2227 constexpr auto operator"" _m(long double v) {
2228  return meters(double(v));
2229 }
2230 
2231 /// Constant-expression symbol for m.
2232 constexpr auto m = impl::m<double>;
2233 
2234 /// Type for variable of dimension length.
2235 using length = basic_statdim<length_dim.encode(), double>;
2236 
2237 /// Interpret a number, suffixed with '_cm',
2238 /// as a (literal) number of centimeters.
2239 constexpr auto operator"" _cm(long double v) {
2240  return centimeters(double(v));
2241 }
2242 
2243 /// Constant-expression symbol for cm.
2244 constexpr auto cm = impl::cm<double>;
2245 
2246 /// Interpret a number, suffixed with '_mm',
2247 /// as a (literal) number of millimeters.
2248 constexpr auto operator"" _mm(long double v) {
2249  return millimeters(double(v));
2250 }
2251 
2252 /// Constant-expression symbol for mm.
2253 constexpr auto mm = impl::mm<double>;
2254 
2255 /// Interpret a number, suffixed with '_mum',
2256 /// as a (literal) number of micrometers.
2257 constexpr auto operator"" _mum(long double v) {
2258  return micrometers(double(v));
2259 }
2260 
2261 /// Constant-expression symbol for mum.
2262 constexpr auto mum = impl::mum<double>;
2263 
2264 /// Interpret a number, suffixed with '_nm',
2265 /// as a (literal) number of nanometers.
2266 constexpr auto operator"" _nm(long double v) {
2267  return nanometers(double(v));
2268 }
2269 
2270 /// Constant-expression symbol for nm.
2271 constexpr auto nm = impl::nm<double>;
2272 
2273 /// Interpret a number, suffixed with '_pm',
2274 /// as a (literal) number of picometers.
2275 constexpr auto operator"" _pm(long double v) {
2276  return picometers(double(v));
2277 }
2278 
2279 /// Constant-expression symbol for pm.
2280 constexpr auto pm = impl::pm<double>;
2281 
2282 /// Interpret a number, suffixed with '_fm',
2283 /// as a (literal) number of femtometers.
2284 constexpr auto operator"" _fm(long double v) {
2285  return femtometers(double(v));
2286 }
2287 
2288 /// Constant-expression symbol for fm.
2289 constexpr auto fm = impl::fm<double>;
2290 
2291 /// Interpret a number, suffixed with '_km',
2292 /// as a (literal) number of kilometers.
2293 constexpr auto operator"" _km(long double v) {
2294  return kilometers(double(v));
2295 }
2296 
2297 /// Constant-expression symbol for km.
2298 constexpr auto km = impl::km<double>;
2299 
2300 /// Interpret a number, suffixed with '_Mm',
2301 /// as a (literal) number of megameters.
2302 constexpr auto operator"" _Mm(long double v) {
2303  return megameters(double(v));
2304 }
2305 
2306 /// Constant-expression symbol for Mm.
2307 constexpr auto Mm = impl::Mm<double>;
2308 
2309 /// Interpret a number, suffixed with '_g',
2310 /// as a (literal) number of grams.
2311 constexpr auto operator"" _g(long double v) {
2312  return grams(double(v));
2313 }
2314 
2315 /// Constant-expression symbol for g.
2316 constexpr auto g = impl::g<double>;
2317 
2318 /// Type for variable of dimension mass.
2319 using mass = basic_statdim<mass_dim.encode(), double>;
2320 
2321 /// Interpret a number, suffixed with '_mg',
2322 /// as a (literal) number of milligrams.
2323 constexpr auto operator"" _mg(long double v) {
2324  return milligrams(double(v));
2325 }
2326 
2327 /// Constant-expression symbol for mg.
2328 constexpr auto mg = impl::mg<double>;
2329 
2330 /// Interpret a number, suffixed with '_mug',
2331 /// as a (literal) number of micrograms.
2332 constexpr auto operator"" _mug(long double v) {
2333  return micrograms(double(v));
2334 }
2335 
2336 /// Constant-expression symbol for mug.
2337 constexpr auto mug = impl::mug<double>;
2338 
2339 /// Interpret a number, suffixed with '_ng',
2340 /// as a (literal) number of nanograms.
2341 constexpr auto operator"" _ng(long double v) {
2342  return nanograms(double(v));
2343 }
2344 
2345 /// Constant-expression symbol for ng.
2346 constexpr auto ng = impl::ng<double>;
2347 
2348 /// Interpret a number, suffixed with '_pg',
2349 /// as a (literal) number of picograms.
2350 constexpr auto operator"" _pg(long double v) {
2351  return picograms(double(v));
2352 }
2353 
2354 /// Constant-expression symbol for pg.
2355 constexpr auto pg = impl::pg<double>;
2356 
2357 /// Interpret a number, suffixed with '_kg',
2358 /// as a (literal) number of kilograms.
2359 constexpr auto operator"" _kg(long double v) {
2360  return kilograms(double(v));
2361 }
2362 
2363 /// Constant-expression symbol for kg.
2364 constexpr auto kg = impl::kg<double>;
2365 
2366 /// Interpret a number, suffixed with '_Mg',
2367 /// as a (literal) number of megagrams.
2368 constexpr auto operator"" _Mg(long double v) {
2369  return megagrams(double(v));
2370 }
2371 
2372 /// Constant-expression symbol for Mg.
2373 constexpr auto Mg = impl::Mg<double>;
2374 
2375 /// Interpret a number, suffixed with '_s',
2376 /// as a (literal) number of seconds.
2377 constexpr auto operator"" _s(long double v) {
2378  return seconds(double(v));
2379 }
2380 
2381 /// Constant-expression symbol for s.
2382 constexpr auto s = impl::s<double>;
2383 
2384 /// Type for variable of dimension time.
2385 using time = basic_statdim<time_dim.encode(), double>;
2386 
2387 /// Interpret a number, suffixed with '_ms',
2388 /// as a (literal) number of milliseconds.
2389 constexpr auto operator"" _ms(long double v) {
2390  return milliseconds(double(v));
2391 }
2392 
2393 /// Constant-expression symbol for ms.
2394 constexpr auto ms = impl::ms<double>;
2395 
2396 /// Interpret a number, suffixed with '_mus',
2397 /// as a (literal) number of microseconds.
2398 constexpr auto operator"" _mus(long double v) {
2399  return microseconds(double(v));
2400 }
2401 
2402 /// Constant-expression symbol for mus.
2403 constexpr auto mus = impl::mus<double>;
2404 
2405 /// Interpret a number, suffixed with '_ns',
2406 /// as a (literal) number of nanoseconds.
2407 constexpr auto operator"" _ns(long double v) {
2408  return nanoseconds(double(v));
2409 }
2410 
2411 /// Constant-expression symbol for ns.
2412 constexpr auto ns = impl::ns<double>;
2413 
2414 /// Interpret a number, suffixed with '_ps',
2415 /// as a (literal) number of picoseconds.
2416 constexpr auto operator"" _ps(long double v) {
2417  return picoseconds(double(v));
2418 }
2419 
2420 /// Constant-expression symbol for ps.
2421 constexpr auto ps = impl::ps<double>;
2422 
2423 /// Interpret a number, suffixed with '_fs',
2424 /// as a (literal) number of femtoseconds.
2425 constexpr auto operator"" _fs(long double v) {
2426  return femtoseconds(double(v));
2427 }
2428 
2429 /// Constant-expression symbol for fs.
2430 constexpr auto fs = impl::fs<double>;
2431 
2432 /// Interpret a number, suffixed with '_C',
2433 /// as a (literal) number of coulombs.
2434 constexpr auto operator"" _C(long double v) {
2435  return coulombs(double(v));
2436 }
2437 
2438 /// Constant-expression symbol for C.
2439 constexpr auto C = impl::C<double>;
2440 
2441 /// Type for variable of dimension charge.
2442 using charge = basic_statdim<charge_dim.encode(), double>;
2443 
2444 /// Interpret a number, suffixed with '_mC',
2445 /// as a (literal) number of millicoulombs.
2446 constexpr auto operator"" _mC(long double v) {
2447  return millicoulombs(double(v));
2448 }
2449 
2450 /// Constant-expression symbol for mC.
2451 constexpr auto mC = impl::mC<double>;
2452 
2453 /// Interpret a number, suffixed with '_muC',
2454 /// as a (literal) number of microcoulombs.
2455 constexpr auto operator"" _muC(long double v) {
2456  return microcoulombs(double(v));
2457 }
2458 
2459 /// Constant-expression symbol for muC.
2460 constexpr auto muC = impl::muC<double>;
2461 
2462 /// Interpret a number, suffixed with '_nC',
2463 /// as a (literal) number of nanocoulombs.
2464 constexpr auto operator"" _nC(long double v) {
2465  return nanocoulombs(double(v));
2466 }
2467 
2468 /// Constant-expression symbol for nC.
2469 constexpr auto nC = impl::nC<double>;
2470 
2471 /// Interpret a number, suffixed with '_pC',
2472 /// as a (literal) number of picocoulombs.
2473 constexpr auto operator"" _pC(long double v) {
2474  return picocoulombs(double(v));
2475 }
2476 
2477 /// Constant-expression symbol for pC.
2478 constexpr auto pC = impl::pC<double>;
2479 
2480 /// Interpret a number, suffixed with '_K',
2481 /// as a (literal) number of kelvins.
2482 constexpr auto operator"" _K(long double v) {
2483  return kelvins(double(v));
2484 }
2485 
2486 /// Constant-expression symbol for K.
2487 constexpr auto K = impl::K<double>;
2488 
2489 /// Type for variable of dimension temperature.
2490 using temperature = basic_statdim<temperature_dim.encode(), double>;
2491 
2492 /// Interpret a number, suffixed with '_mK',
2493 /// as a (literal) number of millikelvins.
2494 constexpr auto operator"" _mK(long double v) {
2495  return millikelvins(double(v));
2496 }
2497 
2498 /// Constant-expression symbol for mK.
2499 constexpr auto mK = impl::mK<double>;
2500 
2501 /// Interpret a number, suffixed with '_muK',
2502 /// as a (literal) number of microkelvins.
2503 constexpr auto operator"" _muK(long double v) {
2504  return microkelvins(double(v));
2505 }
2506 
2507 /// Constant-expression symbol for muK.
2508 constexpr auto muK = impl::muK<double>;
2509 
2510 /// Interpret a number, suffixed with '_nK',
2511 /// as a (literal) number of nanokelvins.
2512 constexpr auto operator"" _nK(long double v) {
2513  return nanokelvins(double(v));
2514 }
2515 
2516 /// Constant-expression symbol for nK.
2517 constexpr auto nK = impl::nK<double>;
2518 
2519 /// Constant-expression symbol for ft.
2520 constexpr auto ft = impl::ft<double>;
2521 
2522 /// Interpret a number, suffixed with '_ft',
2523 /// as a (literal) number of feet.
2524 constexpr auto operator"" _ft(long double v) {
2525  return double(v)*ft;
2526 }
2527 
2528 /// Constant-expression symbol for kft.
2529 constexpr auto kft = impl::kft<double>;
2530 
2531 /// Interpret a number, suffixed with '_kft',
2532 /// as a (literal) number of kilofeet.
2533 constexpr auto operator"" _kft(long double v) {
2534  return double(v)*kft;
2535 }
2536 
2537 /// Constant-expression symbol for in.
2538 constexpr auto in = impl::in<double>;
2539 
2540 /// Interpret a number, suffixed with '_in',
2541 /// as a (literal) number of inches.
2542 constexpr auto operator"" _in(long double v) {
2543  return double(v)*in;
2544 }
2545 
2546 /// Constant-expression symbol for yd.
2547 constexpr auto yd = impl::yd<double>;
2548 
2549 /// Interpret a number, suffixed with '_yd',
2550 /// as a (literal) number of yards.
2551 constexpr auto operator"" _yd(long double v) {
2552  return double(v)*yd;
2553 }
2554 
2555 /// Constant-expression symbol for mi.
2556 constexpr auto mi = impl::mi<double>;
2557 
2558 /// Interpret a number, suffixed with '_mi',
2559 /// as a (literal) number of miles.
2560 constexpr auto operator"" _mi(long double v) {
2561  return double(v)*mi;
2562 }
2563 
2564 /// Constant-expression symbol for N.
2565 constexpr auto N = impl::N<double>;
2566 
2567 /// Interpret a number, suffixed with '_N',
2568 /// as a (literal) number of newtons.
2569 constexpr auto operator"" _N(long double v) {
2570  return double(v)*N;
2571 }
2572 
2573 /// Constant-expression symbol for mN.
2574 constexpr auto mN = impl::mN<double>;
2575 
2576 /// Interpret a number, suffixed with '_mN',
2577 /// as a (literal) number of millinewtons.
2578 constexpr auto operator"" _mN(long double v) {
2579  return double(v)*mN;
2580 }
2581 
2582 /// Constant-expression symbol for muN.
2583 constexpr auto muN = impl::muN<double>;
2584 
2585 /// Interpret a number, suffixed with '_muN',
2586 /// as a (literal) number of micronewtons.
2587 constexpr auto operator"" _muN(long double v) {
2588  return double(v)*muN;
2589 }
2590 
2591 /// Constant-expression symbol for kN.
2592 constexpr auto kN = impl::kN<double>;
2593 
2594 /// Interpret a number, suffixed with '_kN',
2595 /// as a (literal) number of kilonewtons.
2596 constexpr auto operator"" _kN(long double v) {
2597  return double(v)*kN;
2598 }
2599 
2600 /// Constant-expression symbol for MN.
2601 constexpr auto MN = impl::MN<double>;
2602 
2603 /// Interpret a number, suffixed with '_MN',
2604 /// as a (literal) number of meganewtons.
2605 constexpr auto operator"" _MN(long double v) {
2606  return double(v)*MN;
2607 }
2608 
2609 /// Constant-expression symbol for dyn.
2610 constexpr auto dyn = impl::dyn<double>;
2611 
2612 /// Interpret a number, suffixed with '_dyn',
2613 /// as a (literal) number of dynes.
2614 constexpr auto operator"" _dyn(long double v) {
2615  return double(v)*dyn;
2616 }
2617 
2618 /// Constant-expression symbol for J.
2619 constexpr auto J = impl::J<double>;
2620 
2621 /// Interpret a number, suffixed with '_J',
2622 /// as a (literal) number of joules.
2623 constexpr auto operator"" _J(long double v) {
2624  return double(v)*J;
2625 }
2626 
2627 /// Constant-expression symbol for mJ.
2628 constexpr auto mJ = impl::mJ<double>;
2629 
2630 /// Interpret a number, suffixed with '_mJ',
2631 /// as a (literal) number of millijoules.
2632 constexpr auto operator"" _mJ(long double v) {
2633  return double(v)*mJ;
2634 }
2635 
2636 /// Constant-expression symbol for muJ.
2637 constexpr auto muJ = impl::muJ<double>;
2638 
2639 /// Interpret a number, suffixed with '_muJ',
2640 /// as a (literal) number of microjoules.
2641 constexpr auto operator"" _muJ(long double v) {
2642  return double(v)*muJ;
2643 }
2644 
2645 /// Constant-expression symbol for kJ.
2646 constexpr auto kJ = impl::kJ<double>;
2647 
2648 /// Interpret a number, suffixed with '_kJ',
2649 /// as a (literal) number of kilojoules.
2650 constexpr auto operator"" _kJ(long double v) {
2651  return double(v)*kJ;
2652 }
2653 
2654 /// Constant-expression symbol for MJ.
2655 constexpr auto MJ = impl::MJ<double>;
2656 
2657 /// Interpret a number, suffixed with '_MJ',
2658 /// as a (literal) number of megajoules.
2659 constexpr auto operator"" _MJ(long double v) {
2660  return double(v)*MJ;
2661 }
2662 
2663 /// Constant-expression symbol for GJ.
2664 constexpr auto GJ = impl::GJ<double>;
2665 
2666 /// Interpret a number, suffixed with '_GJ',
2667 /// as a (literal) number of gigajoules.
2668 constexpr auto operator"" _GJ(long double v) {
2669  return double(v)*GJ;
2670 }
2671 
2672 /// Constant-expression symbol for erg.
2673 constexpr auto erg = impl::erg<double>;
2674 
2675 /// Interpret a number, suffixed with '_erg',
2676 /// as a (literal) number of ergs.
2677 constexpr auto operator"" _erg(long double v) {
2678  return double(v)*erg;
2679 }
2680 
2681 /// Constant-expression symbol for W.
2682 constexpr auto W = impl::W<double>;
2683 
2684 /// Interpret a number, suffixed with '_W',
2685 /// as a (literal) number of watts.
2686 constexpr auto operator"" _W(long double v) {
2687  return double(v)*W;
2688 }
2689 
2690 /// Constant-expression symbol for mW.
2691 constexpr auto mW = impl::mW<double>;
2692 
2693 /// Interpret a number, suffixed with '_mW',
2694 /// as a (literal) number of milliwatts.
2695 constexpr auto operator"" _mW(long double v) {
2696  return double(v)*mW;
2697 }
2698 
2699 /// Constant-expression symbol for muW.
2700 constexpr auto muW = impl::muW<double>;
2701 
2702 /// Interpret a number, suffixed with '_muW',
2703 /// as a (literal) number of microwatts.
2704 constexpr auto operator"" _muW(long double v) {
2705  return double(v)*muW;
2706 }
2707 
2708 /// Constant-expression symbol for kW.
2709 constexpr auto kW = impl::kW<double>;
2710 
2711 /// Interpret a number, suffixed with '_kW',
2712 /// as a (literal) number of kilowatts.
2713 constexpr auto operator"" _kW(long double v) {
2714  return double(v)*kW;
2715 }
2716 
2717 /// Constant-expression symbol for MW.
2718 constexpr auto MW = impl::MW<double>;
2719 
2720 /// Interpret a number, suffixed with '_MW',
2721 /// as a (literal) number of megawatts.
2722 constexpr auto operator"" _MW(long double v) {
2723  return double(v)*MW;
2724 }
2725 
2726 /// Constant-expression symbol for GW.
2727 constexpr auto GW = impl::GW<double>;
2728 
2729 /// Interpret a number, suffixed with '_GW',
2730 /// as a (literal) number of gigawatts.
2731 constexpr auto operator"" _GW(long double v) {
2732  return double(v)*GW;
2733 }
2734 
2735 /// Constant-expression symbol for A.
2736 constexpr auto A = impl::A<double>;
2737 
2738 /// Interpret a number, suffixed with '_A',
2739 /// as a (literal) number of amperes.
2740 constexpr auto operator"" _A(long double v) {
2741  return double(v)*A;
2742 }
2743 
2744 /// Constant-expression symbol for mA.
2745 constexpr auto mA = impl::mA<double>;
2746 
2747 /// Interpret a number, suffixed with '_mA',
2748 /// as a (literal) number of milliamperes.
2749 constexpr auto operator"" _mA(long double v) {
2750  return double(v)*mA;
2751 }
2752 
2753 /// Constant-expression symbol for muA.
2754 constexpr auto muA = impl::muA<double>;
2755 
2756 /// Interpret a number, suffixed with '_muA',
2757 /// as a (literal) number of microamperes.
2758 constexpr auto operator"" _muA(long double v) {
2759  return double(v)*muA;
2760 }
2761 
2762 using speed = decltype(m/s);
2763 using acceleration = decltype(m/s/s);
2764 using momentum = decltype(g*m/s);
2765 using force = decltype(N/1);
2766 using current = decltype(C/s);
2767 using energy = decltype(J/1);
2768 using power = decltype(W/1);
2769 using area = decltype(m*m);
2770 using volume = decltype(m*m*m);
2771 using pressure = decltype(N/m/m);
2772 
2773 } // namespace dbl
2774 
2775 
2776 /// Extended-precision dimensions and units.
2777 namespace ldbl {
2778 
2779 /// Type of dimensioned value whose dimension is not known at compile-time.
2780 using dyndim = basic_dyndim<long double>;
2781 
2782 /// Interpret a number, suffixed with '_m',
2783 /// as a (literal) number of meters.
2784 constexpr auto operator"" _m(long double v) {
2785  return meters(v);
2786 }
2787 
2788 /// Constant-expression symbol for m.
2789 constexpr auto m = impl::m<long double>;
2790 
2791 /// Type for variable of dimension length.
2792 using length = basic_statdim<length_dim.encode(), long double>;
2793 
2794 /// Interpret a number, suffixed with '_cm',
2795 /// as a (literal) number of centimeters.
2796 constexpr auto operator"" _cm(long double v) {
2797  return centimeters(v);
2798 }
2799 
2800 /// Constant-expression symbol for cm.
2801 constexpr auto cm = impl::cm<long double>;
2802 
2803 /// Interpret a number, suffixed with '_mm',
2804 /// as a (literal) number of millimeters.
2805 constexpr auto operator"" _mm(long double v) {
2806  return millimeters(v);
2807 }
2808 
2809 /// Constant-expression symbol for mm.
2810 constexpr auto mm = impl::mm<long double>;
2811 
2812 /// Interpret a number, suffixed with '_mum',
2813 /// as a (literal) number of micrometers.
2814 constexpr auto operator"" _mum(long double v) {
2815  return micrometers(v);
2816 }
2817 
2818 /// Constant-expression symbol for mum.
2819 constexpr auto mum = impl::mum<long double>;
2820 
2821 /// Interpret a number, suffixed with '_nm',
2822 /// as a (literal) number of nanometers.
2823 constexpr auto operator"" _nm(long double v) {
2824  return nanometers(v);
2825 }
2826 
2827 /// Constant-expression symbol for nm.
2828 constexpr auto nm = impl::nm<long double>;
2829 
2830 /// Interpret a number, suffixed with '_pm',
2831 /// as a (literal) number of picometers.
2832 constexpr auto operator"" _pm(long double v) {
2833  return picometers(v);
2834 }
2835 
2836 /// Constant-expression symbol for pm.
2837 constexpr auto pm = impl::pm<long double>;
2838 
2839 /// Interpret a number, suffixed with '_fm',
2840 /// as a (literal) number of femtometers.
2841 constexpr auto operator"" _fm(long double v) {
2842  return femtometers(v);
2843 }
2844 
2845 /// Constant-expression symbol for fm.
2846 constexpr auto fm = impl::fm<long double>;
2847 
2848 /// Interpret a number, suffixed with '_km',
2849 /// as a (literal) number of kilometers.
2850 constexpr auto operator"" _km(long double v) {
2851  return kilometers(v);
2852 }
2853 
2854 /// Constant-expression symbol for km.
2855 constexpr auto km = impl::km<long double>;
2856 
2857 /// Interpret a number, suffixed with '_Mm',
2858 /// as a (literal) number of megameters.
2859 constexpr auto operator"" _Mm(long double v) {
2860  return megameters(v);
2861 }
2862 
2863 /// Constant-expression symbol for Mm.
2864 constexpr auto Mm = impl::Mm<long double>;
2865 
2866 /// Interpret a number, suffixed with '_g',
2867 /// as a (literal) number of grams.
2868 constexpr auto operator"" _g(long double v) {
2869  return grams(v);
2870 }
2871 
2872 /// Constant-expression symbol for g.
2873 constexpr auto g = impl::g<long double>;
2874 
2875 /// Type for variable of dimension mass.
2876 using mass = basic_statdim<mass_dim.encode(), long double>;
2877 
2878 /// Interpret a number, suffixed with '_mg',
2879 /// as a (literal) number of milligrams.
2880 constexpr auto operator"" _mg(long double v) {
2881  return milligrams(v);
2882 }
2883 
2884 /// Constant-expression symbol for mg.
2885 constexpr auto mg = impl::mg<long double>;
2886 
2887 /// Interpret a number, suffixed with '_mug',
2888 /// as a (literal) number of micrograms.
2889 constexpr auto operator"" _mug(long double v) {
2890  return micrograms(v);
2891 }
2892 
2893 /// Constant-expression symbol for mug.
2894 constexpr auto mug = impl::mug<long double>;
2895 
2896 /// Interpret a number, suffixed with '_ng',
2897 /// as a (literal) number of nanograms.
2898 constexpr auto operator"" _ng(long double v) {
2899  return nanograms(v);
2900 }
2901 
2902 /// Constant-expression symbol for ng.
2903 constexpr auto ng = impl::ng<long double>;
2904 
2905 /// Interpret a number, suffixed with '_pg',
2906 /// as a (literal) number of picograms.
2907 constexpr auto operator"" _pg(long double v) {
2908  return picograms(v);
2909 }
2910 
2911 /// Constant-expression symbol for pg.
2912 constexpr auto pg = impl::pg<long double>;
2913 
2914 /// Interpret a number, suffixed with '_kg',
2915 /// as a (literal) number of kilograms.
2916 constexpr auto operator"" _kg(long double v) {
2917  return kilograms(v);
2918 }
2919 
2920 /// Constant-expression symbol for kg.
2921 constexpr auto kg = impl::kg<long double>;
2922 
2923 /// Interpret a number, suffixed with '_Mg',
2924 /// as a (literal) number of megagrams.
2925 constexpr auto operator"" _Mg(long double v) {
2926  return megagrams(v);
2927 }
2928 
2929 /// Constant-expression symbol for Mg.
2930 constexpr auto Mg = impl::Mg<long double>;
2931 
2932 /// Interpret a number, suffixed with '_s',
2933 /// as a (literal) number of seconds.
2934 constexpr auto operator"" _s(long double v) {
2935  return seconds(v);
2936 }
2937 
2938 /// Constant-expression symbol for s.
2939 constexpr auto s = impl::s<long double>;
2940 
2941 /// Type for variable of dimension time.
2942 using time = basic_statdim<time_dim.encode(), long double>;
2943 
2944 /// Interpret a number, suffixed with '_ms',
2945 /// as a (literal) number of milliseconds.
2946 constexpr auto operator"" _ms(long double v) {
2947  return milliseconds(v);
2948 }
2949 
2950 /// Constant-expression symbol for ms.
2951 constexpr auto ms = impl::ms<long double>;
2952 
2953 /// Interpret a number, suffixed with '_mus',
2954 /// as a (literal) number of microseconds.
2955 constexpr auto operator"" _mus(long double v) {
2956  return microseconds(v);
2957 }
2958 
2959 /// Constant-expression symbol for mus.
2960 constexpr auto mus = impl::mus<long double>;
2961 
2962 /// Interpret a number, suffixed with '_ns',
2963 /// as a (literal) number of nanoseconds.
2964 constexpr auto operator"" _ns(long double v) {
2965  return nanoseconds(v);
2966 }
2967 
2968 /// Constant-expression symbol for ns.
2969 constexpr auto ns = impl::ns<long double>;
2970 
2971 /// Interpret a number, suffixed with '_ps',
2972 /// as a (literal) number of picoseconds.
2973 constexpr auto operator"" _ps(long double v) {
2974  return picoseconds(v);
2975 }
2976 
2977 /// Constant-expression symbol for ps.
2978 constexpr auto ps = impl::ps<long double>;
2979 
2980 /// Interpret a number, suffixed with '_fs',
2981 /// as a (literal) number of femtoseconds.
2982 constexpr auto operator"" _fs(long double v) {
2983  return femtoseconds(v);
2984 }
2985 
2986 /// Constant-expression symbol for fs.
2987 constexpr auto fs = impl::fs<long double>;
2988 
2989 /// Interpret a number, suffixed with '_C',
2990 /// as a (literal) number of coulombs.
2991 constexpr auto operator"" _C(long double v) {
2992  return coulombs(v);
2993 }
2994 
2995 /// Constant-expression symbol for C.
2996 constexpr auto C = impl::C<long double>;
2997 
2998 /// Type for variable of dimension charge.
2999 using charge = basic_statdim<charge_dim.encode(), long double>;
3000 
3001 /// Interpret a number, suffixed with '_mC',
3002 /// as a (literal) number of millicoulombs.
3003 constexpr auto operator"" _mC(long double v) {
3004  return millicoulombs(v);
3005 }
3006 
3007 /// Constant-expression symbol for mC.
3008 constexpr auto mC = impl::mC<long double>;
3009 
3010 /// Interpret a number, suffixed with '_muC',
3011 /// as a (literal) number of microcoulombs.
3012 constexpr auto operator"" _muC(long double v) {
3013  return microcoulombs(v);
3014 }
3015 
3016 /// Constant-expression symbol for muC.
3017 constexpr auto muC = impl::muC<long double>;
3018 
3019 /// Interpret a number, suffixed with '_nC',
3020 /// as a (literal) number of nanocoulombs.
3021 constexpr auto operator"" _nC(long double v) {
3022  return nanocoulombs(v);
3023 }
3024 
3025 /// Constant-expression symbol for nC.
3026 constexpr auto nC = impl::nC<long double>;
3027 
3028 /// Interpret a number, suffixed with '_pC',
3029 /// as a (literal) number of picocoulombs.
3030 constexpr auto operator"" _pC(long double v) {
3031  return picocoulombs(v);
3032 }
3033 
3034 /// Constant-expression symbol for pC.
3035 constexpr auto pC = impl::pC<long double>;
3036 
3037 /// Interpret a number, suffixed with '_K',
3038 /// as a (literal) number of kelvins.
3039 constexpr auto operator"" _K(long double v) {
3040  return kelvins(v);
3041 }
3042 
3043 /// Constant-expression symbol for K.
3044 constexpr auto K = impl::K<long double>;
3045 
3046 /// Type for variable of dimension temperature.
3047 using temperature = basic_statdim<temperature_dim.encode(), long double>;
3048 
3049 /// Interpret a number, suffixed with '_mK',
3050 /// as a (literal) number of millikelvins.
3051 constexpr auto operator"" _mK(long double v) {
3052  return millikelvins(v);
3053 }
3054 
3055 /// Constant-expression symbol for mK.
3056 constexpr auto mK = impl::mK<long double>;
3057 
3058 /// Interpret a number, suffixed with '_muK',
3059 /// as a (literal) number of microkelvins.
3060 constexpr auto operator"" _muK(long double v) {
3061  return microkelvins(v);
3062 }
3063 
3064 /// Constant-expression symbol for muK.
3065 constexpr auto muK = impl::muK<long double>;
3066 
3067 /// Interpret a number, suffixed with '_nK',
3068 /// as a (literal) number of nanokelvins.
3069 constexpr auto operator"" _nK(long double v) {
3070  return nanokelvins(v);
3071 }
3072 
3073 /// Constant-expression symbol for nK.
3074 constexpr auto nK = impl::nK<long double>;
3075 
3076 /// Constant-expression symbol for ft.
3077 constexpr auto ft = impl::ft<long double>;
3078 
3079 /// Interpret a number, suffixed with '_ft',
3080 /// as a (literal) number of feet.
3081 constexpr auto operator"" _ft(long double v) {
3082  return v*ft;
3083 }
3084 
3085 /// Constant-expression symbol for kft.
3086 constexpr auto kft = impl::kft<long double>;
3087 
3088 /// Interpret a number, suffixed with '_kft',
3089 /// as a (literal) number of kilofeet.
3090 constexpr auto operator"" _kft(long double v) {
3091  return v*kft;
3092 }
3093 
3094 /// Constant-expression symbol for in.
3095 constexpr auto in = impl::in<long double>;
3096 
3097 /// Interpret a number, suffixed with '_in',
3098 /// as a (literal) number of inches.
3099 constexpr auto operator"" _in(long double v) {
3100  return v*in;
3101 }
3102 
3103 /// Constant-expression symbol for yd.
3104 constexpr auto yd = impl::yd<long double>;
3105 
3106 /// Interpret a number, suffixed with '_yd',
3107 /// as a (literal) number of yards.
3108 constexpr auto operator"" _yd(long double v) {
3109  return v*yd;
3110 }
3111 
3112 /// Constant-expression symbol for mi.
3113 constexpr auto mi = impl::mi<long double>;
3114 
3115 /// Interpret a number, suffixed with '_mi',
3116 /// as a (literal) number of miles.
3117 constexpr auto operator"" _mi(long double v) {
3118  return v*mi;
3119 }
3120 
3121 /// Constant-expression symbol for N.
3122 constexpr auto N = impl::N<long double>;
3123 
3124 /// Interpret a number, suffixed with '_N',
3125 /// as a (literal) number of newtons.
3126 constexpr auto operator"" _N(long double v) {
3127  return v*N;
3128 }
3129 
3130 /// Constant-expression symbol for mN.
3131 constexpr auto mN = impl::mN<long double>;
3132 
3133 /// Interpret a number, suffixed with '_mN',
3134 /// as a (literal) number of millinewtons.
3135 constexpr auto operator"" _mN(long double v) {
3136  return v*mN;
3137 }
3138 
3139 /// Constant-expression symbol for muN.
3140 constexpr auto muN = impl::muN<long double>;
3141 
3142 /// Interpret a number, suffixed with '_muN',
3143 /// as a (literal) number of micronewtons.
3144 constexpr auto operator"" _muN(long double v) {
3145  return v*muN;
3146 }
3147 
3148 /// Constant-expression symbol for kN.
3149 constexpr auto kN = impl::kN<long double>;
3150 
3151 /// Interpret a number, suffixed with '_kN',
3152 /// as a (literal) number of kilonewtons.
3153 constexpr auto operator"" _kN(long double v) {
3154  return v*kN;
3155 }
3156 
3157 /// Constant-expression symbol for MN.
3158 constexpr auto MN = impl::MN<long double>;
3159 
3160 /// Interpret a number, suffixed with '_MN',
3161 /// as a (literal) number of meganewtons.
3162 constexpr auto operator"" _MN(long double v) {
3163  return v*MN;
3164 }
3165 
3166 /// Constant-expression symbol for dyn.
3167 constexpr auto dyn = impl::dyn<long double>;
3168 
3169 /// Interpret a number, suffixed with '_dyn',
3170 /// as a (literal) number of dynes.
3171 constexpr auto operator"" _dyn(long double v) {
3172  return v*dyn;
3173 }
3174 
3175 /// Constant-expression symbol for J.
3176 constexpr auto J = impl::J<long double>;
3177 
3178 /// Interpret a number, suffixed with '_J',
3179 /// as a (literal) number of joules.
3180 constexpr auto operator"" _J(long double v) {
3181  return v*J;
3182 }
3183 
3184 /// Constant-expression symbol for mJ.
3185 constexpr auto mJ = impl::mJ<long double>;
3186 
3187 /// Interpret a number, suffixed with '_mJ',
3188 /// as a (literal) number of millijoules.
3189 constexpr auto operator"" _mJ(long double v) {
3190  return v*mJ;
3191 }
3192 
3193 /// Constant-expression symbol for muJ.
3194 constexpr auto muJ = impl::muJ<long double>;
3195 
3196 /// Interpret a number, suffixed with '_muJ',
3197 /// as a (literal) number of microjoules.
3198 constexpr auto operator"" _muJ(long double v) {
3199  return v*muJ;
3200 }
3201 
3202 /// Constant-expression symbol for kJ.
3203 constexpr auto kJ = impl::kJ<long double>;
3204 
3205 /// Interpret a number, suffixed with '_kJ',
3206 /// as a (literal) number of kilojoules.
3207 constexpr auto operator"" _kJ(long double v) {
3208  return v*kJ;
3209 }
3210 
3211 /// Constant-expression symbol for MJ.
3212 constexpr auto MJ = impl::MJ<long double>;
3213 
3214 /// Interpret a number, suffixed with '_MJ',
3215 /// as a (literal) number of megajoules.
3216 constexpr auto operator"" _MJ(long double v) {
3217  return v*MJ;
3218 }
3219 
3220 /// Constant-expression symbol for GJ.
3221 constexpr auto GJ = impl::GJ<long double>;
3222 
3223 /// Interpret a number, suffixed with '_GJ',
3224 /// as a (literal) number of gigajoules.
3225 constexpr auto operator"" _GJ(long double v) {
3226  return v*GJ;
3227 }
3228 
3229 /// Constant-expression symbol for erg.
3230 constexpr auto erg = impl::erg<long double>;
3231 
3232 /// Interpret a number, suffixed with '_erg',
3233 /// as a (literal) number of ergs.
3234 constexpr auto operator"" _erg(long double v) {
3235  return v*erg;
3236 }
3237 
3238 /// Constant-expression symbol for W.
3239 constexpr auto W = impl::W<long double>;
3240 
3241 /// Interpret a number, suffixed with '_W',
3242 /// as a (literal) number of watts.
3243 constexpr auto operator"" _W(long double v) {
3244  return v*W;
3245 }
3246 
3247 /// Constant-expression symbol for mW.
3248 constexpr auto mW = impl::mW<long double>;
3249 
3250 /// Interpret a number, suffixed with '_mW',
3251 /// as a (literal) number of milliwatts.
3252 constexpr auto operator"" _mW(long double v) {
3253  return v*mW;
3254 }
3255 
3256 /// Constant-expression symbol for muW.
3257 constexpr auto muW = impl::muW<long double>;
3258 
3259 /// Interpret a number, suffixed with '_muW',
3260 /// as a (literal) number of microwatts.
3261 constexpr auto operator"" _muW(long double v) {
3262  return v*muW;
3263 }
3264 
3265 /// Constant-expression symbol for kW.
3266 constexpr auto kW = impl::kW<long double>;
3267 
3268 /// Interpret a number, suffixed with '_kW',
3269 /// as a (literal) number of kilowatts.
3270 constexpr auto operator"" _kW(long double v) {
3271  return v*kW;
3272 }
3273 
3274 /// Constant-expression symbol for MW.
3275 constexpr auto MW = impl::MW<long double>;
3276 
3277 /// Interpret a number, suffixed with '_MW',
3278 /// as a (literal) number of megawatts.
3279 constexpr auto operator"" _MW(long double v) {
3280  return v*MW;
3281 }
3282 
3283 /// Constant-expression symbol for GW.
3284 constexpr auto GW = impl::GW<long double>;
3285 
3286 /// Interpret a number, suffixed with '_GW',
3287 /// as a (literal) number of gigawatts.
3288 constexpr auto operator"" _GW(long double v) {
3289  return v*GW;
3290 }
3291 
3292 /// Constant-expression symbol for A.
3293 constexpr auto A = impl::A<long double>;
3294 
3295 /// Interpret a number, suffixed with '_A',
3296 /// as a (literal) number of amperes.
3297 constexpr auto operator"" _A(long double v) {
3298  return v*A;
3299 }
3300 
3301 /// Constant-expression symbol for mA.
3302 constexpr auto mA = impl::mA<long double>;
3303 
3304 /// Interpret a number, suffixed with '_mA',
3305 /// as a (literal) number of milliamperes.
3306 constexpr auto operator"" _mA(long double v) {
3307  return v*mA;
3308 }
3309 
3310 /// Constant-expression symbol for muA.
3311 constexpr auto muA = impl::muA<long double>;
3312 
3313 /// Interpret a number, suffixed with '_muA',
3314 /// as a (literal) number of microamperes.
3315 constexpr auto operator"" _muA(long double v) {
3316  return v*muA;
3317 }
3318 
3319 using speed = decltype(m/s);
3320 using acceleration = decltype(m/s/s);
3321 using momentum = decltype(g*m/s);
3322 using force = decltype(N/1);
3323 using current = decltype(C/s);
3324 using energy = decltype(J/1);
3325 using power = decltype(W/1);
3326 using area = decltype(m*m);
3327 using volume = decltype(m*m*m);
3328 using pressure = decltype(N/m/m);
3329 
3330 } // namespace ldbl
3331 
3332 
3333 } // namespace units
3334 } // namespace vnix
3335 
3336 #endif // ndef VNIX_UNITS_HPP
static constexpr long double const sf
Scale factor.
Definition: units.hpp:457
constexpr auto operator""_nC(long double v)
Interpret a number, suffixed with &#39;_nC&#39;, as a (literal) number of nanocoulombs.
Definition: units.hpp:3021
constexpr meganewtons< T > MN(T(1))
Template-variable for symbol for meganewtons.
constexpr auto operator""_GW(long double v)
Interpret a number, suffixed with &#39;_GW&#39;, as a (literal) number of gigawatts.
Definition: units.hpp:2174
constexpr microwatts(T v)
Initialize from number of microwatts.
Definition: units.hpp:1164
constexpr auto operator""_kN(long double v)
Interpret a number, suffixed with &#39;_kN&#39;, as a (literal) number of kilonewtons.
Definition: units.hpp:2596
constexpr millijoules< T > mJ(T(1))
Template-variable for symbol for millijoules.
constexpr millimeters(T v)
Initialize from number of millimeters.
Definition: units.hpp:86
constexpr auto mK
Constant-expression symbol for mK.
Definition: units.hpp:2499
static constexpr dim d()
Exponent for each unit in dimensioned quantity.
static constexpr long double const sf
Scale factor.
Definition: units.hpp:611
constexpr auto operator""_Mm(long double v)
Interpret a number, suffixed with &#39;_Mm&#39;, as a (literal) number of megameters.
Definition: units.hpp:2302
constexpr auto MW
Constant-expression symbol for MW.
Definition: units.hpp:2161
constexpr gigajoules< T > GJ(T(1))
Template-variable for symbol for gigajoules.
Template used to construct a number of nanograms.
Definition: units.hpp:301
constexpr auto mug
Constant-expression symbol for mug.
Definition: units.hpp:2337
constexpr auto pC
Constant-expression symbol for pC.
Definition: units.hpp:2478
constexpr auto inches(T v)
Produce dimensioned quantity from number of inches.
Definition: units.hpp:1515
constexpr auto ng
Constant-expression symbol for ng.
Definition: units.hpp:2346
constexpr auto operator""_muW(long double v)
Interpret a number, suffixed with &#39;_muW&#39;, as a (literal) number of microwatts.
Definition: units.hpp:3261
constexpr auto GW
Constant-expression symbol for GW.
Definition: units.hpp:2170
constexpr auto in
Constant-expression symbol for in.
Definition: units.hpp:2538
constexpr megawatts< T > MW(T(1))
Template-variable for symbol for megawatts.
constexpr auto J
Constant-expression symbol for J.
Definition: units.hpp:2619
constexpr auto m
Constant-expression symbol for m.
Definition: units.hpp:2232
constexpr auto megajoules(T v)
Produce dimensioned quantity from number of megajoules.
Definition: units.hpp:1593
constexpr auto operator""_dyn(long double v)
Interpret a number, suffixed with &#39;_dyn&#39;, as a (literal) number of dynes.
Definition: units.hpp:2614
constexpr nanocoulombs(T v)
Initialize from number of nanocoulombs.
Definition: units.hpp:592
static constexpr long double const sf
Scale factor.
Definition: units.hpp:633
constexpr auto operator""_m(long double v)
Interpret a number, suffixed with &#39;_m&#39;, as a (literal) number of meters.
Definition: units.hpp:2784
Template used to construct a number of picometers.
Definition: units.hpp:147
constexpr milliamperes(T v)
Initialize from number of milliamperes.
Definition: units.hpp:1274
static constexpr long double const sf
Scale factor.
Definition: units.hpp:171
constexpr gigajoules(T v)
Initialize from number of gigajoules.
Definition: units.hpp:1076
Template used to construct a number of nanokelvins.
Definition: units.hpp:697
Template used to construct a number of kilonewtons.
Definition: units.hpp:895
constexpr auto operator""_muA(long double v)
Interpret a number, suffixed with &#39;_muA&#39;, as a (literal) number of microamperes.
Definition: units.hpp:2201
constexpr micrometers(T v)
Initialize from number of micrometers.
Definition: units.hpp:108
constexpr word encode() const
Encode data for this dim into a word.
Definition: dim.hpp:104
constexpr auto operator""_mi(long double v)
Interpret a number, suffixed with &#39;_mi&#39;, as a (literal) number of miles.
Definition: units.hpp:2560
constexpr auto MN
Constant-expression symbol for MN.
Definition: units.hpp:2601
constexpr auto operator""_nK(long double v)
Interpret a number, suffixed with &#39;_nK&#39;, as a (literal) number of nanokelvins.
Definition: units.hpp:1955
constexpr auto mi
Constant-expression symbol for mi.
Definition: units.hpp:1999
constexpr auto operator""_g(long double v)
Interpret a number, suffixed with &#39;_g&#39;, as a (literal) number of grams.
Definition: units.hpp:2868
constexpr auto nK
Constant-expression symbol for nK.
Definition: units.hpp:3074
constexpr auto ms
Constant-expression symbol for ms.
Definition: units.hpp:2394
constexpr auto mg
Constant-expression symbol for mg.
Definition: units.hpp:2328
constexpr picoseconds< T > ps(T(1))
Template-variable for symbol for picoseconds.
static constexpr long double const sf
Scale factor.
Definition: units.hpp:853
constexpr auto micrometers(T v)
Produce dimensioned quantity from number of micrometers.
Definition: units.hpp:1335
constexpr milligrams(T v)
Initialize from number of milligrams.
Definition: units.hpp:262
constexpr auto microamperes(T v)
Produce dimensioned quantity from number of microamperes.
Definition: units.hpp:1659
constexpr auto operator""_yd(long double v)
Interpret a number, suffixed with &#39;_yd&#39;, as a (literal) number of yards.
Definition: units.hpp:2551
constexpr auto operator""_C(long double v)
Interpret a number, suffixed with &#39;_C&#39;, as a (literal) number of coulombs.
Definition: units.hpp:1877
constexpr auto operator""_kft(long double v)
Interpret a number, suffixed with &#39;_kft&#39;, as a (literal) number of kilofeet.
Definition: units.hpp:3090
constexpr femtometers< T > fm(T(1))
Template-variable for symbol for femtometers.
constexpr auto mW
Constant-expression symbol for mW.
Definition: units.hpp:2691
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1249
constexpr auto milliseconds(T v)
Produce dimensioned quantity from number of milliseconds.
Definition: units.hpp:1419
static constexpr long double const sf
Scale factor.
Definition: units.hpp:567
constexpr auto picoseconds(T v)
Produce dimensioned quantity from number of picoseconds.
Definition: units.hpp:1437
constexpr auto operator""_mm(long double v)
Interpret a number, suffixed with &#39;_mm&#39;, as a (literal) number of millimeters.
Definition: units.hpp:2805
constexpr microwatts< T > muW(T(1))
Template-variable for symbol for microwatts.
constexpr auto mus
Constant-expression symbol for mus.
Definition: units.hpp:2960
constexpr auto fm
Constant-expression symbol for fm.
Definition: units.hpp:1732
constexpr auto N
Constant-expression symbol for N.
Definition: units.hpp:2008
constexpr auto dyn
Constant-expression symbol for dyn.
Definition: units.hpp:3167
constexpr auto milliamperes(T v)
Produce dimensioned quantity from number of milliamperes.
Definition: units.hpp:1653
constexpr microkelvins(T v)
Initialize from number of microkelvins.
Definition: units.hpp:680
constexpr auto yd
Constant-expression symbol for yd.
Definition: units.hpp:1990
constexpr auto kW
Constant-expression symbol for kW.
Definition: units.hpp:3266
Template used to construct a number of newtons.
Definition: units.hpp:829
constexpr auto ps
Constant-expression symbol for ps.
Definition: units.hpp:2978
constexpr picograms< T > pg(T(1))
Template-variable for symbol for picograms.
constexpr auto mi
Constant-expression symbol for mi.
Definition: units.hpp:3113
constexpr auto fs
Constant-expression symbol for fs.
Definition: units.hpp:2987
constexpr auto nC
Constant-expression symbol for nC.
Definition: units.hpp:3026
constexpr auto microjoules(T v)
Produce dimensioned quantity from number of microjoules.
Definition: units.hpp:1581
static constexpr long double const sf
Scale factor.
Definition: units.hpp:897
constexpr micrograms< T > mug(T(1))
Template-variable for symbol for micrograms.
constexpr auto MW
Constant-expression symbol for MW.
Definition: units.hpp:2718
constexpr auto operator""_muJ(long double v)
Interpret a number, suffixed with &#39;_muJ&#39;, as a (literal) number of microjoules.
Definition: units.hpp:2641
constexpr miles(T v)
Initialize from number of miles.
Definition: units.hpp:812
constexpr newtons(T v)
Initialize from number of newtons.
Definition: units.hpp:834
constexpr auto operator""_GJ(long double v)
Interpret a number, suffixed with &#39;_GJ&#39;, as a (literal) number of gigajoules.
Definition: units.hpp:2668
Template used to construct a number of nanocoulombs.
Definition: units.hpp:587
constexpr auto kilograms(T v)
Produce dimensioned quantity from number of kilograms.
Definition: units.hpp:1401
constexpr auto operator""_MN(long double v)
Interpret a number, suffixed with &#39;_MN&#39;, as a (literal) number of meganewtons.
Definition: units.hpp:2605
constexpr auto mg
Constant-expression symbol for mg.
Definition: units.hpp:2885
constexpr auto operator""_nC(long double v)
Interpret a number, suffixed with &#39;_nC&#39;, as a (literal) number of nanocoulombs.
Definition: units.hpp:2464
constexpr auto operator""_muN(long double v)
Interpret a number, suffixed with &#39;_muN&#39;, as a (literal) number of micronewtons.
Definition: units.hpp:3144
Template used to construct a number of joules.
Definition: units.hpp:961
constexpr auto operator""_pm(long double v)
Interpret a number, suffixed with &#39;_pm&#39;, as a (literal) number of picometers.
Definition: units.hpp:1718
constexpr auto operator""_fs(long double v)
Interpret a number, suffixed with &#39;_fs&#39;, as a (literal) number of femtoseconds.
Definition: units.hpp:1868
constexpr auto mug
Constant-expression symbol for mug.
Definition: units.hpp:2894
constexpr auto muN
Constant-expression symbol for muN.
Definition: units.hpp:3140
constexpr auto pg
Constant-expression symbol for pg.
Definition: units.hpp:2355
constexpr auto yards(T v)
Produce dimensioned quantity from number of yards.
Definition: units.hpp:1521
constexpr auto operator""_muW(long double v)
Interpret a number, suffixed with &#39;_muW&#39;, as a (literal) number of microwatts.
Definition: units.hpp:2147
constexpr auto operator""_mK(long double v)
Interpret a number, suffixed with &#39;_mK&#39;, as a (literal) number of millikelvins.
Definition: units.hpp:2494
Template used to construct a number of micrometers.
Definition: units.hpp:103
constexpr auto operator""_kW(long double v)
Interpret a number, suffixed with &#39;_kW&#39;, as a (literal) number of kilowatts.
Definition: units.hpp:2156
Template used to construct a number of watts.
Definition: units.hpp:1115
constexpr auto operator""_ns(long double v)
Interpret a number, suffixed with &#39;_ns&#39;, as a (literal) number of nanoseconds.
Definition: units.hpp:2407
constexpr auto operator""_MW(long double v)
Interpret a number, suffixed with &#39;_MW&#39;, as a (literal) number of megawatts.
Definition: units.hpp:2165
constexpr auto operator""_kJ(long double v)
Interpret a number, suffixed with &#39;_kJ&#39;, as a (literal) number of kilojoules.
Definition: units.hpp:2093
constexpr auto mC
Constant-expression symbol for mC.
Definition: units.hpp:2451
constexpr dynes(T v)
Initialize from number of dynes.
Definition: units.hpp:944
Template used to construct a number of milliamperes.
Definition: units.hpp:1269
constexpr auto nanometers(T v)
Produce dimensioned quantity from number of nanometers.
Definition: units.hpp:1341
constexpr auto millicoulombs(T v)
Produce dimensioned quantity from number of millicoulombs.
Definition: units.hpp:1455
constexpr auto operator""_kW(long double v)
Interpret a number, suffixed with &#39;_kW&#39;, as a (literal) number of kilowatts.
Definition: units.hpp:3270
constexpr auto operator""_Mg(long double v)
Interpret a number, suffixed with &#39;_Mg&#39;, as a (literal) number of megagrams.
Definition: units.hpp:2925
constexpr auto muJ
Constant-expression symbol for muJ.
Definition: units.hpp:3194
constexpr auto microwatts(T v)
Produce dimensioned quantity from number of microwatts.
Definition: units.hpp:1623
constexpr auto muC
Constant-expression symbol for muC.
Definition: units.hpp:2460
constexpr auto operator""_MN(long double v)
Interpret a number, suffixed with &#39;_MN&#39;, as a (literal) number of meganewtons.
Definition: units.hpp:2048
constexpr auto mi
Constant-expression symbol for mi.
Definition: units.hpp:2556
constexpr auto miles(T v)
Produce dimensioned quantity from number of miles.
Definition: units.hpp:1527
constexpr auto pm
Constant-expression symbol for pm.
Definition: units.hpp:2837
constexpr meters< T > m(T(1))
Template-variable for symbol for meters.
constexpr auto operator""_ns(long double v)
Interpret a number, suffixed with &#39;_ns&#39;, as a (literal) number of nanoseconds.
Definition: units.hpp:1850
Template used to construct a number of dynes.
Definition: units.hpp:939
constexpr auto operator""_muK(long double v)
Interpret a number, suffixed with &#39;_muK&#39;, as a (literal) number of microkelvins.
Definition: units.hpp:3060
constexpr auto operator""_mC(long double v)
Interpret a number, suffixed with &#39;_mC&#39;, as a (literal) number of millicoulombs.
Definition: units.hpp:2446
Template used to construct a number of milliseconds.
Definition: units.hpp:411
constexpr auto W
Constant-expression symbol for W.
Definition: units.hpp:3239
Template used to construct a number of kilofeet.
Definition: units.hpp:741
constexpr nanometers< T > nm(T(1))
Template-variable for symbol for nanometers.
constexpr auto muA
Constant-expression symbol for muA.
Definition: units.hpp:2754
constexpr auto operator""_mm(long double v)
Interpret a number, suffixed with &#39;_mm&#39;, as a (literal) number of millimeters.
Definition: units.hpp:2248
constexpr auto mJ
Constant-expression symbol for mJ.
Definition: units.hpp:2071
constexpr auto operator""_mN(long double v)
Interpret a number, suffixed with &#39;_mN&#39;, as a (literal) number of millinewtons.
Definition: units.hpp:2021
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1051
constexpr auto nC
Constant-expression symbol for nC.
Definition: units.hpp:2469
constexpr centimeters< T > cm(T(1))
Template-variable for symbol for centimeters.
constexpr yards(T v)
Initialize from number of yards.
Definition: units.hpp:790
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1029
constexpr picocoulombs(T v)
Initialize from number of picocoulombs.
Definition: units.hpp:614
constexpr auto mW
Constant-expression symbol for mW.
Definition: units.hpp:2134
constexpr auto cm
Constant-expression symbol for cm.
Definition: units.hpp:2801
constexpr auto operator""_dyn(long double v)
Interpret a number, suffixed with &#39;_dyn&#39;, as a (literal) number of dynes.
Definition: units.hpp:3171
constexpr auto kN
Constant-expression symbol for kN.
Definition: units.hpp:3149
static constexpr long double const sf
Scale factor.
Definition: units.hpp:479
constexpr auto kJ
Constant-expression symbol for kJ.
Definition: units.hpp:2089
Template used to construct a number of microwatts.
Definition: units.hpp:1159
constexpr auto amperes(T v)
Produce dimensioned quantity from number of amperes.
Definition: units.hpp:1647
constexpr auto operator""_fm(long double v)
Interpret a number, suffixed with &#39;_fm&#39;, as a (literal) number of femtometers.
Definition: units.hpp:1727
constexpr auto operator""_muA(long double v)
Interpret a number, suffixed with &#39;_muA&#39;, as a (literal) number of microamperes.
Definition: units.hpp:2758
constexpr auto MN
Constant-expression symbol for MN.
Definition: units.hpp:3158
Template used to construct a number of gigajoules.
Definition: units.hpp:1071
constexpr auto operator""_K(long double v)
Interpret a number, suffixed with &#39;_K&#39;, as a (literal) number of kelvins.
Definition: units.hpp:1925
constexpr kilometers(T v)
Initialize from number of kilometers.
Definition: units.hpp:196
constexpr basic_dim operator+(basic_dim const &a) const
Add corresponding exponents.
Definition: dim.hpp:194
Template used to construct a number of grams.
Definition: units.hpp:235
constexpr auto mC
Constant-expression symbol for mC.
Definition: units.hpp:1894
static constexpr long double const sf
Scale factor.
Definition: units.hpp:61
constexpr auto operator""_km(long double v)
Interpret a number, suffixed with &#39;_km&#39;, as a (literal) number of kilometers.
Definition: units.hpp:2293
constexpr auto operator""_mJ(long double v)
Interpret a number, suffixed with &#39;_mJ&#39;, as a (literal) number of millijoules.
Definition: units.hpp:2075
constexpr auto operator""_kg(long double v)
Interpret a number, suffixed with &#39;_kg&#39;, as a (literal) number of kilograms.
Definition: units.hpp:2916
constexpr auto erg
Constant-expression symbol for erg.
Definition: units.hpp:2116
constexpr auto operator""_ps(long double v)
Interpret a number, suffixed with &#39;_ps&#39;, as a (literal) number of picoseconds.
Definition: units.hpp:2416
static constexpr long double const sf
Scale factor.
Definition: units.hpp:259
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1073
constexpr feet(T v)
Initialize from number of feet.
Definition: units.hpp:724
constexpr auto operator""_pC(long double v)
Interpret a number, suffixed with &#39;_pC&#39;, as a (literal) number of picocoulombs.
Definition: units.hpp:2473
constexpr coulombs< T > C(T(1))
Template-variable for symbol for coulombs.
constexpr auto operator""_ps(long double v)
Interpret a number, suffixed with &#39;_ps&#39;, as a (literal) number of picoseconds.
Definition: units.hpp:2973
constexpr picograms(T v)
Initialize from number of picograms.
Definition: units.hpp:328
constexpr miles< T > mi(T(1))
Template-variable for symbol for miles.
constexpr auto millijoules(T v)
Produce dimensioned quantity from number of millijoules.
Definition: units.hpp:1575
constexpr auto kilonewtons(T v)
Produce dimensioned quantity from number of kilonewtons.
Definition: units.hpp:1551
constexpr auto kW
Constant-expression symbol for kW.
Definition: units.hpp:2709
constexpr auto in
Constant-expression symbol for in.
Definition: units.hpp:1981
constexpr auto Mg
Constant-expression symbol for Mg.
Definition: units.hpp:2930
constexpr auto ft
Constant-expression symbol for ft.
Definition: units.hpp:2520
constexpr auto kilometers(T v)
Produce dimensioned quantity from number of kilometers.
Definition: units.hpp:1359
constexpr seconds< T > s(T(1))
Template-variable for symbol for seconds.
constexpr auto kilowatts(T v)
Produce dimensioned quantity from number of kilowatts.
Definition: units.hpp:1629
constexpr auto operator""_mK(long double v)
Interpret a number, suffixed with &#39;_mK&#39;, as a (literal) number of millikelvins.
Definition: units.hpp:1937
constexpr auto operator""_s(long double v)
Interpret a number, suffixed with &#39;_s&#39;, as a (literal) number of seconds.
Definition: units.hpp:2377
constexpr auto operator""_muC(long double v)
Interpret a number, suffixed with &#39;_muC&#39;, as a (literal) number of microcoulombs. ...
Definition: units.hpp:2455
constexpr auto A
Constant-expression symbol for A.
Definition: units.hpp:2179
constexpr auto operator""_muK(long double v)
Interpret a number, suffixed with &#39;_muK&#39;, as a (literal) number of microkelvins.
Definition: units.hpp:1946
constexpr auto grams(T v)
Produce dimensioned quantity from number of grams.
Definition: units.hpp:1371
Template used to construct a number of kilojoules.
Definition: units.hpp:1027
constexpr auto megawatts(T v)
Produce dimensioned quantity from number of megawatts.
Definition: units.hpp:1635
constexpr auto N
Constant-expression symbol for N.
Definition: units.hpp:2565
Single-precision dimensions and units.
Definition: units.hpp:1663
constexpr auto femtometers(T v)
Produce dimensioned quantity from number of femtometers.
Definition: units.hpp:1353
constexpr auto operator""_Mg(long double v)
Interpret a number, suffixed with &#39;_Mg&#39;, as a (literal) number of megagrams.
Definition: units.hpp:1811
constexpr auto operator""_J(long double v)
Interpret a number, suffixed with &#39;_J&#39;, as a (literal) number of joules.
Definition: units.hpp:2623
constexpr kelvins< T > K(T(1))
Template-variable for symbol for kelvins.
constexpr auto erg
Constant-expression symbol for erg.
Definition: units.hpp:2673
constexpr auto picometers(T v)
Produce dimensioned quantity from number of picometers.
Definition: units.hpp:1347
constexpr auto operator""_nC(long double v)
Interpret a number, suffixed with &#39;_nC&#39;, as a (literal) number of nanocoulombs.
Definition: units.hpp:1907
static constexpr long double const sf
Scale factor.
Definition: units.hpp:281
constexpr kilonewtons(T v)
Initialize from number of kilonewtons.
Definition: units.hpp:900
constexpr auto muK
Constant-expression symbol for muK.
Definition: units.hpp:3065
static constexpr long double const sf
Scale factor.
Definition: units.hpp:677
constexpr auto nK
Constant-expression symbol for nK.
Definition: units.hpp:2517
constexpr auto kg
Constant-expression symbol for kg.
Definition: units.hpp:2921
static constexpr long double const sf
Scale factor.
Definition: units.hpp:413
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1271
static constexpr long double const sf
Scale factor.
Definition: units.hpp:149
constexpr auto Mm
Constant-expression symbol for Mm.
Definition: units.hpp:2864
Template used to construct a number of picocoulombs.
Definition: units.hpp:609
constexpr auto operator""_in(long double v)
Interpret a number, suffixed with &#39;_in&#39;, as a (literal) number of inches.
Definition: units.hpp:3099
Template used to construct a number of millicoulombs.
Definition: units.hpp:543
constexpr microamperes< T > muA(T(1))
Template-variable for symbol for microamperes.
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1161
constexpr auto operator""_mK(long double v)
Interpret a number, suffixed with &#39;_mK&#39;, as a (literal) number of millikelvins.
Definition: units.hpp:3051
constexpr auto ns
Constant-expression symbol for ns.
Definition: units.hpp:2412
constexpr auto muJ
Constant-expression symbol for muJ.
Definition: units.hpp:2080
constexpr auto operator""_erg(long double v)
Interpret a number, suffixed with &#39;_erg&#39;, as a (literal) number of ergs.
Definition: units.hpp:3234
constexpr auto pm
Constant-expression symbol for pm.
Definition: units.hpp:1723
constexpr auto g
Constant-expression symbol for g.
Definition: units.hpp:2873
constexpr auto muK
Constant-expression symbol for muK.
Definition: units.hpp:2508
constexpr auto operator""_ps(long double v)
Interpret a number, suffixed with &#39;_ps&#39;, as a (literal) number of picoseconds.
Definition: units.hpp:1859
Template used to construct a number of milligrams.
Definition: units.hpp:257
Template used to construct a number of coulombs.
Definition: units.hpp:521
Template used to construct a number of kilometers.
Definition: units.hpp:191
Template used to construct a number of yards.
Definition: units.hpp:785
constexpr auto nm
Constant-expression symbol for nm.
Definition: units.hpp:1714
static constexpr long double const sf
Scale factor.
Definition: units.hpp:501
constexpr auto operator""_mus(long double v)
Interpret a number, suffixed with &#39;_mus&#39;, as a (literal) number of microseconds.
Definition: units.hpp:2955
constexpr auto operator""_ft(long double v)
Interpret a number, suffixed with &#39;_ft&#39;, as a (literal) number of feet.
Definition: units.hpp:1967
constexpr meters(T v)
Initialize from number of meters.
Definition: units.hpp:42
constexpr feet< T > ft(T(1))
Template-variable for symbol for feet.
constexpr auto operator""_pC(long double v)
Interpret a number, suffixed with &#39;_pC&#39;, as a (literal) number of picocoulombs.
Definition: units.hpp:1916
constexpr auto nanograms(T v)
Produce dimensioned quantity from number of nanograms.
Definition: units.hpp:1389
constexpr auto operator""_K(long double v)
Interpret a number, suffixed with &#39;_K&#39;, as a (literal) number of kelvins.
Definition: units.hpp:2482
constexpr auto m
Constant-expression symbol for m.
Definition: units.hpp:2789
constexpr auto mA
Constant-expression symbol for mA.
Definition: units.hpp:3302
constexpr nanograms< T > ng(T(1))
Template-variable for symbol for nanograms.
constexpr auto operator""_GW(long double v)
Interpret a number, suffixed with &#39;_GW&#39;, as a (literal) number of gigawatts.
Definition: units.hpp:2731
constexpr grams(T v)
Initialize from number of grams.
Definition: units.hpp:240
static constexpr long double const sf
Scale factor.
Definition: units.hpp:127
constexpr dim time_dim(0, 0, 1, 0, 0)
Exponents for time.
constexpr microjoules< T > muJ(T(1))
Template-variable for symbol for microjoules.
constexpr auto operator""_mg(long double v)
Interpret a number, suffixed with &#39;_mg&#39;, as a (literal) number of milligrams.
Definition: units.hpp:2880
constexpr auto operator""_cm(long double v)
Interpret a number, suffixed with &#39;_cm&#39;, as a (literal) number of centimeters.
Definition: units.hpp:2239
Template used to construct a number of miles.
Definition: units.hpp:807
constexpr auto operator""_mN(long double v)
Interpret a number, suffixed with &#39;_mN&#39;, as a (literal) number of millinewtons.
Definition: units.hpp:2578
Template used to construct a number of picoseconds.
Definition: units.hpp:477
constexpr auto operator""_muC(long double v)
Interpret a number, suffixed with &#39;_muC&#39;, as a (literal) number of microcoulombs. ...
Definition: units.hpp:1898
constexpr auto mJ
Constant-expression symbol for mJ.
Definition: units.hpp:2628
constexpr auto milligrams(T v)
Produce dimensioned quantity from number of milligrams.
Definition: units.hpp:1377
constexpr auto seconds(T v)
Produce dimensioned quantity from number of seconds.
Definition: units.hpp:1413
static constexpr long double const sf
Scale factor.
Definition: units.hpp:589
constexpr auto mN
Constant-expression symbol for mN.
Definition: units.hpp:2017
constexpr auto operator""_mW(long double v)
Interpret a number, suffixed with &#39;_mW&#39;, as a (literal) number of milliwatts.
Definition: units.hpp:2138
constexpr auto yd
Constant-expression symbol for yd.
Definition: units.hpp:2547
constexpr auto operator""_muW(long double v)
Interpret a number, suffixed with &#39;_muW&#39;, as a (literal) number of microwatts.
Definition: units.hpp:2704
constexpr auto pm
Constant-expression symbol for pm.
Definition: units.hpp:2280
constexpr auto operator""_kg(long double v)
Interpret a number, suffixed with &#39;_kg&#39;, as a (literal) number of kilograms.
Definition: units.hpp:2359
constexpr auto kft
Constant-expression symbol for kft.
Definition: units.hpp:1972
constexpr auto ns
Constant-expression symbol for ns.
Definition: units.hpp:1855
constexpr auto feet(T v)
Produce dimensioned quantity from number of feet.
Definition: units.hpp:1503
constexpr auto operator""_cm(long double v)
Interpret a number, suffixed with &#39;_cm&#39;, as a (literal) number of centimeters.
Definition: units.hpp:2796
constexpr auto A
Constant-expression symbol for A.
Definition: units.hpp:2736
constexpr auto operator""_W(long double v)
Interpret a number, suffixed with &#39;_W&#39;, as a (literal) number of watts.
Definition: units.hpp:2686
constexpr auto micrograms(T v)
Produce dimensioned quantity from number of micrograms.
Definition: units.hpp:1383
constexpr picometers< T > pm(T(1))
Template-variable for symbol for picometers.
constexpr auto milliwatts(T v)
Produce dimensioned quantity from number of milliwatts.
Definition: units.hpp:1617
constexpr auto operator""_kJ(long double v)
Interpret a number, suffixed with &#39;_kJ&#39;, as a (literal) number of kilojoules.
Definition: units.hpp:3207
constexpr auto MJ
Constant-expression symbol for MJ.
Definition: units.hpp:2655
constexpr auto K
Constant-expression symbol for K.
Definition: units.hpp:2487
constexpr auto operator""_mg(long double v)
Interpret a number, suffixed with &#39;_mg&#39;, as a (literal) number of milligrams.
Definition: units.hpp:1766
constexpr auto pC
Constant-expression symbol for pC.
Definition: units.hpp:3035
constexpr auto MW
Constant-expression symbol for MW.
Definition: units.hpp:3275
constexpr auto microkelvins(T v)
Produce dimensioned quantity from number of microkelvins.
Definition: units.hpp:1491
constexpr kilowatts< T > kW(T(1))
Template-variable for symbol for kilowatts.
constexpr auto ms
Constant-expression symbol for ms.
Definition: units.hpp:1837
constexpr basic_dim operator-(basic_dim const &s) const
Subtract corresponding exponents.
Definition: dim.hpp:203
constexpr gigawatts< T > GW(T(1))
Template-variable for symbol for gigawatts.
constexpr auto ng
Constant-expression symbol for ng.
Definition: units.hpp:1789
constexpr grams< T > g(T(1))
Template-variable for symbol for grams.
constexpr auto mK
Constant-expression symbol for mK.
Definition: units.hpp:1942
constexpr auto operator""_pC(long double v)
Interpret a number, suffixed with &#39;_pC&#39;, as a (literal) number of picocoulombs.
Definition: units.hpp:3030
static constexpr long double const sf
Scale factor.
Definition: units.hpp:765
constexpr auto Mm
Constant-expression symbol for Mm.
Definition: units.hpp:2307
Template used to construct a number of microamperes.
Definition: units.hpp:1291
Template used to construct a number of kelvins.
Definition: units.hpp:631
constexpr auto kilojoules(T v)
Produce dimensioned quantity from number of kilojoules.
Definition: units.hpp:1587
constexpr auto Mg
Constant-expression symbol for Mg.
Definition: units.hpp:1816
constexpr auto operator""_nK(long double v)
Interpret a number, suffixed with &#39;_nK&#39;, as a (literal) number of nanokelvins.
Definition: units.hpp:3069
constexpr auto operator""_nm(long double v)
Interpret a number, suffixed with &#39;_nm&#39;, as a (literal) number of nanometers.
Definition: units.hpp:2266
constexpr auto operator""_ng(long double v)
Interpret a number, suffixed with &#39;_ng&#39;, as a (literal) number of nanograms.
Definition: units.hpp:2341
constexpr auto operator""_mg(long double v)
Interpret a number, suffixed with &#39;_mg&#39;, as a (literal) number of milligrams.
Definition: units.hpp:2323
constexpr millijoules(T v)
Initialize from number of millijoules.
Definition: units.hpp:988
constexpr auto GJ
Constant-expression symbol for GJ.
Definition: units.hpp:2664
constexpr auto pg
Constant-expression symbol for pg.
Definition: units.hpp:2912
constexpr auto ft
Constant-expression symbol for ft.
Definition: units.hpp:3077
constexpr inches(T v)
Initialize from number of inches.
Definition: units.hpp:768
constexpr microkelvins< T > muK(T(1))
Template-variable for symbol for microkelvins.
constexpr auto nanocoulombs(T v)
Produce dimensioned quantity from number of nanocoulombs.
Definition: units.hpp:1467
constexpr auto yd
Constant-expression symbol for yd.
Definition: units.hpp:3104
constexpr kilofeet(T v)
Initialize from number of kilofeet.
Definition: units.hpp:746
constexpr dim mass_dim(0, 1, 0, 0, 0)
Exponents for mass.
constexpr auto nm
Constant-expression symbol for nm.
Definition: units.hpp:2828
Template used to construct a number of inches.
Definition: units.hpp:763
constexpr micronewtons(T v)
Initialize from number of micronewtons.
Definition: units.hpp:878
constexpr auto mJ
Constant-expression symbol for mJ.
Definition: units.hpp:3185
Template structs that user would use only to extend the library.
Definition: units.hpp:32
Template used to construct a number of microjoules.
Definition: units.hpp:1005
constexpr auto A
Constant-expression symbol for A.
Definition: units.hpp:3293
constexpr auto operator""_GJ(long double v)
Interpret a number, suffixed with &#39;_GJ&#39;, as a (literal) number of gigajoules.
Definition: units.hpp:3225
constexpr auto muC
Constant-expression symbol for muC.
Definition: units.hpp:3017
constexpr auto ps
Constant-expression symbol for ps.
Definition: units.hpp:2421
constexpr microamperes(T v)
Initialize from number of microamperes.
Definition: units.hpp:1296
constexpr auto Mg
Constant-expression symbol for Mg.
Definition: units.hpp:2373
constexpr auto operator""_fm(long double v)
Interpret a number, suffixed with &#39;_fm&#39;, as a (literal) number of femtometers.
Definition: units.hpp:2841
constexpr kilometers< T > km(T(1))
Template-variable for symbol for kilometers.
constexpr auto operator""_mA(long double v)
Interpret a number, suffixed with &#39;_mA&#39;, as a (literal) number of milliamperes.
Definition: units.hpp:2749
Template used to construct a number of millimeters.
Definition: units.hpp:81
constexpr auto operator""_mm(long double v)
Interpret a number, suffixed with &#39;_mm&#39;, as a (literal) number of millimeters.
Definition: units.hpp:1691
constexpr joules< T > J(T(1))
Template-variable for symbol for joules.
constexpr auto N
Constant-expression symbol for N.
Definition: units.hpp:3122
constexpr auto operator""_mA(long double v)
Interpret a number, suffixed with &#39;_mA&#39;, as a (literal) number of milliamperes.
Definition: units.hpp:2192
constexpr kilofeet< T > kft(T(1))
Template-variable for symbol for kilofeet.
static constexpr long double const sf
Scale factor.
Definition: units.hpp:83
constexpr ergs(T v)
Initialize from number of ergs.
Definition: units.hpp:1098
constexpr auto millikelvins(T v)
Produce dimensioned quantity from number of millikelvins.
Definition: units.hpp:1485
constexpr auto s
Constant-expression symbol for s.
Definition: units.hpp:1825
constexpr meganewtons(T v)
Initialize from number of meganewtons.
Definition: units.hpp:922
static constexpr long double const sf
Scale factor.
Definition: units.hpp:325
constexpr auto K
Constant-expression symbol for K.
Definition: units.hpp:3044
constexpr auto operator""_GJ(long double v)
Interpret a number, suffixed with &#39;_GJ&#39;, as a (literal) number of gigajoules.
Definition: units.hpp:2111
constexpr auto mm
Constant-expression symbol for mm.
Definition: units.hpp:2810
constexpr auto operator""_pg(long double v)
Interpret a number, suffixed with &#39;_pg&#39;, as a (literal) number of picograms.
Definition: units.hpp:2907
constexpr auto GW
Constant-expression symbol for GW.
Definition: units.hpp:3284
Double-precision dimensions and units.
Definition: units.hpp:2220
constexpr femtoseconds< T > fs(T(1))
Template-variable for symbol for femtoseconds.
constexpr auto megameters(T v)
Produce dimensioned quantity from number of megameters.
Definition: units.hpp:1365
constexpr auto operator""_in(long double v)
Interpret a number, suffixed with &#39;_in&#39;, as a (literal) number of inches.
Definition: units.hpp:2542
static constexpr long double const sf
Scale factor.
Definition: units.hpp:809
constexpr auto s
Constant-expression symbol for s.
Definition: units.hpp:2382
constexpr auto millinewtons(T v)
Produce dimensioned quantity from number of millinewtons.
Definition: units.hpp:1539
static constexpr long double const sf
Scale factor.
Definition: units.hpp:193
static constexpr long double const sf
Scale factor.
Definition: units.hpp:721
constexpr auto watts(T v)
Produce dimensioned quantity from number of watts.
Definition: units.hpp:1611
constexpr auto operator""_mug(long double v)
Interpret a number, suffixed with &#39;_mug&#39;, as a (literal) number of micrograms.
Definition: units.hpp:1775
constexpr auto fm
Constant-expression symbol for fm.
Definition: units.hpp:2289
constexpr auto operator""_muC(long double v)
Interpret a number, suffixed with &#39;_muC&#39;, as a (literal) number of microcoulombs. ...
Definition: units.hpp:3012
constexpr auto operator""_erg(long double v)
Interpret a number, suffixed with &#39;_erg&#39;, as a (literal) number of ergs.
Definition: units.hpp:2120
constexpr auto operator""_ft(long double v)
Interpret a number, suffixed with &#39;_ft&#39;, as a (literal) number of feet.
Definition: units.hpp:3081
constexpr picocoulombs< T > pC(T(1))
Template-variable for symbol for picocoulombs.
constexpr ergs< T > erg(T(1))
Template-variable for symbol for ergs.
constexpr auto mum
Constant-expression symbol for mum.
Definition: units.hpp:2819
constexpr amperes(T v)
Initialize from number of amperes.
Definition: units.hpp:1252
constexpr auto fs
Constant-expression symbol for fs.
Definition: units.hpp:2430
Template used to construct a number of millijoules.
Definition: units.hpp:983
constexpr auto J
Constant-expression symbol for J.
Definition: units.hpp:2062
constexpr amperes< T > A(T(1))
Template-variable for symbol for amperes.
Template used to construct a number of meganewtons.
Definition: units.hpp:917
constexpr auto operator""_nK(long double v)
Interpret a number, suffixed with &#39;_nK&#39;, as a (literal) number of nanokelvins.
Definition: units.hpp:2512
constexpr auto kJ
Constant-expression symbol for kJ.
Definition: units.hpp:3203
constexpr megajoules< T > MJ(T(1))
Template-variable for symbol for megajoules.
constexpr millikelvins(T v)
Initialize from number of millikelvins.
Definition: units.hpp:658
constexpr auto meters(T v)
Produce dimensioned quantity from number of meters.
Definition: units.hpp:1317
constexpr nanograms(T v)
Initialize from number of nanograms.
Definition: units.hpp:306
Template used to construct a number of kilograms.
Definition: units.hpp:345
constexpr watts< T > W(T(1))
Template-variable for symbol for watts.
constexpr auto operator""_cm(long double v)
Interpret a number, suffixed with &#39;_cm&#39;, as a (literal) number of centimeters.
Definition: units.hpp:1682
constexpr nanoseconds< T > ns(T(1))
Template-variable for symbol for nanoseconds.
constexpr auto megagrams(T v)
Produce dimensioned quantity from number of megagrams.
Definition: units.hpp:1407
constexpr auto operator""_fs(long double v)
Interpret a number, suffixed with &#39;_fs&#39;, as a (literal) number of femtoseconds.
Definition: units.hpp:2982
constexpr auto ns
Constant-expression symbol for ns.
Definition: units.hpp:2969
constexpr auto operator""_muK(long double v)
Interpret a number, suffixed with &#39;_muK&#39;, as a (literal) number of microkelvins.
Definition: units.hpp:2503
constexpr auto operator""_mC(long double v)
Interpret a number, suffixed with &#39;_mC&#39;, as a (literal) number of millicoulombs.
Definition: units.hpp:1889
constexpr auto operator""_pg(long double v)
Interpret a number, suffixed with &#39;_pg&#39;, as a (literal) number of picograms.
Definition: units.hpp:1793
constexpr auto cm
Constant-expression symbol for cm.
Definition: units.hpp:1687
constexpr auto operator""_muJ(long double v)
Interpret a number, suffixed with &#39;_muJ&#39;, as a (literal) number of microjoules.
Definition: units.hpp:2084
constexpr auto microseconds(T v)
Produce dimensioned quantity from number of microseconds.
Definition: units.hpp:1425
constexpr auto muJ
Constant-expression symbol for muJ.
Definition: units.hpp:2637
constexpr auto operator""_kft(long double v)
Interpret a number, suffixed with &#39;_kft&#39;, as a (literal) number of kilofeet.
Definition: units.hpp:1976
constexpr auto operator""_nm(long double v)
Interpret a number, suffixed with &#39;_nm&#39;, as a (literal) number of nanometers.
Definition: units.hpp:2823
Template used to construct a number of meters.
Definition: units.hpp:37
constexpr auto nanoseconds(T v)
Produce dimensioned quantity from number of nanoseconds.
Definition: units.hpp:1431
constexpr auto muA
Constant-expression symbol for muA.
Definition: units.hpp:3311
constexpr auto mW
Constant-expression symbol for mW.
Definition: units.hpp:3248
constexpr inches< T > in(T(1))
Template-variable for symbol for inches.
constexpr auto mA
Constant-expression symbol for mA.
Definition: units.hpp:2188
static constexpr long double const sf
Scale factor.
Definition: units.hpp:545
constexpr auto operator""_g(long double v)
Interpret a number, suffixed with &#39;_g&#39;, as a (literal) number of grams.
Definition: units.hpp:2311
constexpr auto operator""_MW(long double v)
Interpret a number, suffixed with &#39;_MW&#39;, as a (literal) number of megawatts.
Definition: units.hpp:3279
constexpr auto millimeters(T v)
Produce dimensioned quantity from number of millimeters.
Definition: units.hpp:1329
Template used to construct a number of microcoulombs.
Definition: units.hpp:565
constexpr picoseconds(T v)
Initialize from number of picoseconds.
Definition: units.hpp:482
constexpr milliseconds(T v)
Initialize from number of milliseconds.
Definition: units.hpp:416
constexpr auto dyn
Constant-expression symbol for dyn.
Definition: units.hpp:2610
constexpr auto operator""_A(long double v)
Interpret a number, suffixed with &#39;_A&#39;, as a (literal) number of amperes.
Definition: units.hpp:2183
constexpr auto ergs(T v)
Produce dimensioned quantity from number of ergs.
Definition: units.hpp:1605
constexpr microcoulombs< T > muC(T(1))
Template-variable for symbol for microcoulombs.
constexpr auto operator""_A(long double v)
Interpret a number, suffixed with &#39;_A&#39;, as a (literal) number of amperes.
Definition: units.hpp:3297
constexpr auto ft
Constant-expression symbol for ft.
Definition: units.hpp:1963
static constexpr long double const sf
Scale factor.
Definition: units.hpp:303
constexpr auto muN
Constant-expression symbol for muN.
Definition: units.hpp:2583
constexpr auto mN
Constant-expression symbol for mN.
Definition: units.hpp:2574
constexpr auto km
Constant-expression symbol for km.
Definition: units.hpp:2298
constexpr auto GJ
Constant-expression symbol for GJ.
Definition: units.hpp:2107
constexpr microcoulombs(T v)
Initialize from number of microcoulombs.
Definition: units.hpp:570
constexpr auto mum
Constant-expression symbol for mum.
Definition: units.hpp:2262
constexpr auto operator""_mJ(long double v)
Interpret a number, suffixed with &#39;_mJ&#39;, as a (literal) number of millijoules.
Definition: units.hpp:2632
Extended-precision dimensions and units.
Definition: units.hpp:2777
constexpr microjoules(T v)
Initialize from number of microjoules.
Definition: units.hpp:1010
constexpr auto fm
Constant-expression symbol for fm.
Definition: units.hpp:2846
constexpr auto operator""_GW(long double v)
Interpret a number, suffixed with &#39;_GW&#39;, as a (literal) number of gigawatts.
Definition: units.hpp:3288
constexpr auto operator""_N(long double v)
Interpret a number, suffixed with &#39;_N&#39;, as a (literal) number of newtons.
Definition: units.hpp:2012
constexpr auto picocoulombs(T v)
Produce dimensioned quantity from number of picocoulombs.
Definition: units.hpp:1473
constexpr auto mN
Constant-expression symbol for mN.
Definition: units.hpp:3131
constexpr dim temperature_dim(0, 0, 0, 0, 1)
Exponents for temperature.
constexpr auto operator""_ft(long double v)
Interpret a number, suffixed with &#39;_ft&#39;, as a (literal) number of feet.
Definition: units.hpp:2524
constexpr auto operator""_m(long double v)
Interpret a number, suffixed with &#39;_m&#39;, as a (literal) number of meters.
Definition: units.hpp:1670
constexpr megawatts(T v)
Initialize from number of megawatts.
Definition: units.hpp:1208
Template used to construct a number of amperes.
Definition: units.hpp:1247
constexpr kelvins(T v)
Initialize from number of kelvins.
Definition: units.hpp:636
constexpr auto mum
Constant-expression symbol for mum.
Definition: units.hpp:1705
constexpr auto g
Constant-expression symbol for g.
Definition: units.hpp:2316
constexpr auto kg
Constant-expression symbol for kg.
Definition: units.hpp:2364
constexpr auto operator""_pm(long double v)
Interpret a number, suffixed with &#39;_pm&#39;, as a (literal) number of picometers.
Definition: units.hpp:2275
constexpr auto operator""_A(long double v)
Interpret a number, suffixed with &#39;_A&#39;, as a (literal) number of amperes.
Definition: units.hpp:2740
constexpr auto km
Constant-expression symbol for km.
Definition: units.hpp:2855
constexpr auto operator""_s(long double v)
Interpret a number, suffixed with &#39;_s&#39;, as a (literal) number of seconds.
Definition: units.hpp:1820
constexpr auto operator""_kW(long double v)
Interpret a number, suffixed with &#39;_kW&#39;, as a (literal) number of kilowatts.
Definition: units.hpp:2713
static constexpr long double const sf
Scale factor.
Definition: units.hpp:985
constexpr auto operator""_ms(long double v)
Interpret a number, suffixed with &#39;_ms&#39;, as a (literal) number of milliseconds.
Definition: units.hpp:2389
constexpr auto muW
Constant-expression symbol for muW.
Definition: units.hpp:2143
constexpr microseconds(T v)
Initialize from number of microseconds.
Definition: units.hpp:438
constexpr auto operator""_K(long double v)
Interpret a number, suffixed with &#39;_K&#39;, as a (literal) number of kelvins.
Definition: units.hpp:3039
constexpr auto operator""_C(long double v)
Interpret a number, suffixed with &#39;_C&#39;, as a (literal) number of coulombs.
Definition: units.hpp:2991
static constexpr long double const sf
Scale factor.
Definition: units.hpp:369
constexpr microseconds< T > mus(T(1))
Template-variable for symbol for microseconds.
constexpr micrometers< T > mum(T(1))
Template-variable for symbol for micrometers.
constexpr auto operator""_yd(long double v)
Interpret a number, suffixed with &#39;_yd&#39;, as a (literal) number of yards.
Definition: units.hpp:1994
constexpr auto dyn
Constant-expression symbol for dyn.
Definition: units.hpp:2053
constexpr auto Mm
Constant-expression symbol for Mm.
Definition: units.hpp:1750
constexpr auto pg
Constant-expression symbol for pg.
Definition: units.hpp:1798
Template used to construct a number of microseconds.
Definition: units.hpp:433
constexpr nanokelvins(T v)
Initialize from number of nanokelvins.
Definition: units.hpp:702
constexpr auto operator""_J(long double v)
Interpret a number, suffixed with &#39;_J&#39;, as a (literal) number of joules.
Definition: units.hpp:2066
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1007
constexpr auto operator""_mum(long double v)
Interpret a number, suffixed with &#39;_mum&#39;, as a (literal) number of micrometers.
Definition: units.hpp:1700
constexpr auto operator""_mi(long double v)
Interpret a number, suffixed with &#39;_mi&#39;, as a (literal) number of miles.
Definition: units.hpp:3117
constexpr auto operator""_W(long double v)
Interpret a number, suffixed with &#39;_W&#39;, as a (literal) number of watts.
Definition: units.hpp:2129
constexpr nanocoulombs< T > nC(T(1))
Template-variable for symbol for nanocoulombs.
Template used to construct a number of microkelvins.
Definition: units.hpp:675
constexpr auto g
Constant-expression symbol for g.
Definition: units.hpp:1759
constexpr auto mug
Constant-expression symbol for mug.
Definition: units.hpp:1780
constexpr auto operator""_kg(long double v)
Interpret a number, suffixed with &#39;_kg&#39;, as a (literal) number of kilograms.
Definition: units.hpp:1802
constexpr auto operator""_MJ(long double v)
Interpret a number, suffixed with &#39;_MJ&#39;, as a (literal) number of megajoules.
Definition: units.hpp:2102
constexpr auto operator""_mC(long double v)
Interpret a number, suffixed with &#39;_mC&#39;, as a (literal) number of millicoulombs.
Definition: units.hpp:3003
constexpr auto MJ
Constant-expression symbol for MJ.
Definition: units.hpp:2098
constexpr auto kilofeet(T v)
Produce dimensioned quantity from number of kilofeet.
Definition: units.hpp:1509
constexpr auto operator""_km(long double v)
Interpret a number, suffixed with &#39;_km&#39;, as a (literal) number of kilometers.
Definition: units.hpp:1736
constexpr nanoseconds(T v)
Initialize from number of nanoseconds.
Definition: units.hpp:460
constexpr auto cm
Constant-expression symbol for cm.
Definition: units.hpp:2244
constexpr auto dynes(T v)
Produce dimensioned quantity from number of dynes.
Definition: units.hpp:1563
constexpr auto operator""_mJ(long double v)
Interpret a number, suffixed with &#39;_mJ&#39;, as a (literal) number of millijoules.
Definition: units.hpp:3189
constexpr dim charge_dim(0, 0, 0, 1, 0)
Exponents for charge.
constexpr auto m
Constant-expression symbol for m.
Definition: units.hpp:1675
constexpr auto operator""_fs(long double v)
Interpret a number, suffixed with &#39;_fs&#39;, as a (literal) number of femtoseconds.
Definition: units.hpp:2425
Template used to construct a number of micronewtons.
Definition: units.hpp:873
constexpr auto operator""_ms(long double v)
Interpret a number, suffixed with &#39;_ms&#39;, as a (literal) number of milliseconds.
Definition: units.hpp:2946
constexpr auto kft
Constant-expression symbol for kft.
Definition: units.hpp:2529
constexpr joules(T v)
Initialize from number of joules.
Definition: units.hpp:966
Template used to construct a number of nanoseconds.
Definition: units.hpp:455
static constexpr long double const sf
Scale factor.
Definition: units.hpp:743
static constexpr long double const sf
Scale factor.
Definition: units.hpp:919
constexpr auto operator""_mug(long double v)
Interpret a number, suffixed with &#39;_mug&#39;, as a (literal) number of micrograms.
Definition: units.hpp:2889
constexpr auto operator""_mum(long double v)
Interpret a number, suffixed with &#39;_mum&#39;, as a (literal) number of micrometers.
Definition: units.hpp:2814
constexpr auto mg
Constant-expression symbol for mg.
Definition: units.hpp:1771
static constexpr long double const sf
Scale factor.
Definition: units.hpp:699
constexpr newtons< T > N(T(1))
Template-variable for symbol for newtons.
constexpr kilojoules(T v)
Initialize from number of kilojoules.
Definition: units.hpp:1032
constexpr auto operator""_N(long double v)
Interpret a number, suffixed with &#39;_N&#39;, as a (literal) number of newtons.
Definition: units.hpp:3126
constexpr auto operator""_Mg(long double v)
Interpret a number, suffixed with &#39;_Mg&#39;, as a (literal) number of megagrams.
Definition: units.hpp:2368
Template used to construct a number of megagrams.
Definition: units.hpp:367
constexpr auto K
Constant-expression symbol for K.
Definition: units.hpp:1930
Template used to construct a number of micrograms.
Definition: units.hpp:279
constexpr auto mus
Constant-expression symbol for mus.
Definition: units.hpp:2403
constexpr auto picograms(T v)
Produce dimensioned quantity from number of picograms.
Definition: units.hpp:1395
constexpr auto femtoseconds(T v)
Produce dimensioned quantity from number of femtoseconds.
Definition: units.hpp:1443
constexpr auto muW
Constant-expression symbol for muW.
Definition: units.hpp:3257
constexpr kilowatts(T v)
Initialize from number of kilowatts.
Definition: units.hpp:1186
constexpr millinewtons(T v)
Initialize from number of millinewtons.
Definition: units.hpp:856
constexpr auto operator""_Mm(long double v)
Interpret a number, suffixed with &#39;_Mm&#39;, as a (literal) number of megameters.
Definition: units.hpp:1745
constexpr auto erg
Constant-expression symbol for erg.
Definition: units.hpp:3230
constexpr millimeters< T > mm(T(1))
Template-variable for symbol for millimeters.
constexpr auto GJ
Constant-expression symbol for GJ.
Definition: units.hpp:3221
constexpr auto operator""_muA(long double v)
Interpret a number, suffixed with &#39;_muA&#39;, as a (literal) number of microamperes.
Definition: units.hpp:3315
Template used to construct a number of kilowatts.
Definition: units.hpp:1181
constexpr auto operator""_mW(long double v)
Interpret a number, suffixed with &#39;_mW&#39;, as a (literal) number of milliwatts.
Definition: units.hpp:2695
constexpr auto operator""_pm(long double v)
Interpret a number, suffixed with &#39;_pm&#39;, as a (literal) number of picometers.
Definition: units.hpp:2832
constexpr auto coulombs(T v)
Produce dimensioned quantity from number of coulombs.
Definition: units.hpp:1449
constexpr auto C
Constant-expression symbol for C.
Definition: units.hpp:1882
constexpr auto operator""_ng(long double v)
Interpret a number, suffixed with &#39;_ng&#39;, as a (literal) number of nanograms.
Definition: units.hpp:1784
constexpr auto operator""_MN(long double v)
Interpret a number, suffixed with &#39;_MN&#39;, as a (literal) number of meganewtons.
Definition: units.hpp:3162
constexpr auto gigawatts(T v)
Produce dimensioned quantity from number of gigawatts.
Definition: units.hpp:1641
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1293
constexpr auto nanokelvins(T v)
Produce dimensioned quantity from number of nanokelvins.
Definition: units.hpp:1497
constexpr auto ms
Constant-expression symbol for ms.
Definition: units.hpp:2951
constexpr auto operator""_km(long double v)
Interpret a number, suffixed with &#39;_km&#39;, as a (literal) number of kilometers.
Definition: units.hpp:2850
constexpr auto operator""_muJ(long double v)
Interpret a number, suffixed with &#39;_muJ&#39;, as a (literal) number of microjoules.
Definition: units.hpp:3198
Template used to construct a number of nanometers.
Definition: units.hpp:125
constexpr milliwatts< T > mW(T(1))
Template-variable for symbol for milliwatts.
Template used to construct a number of seconds.
Definition: units.hpp:389
constexpr auto operator""_pg(long double v)
Interpret a number, suffixed with &#39;_pg&#39;, as a (literal) number of picograms.
Definition: units.hpp:2350
constexpr auto operator""_mN(long double v)
Interpret a number, suffixed with &#39;_mN&#39;, as a (literal) number of millinewtons.
Definition: units.hpp:3135
constexpr kilograms< T > kg(T(1))
Template-variable for symbol for kilograms.
Template used to construct a number of millikelvins.
Definition: units.hpp:653
static constexpr long double const sf
Scale factor.
Definition: units.hpp:347
Template used to construct a number of megawatts.
Definition: units.hpp:1203
constexpr auto operator""_ns(long double v)
Interpret a number, suffixed with &#39;_ns&#39;, as a (literal) number of nanoseconds.
Definition: units.hpp:2964
constexpr auto in
Constant-expression symbol for in.
Definition: units.hpp:3095
constexpr milliwatts(T v)
Initialize from number of milliwatts.
Definition: units.hpp:1142
constexpr auto mA
Constant-expression symbol for mA.
Definition: units.hpp:2745
constexpr auto MJ
Constant-expression symbol for MJ.
Definition: units.hpp:3212
constexpr auto GW
Constant-expression symbol for GW.
Definition: units.hpp:2727
constexpr auto operator""_muN(long double v)
Interpret a number, suffixed with &#39;_muN&#39;, as a (literal) number of micronewtons.
Definition: units.hpp:2030
constexpr milliseconds< T > ms(T(1))
Template-variable for symbol for milliseconds.
constexpr seconds(T v)
Initialize from number of seconds.
Definition: units.hpp:394
constexpr auto operator""_m(long double v)
Interpret a number, suffixed with &#39;_m&#39;, as a (literal) number of meters.
Definition: units.hpp:2227
constexpr auto C
Constant-expression symbol for C.
Definition: units.hpp:2996
constexpr auto operator""_kJ(long double v)
Interpret a number, suffixed with &#39;_kJ&#39;, as a (literal) number of kilojoules.
Definition: units.hpp:2650
constexpr auto nK
Constant-expression symbol for nK.
Definition: units.hpp:1960
constexpr nanokelvins< T > nK(T(1))
Template-variable for symbol for nanokelvins.
constexpr watts(T v)
Initialize from number of watts.
Definition: units.hpp:1120
static constexpr long double const sf
Scale factor.
Definition: units.hpp:237
Template used to construct a number of millinewtons.
Definition: units.hpp:851
constexpr kilonewtons< T > kN(T(1))
Template-variable for symbol for kilonewtons.
constexpr auto joules(T v)
Produce dimensioned quantity from number of joules.
Definition: units.hpp:1569
constexpr yards< T > yd(T(1))
Template-variable for symbol for yards.
constexpr picometers(T v)
Initialize from number of picometers.
Definition: units.hpp:152
constexpr auto operator""_W(long double v)
Interpret a number, suffixed with &#39;_W&#39;, as a (literal) number of watts.
Definition: units.hpp:3243
constexpr auto operator""_muN(long double v)
Interpret a number, suffixed with &#39;_muN&#39;, as a (literal) number of micronewtons.
Definition: units.hpp:2587
constexpr auto muC
Constant-expression symbol for muC.
Definition: units.hpp:1903
Template used to construct a number of picograms.
Definition: units.hpp:323
constexpr auto mK
Constant-expression symbol for mK.
Definition: units.hpp:3056
constexpr auto kft
Constant-expression symbol for kft.
Definition: units.hpp:3086
constexpr millicoulombs< T > mC(T(1))
Template-variable for symbol for millicoulombs.
Template used to construct a number of megameters.
Definition: units.hpp:213
Template used to construct a number of milliwatts.
Definition: units.hpp:1137
constexpr auto meganewtons(T v)
Produce dimensioned quantity from number of meganewtons.
Definition: units.hpp:1557
constexpr auto nm
Constant-expression symbol for nm.
Definition: units.hpp:2271
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1139
constexpr megagrams(T v)
Initialize from number of megagrams.
Definition: units.hpp:372
constexpr auto operator""_C(long double v)
Interpret a number, suffixed with &#39;_C&#39;, as a (literal) number of coulombs.
Definition: units.hpp:2434
constexpr auto mC
Constant-expression symbol for mC.
Definition: units.hpp:3008
constexpr auto ng
Constant-expression symbol for ng.
Definition: units.hpp:2903
constexpr micrograms(T v)
Initialize from number of micrograms.
Definition: units.hpp:284
constexpr millinewtons< T > mN(T(1))
Template-variable for symbol for millinewtons.
constexpr auto operator""_nm(long double v)
Interpret a number, suffixed with &#39;_nm&#39;, as a (literal) number of nanometers.
Definition: units.hpp:1709
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1205
constexpr megameters< T > Mm(T(1))
Template-variable for symbol for megameters.
constexpr auto operator""_mum(long double v)
Interpret a number, suffixed with &#39;_mum&#39;, as a (literal) number of micrometers.
Definition: units.hpp:2257
Thomas E. Vaughan&#39;s public software.
Definition: rational.hpp:13
constexpr auto operator""_fm(long double v)
Interpret a number, suffixed with &#39;_fm&#39;, as a (literal) number of femtometers.
Definition: units.hpp:2284
constexpr auto mm
Constant-expression symbol for mm.
Definition: units.hpp:1696
constexpr auto kW
Constant-expression symbol for kW.
Definition: units.hpp:2152
static constexpr long double const sf
Scale factor.
Definition: units.hpp:523
constexpr kilojoules< T > kJ(T(1))
Template-variable for symbol for kilojoules.
constexpr auto operator""_dyn(long double v)
Interpret a number, suffixed with &#39;_dyn&#39;, as a (literal) number of dynes.
Definition: units.hpp:2057
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1117
constexpr millicoulombs(T v)
Initialize from number of millicoulombs.
Definition: units.hpp:548
constexpr milligrams< T > mg(T(1))
Template-variable for symbol for milligrams.
constexpr centimeters(T v)
Initialize from number of centimeters.
Definition: units.hpp:64
constexpr auto operator""_MW(long double v)
Interpret a number, suffixed with &#39;_MW&#39;, as a (literal) number of megawatts.
Definition: units.hpp:2722
static constexpr long double const sf
Scale factor.
Definition: units.hpp:391
constexpr megagrams< T > Mg(T(1))
Template-variable for symbol for megagrams.
constexpr auto fs
Constant-expression symbol for fs.
Definition: units.hpp:1873
Template used to construct a number of femtoseconds.
Definition: units.hpp:499
constexpr auto C
Constant-expression symbol for C.
Definition: units.hpp:2439
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1227
static constexpr long double const sf
Scale factor.
Definition: units.hpp:831
constexpr auto km
Constant-expression symbol for km.
Definition: units.hpp:1741
Template used to construct a number of ergs.
Definition: units.hpp:1093
constexpr auto operator""_ms(long double v)
Interpret a number, suffixed with &#39;_ms&#39;, as a (literal) number of milliseconds.
Definition: units.hpp:1832
constexpr auto mm
Constant-expression symbol for mm.
Definition: units.hpp:2253
constexpr megajoules(T v)
Initialize from number of megajoules.
Definition: units.hpp:1054
constexpr auto operator""_in(long double v)
Interpret a number, suffixed with &#39;_in&#39;, as a (literal) number of inches.
Definition: units.hpp:1985
Classes and functions supporting a model of physically dimensioned quantities.
constexpr auto kJ
Constant-expression symbol for kJ.
Definition: units.hpp:2646
Template used to construct a number of femtometers.
Definition: units.hpp:169
constexpr auto operator""_kN(long double v)
Interpret a number, suffixed with &#39;_kN&#39;, as a (literal) number of kilonewtons.
Definition: units.hpp:3153
static constexpr long double const sf
Scale factor.
Definition: units.hpp:39
constexpr auto operator""_ng(long double v)
Interpret a number, suffixed with &#39;_ng&#39;, as a (literal) number of nanograms.
Definition: units.hpp:2898
constexpr auto ps
Constant-expression symbol for ps.
Definition: units.hpp:1864
constexpr megameters(T v)
Initialize from number of megameters.
Definition: units.hpp:218
constexpr auto kN
Constant-expression symbol for kN.
Definition: units.hpp:2035
constexpr auto J
Constant-expression symbol for J.
Definition: units.hpp:3176
constexpr auto operator""_N(long double v)
Interpret a number, suffixed with &#39;_N&#39;, as a (literal) number of newtons.
Definition: units.hpp:2569
constexpr auto operator""_mW(long double v)
Interpret a number, suffixed with &#39;_mW&#39;, as a (literal) number of milliwatts.
Definition: units.hpp:3252
constexpr auto MN
Constant-expression symbol for MN.
Definition: units.hpp:2044
static constexpr long double const sf
Scale factor.
Definition: units.hpp:787
constexpr micronewtons< T > muN(T(1))
Template-variable for symbol for micronewtons.
constexpr auto operator""_MJ(long double v)
Interpret a number, suffixed with &#39;_MJ&#39;, as a (literal) number of megajoules.
Definition: units.hpp:3216
constexpr auto gigajoules(T v)
Produce dimensioned quantity from number of gigajoules.
Definition: units.hpp:1599
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1183
constexpr auto operator""_mug(long double v)
Interpret a number, suffixed with &#39;_mug&#39;, as a (literal) number of micrograms.
Definition: units.hpp:2332
static constexpr long double const sf
Scale factor.
Definition: units.hpp:875
constexpr auto operator""_erg(long double v)
Interpret a number, suffixed with &#39;_erg&#39;, as a (literal) number of ergs.
Definition: units.hpp:2677
constexpr kilograms(T v)
Initialize from number of kilograms.
Definition: units.hpp:350
static constexpr long double const sf
Scale factor.
Definition: units.hpp:435
static constexpr long double const sf
Scale factor.
Definition: units.hpp:963
constexpr auto kN
Constant-expression symbol for kN.
Definition: units.hpp:2592
constexpr auto operator""_mus(long double v)
Interpret a number, suffixed with &#39;_mus&#39;, as a (literal) number of microseconds.
Definition: units.hpp:1841
constexpr dim length_dim(1, 0, 0, 0, 0)
Exponents for length.
constexpr coulombs(T v)
Initialize from number of coulombs.
Definition: units.hpp:526
static constexpr long double const sf
Scale factor.
Definition: units.hpp:105
constexpr auto muK
Constant-expression symbol for muK.
Definition: units.hpp:1951
constexpr auto newtons(T v)
Produce dimensioned quantity from number of newtons.
Definition: units.hpp:1533
constexpr auto operator""_mi(long double v)
Interpret a number, suffixed with &#39;_mi&#39;, as a (literal) number of miles.
Definition: units.hpp:2003
static constexpr long double const sf
Scale factor.
Definition: units.hpp:1095
constexpr femtoseconds(T v)
Initialize from number of femtoseconds.
Definition: units.hpp:504
constexpr auto s
Constant-expression symbol for s.
Definition: units.hpp:2939
static constexpr long double const sf
Scale factor.
Definition: units.hpp:215
constexpr auto mus
Constant-expression symbol for mus.
Definition: units.hpp:1846
constexpr auto kg
Constant-expression symbol for kg.
Definition: units.hpp:1807
constexpr auto pC
Constant-expression symbol for pC.
Definition: units.hpp:1921
constexpr auto W
Constant-expression symbol for W.
Definition: units.hpp:2125
Template used to construct a number of megajoules.
Definition: units.hpp:1049
constexpr auto micronewtons(T v)
Produce dimensioned quantity from number of micronewtons.
Definition: units.hpp:1545
constexpr dynes< T > dyn(T(1))
Template-variable for symbol for dynes.
constexpr auto W
Constant-expression symbol for W.
Definition: units.hpp:2682
Template used to construct a number of gigawatts.
Definition: units.hpp:1225
static constexpr long double const sf
Scale factor.
Definition: units.hpp:941
constexpr auto microcoulombs(T v)
Produce dimensioned quantity from number of microcoulombs.
Definition: units.hpp:1461
constexpr auto centimeters(T v)
Produce dimensioned quantity from number of centimeters.
Definition: units.hpp:1323
constexpr auto nC
Constant-expression symbol for nC.
Definition: units.hpp:1912
constexpr auto muN
Constant-expression symbol for muN.
Definition: units.hpp:2026
constexpr auto operator""_mA(long double v)
Interpret a number, suffixed with &#39;_mA&#39;, as a (literal) number of milliamperes.
Definition: units.hpp:3306
constexpr auto operator""_J(long double v)
Interpret a number, suffixed with &#39;_J&#39;, as a (literal) number of joules.
Definition: units.hpp:3180
constexpr gigawatts(T v)
Initialize from number of gigawatts.
Definition: units.hpp:1230
static constexpr long double const sf
Scale factor.
Definition: units.hpp:655
constexpr auto muW
Constant-expression symbol for muW.
Definition: units.hpp:2700
constexpr millikelvins< T > mK(T(1))
Template-variable for symbol for millikelvins.
constexpr nanometers(T v)
Initialize from number of nanometers.
Definition: units.hpp:130
constexpr auto operator""_yd(long double v)
Interpret a number, suffixed with &#39;_yd&#39;, as a (literal) number of yards.
Definition: units.hpp:3108
constexpr auto operator""_Mm(long double v)
Interpret a number, suffixed with &#39;_Mm&#39;, as a (literal) number of megameters.
Definition: units.hpp:2859
constexpr auto muA
Constant-expression symbol for muA.
Definition: units.hpp:2197
constexpr auto operator""_mus(long double v)
Interpret a number, suffixed with &#39;_mus&#39;, as a (literal) number of microseconds.
Definition: units.hpp:2398
constexpr auto operator""_s(long double v)
Interpret a number, suffixed with &#39;_s&#39;, as a (literal) number of seconds.
Definition: units.hpp:2934
constexpr milliamperes< T > mA(T(1))
Template-variable for symbol for milliamperes.
constexpr auto operator""_g(long double v)
Interpret a number, suffixed with &#39;_g&#39;, as a (literal) number of grams.
Definition: units.hpp:1754
Template used to construct a number of feet.
Definition: units.hpp:719
constexpr auto operator""_kft(long double v)
Interpret a number, suffixed with &#39;_kft&#39;, as a (literal) number of kilofeet.
Definition: units.hpp:2533
constexpr auto operator""_MJ(long double v)
Interpret a number, suffixed with &#39;_MJ&#39;, as a (literal) number of megajoules.
Definition: units.hpp:2659
constexpr femtometers(T v)
Initialize from number of femtometers.
Definition: units.hpp:174
Template used to construct a number of centimeters.
Definition: units.hpp:59
constexpr auto kelvins(T v)
Produce dimensioned quantity from number of kelvins.
Definition: units.hpp:1479
constexpr auto operator""_kN(long double v)
Interpret a number, suffixed with &#39;_kN&#39;, as a (literal) number of kilonewtons.
Definition: units.hpp:2039