Mateusz Pusz
de534b3fbd
refactor: private unit_magnitude interface renamed to not use leading _
2024-11-21 09:37:36 +01:00
Mateusz Pusz
a673c8d3f3
refactor: 💥 unit_magnitude moved to detail namespace
2024-11-21 09:17:07 +01:00
Mateusz Pusz
16e816d4cb
refactor: 💥 Magnitude renamed to UnitMagnitude and magnitude to unit_magnitude
2024-11-21 08:58:18 +01:00
Mateusz Pusz
0528698540
docs: outdated note removed from the "Text Output" chapter
2024-11-20 15:38:24 +01:00
Mateusz Pusz
580ddf7ab6
docs: comment about default options changed in conanfile examples
2024-11-20 09:23:32 +01:00
Mateusz Pusz
384cb87eac
style: pre-commit
2024-11-20 00:18:31 +01:00
Mateusz Pusz
6fde5ec911
docs: contracts Conan option default value description improved
2024-11-20 00:17:11 +01:00
Mateusz Pusz
8c39e02f88
docs: conanfile.py examples added to the installation chapter
2024-11-19 23:53:21 +01:00
Mateusz Pusz
86cbe972d3
docs: mp-units Conan options added to conanfile.txt examples
2024-11-19 20:34:12 +01:00
Mateusz Pusz
8ae21ffcc9
refactor: 💥 text_encoding renamed to character_set
2024-11-19 14:44:59 +01:00
Mateusz Pusz
dcf05687cf
perf: expr_projectable concept removed to improve compilation performance
2024-11-18 20:34:15 +01:00
Mateusz Pusz
1090c40bea
Merge pull request #542 from mpusz/test_package_with_modules
...
test: test_package now is tested also with C++20 modules
2024-11-18 15:38:28 +01:00
Mateusz Pusz
47b22f193e
build: minimum CMake required changed to 3.30.5 for test_package to make some jobs on CI to work
2024-11-18 14:51:44 +01:00
Mateusz Pusz
82d12a8a74
build: require at least CMake 3.31 with Conan
2024-11-18 14:45:27 +01:00
Mateusz Pusz
42738754d9
build: require at least CMake 3.31 for test_package
2024-11-18 14:42:39 +01:00
Mateusz Pusz
cef720c243
build: MP_UNITS_API_NO_CRTP removed from test_package CMake
2024-11-18 14:39:37 +01:00
Mateusz Pusz
05c5ca5871
build: missing compilation options added to test_package
2024-11-18 14:17:52 +01:00
Mateusz Pusz
81c810ad42
build: running test_package fixed for local build
2024-11-18 13:59:28 +01:00
Mateusz Pusz
2a9248e82e
ci: two test binaries properly set for testing for CMake CI
2024-11-18 13:59:28 +01:00
Mateusz Pusz
6ea2adf936
test: test_package now is tested also with C++20 modules
2024-11-18 13:56:18 +01:00
Mateusz Pusz
c1d323a91a
fix: gcc-13
...
gcc-13 ICE on `decltype(auto(...))`
2024-11-18 09:58:01 +01:00
Mateusz Pusz
a1d8c4d6a5
docs: directory name updated in the contributing guide
2024-11-17 16:12:44 +01:00
Mateusz Pusz
51f2539fae
build: MP_UNITS_DEV_TIME_TRACE CMake option added
2024-11-17 13:35:12 +01:00
Mateusz Pusz
dc847ca360
build: CheckCacheVarValues CMake module file added
2024-11-17 13:34:04 +01:00
Mateusz Pusz
45a19c8cec
docs: new chapter about our documentation added to the contributing guide
2024-11-17 13:32:02 +01:00
Mateusz Pusz
b3c209cec0
docs: indentiation fixed in a contributing guide
2024-11-17 13:31:27 +01:00
Mateusz Pusz
79f42e8877
refactor: small detail namespace cleanup for units
2024-11-17 07:56:53 +01:00
Mateusz Pusz
623930ccee
refactor: convertible_impl refactored to convertible + results caching
2024-11-16 22:11:59 +01:00
Mateusz Pusz
b00d061ac8
refactor: explicit type of op/ for quantity and reference replaced with constrained placeholder
...
This prevents additional instantiations of inversed quantities
2024-11-16 22:10:51 +01:00
Mateusz Pusz
1be54cbc1d
feat: equivalent now accept any units (even non-convertible)
2024-11-16 22:08:54 +01:00
Mateusz Pusz
5c0bfd9893
perf: get_canonical_unit result caching added
2024-11-16 22:07:13 +01:00
Mateusz Pusz
2390d4562d
refactor: unneeded get_associated_quantity forward declaration removed
2024-11-16 22:04:25 +01:00
Mateusz Pusz
07497ce2c5
perf: get_kind_tree_root result caching added
2024-11-16 22:03:55 +01:00
Mateusz Pusz
049a5a434a
perf: caching of get_associated_quantity results added
2024-11-16 22:01:30 +01:00
Mateusz Pusz
e1b0fb7e6e
refactor: first_100_primes refactored to use a varaible template for caching the result
2024-11-16 22:00:21 +01:00
Mateusz Pusz
658c0950f8
refactor: dimension_symbol and unit_symbol refactored to use a variable template for caching result
2024-11-16 21:59:40 +01:00
Mateusz Pusz
daf4b1cc5c
refactor: SymbolicConstant concept refactored
2024-11-16 11:53:05 +01:00
Mateusz Pusz
7b64b4b650
refactor: 💥 from now unit_symbol and dimension_symbol always returns std::string_view
2024-11-16 09:57:53 +01:00
Mateusz Pusz
2c24c61da5
perf: first_100_primes moved to the static storage
2024-11-16 09:11:52 +01:00
Mateusz Pusz
4f8e959b5c
fix(test): shadowing warnings on gcc fixed
2024-11-16 08:28:39 +01:00
Mateusz Pusz
4aaebb9426
Merge branch 'master' of github.com:mpusz/units
2024-11-16 08:07:33 +01:00
Mateusz Pusz
9d6e195ed8
Merge pull request #641 from chiphogg/chiphogg/baillie-psw#509
...
Use Baillie-PSW prime test to factor numbers
2024-11-15 22:50:25 +01:00
Chip Hogg
a93a5d6d2e
Add std:: prefix
2024-11-15 13:38:48 -05:00
Chip Hogg
de68b3a9f1
Replace old factoring with Baillie-PSW
2024-11-15 13:30:05 -05:00
Chip Hogg
3b586a685f
Implement Baillie-PSW
2024-11-15 13:30:05 -05:00
Mateusz Pusz
ec914986d1
Merge pull request #640 from chiphogg/chiphogg/strong-lucas#509
...
Add the Strong Lucas Probable Prime test
2024-11-15 19:28:16 +01:00
Chip Hogg
82040c1788
Handle edge case
...
Subtracting from `n` doesn't work in literally every case: it fails for
`0` input.
2024-11-15 12:58:22 -05:00
Chip Hogg
d963ce8f93
Apply mod to D
...
Looks like we were violating a precondition.
2024-11-15 11:58:49 -05:00
Chip Hogg
346a001283
Add more missing std:: prefixes
2024-11-15 10:56:53 -05:00
Chip Hogg
9e8dfec265
Add the Strong Lucas Probable Prime test
...
This is more involved than the Miller-Rabin test, but we can tame the
complexity by breaking it down into helper functions, performing tasks
such as:
- Increment the index of the (U_k, V_k) sequence elements by one.
- Double the index of the (U_k, V_k) sequence elements.
- Find an appropriate D parameter.
etc.
With these helpers, the algorithm becomes straightforward (see, for
instance,
https://en.wikipedia.org/wiki/Lucas_pseudoprime#Strong_Lucas_pseudoprimes ).
We start by ruling out perfect squares (because if we don't, then the
search for `D` will never terminate). Then we find our `D`, and
decompose `n + 1` into `s` and `d` parameters (exactly as we did for
Miller-Rabin, except there we used `n - 1`). At this point, the strong
test is easy: check whether `U_d` is 0, then check `V_d`, as well as `V`
for all successive doublings of the index less than `s`.
A similar testing strategy as for the Miller Rabin gives us sufficient
confidence.
1. Test that we get small primes right.
2. Test that we get known pseudoprimes "correctly wrong".
3. Test some really big primes.
(Remember, a probable prime test must mark every actual prime as
"probably prime".)
Helps #509 .
2024-11-15 10:53:26 -05:00