Commit Graph

44 Commits

Author SHA1 Message Date
Mateusz Pusz
5c94a40906 build: COMP_XXX renamed to UNITS_COMP_XXX 2021-03-15 21:13:21 +01:00
Mateusz Pusz
cff718301c refactor: quantity_io added 2020-12-28 15:18:36 +01:00
Mateusz Pusz
d4d23847d8 refactor: DOWNCAST_MODE renamed to UNITS_DOWNCAST_MODE 2020-09-13 18:45:46 +02:00
Mateusz Pusz
2a56438f1c refactor: file tree with systems defninitions refactored to limit ODR issues
Relates to #32 as with this commit we created something like modules for derived quantities
2020-09-11 18:11:25 +02:00
rbrugo
1061d2ac56 Fixed indentation 2020-09-10 23:09:12 +02:00
rbrugo
b0428d623a Added tests for localization 2020-09-10 23:09:12 +02:00
Mateusz Pusz
79558a6d72 refactor: systems defined in terms of SI moved under si namespace 2020-09-10 17:14:33 +02:00
Mateusz Pusz
9cd0cb4105 feat: two argument explicit cast support added 2020-09-10 13:01:38 +02:00
Mateusz Pusz
58daacfd58 fix: unit tests fixed for DOWNCAST_MODE = OFF 2020-09-10 11:33:58 +02:00
Mateusz Pusz
9527b39005 refactor: 💥 q_* UDL renamed to _q_*
We had some fun exploring the STD UDLs for potential collisions,
we have learnt our lesson and know how to proceed.
Now is high time to start behaving and obeying C++ rules.
2020-09-09 19:20:35 +02:00
Mateusz Pusz
3e9d5ca189 refactor: ♻️ unitless renamed to one
Resolves #27
2020-09-09 11:20:55 +02:00
Mateusz Pusz
563b358d5e feat!: 💥 dimensionless quantities refactored
Dimensionless quantities are now represented by quantity types rather
than by plain representation types. Only dimensionless quantities with
`unitless` unit are implicitly convertible from representation types.

`units::exp()` now is a function doing std::exp() on a representation
type (previous `units::exp` class template was renamed to
`units::exponent`).

BREAKING_CHANGE: gcc-9.3 support removed
BREAKING_CHANGE: `exp` and `Exp` renamed to `exponent` and `Exponent`
Resolves #27
Resolves #42
2020-09-08 11:02:16 +02:00
Mateusz Pusz
9cd8bd20a5 fmt tests fixed for MSVC 2020-09-05 22:54:57 +02:00
Mateusz Pusz
d171f5451e NTTP ratio support added (resolves #49) 2020-06-27 19:15:46 +02:00
Mateusz Pusz
fea072aeb5 warnings.cmake refactored 2020-05-29 10:07:01 +02:00
Mateusz Pusz
ce301748dd Velocity renamed to Speed (resolves #103) 2020-05-10 17:31:47 +02:00
Mateusz Pusz
7e935a4108 Physical units put in the physical namespace (I am sorry) 2020-05-08 22:39:24 +02:00
Mateusz Pusz
1830735544 Unit tests for alias_unit added 2020-05-08 21:18:16 +02:00
Ramzi Sabra
17ce8d3dc8 replaced back unit test with one using exponent 2020-05-08 10:41:38 +02:00
Ramzi Sabra
6f8bddc832 added more prefixed SI units; added alias_unit and prefixed_alias_unit types 2020-05-08 10:41:38 +02:00
Mateusz Pusz
ffd3af42d2 Standard vs Unicode formatting unit tests refactored 2020-05-05 21:26:30 +02:00
Ramzi Sabra
36bee5a8c3 fixed dot product symbol 2020-03-27 10:03:59 +01:00
Ramzi Sabra
dd6db61ea9 added ASCII symbol for micro SI unit prefix 2020-03-27 10:03:59 +01:00
Ramzi Sabra
e9272ac108 added ASCII-only format output support 2020-03-27 10:03:59 +01:00
rbrugo
a3b9ef8eaa Deleted a commented out test case 2020-03-20 16:15:53 +01:00
rbrugo
5250afac57 Removed no longer valid tests 2020-03-20 16:15:53 +01:00
rbrugo
1cbab1c7b9 Unit tests now conform to the new grammar 2020-03-20 16:15:53 +01:00
Mateusz Pusz
c33f6f2d59 ostream width, align and fill added 2020-03-19 09:23:27 +01:00
rbrugo
aee44d98be Added tests for format types 2020-03-18 12:16:02 +01:00
Mateusz Pusz
6a5f25750d UDL naming refactored 2020-03-10 20:53:53 +01:00
Oliver Schönrock
1280b7d4be fix fmt test typos for accidental find/replace mistakes during 1m => 1q_m
changes
2020-02-20 19:57:20 +01:00
Mateusz Pusz
18620044c5 All UDLs are now prefixed with q_ 2020-02-17 15:56:06 +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
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
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
6596c15238 scaled_unit template parameters order fixed (sorry Oliver) 2019-12-14 21:16:15 +01:00
Mateusz Pusz
bc1901f4f0 Text formatting enabled + directory tree refactoring 2019-12-11 08:07:13 +01:00
Mateusz Pusz
ff656620e9 fmt support for sign added 2019-11-12 19:46:15 +01:00
Mateusz Pusz
6d9cb8197f fmt fill and allign support added 2019-11-12 16:55:11 +01:00
Mateusz Pusz
83edb46de8 coherent_derived_unit symbol synthetizing fixed 2019-11-10 19:51:25 +01:00