[ 
https://issues.apache.org/jira/browse/NUMBERS-167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17427747#comment-17427747
 ] 

Alex Herbert commented on NUMBERS-167:
--------------------------------------

I do not think BC allows a switch to enums as the methods change from static to 
instance.

{code:java}
public enum RegularizedGamma {
    P {
        @Override
        public double value(double a,
                            double x) {
            return value(a, x, DEFAULT_EPSILON, Integer.MAX_VALUE);
        }

        @Override
        public double value(double a,
                            double x,
                            double epsilon,
                            int maxIterations) {
            throw new IllegalStateException();
        }
    },
    Q {
        @Override
        public double value(double a,
                            double x) {
            return value(a, x, DEFAULT_EPSILON, Integer.MAX_VALUE);
        }

        @Override
        public double value(double a,
                            double x,
                            double epsilon,
                            int maxIterations) {
            throw new IllegalStateException();
        }
    };

    private static final double DEFAULT_EPSILON = 1e-15;

    public abstract double value(double a, double x);

    public abstract double value(double a,
                                 double x,
                                 double epsilon,
                                 int maxIterations);
}

{code}

This fails JApiCmp:

{noformat}
mvn package japicmp

[ERROR] Failed to execute goal 
com.github.siom79.japicmp:japicmp-maven-plugin:0.14.3:cmp (default-cli) on 
project commons-numbers-gamma: There is at least one incompatibility: 
org.apache.commons.numbers.gamma.RegularizedGamma.value(double,double):METHOD_ABSTRACT_ADDED_TO_CLASS,org.apache.commons.numbers.gamma.RegularizedGamma.value(double,double,double,int):METHOD_ABSTRACT_ADDED_TO_CLASS,org.apache.commons.numbers.gamma.RegularizedGamma:CLASS_NOW_ABSTRACT,org.apache.commons.numbers.gamma.RegularizedGamma:CLASS_TYPE_CHANGED,org.apache.commons.numbers.gamma.RegularizedGamma$P.value(double,double):METHOD_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$P.value(double,double,double,int):METHOD_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$P:SUPERCLASS_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$P:CLASS_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$Q.value(double,double):METHOD_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$Q.value(double,double,double,int):METHOD_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$Q:SUPERCLASS_REMOVED,org.apache.commons.numbers.gamma.RegularizedGamma$Q:CLASS_REMOVED
 -> [Help 1]
{noformat}


> RegularizedGamma.P with precomputed LogGamma value
> --------------------------------------------------
>
>                 Key: NUMBERS-167
>                 URL: https://issues.apache.org/jira/browse/NUMBERS-167
>             Project: Commons Numbers
>          Issue Type: Wish
>          Components: gamma
>            Reporter: Gilles Sadowski
>            Priority: Minor
>             Fix For: 1.1
>
>         Attachments: pr_106.patch
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We have
> {code:java}
> double v = RegularizedGamma.P.value(a, x);
> {code}
> where method {{value}} internally calls {{LogGamma.value(a)}}.
> There is a use-case for
> {code:java}
> double logGammaA = LogGamma.value(a);
> double v = RegularizedGamma.P.value(a, x, logGammaA);
> {code}
> for when the user varies {{x}} but not {{a}}.
> Method name TBD:  Another overload of {{value}} may be confusing (?).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to