You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Matt Juntunen (JIRA)" <ji...@apache.org> on 2019/02/14 05:18:00 UTC

[jira] [Updated] (NUMBERS-94) PlaneAngle normalize fails for very small numbers.

     [ https://issues.apache.org/jira/browse/NUMBERS-94?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Juntunen updated NUMBERS-94:
---------------------------------
    Description: 
When the {{PlaneAngle.normalize()}} method is called to normalize between 0 and 1 turns and is passed a very small number compared to the 1, then the method returns a number exactly equal to the angle upper bound. This breaks the API contract since the return value must be strictly less than the upper bound. Ex:
{code:java}
PlaneAngle angle = PlaneAngle.ofTurns(-1e-18);
double normalized = angle.normalize(PlaneAngle.PI).toTurns();
// normalized is equal to 1 but it should be 0 since 1 - 1e-18 = 1, which is equivalent to 0 in turns
{code}

Pull request: https://github.com/apache/commons-numbers/pull/30

  was:
When the {{PlaneAngle.normalize()}} method is called to normalize between 0 and 1 turns and is passed a very small number compared to the 1, then the method returns a number exactly equal to the angle upper bound. This breaks the API contract since the return value must be strictly less than the upper bound. Ex:
{code:java}
PlaneAngle angle = PlaneAngle.ofTurns(-1e-18);
double normalized = angle.normalize(PlaneAngle.PI).toTurns();
// normalized is equal to 1 but it should be 0 since 1 - 1e-18 = 1, which is equivalent to 0 in turns)
{code}


> PlaneAngle normalize fails for very small numbers.
> --------------------------------------------------
>
>                 Key: NUMBERS-94
>                 URL: https://issues.apache.org/jira/browse/NUMBERS-94
>             Project: Commons Numbers
>          Issue Type: Bug
>            Reporter: Matt Juntunen
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When the {{PlaneAngle.normalize()}} method is called to normalize between 0 and 1 turns and is passed a very small number compared to the 1, then the method returns a number exactly equal to the angle upper bound. This breaks the API contract since the return value must be strictly less than the upper bound. Ex:
> {code:java}
> PlaneAngle angle = PlaneAngle.ofTurns(-1e-18);
> double normalized = angle.normalize(PlaneAngle.PI).toTurns();
> // normalized is equal to 1 but it should be 0 since 1 - 1e-18 = 1, which is equivalent to 0 in turns
> {code}
> Pull request: https://github.com/apache/commons-numbers/pull/30



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)