NAME
Math::Cephes::Fraction - Perl interface to the cephes math fraction routines
SYNOPSIS
my
$f1
= fract(2,3);
# $f1 = 2/3
my
$f2
= fract(3,4);
# $f2 = 3/4
my
$f3
=
$f1
->radd(
$f2
);
# $f3 = $f1 + $f2
DESCRIPTION
This module is a layer on top of the basic routines in the cephes math library to handle fractions. A fraction object is created via any of the following syntaxes:
my
$f
= Math::Cephes::Fraction->new(3, 2);
# $f = 3/2
my
$g
= new Math::Cephes::Fraction(5, 3);
# $g = 5/3
my
$h
= fract(7, 5);
# $h = 7/5
the last one being available by importing :fract. If no arguments are specified, as in
my
$h
= fract();
then the defaults $z = 0/1 are assumed. The numerator and denominator of a fraction are represented respectively by
$f
->{n};
$f
->{d}
or, as methods,
$f
->n;
$f
->d;
and can be set according to
$f
->{n} = 4;
$f
->{d} = 9;
or, again, as methods,
$f
->n(4) ;
$f
->(d) = 9;
The fraction can be printed out as
$f
->as_string;
or as a mixed fraction as
$f
->as_mixed_string;
These routines reduce the fraction to its basic form before printing. This uses the euclid routine which finds the greatest common divisor of two numbers, as follows:
(
$gcd
,
$m_reduced
,
$n_reduced
) = euclid(
$m
,
$n
);
which returns the greatest common divisor of $m and $n, as well as the result of reducing $m and $n by $gcd
A summary of the basic routines is as follows.
$x
= fract(3, 4);
# x = 3 / 4
$y
= fract(2, 3);
# y = 2 / 3
$z
=
$x
->radd(
$y
);
# z = x + y
$z
=
$x
->rsub(
$y
);
# z = x - y
$z
=
$x
->rmul(
$y
);
# z = x * y
$z
=
$x
->rdiv(
$y
);
# z = x / y
$z
->{n},
' '
,
$z
->{d};
# prints numerator and denominator of $z
$z
->as_string;
# prints the fraction $z
$z
->as_mixed_string;
# converts $z to a mixed fraction, then prints it
$m
= 60;
$n
= 144;
(
$gcd
,
$m_reduced
,
$n_reduced
) = euclid(
$m
,
$n
);
BUGS
Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca>
SEE ALSO
For the basic interface to the cephes fraction routines, see Math::Cephes. See also Math::Fraction for a more extensive interface to fraction routines.
COPYRIGHT
The C code for the Cephes Math Library is Copyright 1984, 1987, 1989, 2002 by Stephen L. Moshier, and is available at http://www.netlib.org/cephes/. Direct inquiries to 30 Frost Street, Cambridge, MA 02140.
The perl interface is copyright 2000, 2002 by Randy Kobes. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.