Package dev.nm.number

Class Real

All Implemented Interfaces:
AbelianGroup<Real>, Field<Real>, Monoid<Real>, Ring<Real>, Serializable, Comparable<Real>
Direct Known Subclasses:
VariancebtX

public class Real extends Number implements Field<Real>, Comparable<Real>
A real number is an arbitrary precision number. This implementation is simply a wrapper around BigDecimal and implements the Field interface.

This class is immutable.

See Also:
  • Field Details

    • ZERO

      public static final Real ZERO
      a number representing 0
    • ONE

      public static final Real ONE
      a number representing 1
  • Constructor Details

    • Real

      public Real(double value)
      Construct a Real from a double.
      Parameters:
      value - a double
    • Real

      public Real(long value)
      Construct a Real from an integer.
      Parameters:
      value - an integer
    • Real

      public Real(BigDecimal value)
      Construct a Real from a BigDecimal.
      Parameters:
      value - a BigDecimal
    • Real

      public Real(BigInteger value)
      Construct a Real from a BigInteger.
      Parameters:
      value - a BigInteger
    • Real

      public Real(String value)
      Construct a Real from a String.
      Parameters:
      value - a String representation of a number
  • Method Details

    • toBigDecimal

      public BigDecimal toBigDecimal()
      Convert this number to a BigDecimal.
      Returns:
      the value in BigDecimal
    • intValue

      public int intValue()
      Specified by:
      intValue in class Number
    • longValue

      public long longValue()
      Specified by:
      longValue in class Number
    • floatValue

      public float floatValue()
      Specified by:
      floatValue in class Number
    • doubleValue

      public double doubleValue()
      Specified by:
      doubleValue in class Number
    • add

      public Real add(Real that)
      Description copied from interface: AbelianGroup
      + : G × G → G
      Specified by:
      add in interface AbelianGroup<Real>
      Parameters:
      that - the object to be added
      Returns:
      this + that
    • minus

      public Real minus(Real that)
      Description copied from interface: AbelianGroup
      - : G × G → G

      The operation "-" is not in the definition of of an additive group but can be deduced. This function is provided for convenience purpose. It is equivalent to

      this.add(that.opposite())
      .
      Specified by:
      minus in interface AbelianGroup<Real>
      Parameters:
      that - the object to be subtracted (subtrahend)
      Returns:
      this - that
    • opposite

      public Real opposite()
      Description copied from interface: AbelianGroup
      For each a in G, there exists an element b in G such that a + b = b + a = 0. That is, it is the object such as
      this.add(this.opposite()) == this.ZERO
      Specified by:
      opposite in interface AbelianGroup<Real>
      Returns:
      -this, the additive opposite
      See Also:
    • multiply

      public Real multiply(Real that)
      Description copied from interface: Monoid
      × : G × G → G
      Specified by:
      multiply in interface Monoid<Real>
      Parameters:
      that - the multiplicand
      Returns:
      this × that
    • divide

      public Real divide(Real that)
      Description copied from interface: Field
      / : F × F → F

      That is the same as

      this.multiply(that.inverse())
      Specified by:
      divide in interface Field<Real>
      Parameters:
      that - the denominator
      Returns:
      this / that
    • divide

      public Real divide(Real that, int scale)
      / : R × R → R

      Divide this number by another one. Rounding is performed with the specified scale.

      Parameters:
      that - another non-zero real number
      scale - rounding scale as in BigDecimal
      Returns:
      this/that
    • inverse

      public Real inverse() throws Field.InverseNonExistent
      Description copied from interface: Field
      For each a in F, there exists an element b in F such that a × b = b × a = 1. That is, it is the object such as
      this.multiply(this.inverse()) == this.ONE
      Specified by:
      inverse in interface Field<Real>
      Returns:
      1 / this if it exists
      Throws:
      Field.InverseNonExistent - if the inverse does not exist
      See Also:
    • ZERO

      public Real ZERO()
      Description copied from interface: AbelianGroup
      The additive element 0 in the group, such that for all elements a in the group, the equation 0 + a = a + 0 = a holds.
      Specified by:
      ZERO in interface AbelianGroup<Real>
      Returns:
      0, the additive identity
    • ONE

      public Real ONE()
      Description copied from interface: Monoid
      The multiplicative element 1 in the group such that for any elements a in the group, the equation 1 × a = a × 1 = a holds.
      Specified by:
      ONE in interface Monoid<Real>
      Returns:
      1
    • compareTo

      public int compareTo(Real that)
      Specified by:
      compareTo in interface Comparable<Real>
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object