From d40e69151613169aa47e5ced653ae32a387ae106 Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Mon, 6 May 2019 07:15:29 +1000 Subject: Solutions to w6 ch2 W6Ch2 solutions Also fixed a bug in 4W --- challenge-006/ruben-westerberg/perl5/ch-2.pl | 5 +++++ challenge-006/ruben-westerberg/perl6/ch-2.p6 | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100755 challenge-006/ruben-westerberg/perl5/ch-2.pl create mode 100755 challenge-006/ruben-westerberg/perl6/ch-2.p6 diff --git a/challenge-006/ruben-westerberg/perl5/ch-2.pl b/challenge-006/ruben-westerberg/perl5/ch-2.pl new file mode 100755 index 0000000000..73928169ae --- /dev/null +++ b/challenge-006/ruben-westerberg/perl5/ch-2.pl @@ -0,0 +1,5 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use bigrat qw; +print bexp(bpi(50)*sqrt(163),50); diff --git a/challenge-006/ruben-westerberg/perl6/ch-2.p6 b/challenge-006/ruben-westerberg/perl6/ch-2.p6 new file mode 100755 index 0000000000..a82f43c516 --- /dev/null +++ b/challenge-006/ruben-westerberg/perl6/ch-2.p6 @@ -0,0 +1,27 @@ +#!/usr/bin/env perl6 + +my $bigPi=FatRat.new(31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679,10**100); + +sub factorial($n) { + constant @f= (1.FatRat, |[\*] 1.FatRat..*); + @f[$n]; +} +sub taylor-e ($atVal) { + + my $sum=0.FatRat; + my $x=$atVal.FatRat; + for 0..200 { + $sum+=($x**$_)/factorial($_); + say "Iteration $_: " ~ $sum.Str.substr(0,50); + } + $sum; +} + +sub newton-sqrt($val, $target, $repeat){ + my $guess=$val.FatRat; + for ^$repeat { + $guess:=($guess - ($guess**2 -$target)/(2*$guess)); + } + $guess; +} +say taylor-e($bigPi*newton-sqrt(10,163,6)).Str.substr(0,50); -- cgit