# Interface ApfloatImpl

All Superinterfaces:
  `Serializable`

All Known Implementing Classes:
  `DoubleApfloatImpl, FloatApfloatImpl, IntApfloatImpl, LongApfloatImpl`

public interface ApfloatImpl extends Serializable
Interface for apfloat implementations. An `ApfloatImpl` implements all of the low-level functionality that is needed behind the high-level apfloat API.

A class implementing `ApfloatImpl` is not required to accept any other `ApfloatImpl` class as the argument than the same implementing class.

Version:
  1.15.0
Author:
  Mikko Tommila

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ApfloatImpl`
  `absCeil()`
  Returns this `ApfloatImpl` rounded away from zero.
  `ApfloatImpl`
  `absFloor()`
  Returns this `ApfloatImpl` rounded towards zero.
  `ApfloatImpl`
  `addOrSubtract(ApfloatImpl x, boolean subtract)`
  Add or subtract an `ApfloatImpl` to this object.
  `int`
  `compareTo(ApfloatImpl x)`
  Compare this `ApfloatImpl` and another number.
  `ApfloatImpl`
  `divideShort(ApfloatImpl x)`
  Divide this `ApfloatImpl` by an `ApfloatImpl` that is "short".
  `double`
  `doubleValue()`
  Returns the value of the this number as a `double`.
  `long`
  `equalDigits(ApfloatImpl x)`
  The number of equal digits in this `ApfloatImpl` and another number.
  `ApfloatImpl`
  `frac()`
  Returns the fractional part of this `ApfloatImpl`.
  `int`
  `hashCode()`
  Returns the hash code for this `ApfloatImpl`.
  `boolean`
  `isOne()`
  Tests if this number is equal to 1.
  `boolean`
  `isShort()`
  Returns if this `ApfloatImpl` is "short".
  `long`
  `longValue()`
  Returns the value of the this number as a `long`.
  `ApfloatImpl`
  `modShort(ApfloatImpl x)`
  Return the remainder when this `ApfloatImpl` is divided by an `ApfloatImpl` that is "short".
  `ApfloatImpl`
  `multiply(ApfloatImpl x)`
  Multiply this object by an `ApfloatImpl`.
  `ApfloatImpl`
  `negate()`
  Returns this `ApfloatImpl` negated.
  `long`
  `precision()`
  Returns the precision of this `ApfloatImpl`.
  `ApfloatImpl`
  `precision(long precision)`
  Returns this `ApfloatImpl` with the specified precision.
  `int`
  `radix()`
  Returns the radix of this `ApfloatImpl`.
  `long`
  `scale()`
  Returns the scale of this `ApfloatImpl`.
  `int`
  `signum()`
  Returns the signum of this `ApfloatImpl`.
  `long`
  `size()`
  Returns the size of the mantissa of this `ApfloatImpl`.
  `String`
  `toString(boolean pretty)`
  Convert this `ApfloatImpl` to `String`.
  `void`
  `writeTo(Writer out, boolean pretty)`
  Print this `ApfloatImpl` to a stream.

- ## Method Details

  - ### addOrSubtract

    ApfloatImpl addOrSubtract(ApfloatImpl x, boolean subtract) throws ApfloatRuntimeException
    Add or subtract an `ApfloatImpl` to this object.
    Parameters:
      `x` - The number to be added or subtracted to this `ApfloatImpl`.
      `subtract` - `true` if the numbers are to be subtracted, `false` if added.
    Returns:
      `this + x` or `this - x` depending on the `subtract` argument.
    Throws:
      `ApfloatRuntimeException`

  - ### multiply

    ApfloatImpl multiply(ApfloatImpl x) throws ApfloatRuntimeException
    Multiply this object by an `ApfloatImpl`.
    Parameters:
      `x` - The number to be multiplied by this `ApfloatImpl`.
    Returns:
      `this * x`.
    Throws:
      `ApfloatRuntimeException`

  - ### isShort

    boolean isShort() throws ApfloatRuntimeException
    Returns if this `ApfloatImpl` is "short". Typically `ApfloatImpl` is "short" if its mantissa fits in one machine word. If the apfloat is "short", some algorithms can be performed faster.

    The return value of this method is highly implementation dependent.

    Returns:
      `true` if the `ApfloatImpl` is "short", `false` if not.
    Throws:
      `ApfloatRuntimeException`
    See Also:
      - `Apfloat.isShort()`

  - ### divideShort

    ApfloatImpl divideShort(ApfloatImpl x) throws ApfloatRuntimeException
    Divide this `ApfloatImpl` by an `ApfloatImpl` that is "short".
    Parameters:
      `x` - The number by which this `ApfloatImpl` is to be divided.
    Returns:
      `this / x`.
    Throws:
      `ApfloatRuntimeException`

  - ### modShort

    ApfloatImpl modShort(ApfloatImpl x) throws ApfloatRuntimeException
    Return the remainder when this `ApfloatImpl` is divided by an `ApfloatImpl` that is "short".
    Parameters:
      `x` - The modulus.
    Returns:
      `this % x`.
    Throws:
      `ApfloatRuntimeException`
    Since:
      1.15.0

  - ### absFloor

    ApfloatImpl absFloor() throws ApfloatRuntimeException
    Returns this `ApfloatImpl` rounded towards zero.
    Returns:
      This `ApfloatImpl` rounded towards zero.
    Throws:
      `ApfloatRuntimeException`

  - ### absCeil

    ApfloatImpl absCeil() throws ApfloatRuntimeException
    Returns this `ApfloatImpl` rounded away from zero.
    Returns:
      This `ApfloatImpl` rounded away from zero.
    Throws:
      `ApfloatRuntimeException`

  - ### frac

    ApfloatImpl frac() throws ApfloatRuntimeException
    Returns the fractional part of this `ApfloatImpl`.
    Returns:
      The fractional part of this `ApfloatImpl`.
    Throws:
      `ApfloatRuntimeException`
    Since:
      1.7.0

  - ### radix

    int radix()
    Returns the radix of this `ApfloatImpl`.
    Returns:
      The radix of this `ApfloatImpl`.

  - ### precision

    long precision()
    Returns the precision of this `ApfloatImpl`.
    Returns:
      The precision of this `ApfloatImpl`.

  - ### size

    long size() throws ApfloatRuntimeException
    Returns the size of the mantissa of this `ApfloatImpl`.
    Returns:
      The size of the mantissa of this `ApfloatImpl`.
    Throws:
      `ApfloatRuntimeException`
    Since:
      1.2

  - ### precision

    ApfloatImpl precision(long precision) throws ApfloatRuntimeException
    Returns this `ApfloatImpl` with the specified precision.
    Parameters:
      `precision` - The precision.
    Returns:
      This `ApfloatImpl` with the specified precision.
    Throws:
      `ApfloatRuntimeException`

  - ### scale

    long scale() throws ApfloatRuntimeException
    Returns the scale of this `ApfloatImpl`.
    Returns:
      The scale of this `ApfloatImpl`.
    Throws:
      `ApfloatRuntimeException`
    See Also:
      - `Apfloat.scale()`

  - ### signum

    int signum()
    Returns the signum of this `ApfloatImpl`.
    Returns:
      The signum of this `ApfloatImpl`.
    See Also:
      - `Apfloat.signum()`

  - ### negate

    ApfloatImpl negate() throws ApfloatRuntimeException
    Returns this `ApfloatImpl` negated.
    Returns:
      `-this`.
    Throws:
      `ApfloatRuntimeException`

  - ### doubleValue

    double doubleValue()
    Returns the value of the this number as a `double`. If the number is greater than `Double.MAX_VALUE`, then `Double.POSITIVE_INFINITY` is returned.

    If the number is less than `Double.MIN_VALUE`, then `Double.NEGATIVE_INFINITY` is returned.

    If the number is very small in magnitude, underflow may happen and zero is returned.

    Returns:
      The numeric value represented by this object after conversion to type `double`.

  - ### longValue

    long longValue()
    Returns the value of the this number as a `long`. The fractional part is truncated towards zero.

    If the number is greater than `Long.MAX_VALUE`, then `Long.MAX_VALUE` is returned.

    If the number is less than `Long.MIN_VALUE`, then `Long.MIN_VALUE` is returned.

    Returns:
      The numeric value represented by this object after conversion to type `long`.

  - ### isOne

    boolean isOne() throws ApfloatRuntimeException
    Tests if this number is equal to 1.
    Returns:
      `true` if this number is equal to one, otherwise `false`.
    Throws:
      `ApfloatRuntimeException`

  - ### equalDigits

    long equalDigits(ApfloatImpl x) throws ApfloatRuntimeException
    The number of equal digits in this `ApfloatImpl` and another number.
    Parameters:
      `x` - The number to compare with.
    Returns:
      The number of equal digits in this `ApfloatImpl` and `x`.
    Throws:
      `ApfloatRuntimeException`
    See Also:
      - `Apfloat.equalDigits(org.apfloat.Apfloat)`

  - ### compareTo

    int compareTo(ApfloatImpl x) throws ApfloatRuntimeException
    Compare this `ApfloatImpl` and another number.
    Parameters:
      `x` - The number to compare with.
    Returns:
      Zero, less than zero or greater than zero depending on the result of the comparison.
    Throws:
      `ApfloatRuntimeException`
    See Also:
      - `Apfloat.compareTo(org.apfloat.Apfloat)`

  - ### hashCode

    int hashCode()
    Returns the hash code for this `ApfloatImpl`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      The hash code for this `ApfloatImpl`.

  - ### toString

    String toString(boolean pretty) throws ApfloatRuntimeException
    Convert this `ApfloatImpl` to `String`.
    Parameters:
      `pretty` - Flag for formatting.
    Returns:
      String representation of this `ApfloatImpl`.
    Throws:
      `ApfloatRuntimeException`
    See Also:
      - `Apfloat.toString(boolean)`

  - ### writeTo

    void writeTo(Writer out, boolean pretty) throws IOException, ApfloatRuntimeException
    Print this `ApfloatImpl` to a stream.
    Parameters:
      `out` - The stream to write to.
      `pretty` - Flag for formatting.
    Throws:
      `IOException` - In case of I/O error writing to the stream.
      `ApfloatRuntimeException`
    See Also:
      - `Apfloat.writeTo(Writer,boolean)`