# NAME

``  Math::Cephes::Fraction - Perl interface to the cephes math fraction routines``

# SYNOPSIS

``````  use Math::Cephes::Fraction qw(fract);
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

``  print \$f->as_string;``

or as a mixed fraction as

``  print \$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
print \$z->{n}, ' ', \$z->{d};  # prints numerator and denominator of \$z
print \$z->as_string;         # prints the fraction \$z
print \$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>