| @@ 51-65 (lines=15) @@ | ||
| 48 | $continue = true; |
|
| 49 | $termNumber = $startTermAt; |
|
| 50 | ||
| 51 | while ($continue) { |
|
| 52 | $term = Numbers::makeOne(); |
|
| 53 | ||
| 54 | $term = $term->multiply($value->pow($exponent($termNumber))) |
|
| 55 | ->divide($denominator($termNumber)) |
|
| 56 | ->multiply($numerator($termNumber)); |
|
| 57 | ||
| 58 | if ($term->numberOfLeadingZeros() >= $precision) { |
|
| 59 | $continue = false; |
|
| 60 | } |
|
| 61 | ||
| 62 | $x = $x->add($term); |
|
| 63 | ||
| 64 | $termNumber++; |
|
| 65 | } |
|
| 66 | ||
| 67 | return $x->roundToPrecision($precision); |
|
| 68 | ||
| @@ 84-97 (lines=14) @@ | ||
| 81 | $continue = true; |
|
| 82 | $termNumber = $startTermAt; |
|
| 83 | ||
| 84 | while ($continue) { |
|
| 85 | $term = Numbers::makeOne(); |
|
| 86 | ||
| 87 | $term = $term->multiply($part2($termNumber))->pow($exponent($termNumber)) |
|
| 88 | ->multiply($part1($termNumber)); |
|
| 89 | ||
| 90 | if ($term->numberOfLeadingZeros() >= $precision) { |
|
| 91 | $continue = false; |
|
| 92 | } |
|
| 93 | ||
| 94 | $x = $x->add($term); |
|
| 95 | ||
| 96 | $termNumber++; |
|
| 97 | } |
|
| 98 | ||
| 99 | return $x->roundToPrecision($precision); |
|
| 100 | ||