Class Interpolation

java.lang.Object
org.apache.commons.statistics.descriptive.Interpolation

final class Interpolation extends Object
Support class for interpolation.
Since:
1.1
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final double
    0.5.
    private static final double
    2^63.
    private static final long
    The value 2^53 converted for comparison as an unsigned integer.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    No instances.
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) static double
    interpolate(double a, double b, double t)
    Linear interpolation between sorted values a <= b using the interpolant t taking care to avoid overflow.
    (package private) static StatisticResult
    interpolate(long a, long b, double t)
    Linear interpolation between sorted values a <= b using the interpolant t.
    (package private) static double
    mean(double x, double y)
    Compute the arithmetic mean of the two values taking care to avoid overflow.
    (package private) static double
    mean(int x, int y)
    Compute the arithmetic mean of the two values.
    (package private) static StatisticResult
    mean(long x, long y)
    Compute the arithmetic mean of the two values.
    (package private) static double
    meanAsDouble(long x, long y)
    Compute the arithmetic mean of the two values as a double.
    (package private) static long
    meanAsLong(long x, long y)
    Compute the arithmetic mean of the two values as a long.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • HALF

      private static final double HALF
      0.5.
      See Also:
    • UNSIGNED_2_POW_53

      private static final long UNSIGNED_2_POW_53
      The value 2^53 converted for comparison as an unsigned integer.
      See Also:
    • TWO_POW_63

      private static final double TWO_POW_63
      2^63.
      See Also:
  • Constructor Details

    • Interpolation

      private Interpolation()
      No instances.
  • Method Details

    • mean

      static double mean(double x, double y)
      Compute the arithmetic mean of the two values taking care to avoid overflow.
      Parameters:
      x - Value.
      y - Value.
      Returns:
      the mean
    • mean

      static double mean(int x, int y)
      Compute the arithmetic mean of the two values.
      Parameters:
      x - Value.
      y - Value.
      Returns:
      the mean
    • meanAsDouble

      static double meanAsDouble(long x, long y)
      Compute the arithmetic mean of the two values as a double.
      Parameters:
      x - Value.
      y - Value.
      Returns:
      the mean
    • meanAsLong

      static long meanAsLong(long x, long y)
      Compute the arithmetic mean of the two values as a long.

      The result value is the nearest whole number to the result, with ties rounding towards positive infinity. This is equivalent to the ceiling average.

      Parameters:
      x - Value.
      y - Value.
      Returns:
      the mean
    • mean

      static StatisticResult mean(long x, long y)
      Compute the arithmetic mean of the two values.

      The result long value is the nearest whole number to the result, with ties rounding towards positive infinity. This is equivalent to the ceiling average.

      Parameters:
      x - Value.
      y - Value.
      Returns:
      the mean
    • interpolate

      static double interpolate(double a, double b, double t)
      Linear interpolation between sorted values a <= b using the interpolant t taking care to avoid overflow.
      value = a + t * (b - a)
      

      Note

      This function has the same properties of as the C++ function std::lerp for t in (0, 1) and b >= a. It is not a full implementation as it removes explicit checks for t==0 and t==1 and does not support extrapolation as the usage is intended for interpolation of sorted values. The function is monotonic and avoids overflow for finite a and b.

      Interpolation between equal signed infinity arguments will return a. Alternative implementations may return NaN for this case. Thus this method interprets infinity values as equivalent and avoids interpolation.

      Parameters:
      a - Min value.
      b - Max value.
      t - Interpolant in (0, 1).
      Returns:
      the value
    • interpolate

      static StatisticResult interpolate(long a, long b, double t)
      Linear interpolation between sorted values a <= b using the interpolant t.
      value = a + t * (b - a)
      

      The long value is the nearest whole number to the result, with ties rounding towards positive infinity. This value will be in [a, b].

      The double value is computed within 1 ULP of the exact result. In some cases this may be outside the range [a, b] due to rounding to a 53-bit representation.

      Note

      This function does not support extrapolation as the usage is intended for interpolation of sorted values.

      Parameters:
      a - Min value.
      b - Max value.
      t - Interpolant in [0, 1].
      Returns:
      the value