use v6;
role Math::Basic;
multi sub abs (: Num ?$x = $CALLER::_ )
returns Num { ... }
multi sub exp (: Num ?$exponent = $CALLER::_, Num +$base )
returns Num { ... }
multi sub log (: Num ?$x = $CALLER::_, Num +$base where { $base > 0 })
returns Num { ... }
# mmm, curry!
&log10<> := &log<>.assuming:base(10);
multi sub rand (: Num ?$x = 1, Num +$seed )
returns Num { ... }
multi sub sign (: Num ?$x = $CALLER::_)
returns Int { ( defined $x
? ( ($x > 0)
? 1
: ($x < 0 ? -1 : 0 ) )
: undef ) }
multi sub sqrt (: Num ?$x = $CALLER::_)
returns Num { exp($x,0.5) }
1;