But such a demonstrations wasn't necessary for me since I had finished writing the following from scratch before you posted your solution. (I didn't post it since I didn't want to do the OP's homework for him.)
sub ikegami_exp { my ($x) = @_; my $last = 0; my $result = 1; my $acc = 1; for (my $n = 1; abs($result-$last)>0; $n++) { $last = $result; $acc *= $x/$n; $result += $acc; } return $result; } for (1, 0.1, 10, 3.14, 0.1234, 100) { printf("%.16e: exp() = %.16e ikegami_exp() = %.16e\n", $_, exp($_), ikegami_exp($_), ); }
The only difference was the terminating condition, so naturally, that's what interested me :) Mine goes into an infinite loop if you try to find ikegami_exp(1000), but that's easily fixed by replacing abs($result-$last)>0 with $result != $last.
In reply to Re^4: Exponential Function Programming
by ikegami
in thread Exponential Function Programming
by Abulil
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |