Class ModuloInteger

All Implemented Interfaces:
Serializable, Comparable<ModuloInteger>, javolution.lang.Immutable, javolution.lang.Realtime, javolution.lang.ValueType, javolution.xml.XMLSerializable, Field<ModuloInteger>, GroupAdditive<ModuloInteger>, GroupMultiplicative<ModuloInteger>, Ring<ModuloInteger>, Structure<ModuloInteger>

public final class ModuloInteger extends Number<ModuloInteger> implements Field<ModuloInteger>

This class represents a modulo integer. It can be used in conjonction with the Matrix class to resolve modulo equations (ref. number theory).

See Also:
  • Field Details

    • ZERO

      public static final ModuloInteger ZERO
      The modulo integer representing the additive identity.
    • ONE

      public static final ModuloInteger ONE
      The modulo integer representing the multiplicative identity.
  • Method Details

    • valueOf

      public static ModuloInteger valueOf(LargeInteger value)
      Returns the modulo integer having the specified value (independently of the current modulo).
      Parameters:
      value - the modulo integer intrinsic value.
      Returns:
      the corresponding modulo number.
    • valueOf

      public static ModuloInteger valueOf(CharSequence chars)
      Returns the modulo integer for the specified character sequence in decimal number.
      Parameters:
      chars - the character sequence.
      Returns:
      the corresponding modulo number.
    • getModulus

      public static LargeInteger getModulus()
      Returns the local modulus for modular arithmetic or null if the arithmetic operations are non-modular (default).
      Returns:
      the local modulus or null if none.
      See Also:
    • setModulus

      public static void setModulus(LargeInteger modulus)
      Sets the local modulus for modular arithmetic.
      Parameters:
      modulus - the new modulus or null to unset the modulus.
      Throws:
      IllegalArgumentException - if modulus <= 0
    • moduloValue

      public LargeInteger moduloValue()
      Returns the current modulo value of this number. If the modulus is set to null the intrinsic value (the creation value) is returned.
      Returns:
      the positive number equals to this number modulo modulus or this modulo creation value.
    • toText

      public javolution.text.Text toText()
      Returns the text representation of the current modulo value of this number.
      Specified by:
      toText in interface javolution.lang.Realtime
      Specified by:
      toText in class Number<ModuloInteger>
      Returns:
      the representation of its modulo value.
    • equals

      public boolean equals(Object that)
      Compares this modulo integer against the specified object independently of the current modulus.
      Specified by:
      equals in class Number<ModuloInteger>
      Parameters:
      that - the object to compare with.
      Returns:
      true if that is a modulo number with the same intrinsic value; false otherwise.
    • hashCode

      public int hashCode()
      Returns the hash code for this large integer number.
      Specified by:
      hashCode in class Number<ModuloInteger>
      Returns:
      the hash code value.
    • isLargerThan

      public boolean isLargerThan(ModuloInteger that)
      Description copied from class: Number
      Compares the magnitude of this number with that number.
      Specified by:
      isLargerThan in class Number<ModuloInteger>
      Returns:
      |this| > |that|
    • longValue

      public long longValue()
      Description copied from class: Number
      Returns the value of this number as a long.
      Specified by:
      longValue in class Number<ModuloInteger>
      Returns:
      the numeric value represented by this object after conversion to type long.
    • doubleValue

      public double doubleValue()
      Description copied from class: Number
      Returns the value of this number as a double.
      Specified by:
      doubleValue in class Number<ModuloInteger>
      Returns:
      the numeric value represented by this object after conversion to type double.
    • compareTo

      public int compareTo(ModuloInteger that)
      Description copied from class: Number
      Compares this number with the specified number for order. Returns a negative integer, zero, or a positive integer as this number is less than, equal to, or greater than the specified number. Implementation must ensure that this method is consistent with equals (x.compareTo(y)==0) == (x.equals(y)),
      Specified by:
      compareTo in interface Comparable<ModuloInteger>
      Specified by:
      compareTo in class Number<ModuloInteger>
      Parameters:
      that - the number to be compared.
      Returns:
      a negative integer, zero, or a positive integer as this number is less than, equal to, or greater than the specified number.
    • times

      public ModuloInteger times(ModuloInteger that)
      Description copied from interface: Ring
      Returns the product of this object with the one specified.
      Specified by:
      times in interface GroupMultiplicative<ModuloInteger>
      Specified by:
      times in interface Ring<ModuloInteger>
      Parameters:
      that - the object multiplier.
      Returns:
      this ยท that.
    • plus

      public ModuloInteger plus(ModuloInteger that)
      Description copied from interface: GroupAdditive
      Returns the sum of this object with the one specified.
      Specified by:
      plus in interface GroupAdditive<ModuloInteger>
      Parameters:
      that - the object to be added.
      Returns:
      this + that.
    • opposite

      public ModuloInteger opposite()
      Description copied from interface: GroupAdditive
      Returns the additive inverse of this object. It is the object such as this.plus(this.opposite()) == ZERO, with ZERO being the additive identity.
      Specified by:
      opposite in interface GroupAdditive<ModuloInteger>
      Returns:
      -this.
    • inverse

      public ModuloInteger inverse()
      Description copied from interface: GroupMultiplicative
      Returns the multiplicative inverse of this object. It it the object such as this.times(this.inverse()) == ONE , with ONE being the multiplicative identity.
      Specified by:
      inverse in interface GroupMultiplicative<ModuloInteger>
      Returns:
      ONE / this.
    • copy

      public ModuloInteger copy()
      Description copied from class: Number
      Returns a copy of this number allocated by the calling thread (possibly on the stack).
      Specified by:
      copy in interface javolution.lang.ValueType
      Specified by:
      copy in class Number<ModuloInteger>
      Returns:
      an identical and independant copy of this number.