module Factory.Math.Implementations.Pi.Spigot.RabinowitzWagon(
series
) where
import qualified Factory.Math.Implementations.Pi.Spigot.Series as Math.Implementations.Pi.Spigot.Series
import qualified Factory.Math.Precision as Math.Precision
series :: Integral i => Math.Implementations.Pi.Spigot.Series.Series i
series :: Series i
series = MkSeries :: forall i.
[i] -> [i] -> [i] -> (DecimalDigits -> DecimalDigits) -> Series i
Math.Implementations.Pi.Spigot.Series.MkSeries {
baseNumerators :: [i]
Math.Implementations.Pi.Spigot.Series.baseNumerators = [i
1 ..],
baseDenominators :: [i]
Math.Implementations.Pi.Spigot.Series.baseDenominators = [i
3, i
5 ..],
coefficients :: [i]
Math.Implementations.Pi.Spigot.Series.coefficients = i -> [i]
forall a. a -> [a]
repeat i
2,
nTerms :: DecimalDigits -> DecimalDigits
Math.Implementations.Pi.Spigot.Series.nTerms = ConvergenceRate -> DecimalDigits -> DecimalDigits
forall i. Integral i => ConvergenceRate -> DecimalDigits -> i
Math.Precision.getTermsRequired (ConvergenceRate -> DecimalDigits -> DecimalDigits)
-> ConvergenceRate -> DecimalDigits -> DecimalDigits
forall a b. (a -> b) -> a -> b
$ ConvergenceRate
10 ConvergenceRate -> ConvergenceRate -> ConvergenceRate
forall a. Floating a => a -> a -> a
** ConvergenceRate -> ConvergenceRate
forall a. Num a => a -> a
negate (ConvergenceRate
3 ConvergenceRate -> ConvergenceRate -> ConvergenceRate
forall a. Fractional a => a -> a -> a
/ ConvergenceRate
10)
}