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

Travis Hanna commented on MATH-754:
-----------------------------------

Oh, nothing is wrong with a subclass.  This is the way I would have solved it 
in the project I'm working on but in commons-math 2.2, Fraction is declared 
final. Instead, I had to create a little utility class to generate these 
fractions as a result.  I figured other people have probably had the same 
problem so I thought I might submit a patch back to try and be helpful.

In my last comment, I was speculating on whether or not it would be useful to 
have a class that represents a Fraction with a constrained denominator and 
maintains that constraint through whatever operations you might perform on it.  
My gut says it wouldn't be all that useful though so I won't be creating one.

I think you have a valid point when you say I'm pushing higher level 
requirements down into the Fraction class but I do have one counter argument.  
These constructors all smell the same to me:

public Fraction(double value, double epsilon, int maxIterations)
public Fraction(double value, double epsilon, Set<Integer> 
acceptableDenominators) 
public Fraction(double value, int maxDenominator)

There's really no clean way to create a fraction from a double.  In all three 
cases, higher level requirements have seeped down into the library.  The amount 
of acceptable error and performance constraints are both higher level 
requirements IMHO.  

I won't be offended if my patch is rejected or anything.  I just suspect other 
people using the class probably have similar requirements.

Maybe there should be a separate class that is responsible for converting 
doubles to Fractions to keep the Fraction class clean?
                
> Additional Fraction Constructor
> -------------------------------
>
>                 Key: MATH-754
>                 URL: https://issues.apache.org/jira/browse/MATH-754
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 3.0
>         Environment: All
>            Reporter: Travis Hanna
>            Priority: Minor
>              Labels: features, newbie, patch
>             Fix For: 3.0
>
>         Attachments: math.patch
>
>
> I'm writing some code which outputs fractional measurements meant for human 
> consumption. I need a constructor for Fraction which allows you to restrict 
> the denominators to a finite set. This is necessary due to the fact that 
> real-world tools are only available with certain fractions. For example, it's 
> next to impossible to find a ruler with 1/7 inch marked :). 
> I'm attaching a patch which implements the functionality. I've attempted to 
> mimic the style of the existing code as much as possible. One caveat: I don't 
> speak French so the french error message is a computer-generated translation 
> and probably very poor.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to