Johel Ernesto Guerrero Peña
3f145a25db
refactor: update hacks for LLVM 15
2022-02-07 21:07:22 -04:00
Frank Dischner
771a400007
build: add support for AppleClang compiler
2022-01-26 18:18:51 -06: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
Mateusz Pusz
cab5e8b2fd
Merge branch 'master' of github.com:mpusz/units
2022-01-25 13:30:10 +01:00
Mateusz Pusz
d7ee8f23a8
build: Conan finally fixed gsl-lite
...
Relates to #318
2022-01-25 13:30:01 +01: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
Mateusz Pusz
8493bf389e
refactor: Forward declaration of as_magnitude() is not needed
2022-01-18 12:16:18 +01:00
Chip Hogg
1c70b18709
Unify "H1 base smaller" test cases
...
This might actually fix the error!
2022-01-12 10:47:59 -05:00
Chip Hogg
038616c901
Try rearranging the order
...
Maybe this will help me understand where the problem lies.
2022-01-12 10:11:50 -05:00
Chip Hogg
fb602a4497
Try fixing "unreachable code" warning on MSVC 14.2
...
This doesn't show up on any other compiler, including MSVC 14.3, so I
think it's just a compiler bug. Cursory googling suggests perhaps that
some older versions of MSVC have immature support for `if constexpr`.
2022-01-12 09:47:40 -05:00
Chip Hogg
d554fb28cc
Try fixing MSVC internal compiler error
...
I'm breaking apart the requirements into simpler pieces, but I don't
really know if that will help.
2022-01-11 20:33:48 -05:00
Chip Hogg
bdf488db04
Remove unnecessary forward declaration
2022-01-11 19:34:57 -05:00
Chip Hogg
08818ac6a8
Make pow()'s argument a simple (non-template) parameter
2022-01-11 19:19:25 -05:00
Chip Hogg
a8d6c890a5
Move pi_to_the to the test file
2022-01-11 19:12:27 -05:00
Chip Hogg
3042135eb9
Try fixing clang build failures
2022-01-11 12:56:14 -05:00
Chip Hogg
cee4be2b67
Simplify namespaces and canonicalize formatting
...
The motivation for the `mag` sub-namespace was to distinguish something
like `mag::product_t<...>` from `dim::product_t<...>`, based on the
idioms of Aurora Units. However, we have no need for a `product_t` type
trait, since we can just use `operator*()`, so we can eliminate this
sub-namespace.
2022-01-10 14:28:02 -05:00
Chip Hogg
4f90302dd7
Constrain strictly_increasing to signed values
2022-01-10 14:27:04 -05:00
Chip Hogg
f783d7f274
Handle exp explicitly in as_magnitude()
...
The new test actually passed without modifying the code. However, that
might be implementation-dependent (presumably based on canonicalization
of the `ratio` template parameter), so I wanted a more obviously correct
implementation.
2022-01-08 19:34:42 -05:00
Chip Hogg
409aaf4636
Generalize inverse() to pow<...>()
2022-01-08 19:34:21 -05:00
Chip Hogg
053de8d539
Replace structs with variables
2022-01-08 18:34:14 -05:00
Chip Hogg
ba458d479e
Fix remaining constraints
2022-01-08 18:19:40 -05:00
Chip Hogg
41995464f0
Fix magnitude constraints
...
I got my requires expressions/clauses mixed up.
Unfortunately, this means we can't just shove all the "implementation
details" down to the bottom of the file. Oh well.
2022-01-08 18:13:48 -05:00
Chip Hogg
0a470f2617
Replace make_ratio with as_magnitude<ratio>
...
It's cleaner to just have the one way.
2022-01-08 17:29:40 -05:00
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