Package org.jscience.mathematics.number
package org.jscience.mathematics.number
Provides common types of numbers most of them implementing the
field
interface.
Although numbers defined in this package are not as fast as primitives types
(e.g. int
or double
). They have many
advantages (such as arbitrary size for LargeInteger
or precision for Real
) which
make them irreplaceable in some calculations. This can be illustrated with the following example:
double x = 10864; double y = 18817; double z = 9 * Math.pow(x, 4.0)- Math.pow(y, 4.0) + 2 * Math.pow(y, 2.0); System.out.println("Result : " + z); > Result : 2.0The mathematically correct value is z=1. However, Java compilers using ANSI/IEEE double precision numbers evaluate z=2. Not even the first digit is correct! This is due to a rounding error occurring when subtracting two nearly equal floating point numbers. Now, lets write the same formula using
Real
numbers:int accuracy = 20; // 20 decimal zeros for integer values. Real x = Real.valueOf(10864, accuracy); Real y = Real.valueOf(18817, accuracy); Real z = x.pow(4).times(9).plus(y.pow(4).opposite()).plus(y.pow(2).times(2)); System.out.println("Result : " + z); > Result : 1.00000Not only the correct result is returned, but this result is also guaranteed to be
1 ± 0.00001
.
Only exact digits are written out, for example the following displays the first exact
digits of sqrt(2)
: Real two = Real.valueOf(2, 100); // 2.0000..00 (100 zeros after decimal point). Real sqrt2 = two.sqrt(); System.out.println("sqrt(2) = " + sqrt2); System.out.println("Precision = " + sqrt2.getPrecision() + " digits."); > sqrt(2) = 1.414213562373095048801688724209698078569671875376948 > Precision = 53 digits.
-
ClassDescriptionThis class represents an immutable complex number.This class represents a 64 bits floating point number.This class represents a floating point number of arbitrary precision.This class represents a 64 bits integer number.This class represents an immutable integer number of arbitrary size.This class represents a modulo integer.This class represents a
value-type
number.This class represents the ratio of twoLargeInteger
numbers.This class represents a real number of arbitrary precision with known/guaranteed uncertainty.