NAME
Tie::Math - Hashes which represent mathematical functions.
SYNOPSIS
use Tie::Math;
tie %fibo, 'Tie::Math', sub { f(n) = f(n-1) + f(n-2) },
sub { f(0) = 0; f(1) = 1 };
# Calculate and print the fifth fibonacci number
print $fibo{5};
DESCRIPTION
Defines hashes which represent mathematical functions, such as
the fibonacci sequence, factorials, etc... Functions can be
expressed in a manner which a math or physics student might find
a bit more familiar. It also automatically employs memoization.
Multi-variable functions are supported. f() is simply passed two
variables (f(X,Y) for instance) and the hash is accessed in the
same way ($func{3,-4}).
tie tie %func, 'Tie::Math', \&function; tie %func, 'Tie::Math',
\&function, \&initialization;
&function contains the definition of the mathematical
function. Use the f() subroutine and N index provided. So to
do a simple exponential function represented by "f(N) =
N**2":
tie %exp, 'Tie::Math', sub { f(N) = N**2 };
&initialization contains any special cases of the function
you need to define. In the fibonacci example in the SYNOPSIS
you have to define f(0) = 1 and f(1) = 1;
tie %fibo, 'Tie::Math', sub { f(N) = f(N-1) + f(N-2) },
sub { f(0) = 1; f(1) = 1; };
The &initializaion routine is optional.
Each calculation is "memoized" so that for each element of
the array the calculation is only done once.
While the variable N is given by default, A through Z are
all available. Simply import them explicitly:
# Don't forget to import f()
use Tie::Math qw(f X);
There's no real difference which variable you use, its just
there for your preference. (NOTE: I had to use captial
letters to avoid clashing with the y// operator)
AUTHOR
Michael G Schwern <schwern@pobox.com>
WHAT IS THIS?
This is Tie::Math, a perl module.
HOW DO I INSTALL IT?
To install this module, cd to the directory that contains
this README file and type the following:
perl Makefile.PL
make
make test
make install
To install this module into a specific directory, do: perl
Makefile.PL PREFIX=/name/of/the/directory ...the rest is the
same...
Please also read the perlmodinstall man page, if available.
WHAT ELSE DO I NEED?
Perl 5.6.0 and up