ニュートン法
ニュートン法による平方根算出をやってみる
use strict;
use warnings;
use List::Util qw/min/;
sub newton_sqrt {
my $n = shift;
my $p = shift || 8;
my $x = 0;
do {
++$x;
} while (($x ** 2) < $n);
$x += 2;
my @data;
for (0..$x) {
$x = sprintf("%.8f", ($x + $n / $x) / 2);
push @data, $x;
}
return min(@data);
}
print newton_sqrt(2);