Commit Graph
1880 Commits
Author SHA1 Message Date
Chip Hogg 7e894788d7 Compute values for rational magnitude powers
Since this will only ever be done at compile time (as guaranteed by
using `consteval`), we can afford to prioritize precision over speed.
To compute an Nth root, we simply do a binary search over representable
floating point numbers, looking for the number whose Nth power most
closely matches the original number.

Fixes #494.  We have included a test case reproducing the original
problem exactly.  All tests use "within 4 ULPs" as the criterion, which
is (I believe) equivalent to the googletest `EXPECT_DOUBLE_EQ`
criterion.
2024-07-24 10:31:44 -04:00
Mateusz Pusz f9ae701b4e fix: MP_UNITS_BUILD_IMPORT_STD verification fixed 2024-07-17 21:31:28 +02:00
Mateusz Pusz 27bd2690bd fix: preventing import std; in GMF 2024-07-16 20:50:04 +02:00
Mateusz Pusz 2411a7ef12 build: minimum required CMake version bumped to 3.25
Resolves #597
2024-07-16 20:35:05 +02:00
Mateusz Pusz 2e1e4f122a chore: update CMakeLists.txt option description for building as system headers 2024-07-16 17:37:19 +02:00
Mateusz Pusz b870b85c25 feat: import std; support added
Resolves #595
2024-07-16 17:36:00 +02:00
Mateusz Pusz d51fb6d6c1 refactor: consistent std::size_t usage 2024-07-16 12:12:54 +02:00
Mateusz Pusz fcc16ae282 feat: convertibility of a quantity with a unit one with the raw value added
Resolves #553
2024-07-14 18:31:11 +02:00
Mateusz Pusz 0dfd323c4b feat: ValuePreservingTo extended with the explicit convertibility requirement 2024-07-14 18:06:02 +02:00
Mateusz Pusz 73f7901329 build: duplicated cmake_minimum_required commands removed
Resolves #592
2024-07-14 18:04:05 +02:00
Mateusz Pusz e2a0e678a1 refactor: small cleanup in the quantity.h 2024-07-13 08:37:40 +02:00
Mateusz Pusz fa25d11275 refactor: ValuePreservingTo concept added 2024-07-13 08:36:48 +02:00
Mateusz Pusz 498d895fe5 fix: designated initialization of extract_results removed to enable clang-16 compilation 2024-07-12 18:47:19 +02:00
Mateusz Pusz adbc77432e feat: all tags in the expression templates are now ordered by the type names
Resolves #499
2024-07-12 17:48:38 +02:00
Mateusz Pusz f0e94e06da fix: quantity_spec_interface_base introduced to fix the compilation on the older compilers 2024-07-12 17:10:30 +02:00
Mateusz Pusz 0010d868a7 feat: tag types-related operators are now hidden friends as well
Resolves #591
2024-07-12 16:01:03 +02:00
Mateusz Pusz b5e8f2afcd fix: si.h and angular.h now properly include hacks.h to define MP_UNITS_HOSTED before its usage 2024-07-12 15:03:19 +02:00
Mateusz Pusz bc234b0093 fix: disabled partial convertibility of binary operators arguments 2024-07-12 15:02:29 +02:00
Mateusz Pusz e5e0e47c36 refactor: small quantity and quantity_point interface cleanup 2024-07-11 20:06:00 +02:00
Mateusz Pusz a70ef1ebc3 Revert "fix: disabled convertibility of quantity binary operators arguments"
This reverts commit 037964bbba.
2024-07-11 18:05:51 +02:00
Mateusz Pusz 037964bbba fix: disabled convertibility of quantity binary operators arguments 2024-07-11 17:19:31 +02:00
Mateusz Pusz 50cc9dfded refactor: binary operators of quantity and quantity_point are now hidden friends 2024-07-11 16:08:47 +02:00
Mateusz Pusz c8849e5781 refactor: improvements in are_ingredients_convertible 2024-07-10 10:23:55 +02:00
Mateusz Pusz 390a0cee5d refactor: small refactoring of conditions in convertible_impl 2024-07-08 09:12:16 +02:00
Mateusz Pusz 0586ce030b refactor: prepend_and_process_rest refactored 2024-07-07 22:27:35 +01:00
Mateusz Pusz 382695623a refactor: a few functions that look for convertible ingredeints renamed 2024-07-07 22:15:24 +01:00
Mateusz Pusz 0368d0a56d fix: MP_UNITS_API_CONTRACTS should have a priority over headers availability (compat_macros) 2024-07-07 21:14:04 +01:00
Mateusz Pusz 6a5e6902fe fix: MP_UNITS_API_CONTRACTS should have a priority over headers availability 2024-07-06 18:09:41 +01:00
Mateusz Pusz b803e5b701 fix: most of the previous commit reverted (accidentaly too many files with changes were included) 2024-07-05 10:05:25 +01:00
Mateusz Pusz c30f62e7f5 docs: 2.2.0 release announcement updated to point to 2.2.1 2024-07-04 22:57:49 +01:00
Mateusz Pusz 2cff579650 feat: representation type template parameter added to value convertion functions
Resolves #588
2024-07-04 22:05:40 +01:00
Mateusz Pusz 5903e5661f refactor: 💥 quantity_point_like_traits now use numerical value instead of the quantity
Resolves #531
2024-07-04 16:40:40 +01:00
Mateusz Pusz 360eb85d09 docs: TODO note changed in the unit_symbol and dimension_symbol 2024-07-04 15:03:58 +01:00
Mateusz Pusz 170a345fdf fix: unit_symbol and dimension_symbol fixed for pre-C++23 compilation 2024-07-04 14:46:14 +01:00
Mateusz Pusz 246923d877 refactor: unit_symbol and dimension_symbol refactored for readability and consteval 2024-07-04 14:16:19 +01:00
Mateusz Pusz b3cd2cf6e3 feat: text output for angular units improved (space before symbol removed) 2024-07-04 10:40:12 +01:00
Mateusz Pusz cc75950c44 fix: value-initialization for data_ added to inplace_vector 2024-07-03 23:01:24 +01:00
Mateusz Pusz c59ab3e11e refactor: dimension_symbol and units_symbol refactored to use inplace_vector 2024-07-03 22:57:50 +01:00
Mateusz Pusz 6f03c04d97 fix: IWYU - concepts added to fixed_string 2024-07-03 22:56:30 +01:00
Mateusz Pusz d5b8a742c9 feat: simplified inplace_vector added 2024-07-03 22:55:53 +01:00
Mateusz Pusz e0becc97a8 style: pre-commit styling 2024-07-03 19:30:21 +01:00
Mateusz Pusz de1381748c feat: 💥 Conan and CMake options changed as requested at ConanCenter code review 2024-07-03 18:45:19 +01:00
Mateusz Pusz 84f0a0411c Merge pull request #589 from nebkat/fix-fmt-11
fix: Support fmtlib 11.0.0
2024-07-02 20:27:05 +09:00
Mateusz Pusz f6fbfe1e09 fix: MP_UNITS_HOSTED branch added to core.h 2024-07-02 11:44:38 +01:00
Mateusz Pusz 1365d62293 refactor: degree Celsius and Fahrenheit symbols text now use Unicode codepoints 2024-07-02 11:43:53 +01:00
Mateusz Pusz e41078b889 fix: MP_UNITS_API_NO_CRTP handling fixed 2024-07-02 11:07:49 +01:00
Nebojsa Cvetkovic 0ac6a1701d fix: Support fmtlib 11.0.0 2024-07-01 18:38:06 +01:00
Mateusz Pusz 70289048bd refactor: Unicode codepoints used for deg_C and deg_F text symbols 2024-06-30 17:14:37 +02:00
Mateusz Pusz a70031ab75 refactor: small code cleanup 2024-06-30 12:10:04 +02:00
Mateusz Pusz 13aab34b51 refactor: [[nodiscard]] and consteval set for some magnitude-related functions 2024-06-30 12:09:01 +02:00