Commit Graph
138 Commits
Author SHA1 Message Date
Mateusz Pusz 0354c56ac2 clang-format applied to a downcasting header 2020-01-31 17:03:35 +01:00
Mateusz Pusz 645570ff57 Library updated to the latest cmake common tools 2020-01-31 17:02:27 +01:00
Mateusz Pusz b27a422076 Preeliminary clang support added 2020-01-28 08:37:43 +01:00
Mateusz Pusz 159e2c1c02 ratio_text improved to omit den == 1 for exp != 0 2019-12-29 17:19:55 +01:00
Mateusz Pusz 17e6b0d75d Small refactoring of new ratio (resolves #14) 2019-12-28 18:59:53 +01:00
Oliver Schönrock 0ad78fe753 small changes based on code review 2019-12-28 17:59:47 +01:00
Oliver Schönrock 509b6c9653 implementing ratio<num,den,exp> which replaces ratio<num,den>
https://github.com/mpusz/units/issues/14

This "works", as in it passes all static and runtime tests.
However quite a few of the tests have been "modified" to make them pass. Whether
this is legitimate is debatable and should be the source of some thought /
discussion.

1. many of the static tests and some of the runtime tests have had the input
ratios of the tests modified in the following way. eg ratio<3,1000> =>
ratio<3,1,-3>. ie they have been "canonicalised".

There are obviously an infinite number of ratios which represent the same
rational number. The way `ratio` is implemented it always moves as "many powers
of 10" from the `num` and `den` into the `exp` and that makes the `canonical`
ratio.

Because these are all "types" and the lib uses is_same all over the place, only
exact matches will be `is_same`. ie ratio<300,4,0> !is_same ratio<3,4,2> (the
latter is the canonical ratio). This is perhaps fine for tests in the devlopment
phase, but there may be a need for "more forgiving" comparison / concept of
value equality. One such comparison which compares den,num,exp after
canonicalisation is the constexpr function `same` as defined at top of
`ratio_test.cpp`. We may need to expose this and perhaps add even more soft
comparisions.

2. In the runtime tests it is "subjective" how some resukts should be
printed. There is the question of "how exactly to format certain ratios". eg
omit denominators of "1" and exponents of "0". However before even addressing
these in detail a decision needs to be made about the general form of
"non-floating-point-converted" ratios which do not map exactly to a "Symbol
prefix".

Arguably these are "relatively ugly" whatever we do, so we could just
go for an easily canonicalised form. An example is:

-        CHECK(stream.str() == "10 [1/60]W");
+        CHECK(stream.str() == "10 [1/6 x 10⁻¹]W");

Which of thses is "better"? Is there a "third", better form?  It's not obvious.

My opnion is: Both of 1&2 are fine for now, unless we think they go down the
wrong avenue, and can be "perfected later"? ie we can expose a softer version of
ratio based equality, and decide on canonical way of printing ratios (as far as
that is actually a very useful output form, compared with decimal, scientific or
engineering notation).
2019-12-28 17:59:47 +01:00
Mateusz Pusz eef6371ab4 Missing fixed_string comparison operators added 2019-12-26 14:03:55 +01:00
Mateusz Pusz bf5762dbbb Initial support for printing multiple negative exponents added 2019-12-26 12:07:08 +01:00
Mateusz Pusz 7cad312b55 fixed_string refactored 2019-12-23 13:21:48 +01:00
Mateusz Pusz bc8c31caa5 is_derived_from_instantiation fixed 2019-12-17 22:18:52 +01:00
Mateusz Pusz d5f7de8ecb unknown_dimension definition changed to contain at least one exponent 2019-12-17 08:36:31 +01:00
Mateusz Pusz 00d863508d base_dimension refactored
- now stores dimension's symbol rather than its name
- temperature and current renamed to exactly match their names in SI
2019-12-16 15:58:41 +01:00
Mateusz Pusz 6596c15238 scaled_unit template parameters order fixed (sorry Oliver) 2019-12-14 21:16:15 +01:00
Mateusz Pusz 8d1eb4c415 derived_dimension code split to a few smaller files 2019-12-14 12:23:47 +01:00
Mateusz Pusz b1b63e1b3a 2 parital specializations of a derived_dimension split to different types 2019-12-14 11:44:56 +01:00
Mateusz Pusz fbf3ef8c4f Most of concepts moved to a new file + quantity.h split to smaller pieces 2019-12-12 13:17:31 +01:00
Mateusz Pusz 9d50ea6ab5 CGS case added to avg_speed example 2019-12-11 21:38:44 +01:00
Mateusz Pusz 71f38222ea Implicit conversions fixed 2019-12-11 16:16:05 +01:00
Mateusz Pusz bc1901f4f0 Text formatting enabled + directory tree refactoring 2019-12-11 08:07:13 +01:00
Mateusz Pusz d465d47803 range-v3 dependency removed for gcc-10 2019-12-08 16:09:00 +01:00
Mateusz Pusz f31b26b5e5 Design cleanup
- unknown_unit added
- examples refactored
- base_type renamed to downcast_base_type
- scaled_unit renamed to named_scaled_unit
- detail::reference_unit renamed to scaled_unit
- quantity_test cleanup
2019-12-06 12:18:39 +01:00
Mateusz Pusz c48bfe2098 quantity refactored and quantity_test enabled 2019-12-04 17:46:19 +01:00
Mateusz Pusz 1b4e8a2127 Units and dimensions redesigned 2019-12-01 19:47:58 +01:00
Mateusz Pusz 9c6229302d Small code cleanup 2019-11-16 18:27:31 +01:00
Mateusz Pusz 86d4252cca Another bug in P1813 fixed 2019-11-16 18:16:03 +01:00
Mateusz Pusz 57e464cc99 quantity constraints refactored 2019-11-15 20:20:25 +01:00
Mateusz Pusz 2b5eb30cd4 P1813 compilation errors fixed 2019-11-14 10:53:32 +01:00
Mateusz Pusz daf29fe6de numeric_concepts added as in P1813R0 2019-11-14 10:52:57 +01:00
Mateusz Pusz 1b312b1102 fmt support added 2019-11-06 16:50:34 +00:00
Mateusz Pusz b5b2c54fe8 Basic std::fmt support added 2019-11-05 20:05:11 +00:00
Mateusz Pusz 91bcfedf1e Deduced units symbols refactoring started 2019-11-04 06:45:56 +00:00
Mateusz Pusz 7e844ef773 Construction from a single character added to a fixed_string 2019-11-04 06:30:22 +00:00
Mateusz Pusz 5f216af4de Missing header guard added to fixed_string header 2019-11-04 06:29:34 +00:00
Mateusz Pusz ff02658a56 fixed_string fixed 2019-11-03 11:11:16 +01:00
Mateusz Pusz ddd998cb53 type_list_sort_impl cleanup 2019-11-02 13:55:55 +01:00
Mateusz Pusz 2bde0e62b2 Downcasting facility refactoring 2019-11-02 13:54:43 +01:00
Mateusz Pusz 53720c82b8 fmt support started 2019-10-18 23:50:43 +02:00
Mateusz Pusz 046669fedc gcc compilation error disabled (looks like a bug in a compiler) 2019-10-18 21:24:16 +02:00
Mateusz Pusz b864461636 Prefixed units support redesigned 2019-10-18 15:34:46 +02:00
Mateusz Pusz 95028d10a7 gcc-10 enabled 2019-10-17 18:22:51 +02:00
Mateusz Pusz 9a9abca81d Text output support added for quantity 2019-10-16 17:04:41 +02:00
Mateusz Pusz d31d2cf439 Base dimensions refactored
-
2019-10-15 19:03:45 +02:00
Mateusz Pusz b889c81cb9 Short name added to derived unit definition 2019-10-15 11:32:59 +02:00
Mateusz Pusz 73b5c7c4ac {+a} -> T added to a Number concept 2019-09-30 08:51:45 +02:00
Mateusz Pusz 952b19c2ed bool removed from concepts definitions as gcc-9.1 supports this syntax already 2019-09-28 19:10:06 +02:00
Mateusz Pusz 2e1ce83024 Downcasting facility refactored so the user does not have to write the boilerplate code anymore 2019-09-26 22:30:57 +02:00
Mateusz Pusz 0cffcf7849 downcasting_traits renamed to downcast_traits
- downcasting_traits -> downcast_traits
- downcasting_traits_t -> downcast_traits_t
- downcast_from -> downcast_base_t
- downcast_to removed
2019-09-20 18:36:14 +02:00
Mateusz Pusz c3d7359ca3 units removed from a std::experimental namespace 2019-09-18 21:55:16 -06:00
Mateusz Pusz 929a812ec4 cmcstl2 dependency changed to range-v3 0.9.1 2019-09-18 10:29:30 -06:00