Chip Hogg
ef6f937460
Clean up and reorder file
2022-01-08 17:18:33 -05:00
Chip Hogg
838b132a61
Finish migrating base_power to NTTP
2022-01-08 15:08:05 -05:00
Chip Hogg
9d48e6983a
Refactor BasePower struct and concept
...
Instead of templating on `long double`, we template on "anything whose
value member is `long double`". This is how we work around gcc-10's
lack of support for floating point NTTPs.
To access the base value, we provide `.get_base()` member functions.
The clearest and most direct way I know to express "is this a base
power" is via a type trait, which is true only for `base_power<T>`.
2022-01-08 14:40:28 -05:00
Chip Hogg
3063aebe5a
Clean up pairwise_all() and strictly_increasing()
2022-01-08 14:28:53 -05:00
Chip Hogg
92b7a15d6f
(partial) Switch base_power to NTTP
...
Apparently, gcc-10 does not support floating point NTTPs, so we'll need
to reimagine the approach.
2022-01-08 14:04:19 -05:00
Chip Hogg
6033f96267
Enable implicit ratio construction
2022-01-08 14:03:52 -05:00
Chip Hogg
14d8d96b3c
Replace static_assert with template parameter constraints
2022-01-04 20:06:41 -05:00
Chip Hogg
bb4fe5040d
Factor out logic into pairwise_all() helper
...
We could move this somewhere more generic if we want.
2022-01-03 15:20:05 -05:00
Chip Hogg
cef01ba67c
Remove redundant inline specifiers
...
`static constexpr` implies `inline`; see:
https://stackoverflow.com/a/57407675
2021-12-31 09:54:10 -05:00
Chip Hogg
998266e780
Try fixing MSVC 14.2
...
I don't know how to run the build directly, but it seems like this
should work.
2021-12-31 09:35:30 -05:00
Chip Hogg
626c7bfe39
Fix up for review
...
- 120 line limit
- uppercase template params
- doxygen comments for public APIs
- `int_base` -> `prime_base`
2021-12-30 10:47:01 -05:00
Chip Hogg
05934c8b72
Add make_base_power() helper
2021-12-29 21:37:06 -05:00
Chip Hogg
c75eb02ea7
Finish fleshing out make_ratio
2021-12-29 21:21:58 -05:00
Chip Hogg
8a1ed3adcb
Add make_ratio() helper and prime factorization
2021-12-29 21:21:58 -05:00
Chip Hogg
a86cac8705
Capitalize more template arguments
2021-12-29 21:21:58 -05:00
Chip Hogg
2c229710e7
Create and use BasePower concept
2021-12-29 21:21:57 -05:00
Chip Hogg
4f759f95e8
Use Magnitude concept where appropriate
2021-12-29 21:21:57 -05:00
Chip Hogg
0566158e91
Add concept for magnitude
2021-12-29 21:21:57 -05:00
Chip Hogg
0c5ae082d5
Add magnitude with product, inverse, quotient
...
For now, all templates are unconstrained; we hope to clean that up
later.
2021-12-29 21:21:57 -05: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
Mateusz Pusz
0ce18dc3c7
feat: std::format usage enabled for VS2022
2021-11-15 16:28:26 +01:00
Mateusz Pusz
a09cef4a3f
fix: fix VS2022 shadowing issues
2021-11-15 13:46:24 +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
Mateusz Pusz
3f28b55ab1
refactor: more constraints added to floor and ceil
2021-11-13 21:53:53 +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
6e6c5c281a
feat: math functions can now be safely used with user-defined types
...
Resolves #310
2021-11-09 19:26:26 +01: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
Soham Roy
bf938c4fa4
Implemented correctly, included type_list
2021-10-17 12:18:11 +02:00
Soham Roy
1b834e8e49
Replaced macro redefinition with appropriate usage
2021-10-17 12:18:11 +02:00
Soham Roy
4c9c651a9e
Replace naked pragmas with defines
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
417f842585
fix: constraint recursion for GCC 11
2021-09-17 20:11:38 +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
7ed29807a6
removed superfluous requires statement in is_quantity<T>
2021-06-29 20:31:06 +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
0174572645
refactor: merged op% of quantity_kind into one
...
Relates to #221
2021-05-11 19:40:58 +02:00