Commit Graph
380 Commits
Author SHA1 Message Date
Mateusz Pusz a01c811f5f Square and cubic UDLs renamed 2020-01-09 10:03:41 +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 e7f37e4e33 CGS fmt tests added 2019-12-29 17:06:03 +01:00
Mateusz Pusz 09e118380c Electronvolt and dalton support added 2019-12-28 19:22:57 +01:00
Mateusz Pusz 69dcfd2e6d Bitrate UDLs fixed 2019-12-28 19:00:19 +01:00
Mateusz Pusz 17e6b0d75d Small refactoring of new ratio (resolves #14) 2019-12-28 18:59:53 +01:00
Oliver Schönrock 23d44c1b4a implementing our own (very limited) std::pow functions
integer and float treated separately
perhaps not ideal, but not obvioius what would be clearly better
2019-12-28 17:59:47 +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 83516346e7 tonne definition fixed 2019-12-26 12:06:12 +01:00
Mateusz Pusz 594f92241a tonne added 2019-12-26 10:27:20 +01:00
Mateusz Pusz 2a7f2efa15 hectometre and hectare added 2019-12-26 10:20:30 +01:00
Mateusz Pusz 70fbf300b4 astronomical unit added 2019-12-26 10:11:12 +01:00
Mateusz Pusz 15e148381d decimetre and litre added 2019-12-26 10:07:02 +01:00
Mateusz Pusz 22fabb5a1b day unit added 2019-12-26 09:59:05 +01:00
Mateusz Pusz 81b1ba3162 fixed_string_test added 2019-12-26 09:49:39 +01:00
Mateusz Pusz 4b43ade1c4 Compiler Explorer link updated in README 2019-12-23 13:25:49 +01:00
Mateusz Pusz 69974f82cd Floating-point UDLs removed from fmt_test 2019-12-23 13:23:23 +01:00
Mateusz Pusz 758c05ea15 quantity_cast fmt tests added 2019-12-23 13:22:37 +01:00
Mateusz Pusz 7cad312b55 fixed_string refactored 2019-12-23 13:21:48 +01:00
Mateusz Pusz e622ecb35a Warning and other compilation flags cleanup 2019-12-23 13:19:34 +01:00
Mateusz Pusz 2ab233610f physical::DimensionOf concept updated 2019-12-17 22:27:15 +01:00
Mateusz Pusz 2abe429ba7 dimensions_concepts_test added 2019-12-17 22:26:01 +01:00
Mateusz Pusz bc8c31caa5 is_derived_from_instantiation fixed 2019-12-17 22:18:52 +01:00
Mateusz Pusz 589e26fa81 no_prefix set for prefixed_unit 2019-12-17 20:16:05 +01:00
Mateusz Pusz 3decaecb52 TODO comments clean-up 2019-12-17 20:15:38 +01:00
Mateusz Pusz 80a13b1a94 US system isolated from SI 2019-12-17 12:29:19 +01:00
Mateusz Pusz b3ea3cdc91 hello_units compilation on gcc-9 fixed 2019-12-17 10:51:59 +01:00
Mateusz Pusz 75081bf566 hello_units example added 2019-12-17 10:48:54 +01:00
Mateusz Pusz 608adf92ae README example fixed 2019-12-17 10:12:17 +01:00
Mateusz Pusz cdb6a4822e Installation documentation updated 2019-12-17 09:27:32 +01:00
Mateusz Pusz 826942947e Merge branch 'new_design' 2019-12-17 09:21:11 +01:00
Mateusz Pusz 27f6f806db .clang-format updated 2019-12-17 09:16:04 +01:00
Mateusz Pusz a384fbd75a README updated 2019-12-17 09:15:31 +01:00
Mateusz Pusz 7617e3c374 Installation documentation now used 0.5.0 2019-12-17 09:14:31 +01:00
Mateusz Pusz 0bd7951175 Design documentation updated 2019-12-17 09:14:05 +01:00
Mateusz Pusz 1b2d27a64c measurement example updated with a starship operator 2019-12-17 09:12:11 +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 5ef0bb9a9f base_dimension more constrained and comparison fixed 2019-12-14 21:12:17 +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
Andy Little 67262e10ef DESIGN.md : I believe that zero "exponents are elided" rule is a concept of exponent not base-dimension, so have modified parts where exponent rather than base dimension should apply 2019-12-13 19:10:08 +01:00
Mateusz Pusz 156ab7ae7f Unknown dimension assert added to quantity_test 2019-12-12 15:39:04 +01:00
Mateusz Pusz e10f5baab6 Quantity cast for dimension now uses dimension's coherent unit 2019-12-12 15:38:21 +01:00
Mateusz Pusz 6765054e5d More CGS tests added 2019-12-12 15:37:52 +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