You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Alex Herbert (Jira)" <ji...@apache.org> on 2020/08/25 17:33:00 UTC
[jira] [Commented] (NUMBERS-150) Fraction.pow to correctly handle
Integer.MIN_VALUE as the argument
[ https://issues.apache.org/jira/browse/NUMBERS-150?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17184622#comment-17184622 ]
Alex Herbert commented on NUMBERS-150:
--------------------------------------
Fraction.pow(int) requires negation of the input exponent when it is negative. This is not possible for Integer.MIN_VALUE since the negation has no effect.
{code:java}
assert Integer.MIN_VALUE == -Integer.MIN_VALUE;
{code}
The method should detect Integer.MIN_VALUE and compute the power correctly.
This will only effect a fraction with an absolute value of 1. All other non-zero fractions should generate an ArithmeticException due to overflow:
{code:java}
Assertions.assertEquals(Fraction.of(1, 1), Fraction.of( 1, 1).pow(Integer.MIN_VALUE));
Assertions.assertEquals(Fraction.of(1, 1), Fraction.of(-1, 1).pow(Integer.MIN_VALUE));
Assertions.assertEquals(Fraction.of(1, 1), Fraction.of( 1, -1).pow(Integer.MIN_VALUE));
Assertions.assertEquals(Fraction.of(1, 1), Fraction.of(-1, 1).pow(Integer.MIN_VALUE));
Assertions.assertThrows(ArithmeticException.class, () -> Fraction.of(1, 2).pow(Integer.MIN_VALUE));
Assertions.assertThrows(ArithmeticException.class, () -> Fraction.of(2, 1).pow(Integer.MIN_VALUE));
Assertions.assertThrows(ArithmeticException.class,
() -> Fraction.of(Integer.MAX_VALUE - 1, Integer.MAX_VALUE).pow(Integer.MIN_VALUE));
{code}
> Fraction.pow to correctly handle Integer.MIN_VALUE as the argument
> ------------------------------------------------------------------
>
> Key: NUMBERS-150
> URL: https://issues.apache.org/jira/browse/NUMBERS-150
> Project: Commons Numbers
> Issue Type: Bug
> Components: fraction
> Reporter: Jin Xu
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> a bug was discovered by [NUMBERS-149].
> here is the fix pr.
> https://github.com/apache/commons-numbers/pull/83
--
This message was sent by Atlassian Jira
(v8.3.4#803005)