Commit Graph
1605 Commits
Author SHA1 Message Date
Mateusz Pusz a2f28feb04 Merge pull request #338 from hofbi/contributing-md-typos
docs: fix typos in contributing.md
2022-03-17 18:12:53 +01:00
Markus Hofbauer c3ff6a22d2 docs: fix typos in contributing.md 2022-03-17 15:35:07 +01:00
Mateusz Pusz cc90985958 fix: Clang-12 compilation fixed 2022-03-15 13:14:15 +01:00
Mateusz Pusz 7730e76fb7 build: test_package/conanfile.py cleanup 2022-03-14 19:27:25 +01:00
Mateusz Pusz 211a11b7c9 build: conanfile.py cleanup 2022-03-14 19:26:43 +01:00
Mateusz Pusz 627b2fb6d0 build: MSVC version handling fixed 2022-03-14 19:25:59 +01:00
Mateusz Pusz 2198c8a403 Merge pull request #334 from JohelEGP/ratio_maths_unused_header
refactor(bits): remove unused header
2022-03-10 21:43:04 +01:00
Mateusz Pusz 1b9d680275 Merge pull request #335 from JohelEGP/non_static_constexpr_globals
refactor: drop `static` from `constexpr` globals
2022-03-10 21:23:00 +01:00
Johel Ernesto Guerrero Peña 72046b0fe7 refactor: drop static from constexpr globals 2022-03-10 14:33:32 -04:00
Mateusz Pusz 6193854f31 Merge pull request #333 from chiphogg/chiphogg/intmax
Use intmax for base of integral powers
2022-03-10 19:29:23 +01:00
Mateusz Pusz a5fff2f210 Merge branch 'master' of github.com:mpusz/units 2022-03-10 19:05:41 +01:00
Mateusz Pusz 6171b8ab69 docs: Outdated TODO comments removed 2022-03-10 19:05:36 +01:00
Mateusz Pusz 74e6cf8def Merge pull request #336 from JohelEGP/unused_header_quantity_cast
refactor: remove unused header
2022-03-10 19:01:50 +01:00
Mateusz Pusz ce8fbcaf6c build: conanfile.py updated 2022-03-10 18:55:40 +01:00
Johel Ernesto Guerrero Peña eee4f7d49c refactor: remove unused header 2022-03-09 20:23:21 -04:00
Johel Ernesto Guerrero Peña b52da14e36 refactor(bits): remove unused header 2022-03-08 20:38:07 -04:00
Chip Hogg 7cda52af55 Merge branch 'master' into chiphogg/intmax 2022-03-01 02:30:13 +00:00
Mateusz Pusz 5668257fe1 build: Conan geerated target renamed to wg21_linear_algebra 2022-02-28 19:23:34 +01:00
Mateusz Pusz 87ab85625b The latest Conan generates Catch2 CMake target 2022-02-28 18:27:03 +01:00
Mateusz Pusz 0a6d11cf27 Depracated build_requires(..., force_host_context=True) replaced with test_requires(...) 2022-02-28 18:25:20 +01:00
Chip Hogg 632f2785a9 Clarify section header 2022-02-24 01:48:02 +00:00
Chip Hogg 240bdd659c Use intmax for base of integral powers
I used `int` before, because it was simple, and I thought _surely_ it
would be enough.  I mean, who's going to make a unit whose magnitude has
a prime factor bigger than 32 bits?

This brings us to the "Dalton", a unit whose ratio-magnitude numerator
is 16605390666050.  The prime factorization of 16605390666050 is
(2 * 5 * 5 * 53 * 6266185157), and this last number is bigger than 2^31
by a factor of 3 or so.

Fortunately, we should have done this from the beginning anyway, because
otherwise there would be numbers we could represent in `ratio` which we
couldn't represent in `Magnitude`, and this should never be the case.
2022-02-24 01:17:27 +00:00
Mateusz Pusz 3651e199bf Merge pull request #331 from JohelEGP/llvm15
refactor: update hacks for LLVM 15
2022-02-08 10:40:31 +01:00
Mateusz Pusz 1a5341141a Merge pull request #329 from chiphogg/mag-value-t
Add value and categorization helpers for Magnitude
2022-02-08 10:39:31 +01:00
Johel Ernesto Guerrero Peña 3f145a25db refactor: update hacks for LLVM 15 2022-02-07 21:07:22 -04:00
Chip Hogg 7820b3ef92 Clean up a few requires clauses 2022-02-06 22:11:42 +00:00
Chip Hogg a0ae08746f Restore mistakenly removed comment 2022-02-06 21:56:00 +00:00
Chip Hogg 7e4ab4206f Remove .value; provide free function only
This is a cleaner interface.

I also checked all of the commented-out test cases.
2022-02-06 21:53:05 +00:00
Chip Hogg 7615de4720 See if passing by const& will satisfy all compilers
The only reason we had the `is_magnitude_integral` type members before
is because the compiler complained about incomplete types.  Passing by
`const&` might eliminate this need.
2022-02-06 21:06:53 +00:00
Mateusz Pusz e5f74b85ce Merge pull request #330 from fdischner/apple_ci
Add Apple clang support to CI
2022-02-01 09:50:20 +01:00
Frank Dischner 8accecb15c ci: Apple clang 13 support added for Conan 2022-01-29 12:32:57 -06:00
Frank Dischner aba980290b ci: explicitly set used xcode version 2022-01-29 12:32:57 -06:00
Frank Dischner 4ae66aafb1 ci: Apple clang 13 support added to "CMake Test Package CI" 2022-01-29 11:25:32 -06:00
Chip Hogg 9593ca04d7 Refer to class instead 2022-01-29 03:47:16 +00:00
Chip Hogg 408ad16528 Spell out fold expression, again 2022-01-29 03:19:30 +00:00
Chip Hogg dfe3db0b70 Merge branch 'master' into mag-value-t 2022-01-29 02:49:19 +00:00
Chip Hogg b36bc2b582 Turn get_value into free function 2022-01-29 02:40:51 +00:00
Chip Hogg d6eb25f07a Attempt to satisfy MSVC 14
```
test\unit_test\runtime\magnitude_test.cpp(143): error C2672:
'units::check_same_type_and_value': no matching overloaded function
found
```

Maybe it's confused by accessing the static member variable template
using dot-notation on an _instance_?  If so, let's see how it likes the
member-function syntax.
2022-01-28 22:42:23 +00:00
Chip Hogg 811b6ba53d Try inlining the fold expression to satisfy (?) MSVC 2022-01-28 22:24:30 +00:00
Chip Hogg 2384276ae0 Only test pi if float is smaller than long double 2022-01-28 20:44:29 +00:00
Chip Hogg 243238b3fa Add suggested tests 2022-01-28 20:41:08 +00:00
Chip Hogg f2ba3cc18a Use in_range for integer case 2022-01-28 20:33:17 +00:00
Chip Hogg e3a790667d Guessing at what MSVC wants 2022-01-28 20:13:35 +00:00
Chip Hogg 4c9a2c5c5c Remove unsupported consteval
I had been using "consteval plus exception" as my way to get
"static_assert, but for parameters".  Since consteval doesn't work, then
I can't _guarantee_ that the functions won't be called at runtime.
However, I still think throwing exceptions is better, because it will
cause the desired compiler errors on every configuration.  (`assert`
often gets compiled out.)

Very much open to suggestion here.
2022-01-28 19:52:35 +00:00
Chip Hogg ed351a4ba3 Avoid needing class to be completed 2022-01-28 19:34:50 +00:00
Chip Hogg a6b6afe438 Add value and categorization helpers for Magnitude
For each Magnitude `m`, we now support:

- `is_rational(m)` tells whether it represents a rational number.
- `is_integral(m)` tells whether it represents an integer (and
  `is_integral(m)` implies `is_rational(m)`).
- `m.value<T>` represents the value of `m` in the type `T`.

If `T` is integral, we only support `m.value<T>` when `is_integral(m)`.

We also perform all intermediate computations in the widest type of the
same category (floating point, signed, or unsigned).  This means we can,
for example, give first-class support to embedded users who may have
hardware support only for `float`: we can ensure they get the most
accurate `float` value we can compute, without burdening them with a
dependency on `long double` in their runtime code.

We are not yet ready to replace `ratio` as the definition of unit
magnitudes, but we're a step closer.  The next step will be to decompose
a Magnitude into numerator, denominator, and irrational parts, giving us
full bidirectional convertibility with existing `ratio` instances.  Then
we can migrate over in a controlled fashion.
2022-01-28 19:06:26 +00:00
Mateusz Pusz ee10be7535 Merge pull request #327 from fdischner/apple_clang
Add support for AppleClang
2022-01-28 09:53:41 +01:00
Frank Dischner ad48d29ed9 docs: add Apple clang 13 to list of supported compilers 2022-01-27 21:31:25 -06:00
Frank Dischner bd92f9cf28 build: AppleClang requires fmt 8.1.1 with C++20 2022-01-26 18:22:54 -06:00
Frank Dischner 771a400007 build: add support for AppleClang compiler 2022-01-26 18:18:51 -06:00