Commit Graph
1635 Commits
Author SHA1 Message Date
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
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
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
Mateusz Pusz 144f6951c0 style: all files refromatted with clang-format 2022-03-17 23:59:48 +01:00
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
Chip Hogg 87073856a7 Try upping the basis size further
We are well into a regime of diminishing returns, but we'd better start
by seeing if the easy thing works.  Besides, setting this to 7 trips the
step limit in _generating_ the algorithm!
2022-03-12 18:56:26 +00:00
Chip Hogg a719a8b912 Try upping the basis size 2022-03-11 03:57:21 +00:00
Chip Hogg 70640a1017 Remove constexpr-incompatible assert() 2022-03-11 03:56:57 +00:00
Chip Hogg 59d9cd1407 static_cast for first factor 2022-03-11 03:50:08 +00:00
Chip Hogg bfa8db6139 Use std::accumulate 2022-03-11 03:48:57 +00:00
Chip Hogg 73a56115a1 Fix wheel factorization algorithm 2022-03-11 03:42:19 +00:00
Chip Hogg 6c73947fe0 Satisfy complaint
This line shouldn't _actually_ ever be reachable, but I can't fault the
compiler for not figuring that out.
2022-03-10 23:50:33 +00:00
Chip Hogg c8a44adee2 Add missing header for std::integral 2022-03-10 23:41:47 +00:00
Chip Hogg 24b284fcbb Add tests to support claims in comment 2022-03-10 23:41:36 +00:00
Chip Hogg 04b80f0827 Use wheel factorization for prime numbers
Certain existing units in the library require very large prime
numbers---so large, in fact, that our naive trial division hits the
_iteration limit_ for `constexpr` loops.  We don't want to force users
to provide a compiler option override, so we'd better find another way.

The solution is to use the "wheel factorization" algorithm:
https://en.wikipedia.org/wiki/Wheel_factorization

This lets us skip most composite numbers in our trial division.  The
implementation presented here is configurable in terms of the size of
the "basis" of primes we use.  Bigger bases let us skip more primes, but
at the cost of storing more numbers.  Fortunately, it turns out that N=3
was good enough for our purposes.
2022-03-10 23:29:02 +00: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