Package ch.obermuhlner.math.big.internal
Class SeriesCalculator
java.lang.Object
ch.obermuhlner.math.big.internal.SeriesCalculator
- Direct Known Subclasses:
AsinCalculator
,AtanhCalculator
,CosCalculator
,CoshCalculator
,ExpCalculator
,SinCalculator
,SinhCalculator
Utility class to calculate taylor series efficiently until the maximum error (as defined by the precision in the
MathContext
is reached.
Stores the factors of the taylor series terms so that future calculations will be faster.
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Constructs aSeriesCalculator
that calculates single terms.protected
SeriesCalculator
(boolean calculateInPairs) Constructs aSeriesCalculator
with control over whether the sum terms are calculated in pairs. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addFactor
(BigRational factor) calculate
(BigDecimal x, MathContext mathContext) Calculates the series for the specified value x and the precision defined in theMathContext
.protected abstract void
Calculates the factor of the next term.protected abstract PowerIterator
createPowerIterator
(BigDecimal x, MathContext mathContext) Creates thePowerIterator
used for this series.protected abstract BigRational
Returns the factor of the highest term already calculated.protected BigRational
getFactor
(int index) Returns the factor of the term with specified index.
-
Field Details
-
calculateInPairs
private final boolean calculateInPairs -
factors
-
-
Constructor Details
-
SeriesCalculator
protected SeriesCalculator()Constructs aSeriesCalculator
that calculates single terms. -
SeriesCalculator
protected SeriesCalculator(boolean calculateInPairs) Constructs aSeriesCalculator
with control over whether the sum terms are calculated in pairs.Calculation of pairs is useful for taylor series where the terms alternate the sign. In these cases it is more efficient to calculate two terms at once check then whether the acceptable error has been reached.
- Parameters:
calculateInPairs
-true
to calculate the terms in pairs,false
to calculate single terms
-
-
Method Details
-
calculate
Calculates the series for the specified value x and the precision defined in theMathContext
.- Parameters:
x
- the value xmathContext
- theMathContext
- Returns:
- the calculated result
-
createPowerIterator
Creates thePowerIterator
used for this series.- Parameters:
x
- the value xmathContext
- theMathContext
- Returns:
- the
PowerIterator
-
getFactor
Returns the factor of the term with specified index. All mutable state of this class (and all its subclasses) must be modified in this method. This method is synchronized to allow thread-safe usage of this class.- Parameters:
index
- the index (starting with 0)- Returns:
- the factor of the specified term
-
addFactor
-
getCurrentFactor
Returns the factor of the highest term already calculated.When called for the first time will return the factor of the first term (index 0).
After this call the method
calculateNextFactor()
will be called to prepare for the next term.- Returns:
- the factor of the highest term
-
calculateNextFactor
protected abstract void calculateNextFactor()Calculates the factor of the next term.
-