[flang] Fix F18 scalar integer power algorithm
Original-commit: flang-compiler/f18@f0609e7ace
This commit is contained in:
parent
68cfc92b1a
commit
9f98662b5f
|
@ -953,9 +953,9 @@ public:
|
|||
result.overflow |= product.SignedMultiplicationOverflowed();
|
||||
}
|
||||
if (j + 1 < nbits) {
|
||||
ValueWithOverflow doubled{shifted.AddSigned(shifted)};
|
||||
result.overflow |= doubled.overflow;
|
||||
shifted = doubled.value;
|
||||
Product squared{shifted.MultiplySigned(shifted)};
|
||||
result.overflow |= squared.SignedMultiplicationOverflowed();
|
||||
shifted = squared.lower;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -95,5 +95,9 @@ module m
|
|||
logical, parameter :: test_divide_i3 = ((-7)/2).EQ.(-3)
|
||||
logical, parameter :: test_divide_i4 = (0/127).EQ.(0)
|
||||
|
||||
logical, parameter :: test_pow1 = (2**0).EQ.(1)
|
||||
logical, parameter :: test_pow2 = (1**100).EQ.(1)
|
||||
logical, parameter :: test_pow3 = (2**4).EQ.(16)
|
||||
logical, parameter :: test_pow4 = (7**5).EQ.(16807)
|
||||
|
||||
end module
|
||||
|
|
Loading…
Reference in a new issue