Chip Hogg
70640a1017
Remove constexpr-incompatible assert()
2022-03-11 03:56:57 +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
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
6171b8ab69
docs: Outdated TODO comments removed
2022-03-10 19:05:36 +01:00
Johel Ernesto Guerrero Peña
b52da14e36
refactor(bits): remove unused header
2022-03-08 20:38:07 -04:00
Frank Dischner
ba6c378897
refactor: use libc++ version to determine range-v3 use
...
Allows using AppleClang where __clang_major__ does not match the
llvm/libc++ version.
2022-01-26 18:16:05 -06:00
Frank Dischner
684ef13d95
fix: derived_ratio calculation
...
Fixes the ratio calculation for derived units when the base unit ratio is
not one.
2022-01-18 21:54:21 -06:00
Johel Ernesto Guerrero Peña
4efed3c6d4
refactor: update Clang 14 to not require range-v3 ( #321 )
...
* Revert "refactor: update hacks for LLVM 14"
This reverts commit d142844de7 .
* refactor: update Clang 14 to not require range-v3
2021-12-13 10:01:16 +01:00
Mateusz Pusz
0ce18dc3c7
feat: std::format usage enabled for VS2022
2021-11-15 16:28:26 +01:00
Soham Roy
bf938c4fa4
Implemented correctly, included type_list
2021-10-17 12:18:11 +02:00
Mateusz Pusz
7d370eb496
refactor: forward_range replaced with input_range
2021-10-15 18:21:26 +02:00
Mateusz Pusz
342b8c9acf
fix: missing input_iterator definition for clang added
2021-10-15 18:18:04 +02:00
Mateusz Pusz
c9708fb642
refactor: safe_multiply() was incorrectly marked as static
2021-09-25 12:49:35 +02:00
Mateusz Pusz
d325a0b5b5
fix: clang compilation issues fixed
2021-09-20 17:04:35 +02:00
Johel Ernesto Guerrero Peña
8d8f73c0cf
refactor: update hacks for LLVM 14
2021-09-14 17:34:15 +02:00
Mateusz Pusz
e6cfd4e69b
build: clang-13 support added
2021-08-10 13:54:39 +02:00
Mateusz Pusz
ed5749a52b
refactor: quantity op+() and op-() reimplemented in terms of reference rather then quantity types
...
`common_quantity`, `common_quantity_for`, `common_quantity_point`, `common_quantity_kind`, and `common_quantity_point_kind` removed
Resolves #290
2021-07-27 14:40:05 +02:00
Johel Ernesto Guerrero Peña
8312b6e463
fix: factor out requires-expression to concept for MSVC
2021-06-30 12:26:56 +02:00
Johel Ernesto Guerrero Peña
80eefec97c
fix: add quantity_point::origin, like std::chrono::time_point::clock
2021-06-29 20:44:27 +02:00
Ralph J. Steinhagen
8e1539bf22
added inheritance unit-test and made is_quantity<T> more specific
2021-06-29 20:31:06 +02:00
Mateusz Pusz
95ac869522
extended is_quantity<T> to support quantity-derived classes
...
N.B. inheritance is preferred to composition/delegate class to avoid duplication and also inherent the various required operators ('+','-',..., '+=', ...) for details see discussion #271
2021-06-29 20:31:06 +02:00
Mateusz Pusz
8e88f06380
refactor: *deduced_unit renamed to *derived_unit
2021-05-10 15:56:48 +02:00
Mateusz Pusz
441db47928
fix: MSVC Release build fixed + pragmas usage refactored
2021-03-30 20:00:23 +02:00
Mateusz Pusz
8a26eaf420
fix: VS build fixed
2021-03-30 14:47:05 +02:00
Mateusz Pusz
800dade31c
fix: fixed_string fixed for clang
2021-03-30 14:26:24 +02:00
Mateusz Pusz
37cfc53d1d
refactor: IWYU applied to the source files
...
`alternative_namespaces` examples left out as I consider them a subject for removal in the nearest future.
2021-03-30 13:21:05 +02:00
Mateusz Pusz
5251a8a241
fix: Unused <functional> header removed from basic_concepts.h
2021-03-23 19:42:08 +01:00
Mateusz Pusz
88e642ec74
refactor: QuantityValue concept renamed to Representation
2021-03-19 07:53:18 +01:00
Mateusz Pusz
901b09fd52
refactor: quantity::count() renamed to quantity::number()
...
Resolves #259
2021-03-19 06:47:37 +01:00
Johel Ernesto Guerrero Peña
9a520edfe9
refactor!: replace one_rep with reference<D, U>
2021-03-18 22:37:25 +01:00
Mateusz Pusz
f2b52e9743
Merge branch 'master' of github.com:mpusz/units
2021-03-17 13:46:59 +01:00
Mateusz Pusz
37473eb8ad
refactor: core-io and core-fmt separate modules added
2021-03-17 13:46:28 +01:00
Johel Ernesto Guerrero Peña
229d303319
refactor: add portable diagnostic pragmas
2021-03-17 08:46:05 +01:00
Mateusz Pusz
221883bb25
build: core library and each system separated to dedicated CMake targets
...
Refers to #249
2021-03-16 23:05:45 +01:00