[flang-commits] [flang] [llvm] [flang] Fix wrong result for exponentiation when denormal is expected (PR #205262)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Thu Oct 8 02:26:03 PDT 2026
================
@@ -51,6 +55,20 @@ ValueWithRealFlags<REAL> TimesIntPowerOf(const REAL &factor, const REAL &base,
return result;
}
+template <typename W, int P, typename INT>
+ValueWithRealFlags<value::Real<W, P>> IntPower(const value::Real<W, P> &base,
+ const INT &power,
+ Rounding rounding = TargetCharacteristics::defaultRounding) {
+ using REAL = value::Real<W, P>;
+ REAL one{REAL::FromInteger(INT{1}).value};
+ if (power.IsNegative() && !base.IsZero() &&
+ base.ABS().Compare(one) == Relation::Greater) {
+ REAL recip{one.Divide(base, rounding).value};
----------------
tblah wrote:
I'm not sure it is correct to throw away the flags (e.g. underflow) from this division
https://github.com/llvm/llvm-project/pull/205262
More information about the flang-commits
mailing list