function bcfact($fact, $scale = 100) { if ($fact == 1) { return 1; } return bcmul($fact, bcfact(bcsub($fact, '1'), $scale), $scale); }
/** * Computes e^this, where e is Euler's constant. * @param <int> $iters * @param <int> $scale * @return blaze\math\BigDecimal */ public function exponentialteWithE($iters = 7, $scale = 100) { /* Compute e^x. */ $res = bcadd('1.0', $this->value, $scale); for ($i = 0; $i < $iters; $i++) { $res += bcdiv(bcpow($this->value, bcadd($i, '2'), $scale), bcfact(bcadd($i, '2'), $scale), $scale); } return new BigDecimal($res); }