# Class Pi

java.lang.Object
org.apfloat.samples.Pi

Direct Known Subclasses:
  `PiParallel`

public class Pi extends Object
Calculates pi using four different algorithms.

Version:
  1.14.0
Author:
  Mikko Tommila

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected static class`
  `Pi.AbstractBinarySplittingSeries`
  Abstract base class for the binary splitting series.
  `protected static class`
  `Pi.BinarySplittingPiCalculator`
  Class for implementing the binary splitting algorithm.
  `static class`
  `Pi.BinarySplittingProgressIndicator`
  Indicates progress of the pi calculation using the binary splitting algorithm.
  `protected static interface`
  `Pi.BinarySplittingSeries`
  Terms for the binary splitting series.
  `static class`
  `Pi.BorweinPiCalculator`
  Calculates pi using the Borweins' quartic algorithm.
  `protected static class`
  `Pi.ChudnovskyBinarySplittingSeries`
  Chudnovskys' algorithm terms for the binary splitting series.
  `static class`
  `Pi.ChudnovskyPiCalculator`
  Basic class for calculating pi using the Chudnovskys' binary splitting algorithm.
  `static class`
  `Pi.GaussLegendrePiCalculator`
  Calculates pi using the Gauss-Legendre algorithm.
  `protected static class`
  `Pi.RamanujanBinarySplittingSeries`
  Ramanujan's algorithm terms for the binary splitting series.
  `static class`
  `Pi.RamanujanPiCalculator`
  Basic class for calculating pi using the Ramanujan binary splitting algorithm.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static PrintWriter`
  `err`
  Output stream for status messages printout.
  `protected static PrintWriter`
  `out`
  Output stream for the result printout.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static PrintWriter`
  `getErr()`
  Get the output stream for status messages printout.
  `protected static int`
  `getInt(String arg, String name, int minValue, int maxValue)`
  Parse an integer from an argument.
  `protected static long`
  `getLong(String arg, String name, long minValue, long maxValue)`
  Parse a long from an argument.
  `static PrintWriter`
  `getOut()`
  Get the output stream for the result printout.
  `protected static long`
  `getPrecision(String arg)`
  Parse the precision from an argument.
  `protected static int`
  `getRadix(String arg)`
  Parse the radix from an argument.
  `static void`
  `main(String[] args)`
  Command-line entry point.
  `static void`
  `run(long precision, int radix, Operation<Apfloat> operation)`
  Execute an operation and display some additional information.
  `static void`
  `setErr(PrintWriter err)`
  Set the output stream for status messages printout.
  `static void`
  `setOut(PrintWriter out)`
  Set the output stream for the result printout.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### out

    protected static PrintWriter out
    Output stream for the result printout.

  - ### err

    protected static PrintWriter err
    Output stream for status messages printout.

- ## Method Details

  - ### getLong

    protected static long getLong(String arg, String name, long minValue, long maxValue)
    Parse a long from an argument.
    Parameters:
      `arg` - The string to be parsed.
      `name` - Description of the argument.
      `minValue` - Minimum allowed value.
      `maxValue` - Maximum allowed value.
    Returns:
      Valid `long`.

  - ### getInt

    protected static int getInt(String arg, String name, int minValue, int maxValue)
    Parse an integer from an argument.
    Parameters:
      `arg` - The string to be parsed.
      `name` - Description of the argument.
      `minValue` - Minimum allowed value.
      `maxValue` - Maximum allowed value.
    Returns:
      Valid integer.

  - ### getPrecision

    protected static long getPrecision(String arg)
    Parse the precision from an argument.
    Parameters:
      `arg` - The string to be parsed.
    Returns:
      Valid precision.

  - ### getRadix

    protected static int getRadix(String arg)
    Parse the radix from an argument.
    Parameters:
      `arg` - The string to be parsed.
    Returns:
      Valid radix.

  - ### run

    public static void run(long precision, int radix, Operation<Apfloat> operation) throws IOException, ApfloatRuntimeException
    Execute an operation and display some additional information. The return value of the operation is written to `out`.
    Parameters:
      `precision` - The precision to be used.
      `radix` - The radix to be used.
      `operation` - The operation to execute.
    Throws:
      `IOException` - In case writing the output fails.
      `ApfloatRuntimeException`

  - ### setOut

    public static void setOut(PrintWriter out)
    Set the output stream for the result printout.
    Parameters:
      `out` - The output stream.

  - ### getOut

    public static PrintWriter getOut()
    Get the output stream for the result printout.
    Returns:
      The output stream.

  - ### setErr

    public static void setErr(PrintWriter err)
    Set the output stream for status messages printout.
    Parameters:
      `err` - The output stream.

  - ### getErr

    public static PrintWriter getErr()
    Get the output stream for status messages printout.
    Returns:
      The output stream.

  - ### main

    public static void main(String[] args) throws IOException, ApfloatRuntimeException
    Command-line entry point.
    Parameters:
      `args` - Command-line parameters.
    Throws:
      `IOException` - In case writing the output fails.
      `ApfloatRuntimeException`