Abstraction of numeric types with the usual binary operations:

  • addition, x + y,
  • subtraction, x - y,
  • multiplication, x * y, and
  • division, x / y, along with
  • additive inverse -x.

A concrete class which implements this interface should be a mathematical ring. That is:

  • both addition, +, and multiplication, *, should be associative and commutative,
  • there should be additive and multiplicative identities, denoted 0 and 1 respectively, satisfying x+0 == x and x*1 == x,
  • every instance x should have an additive inverse -x, satisfying x + -x == 0, and
  • multiplication should distribute over addition, satisfying x*(y+z) == x*y + x*z.

It is preferred, but not required, that the class be a mathematical field. That is, in addition to the above:

  • every instance x such that x!=0 should have a multiplicative inverse 1/x, satisfying x * 1/x == 1.

For numeric types which are not fields, for example, Integer, there is still a division operation, which is understood to produce a remainder. The division operation should satisfy:

  • x*y / y == x

for any instance y other than 0.

For numeric types which are fields, division never produces a remainder, and division should additionally satisfy:

  • x/y * y == x

for any instance y other than 0.

Some numeric types, for example complex numbers, do not have a total order. Numeric types with a total order also satisfy Number.

By: Gavin
See also Number

no type hierarchy

Inherited Attributes
Attributes inherited from: Object
Attributes inherited from: Invertible<Other>
Methods
dividedshared formal Other divided(Other other)

The quotient obtained by dividing this number by the given number. For integral numeric types, this operation results in a remainder.

When the given number is 0, the additive identity, the behavior depends on the numeric type:

  • For some numeric types, including Integer, division by 0 results in an exception.
  • For others, including Float, it results in a special value of the type, for example, infinity.
timesshared formal Other times(Other other)

The product of this number and the given number.

Inherited Methods
Methods inherited from: Object
Methods inherited from: Invertible<Other>
Methods inherited from: Summable<Other>