Commit Graph
260 Commits
Author SHA1 Message Date
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 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 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 Pusz 144f6951c0 style: all files refromatted with clang-format 2022-03-17 23:59:48 +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 73a56115a1 Fix wheel factorization algorithm 2022-03-11 03:42:19 +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
Johel Ernesto Guerrero Peña 3f145a25db refactor: update hacks for LLVM 15 2022-02-07 21:07:22 -04:00
Frank Dischner 774dd91686 Add tests for FPS cubic yard 2022-01-23 21:52:23 -06:00
Chip Hogg a80378cae8 Support addition and negation in ratio 2021-12-29 21:21:57 -05: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 571df5ed33 feat: conversion from quantity_point to std::chrono::time_point added
Refers #316
2021-11-23 14:37:08 +01:00
Mateusz Pusz af928dd0c7 feat: conversion helpers from mp-units to std::chrono types added
Resolves #316
2021-11-23 11:17:47 +01:00
Markus Hofbauer 4cd90674d5 Feat: Round (#313)
* feat: round

* add more constraints for round

* overload round for quantity

* fix clang tidy

* Validate types before return
2021-11-15 18:53:15 +01:00
Markus Hofbauer 50b9050d6b Feat: Overloads for floor and ceil accepting quantities (#314)
* feat: overloads for floor and ceil accepting quantities

* require same type for dim and rep

* be specific for msvc
2021-11-15 12:23:28 +01:00
Markus Hofbauer b881b56480 feat: first draft ceil 2021-11-13 16:50:55 +01:00
Markus Hofbauer e82bfa23a5 Feat: Floor (#309)
* feat: first draft floor

* apply review feedback and move to desired files

* implement floor considering float types

* reduce code duplication

* apply review feedback and improve docstring

* enable static floor tests for gcc only

* Use recommended feature-test macro

* add floor runtime unittests

* apply review feedback

* make lambda const
2021-11-13 12:17:43 +01:00
Mateusz Pusz f9fb6cc8b3 build: projectPrefix usage added 2021-11-05 23:35:30 +01:00
Mateusz Pusz ca3d111579 fix: CTAD test disabled for most of the compilers 2021-10-20 20:18:15 +02:00
Mateusz Pusz 240ec3a460 build: CTAD for quantity is not supported by clang 2021-10-20 19:58:31 +02:00
Mateusz Pusz b7b8a0bf93 fix: CTAD for aliases fixed 2021-10-20 18:52:13 +02:00
Mateusz Pusz 620835db97 test: Numeric rounding error commented out 2021-09-10 08:08:02 +02:00
Mateusz Pusz 120d863c40 test: derived_quantity-related compilation error fixed 2021-09-09 09:26:23 +02:00
rstein cc5318e5cc refactored HEP units into separate files and corrected namespace where necessary 2021-08-04 13:46:48 +02:00
Ralph J. Steinhagen 322cde70b9 added HEP specific units and definitions
in accordance with https://www.bipm.org/documents/20126/41483022/SI-Brochure-9.pdf#page=147

see also disccusion thread #292
2021-08-03 10:56:47 +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 0768f2739a fix: use complete type 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 ae7aca5fa0 test: uncommented some already supported cases
Resolves #206
2021-05-11 20:12:46 +02:00
Mateusz Pusz 1783d243da fix: quantity modulo arithmetics fixed
Resolves #231
2021-05-11 15:03:04 +02:00
Mateusz Pusz 68203b6a9f test: additional tests for FPS unit text symbols added 2021-05-10 18:11:53 +02:00
Mateusz Pusz b894ee6558 refactor: 💥 got rid of a noble_derived_unit
Resolves #280
2021-05-10 18:03:47 +02:00
Mateusz Pusz 7ead50acfc refactor: derived_kind template parameters reordered to be compatible with a derived_unit
Resolves #229
2021-05-10 16:45:38 +02:00
Mateusz Pusz 8e88f06380 refactor: *deduced_unit renamed to *derived_unit 2021-05-10 15:56:48 +02:00
Mateusz Pusz 2c8c6c2e98 refactor: quantity cration helpers are not opt-out rather than opt-in
Resolves #277
2021-05-09 15:52:20 +02:00
Mateusz Pusz 6d39459cbc perf: rvalue references support added for constructors and getters
Resolves #275
2021-05-03 19:44:50 +02:00
Mateusz Pusz 46e1e5e932 refactor: US system renamed to USCS 2021-04-16 12:40:52 +02:00
Mateusz Pusz 70bff31d06 feat: quantity aliases support addded 2021-04-15 19:13:25 +02:00
Mateusz Pusz b982921d27 refactor: References are now guarded UNITS_REFERENCES with (ON by default) + examples duplicated to subdirectories
Now References can be disabled to meassure a compile time impact. Also the same examples are now provided in two subdirectories to be able to easily compare the pros and cons of every quantity construction technique.
2021-04-06 15:57:28 +02:00
Mateusz Pusz c3659dbb47 refactor: UNITS_UDLS renamed to UNITS_LITERALS
Also now the existence of the preprocessor flag is enough to trigger the feature (`#ifdef` instead of `#if`)
2021-04-06 13:33:27 +02:00
Mateusz Pusz dfd209ed14 fix: femtotonne enabled 2021-04-02 18:57:17 +02:00
Mateusz Pusz 1a5b4fc85e refactor: UDLs support switched off by default 2021-04-02 18:56:28 +02:00
Mateusz Pusz 309da80c32 refactor: unit_text.h header include moved to text-related targets 2021-03-31 12:25:26 +02:00
Mateusz Pusz 441db47928 fix: MSVC Release build fixed + pragmas usage refactored 2021-03-30 20:00:23 +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