units icon indicating copy to clipboard operation
units copied to clipboard

Math functions not compatible with percent

Open StefanoD opened this issue 1 year ago • 1 comments

Please include the following information in your issue:

  1. Which version of units you are using Branch v3.x, Commit da6dd9176e8515323c75030d5e51ee19cf6c9afd

  2. Which compiler exhibited the problem (including compiler version) GCC 11.4.0

The math function don't work for dimensionless units like percent

using units::concentration::percent;

percent<double> pct1 = 100_pct;
percent<double> pct2 = 70_pct;

percent<double> delta = fabs(pct1 - pct2); // Results into percent<double>(0.3)
percent<double> maxValue = fmax(pct1, pct2); // Results into percent<double>(1.0)
percent<double> minValue = fmin(pct1, pct2);  // Results into percent<double>(0.7)

// Following tests are failing:

EXPECT_EQ(delta, 30_pct);
EXPECT_EQ(maxValue, pct1);
EXPECT_EQ(minValue, pct2);

The problem lies in core.h where the said functions use .value() instead of .raw()

StefanoD avatar Jan 19 '24 10:01 StefanoD

Seems very highly related to #276. Although I wouldn't go so far as to call this one a duplicate, I think some of the discussion there can be helpful.

Same for this comment on #275.

chiphogg avatar Feb 20 '24 17:02 chiphogg