square_root_method.pl 480 B

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 01 October 2016
  5. # Website: https://github.com/trizen
  6. # Approximate the square root of a number.
  7. use 5.010;
  8. use strict;
  9. use warnings;
  10. use Math::AnyNum qw(:overload);
  11. sub square_root {
  12. my ($n) = @_;
  13. my $eps = 10**-($Math::AnyNum::PREC >> 2);
  14. my $m = $n;
  15. my $r = 0.0;
  16. while (abs($m - $r) > $eps) {
  17. $m = ($m + $r) / 2;
  18. $r = $n / $m;
  19. }
  20. $r;
  21. }
  22. say square_root(1234);