=begin pod =TITLE role Numeric role Numeric { ... } Common role for numbers and types that can act as numbers. Binary numeric operations return an object of the "wider" type: Int narrowest Rat FatRat Num Complex widest So for example the product of a L and an L return a L. Unary operations that in pure math usually return an irrational number generally return L in Perl 6. =head1 Methods =head2 Real method Real(Numeric:D:) returns Real:D If this C is equivalent to a C, return that C. Fail with C otherwise. =head2 Int method Int(Numeric:D:) returns Int:D If this C is equivalent to a C, return the equivalent of calling C on that C to get an C. Fail with C otherwise. =head2 Rat method Rat(Numeric:D: Real $epsilon = 1.0e-6) returns Rat:D If this C is equivalent to a C, return a C which is within C<$epsilon> of that C's value. Fail with C otherwise. =head2 Num method Num(Numeric:D:) returns Num:D If this C is equivalent to a C, return that C as a C as accurately as is possible. Fail with C otherwise. =head2 ACCEPTS multi method ACCEPTS(Numeric:D: $other) Returns True if C<$other> is numerically the same as the invocant. =head2 log multi sub log(Numeric:D, Numeric $base = e) returns Numeric:D multi method log(Numeric:D: Numeric $base = e) returns Numeric:D Calculates the logarithm to base C<$base>. Defaults to the natural logarithm. =head2 log10 multi sub log10(Numeric:D ) returns Numeric:D multi method log10(Numeric:D:) returns Numeric:D Calculates the logarithm to base 10. =head2 exp multi sub exp(Numeric:D, Numeric:D $base = e) returns Numeric:D multi method exp(Numeric:D: Numeric:D $base = e) returns Numeric:D Returns C<$base> to the power of the number, or C to the power of the number if called without a second argument. =head2 roots multi method roots(Numeric:D: Int:D $n) returns Positional Returns a list of the C<$n> complex roots, which evaluate to the original number when raised to the C<$n>th power. =head2 abs multi sub abs(Numeric:D ) returns Real:D multi method abs(Numeric:D:) returns Real:D Returns the absolute value of the number. =head2 sqrt mulit sub sqrt(Numeric:D) returns Numeric:D mulit method sqrt(Numeric:D) returns Numeric:D Returns a square root of the number. For real numbers the positive square root is returned. On negative real numbers, C returns C rather than a complex number, in order to not confuse people who are not familiar with complex arithemtic. If you want to calculate complex square roots, coerce to C first, or use the C method. =head2 conj multi method conj(Numeric:D) returns Numeric:D Returns the complex conjugate of the number. Returns the number itself for real numbers. =head2 Bool multi method Bool(Numeric:D:) Returns C if the number is equivalent to zero, and C otherwise. =head2 succ method succ(Numerid:D:) Returns the number incremented by one (successor). =head2 pred method pred(Numerid:D:) Returns the number decremented by one (predecessor). =end pod