Commit Graph
1666 Commits
Author SHA1 Message Date
Chip Hogg f77a92ca04 Reproduce requires clause
clang appears to care about this.
2022-04-06 00:36:18 +00:00
Chip Hogg 0f776b5b5b Remove incorrectly included test
We had removed this upstream, but apparently it snuck back in from a merge/rebase conflict.
2022-04-06 00:31:18 +00:00
Chip Hogg 746aa34fcc Tweak unwise variable names 2022-04-06 00:18:52 +00:00
Chip Hogg d7681e188e Support seamless interop between ratio and rational Magnitude
We provide two new functions, `numerator(m)` and `denominator(m)`, for a
Magnitude `m`.  They fulfill the following conditions:

1. `numerator(m)` and `denominator(m)` are always integer Magnitudes.
2. If `m` is rational, then `m == numerator(m) / denominator(m)`.

If `m` is _not_ rational, then the numerator and denominator are not
especially meaningful (there is no uniquely defined "leftover irrational
part").  However, we choose a convention that matches how humans would
write a mixed number.  For example, sqrt(27/16) would have a numerator
of 3, denominator of 4, and a "leftover part" of sqrt(3), matching the
"human" way of writing this as [(3 * sqrt(3)) / 4].  This has no use
yet, but it may later be useful in printing the Magnitude of an
anonymous Unit for end users.

To further reduce friction for the upcoming migration, we provide an
implicit conversion from a Magnitude to a `ratio`.  We restrict this
operation to rational Magnitudes, and guard this with a `static_assert`.
2022-04-05 23:03:44 +00:00
Mateusz Pusz b221dace3f style: clang-format applied to the remaining files 2022-04-02 21:36:42 +02:00
Mateusz Pusz 0dca41b5ae Merge pull request #348 from hofbi/cmake_format
Enable CMake format in pre-commit
2022-04-02 20:59:10 +02:00
Markus Hofbauer cf7a7ed17a check: run pre-commit on all files 2022-04-02 18:58:23 +02:00
Markus Hofbauer 4c9ada5f93 check: use cmake format config file 2022-04-02 18:56:54 +02:00
Markus Hofbauer fbe2e686eb check: enable cmake-format in pre-commit 2022-04-01 16:28:14 +02:00
Mateusz Pusz 70586138d9 Merge pull request #346 from JohelEGP/prime
refactor(bits): remove unused header in prime.h
2022-03-31 21:48:47 +02:00
Johel Ernesto Guerrero Peña 9b19dcf193 refactor(bits): remove unused header in prime.h 2022-03-24 16:57:12 -04:00
Mateusz Pusz 6c2c8748e7 Merge pull request #345 from JohelEGP/type_list
refactor(bits): remove unused headers in external/type_list.h
2022-03-24 09:35:00 +01:00
Johel Ernesto Guerrero Peña 8491e94c94 refactor(bits): remove unused headers in external/type_list.h 2022-03-23 18:03:44 -04:00
Mateusz Pusz bb9b5e495a chore: Sphinx live preview fixed in Gitpod 2022-03-23 13:23:26 +01:00
Mateusz Pusz 2b93580eb4 chore: Gitpod configuration fixed for impish 2022-03-23 12:00:29 +01:00
Mateusz Pusz 035eb7da70 docs: CONTRIBUTING.md updated 2022-03-22 14:57:19 +01:00
Mateusz Pusz 6483d39762 fix: fill_t assignment operator fixed 2022-03-22 14:51:09 +01:00
Mateusz Pusz 63f3dd2be6 Merge pull request #344 from JohelEGP/quotient_remainder_theorem
test(static): simplify quotient_remainder_theorem test cases
2022-03-22 10:04:49 +01:00
Mateusz Pusz 9e22c7b0c7 chore: Gitpod configuration fixed 2022-03-21 19:43:45 +00:00
Johel Ernesto Guerrero Peña feb1a0b860 test(static): simplify quotient_remainder_theorem test cases 2022-03-21 14:29:50 -04:00
Mateusz Pusz 57dc186162 chore: clang-12 and clang-format-15 added to gitpod 2022-03-21 19:00:58 +01:00
Mateusz Pusz 6218a709ae refactor: first_factor_maybe() replaced with get_first_of() 2022-03-21 18:13:47 +01:00
Mateusz Pusz b822a149b9 Merge pull request #343 from JohelEGP/cmake_systems
build(cmake): fix export name of mp-units-system
2022-03-21 11:50:01 +01:00
Mateusz Pusz ca283b94f6 refactor: find_first_factor() refactored 2022-03-21 11:16:50 +01:00
Mateusz Pusz 3729a9fe93 Merge pull request #337 from chiphogg/chiphogg/prime-wheel
Use wheel factorization for prime numbers
2022-03-21 10:37:05 +01:00
Johel Ernesto Guerrero Peña 94d143ef7e build(cmake): fix export name of mp-units-system 2022-03-20 09:17:25 -04:00
Chip Hogg b589ba8d86 Omit redundant computation
This stems from an earlier mistake where I was using primes in the first
wheel, rather than coprimes-to-the-basis.  1 is not prime, so we used to
need to handle it separately (in an implementation which was, to be
clear, wrong).  It _is_ coprime, so now we get it for free!
2022-03-19 22:10:01 +00:00
Mateusz Pusz e1f7266b51 refactor: <algorithm.h> header added
Should be replaced with `<algorithm>` when C++20 modules will be used. Right now this header is too expensive to compile.
2022-03-19 20:07:55 +01:00
Chip Hogg 6872117bae Replace reduce with bespoke implementation
If _this_ isn't `constexpr` compatible, I'm going to propose removing
support for the MacOS clang build.
2022-03-19 17:35:20 +00:00
Chip Hogg f495ad9e75 Replace accumulate with reduce
Perhaps this will also satisfy Apple's Clang 13?  Since `reduce` is
newer, it may be more likely to be `constexpr` compatible.
2022-03-19 17:27:38 +00:00
Mateusz Pusz 117c380ba8 Merge pull request #341 from hofbi/init-pre-commit
Init pre commit
2022-03-19 18:16:51 +01:00
Chip Hogg 438feb3001 Remove offending unit test
Apparently, the constexpr depth which clang and MSVC can handle is too
shallow for me to write a unit test that works on all supported
compilers.
2022-03-19 17:05:55 +00:00
Chip Hogg 0f80c10104 Try "gentler" test case
I verified that we hit GCC 10's constexpr limit with
`wheel_factorizer<1>`, but pass with `wheel_factorizer<4>`.  I hope this
number is enough smaller than the square root of the previous value that
the other compilers will be able to handle it.  If not: we'll go lower.
2022-03-19 16:58:43 +00:00
Chip Hogg c339383873 Convert names to standard_case 2022-03-19 16:07:39 +00:00
Chip Hogg 48b6280486 Merge branch 'master' into chiphogg/prime-wheel 2022-03-19 16:01:32 +00:00
Chip Hogg 166dd1e944 Work around numbers with very large first factors
We introduce the `known_first_factor` variable template.
2022-03-19 15:56:12 +00:00
Chip Hogg a99e5f9032 Switch tests to use top-level, anonymous namespace 2022-03-19 15:54:29 +00:00
Chip Hogg 28c4fe3c08 Run clang-format-15 on changed files 2022-03-19 14:29:11 +00:00
Chip Hogg 1e8460d401 Revert "Try upping the basis size further"
This reverts commit 87073856a7.
It didn't fix the problem, and it caused some new ones.  We need a
different approach.
2022-03-19 13:21:47 +00:00
Markus Hofbauer 4c127797da check: run pre-commit on all files 2022-03-18 16:12:21 +01:00
Markus Hofbauer 7b8d97646c check: initial setup for pre-commit 2022-03-18 16:12:21 +01:00
Mateusz Pusz e09de55291 docs: CONTRIBUTING updated 2022-03-18 14:39:22 +01:00
Mateusz Pusz f56e3bc0da Merge pull request #339 from mpusz/clang-format
style: all files refromatted with clang-format
2022-03-18 12:35:34 +01:00
Mateusz Pusz b58b696e92 style: clang-format formatting improved with additional parenthesis 2022-03-18 09:10:27 +01:00
Mateusz PuszandJohel Ernesto Guerrero Peña 6d82ddebbc Update test/unit_test/static/quantity_kind_test.cpp
Co-authored-by: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
2022-03-18 08:21:15 +01:00
Mateusz PuszandJohel Ernesto Guerrero Peña 6531d188d1 Update src/core/include/units/quantity.h
Co-authored-by: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
2022-03-18 08:20:43 +01:00
Mateusz PuszandJohel Ernesto Guerrero Peña f4fbac86b4 Update src/core/include/units/quantity.h
Co-authored-by: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
2022-03-18 08:20:36 +01:00
Mateusz PuszandJohel Ernesto Guerrero Peña 03290d74a2 Update src/core/include/units/quantity.h
Co-authored-by: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
2022-03-18 08:20:27 +01:00
Mateusz PuszandJohel Ernesto Guerrero Peña 6e59e7a927 Update src/core/include/units/quantity.h
Co-authored-by: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
2022-03-18 08:20:08 +01:00
Mateusz PuszandJohel Ernesto Guerrero Peña c6f35b0231 Update src/core/include/units/quantity_cast.h
Co-authored-by: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
2022-03-18 08:19:40 +01:00