Skip to content

Instantly share code, notes, and snippets.

@drupol
Last active January 6, 2020 09:19
Show Gist options
  • Save drupol/cc96ddf03b222796c363bcad32262cdd to your computer and use it in GitHub Desktop.
Save drupol/cc96ddf03b222796c363bcad32262cdd to your computer and use it in GitHub Desktop.
Approximate the value of number e
<?php
declare(strict_types=1);
include 'vendor/autoload.php';
https://github.com/loophp/collection
use loophp\collection\Collection;
$multiplication = static function ($value1, $value2) {
return $value1 * $value2;
};
$addition = static function ($value1, $value2) {
return $value1 + $value2;
};
$fact = static function (int $number) use ($multiplication) {
return Collection::range(1, $number + 1)
->reduce(
$multiplication,
1
);
};
$e = static function (int $value) use ($fact): float {
return $value / $fact($value);
};
$number_e_approximation = Collection::times(INF, $e)
->until(static function (float $value): bool {return $value < 10 ** -12;})
->reduce($addition);
var_dump($number_e_approximation); // 2.718281828459
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment