Value equals in a range, and ensure value inside a range : Float « Date Type « Android






Value equals in a range, and ensure value inside a range

    
//package edu.cmu.ri.createlab.util;

/**
 * @author Chris Bartley (bartley@cmu.edu)
 */
final class MathUtils {
  public static final double EPSILON = 0.0000001;
  private static final double ZERO = 0.0d;

  /**
   * Ensures that the given <code>value</code> is within the range
   * <code>[-|maxValue|, |maxValue|]</code>. Returns the given
   * <code>value</code> if it's within the range; otherwise, returns
   * <code>-|maxValue|</code> or <code>|maxValue|</code> as appropriate.
   */
  public static double ensureRange(final double value, final double maxValue) {
    final double absMaxValue = Math.abs(maxValue);

    if (value > absMaxValue) {
      return absMaxValue;
    }
    if (value < -absMaxValue) {
      return -absMaxValue;
    }

    return value;
  }

  /**
   * Ensures that the given <code>value</code> is within the range
   * <code>[minValue, maxValue]</code>. Returns the given <code>value</code>
   * if it's within the range; otherwise, returns <code>minValue</code> or
   * <code>maxValue</code> as appropriate. Performs idiot checking to make
   * sure that <code>minValue</code> isn't greater than <code>maxValue</code>
   * (swaps the values if it is).
   */
  public static double ensureRange(final double value, final double minValue,
      final double maxValue) {
    final double min;
    final double max;

    // idiot check
    if (minValue > maxValue) {
      min = maxValue;
      max = minValue;
    } else {
      min = minValue;
      max = maxValue;
    }

    if (value > max) {
      return max;
    }
    if (value < min) {
      return min;
    }

    return value;
  }

  /**
   * Ensures that the given <code>value</code> is within the range
   * <code>[minValue, maxValue]</code>. Returns the given <code>value</code>
   * if it's within the range; otherwise, returns <code>minValue</code> or
   * <code>maxValue</code> as appropriate. Performs idiot checking to make
   * sure that <code>minValue</code> isn't greater than <code>maxValue</code>
   * (swaps the values if it is).
   */
  public static int ensureRange(final int value, final int minValue,
      final int maxValue) {
    final int min;
    final int max;

    // idiot check
    if (minValue > maxValue) {
      min = maxValue;
      max = minValue;
    } else {
      min = minValue;
      max = maxValue;
    }

    if (value > max) {
      return max;
    }
    if (value < min) {
      return min;
    }

    return value;
  }

  /**
   * Returns <code>true</code> if the given numbers are equal within
   * {@link #EPSILON}; <code>false</code> otherwise.
   */
  public static boolean equals(final double d1, final double d2) {
    return equalToWithin(d1, d2, EPSILON);
  }

  /**
   * Returns <code>true</code> if the given numbers are equal within
   * <code>epsilon</code>; <code>false</code> otherwise.
   */
  public static boolean equalToWithin(final double d1, final double d2,
      final double epsilon) {
    return Math.abs(d1 - d2) < epsilon;
  }

  public static boolean isNonZero(final double d) {
    return !equals(d, ZERO);
  }

  /**
   * Normalizes the given <code>angle</code> (which must be in radians) and
   * returns an angle in the range <code>[-pi,pi)</code>.
   */
  public static double normalizeAngle(final double angle) {
    if ((angle < Math.PI) && (angle >= -Math.PI)) {
      return angle;
    } else if (equals(angle, Math.PI)) {
      return -Math.PI;
    } else if (angle > Math.PI) {
      return normalizeAngle(angle - 2 * Math.PI);
    } else {
      return normalizeAngle(angle + 2 * Math.PI);
    }
  }

  private MathUtils() {
    // private to prevent instantiation
  }
}

   
    
    
    
  








Related examples in the same category

1.Convert a float to 16.16 fixed-point representation
2.Convert a 16.16 fixed-point value to floating point
3.Random and Roundup
4.Is Long or double
5.calculate NormDiff
6.DecimalFormat, Maximum Fraction Digits
7.Format Distance
8.Gives the fractional part of a number
9.Close to a value
10.scale, round Number
11.Returns the smallest power of two that is greater than