You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2008/02/01 10:39:15 UTC
svn commit: r617407 - in /commons/proper/math/trunk/src:
java/org/apache/commons/math/fraction/Fraction.java
test/org/apache/commons/math/fraction/FractionTest.java
Author: luc
Date: Fri Feb 1 01:39:14 2008
New Revision: 617407
URL: http://svn.apache.org/viewvc?rev=617407&view=rev
Log:
replaced maxDenominatorDigit by maxDenominator in constructor
it is more straightforward and avoid an exception
JIRA: MATH-181
Modified:
commons/proper/math/trunk/src/java/org/apache/commons/math/fraction/Fraction.java
commons/proper/math/trunk/src/test/org/apache/commons/math/fraction/FractionTest.java
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/fraction/Fraction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/fraction/Fraction.java?rev=617407&r1=617406&r2=617407&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/fraction/Fraction.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/fraction/Fraction.java Fri Feb 1 01:39:14 2008
@@ -33,20 +33,6 @@
/** A fraction representing "0 / 1". */
public static final Fraction ZERO = new Fraction(0, 1);
- /**
- * The maximal number of denominator digits that can be requested for double to fraction
- * conversion.
- * <p>
- * When <code>d</code> digits are requested, an integer threshold is
- * initialized with the value 10<sup>d</sup>. Therefore, <code>d</code>
- * cannot be larger than this constant. Since the java language uses 32 bits
- * signed integers, the value for this constant is 9.
- * </p>
- *
- * @see #Fraction(double,int)
- */
- public static final int MAX_DENOMINATOR_DIGITS = 9;
-
/** Serializable version identifier */
private static final long serialVersionUID = 5463066929751300926L;
@@ -89,22 +75,6 @@
}
/**
- * Convert a number of denominator digits to a denominator max value.
- * @param denominatorDigits The maximum number of denominator digits.
- * @return the maximal value for denominator
- * @throws IllegalArgumentException if more than {@link #MAX_DENOMINATOR_DIGITS}
- * are requested
- */
- private static int maxDenominator(int denominatorDigits)
- throws IllegalArgumentException
- {
- if (denominatorDigits > MAX_DENOMINATOR_DIGITS) {
- throw new IllegalArgumentException("too many digits requested");
- }
- return (int)Math.pow(10, denominatorDigits);
- }
-
- /**
* Create a fraction given the double value and maximum number of
* denominator digits.
* <p>
@@ -115,16 +85,14 @@
* </ul>
* </p>
* @param value the double value to convert to a fraction.
- * @param denominatorDigits The maximum number of denominator digits.
+ * @param maxDenominator The maximum allowed value for denominator
* @throws FractionConversionException if the continued fraction failed to
* converge
- * @throws IllegalArgumentException if more than {@link #MAX_DENOMINATOR_DIGITS}
- * are requested
*/
- public Fraction(double value, int denominatorDigits)
- throws FractionConversionException, IllegalArgumentException
+ public Fraction(double value, int maxDenominator)
+ throws FractionConversionException
{
- this(value, 0, maxDenominator(denominatorDigits), 100);
+ this(value, 0, maxDenominator, 100);
}
/**
Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/fraction/FractionTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/fraction/FractionTest.java?rev=617407&r1=617406&r2=617407&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/fraction/FractionTest.java (original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/fraction/FractionTest.java Fri Feb 1 01:39:14 2008
@@ -123,23 +123,14 @@
// MATH-181
public void testDigitLimitConstructor() throws ConvergenceException {
- assertFraction(2, 5, new Fraction(0.4, 1));
- assertFraction(2, 5, new Fraction(0.4, 2));
- assertFraction(2, 5, new Fraction(0.4, 3));
+ assertFraction(2, 5, new Fraction(0.4, 9));
+ assertFraction(2, 5, new Fraction(0.4, 99));
+ assertFraction(2, 5, new Fraction(0.4, 999));
- assertFraction(3, 5, new Fraction(0.6152, 1));
- assertFraction(8, 13, new Fraction(0.6152, 2));
- assertFraction(510, 829, new Fraction(0.6152, 3));
- assertFraction(769, 1250, new Fraction(0.6152, 4));
-
- try {
- new Fraction(0.6152, 15);
- fail("an exception should have been thrown");
- } catch (IllegalArgumentException iae) {
- // expected behavior
- } catch (Exception e) {
- fail("wrong exception caught");
- }
+ assertFraction(3, 5, new Fraction(0.6152, 9));
+ assertFraction(8, 13, new Fraction(0.6152, 99));
+ assertFraction(510, 829, new Fraction(0.6152, 999));
+ assertFraction(769, 1250, new Fraction(0.6152, 9999));
}
public void testEpsilonLimitConstructor() throws ConvergenceException {