Author: lwall Date: 2009-11-17 18:43:12 +0100 (Tue, 17 Nov 2009) New Revision: 29111
Modified: docs/Perl6/Spec/S02-bits.pod Log: [S02] more Rat and Ratio clarification Modified: docs/Perl6/Spec/S02-bits.pod =================================================================== --- docs/Perl6/Spec/S02-bits.pod 2009-11-17 17:28:47 UTC (rev 29110) +++ docs/Perl6/Spec/S02-bits.pod 2009-11-17 17:43:12 UTC (rev 29111) @@ -649,12 +649,11 @@ machines that are not natively 2's complement. You must convert to and from C<Int> to do portable bitops on such ancient hardware.) -(C<Num> may support arbitrary-precision floating-point arithmetic, but -is not required to unless we can do so portably and efficiently. C<Num> -must support the largest native floating point format that runs at full -speed.) +C<Num> must support the largest native floating point format that +runs at full speed. It may be bound to an arbitrary precision type, +but by default it is the same type as a native C<num>. See below. -C<Rat> supports arbitrary precision rational arithmetic. +C<Rat> supports extended precision rational arithmetic. Dividing two C<Int> objects using C<< infix:</> >> produces a a C<Rat>, which is generally usable anywhere a C<Num> is usable, but may also be explicitly cast to C<Num>. (Also, if either side is @@ -688,8 +687,14 @@ the Big Bang with picosecond precision. Though perhaps not with picosecond accuracy...) -For applications that really need arbitrary precision denominators -as well as numerators, C<Ratio> may be used, which is defined as C<Int/Int>. +For applications that really need arbitrary precision denominators as +well as numerators at the cost of performance, C<Ratio> may be used, +which is stored as C<Int/Int>, that is, as arbitrary precision in +both parts. There is no literal form for a C<Ratio>, so it must +be constructed using C<Ratio.new($nu,$de)>. In general, only math +operators with at least one C<Ratio> argument will return another +C<Ratio>, to prevent accidental promotion of reasonably fast C<Rat> +values into arbitrarily slow C<Ratio> values. =item *