[ Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters]
MOOMBA: Modern, Object-Oriented Math(s)-Based Algorithms |
Written by Daniel Prager.
Version 0.1
moomba-v01.zip 219 ( kilobytes) - source code
Daniel.Prager@cmis.csiro.au Daniel Prager (maintainer) mail address.
The MOOMBA project is envisaged as a place to collect together clean, correct, changeable, mathematical algorithms and applications.
It would be an Open Source project.
I have compiled these programs using the lastest SmallEiffel on Windows 98 and Windows NT. There are some problems with C-code-generation, so I recommend compilation with require_checks (or lower) if problems arise.
This has been an exercise for me to learn a bit more about Eiffel, OO, and the FFT algorithm.
More ambitiously, I believe that there would be tremendous spin-offs if a library was constructed in Eiffel that implemented --- and in the process classified --- a broad selection of useful numerical algorithms/structures without significant use of external routines. I expect that such a library would complement EiffelMath nicely.
Pipe-dream ;-) Some very rudimentary classes (see above).
Requires
A FOURIERIZABLE_VECTOR has two "forms", corresponding to -- say -- time-domain and frequency_domain.
The transform feature tells the vector to switch between these forms. This is implemented using a fast-fourier transform.
Additionally, vector operations are only permitted if they are in the same form.
Possible extensions:
Instead of inheriting directly from VECTOR and ARRAY
Use symmetry to pack a real (in the mathematical sense - not shortened DOUBLEs!) into a COMPLEX vector of half the length in one form, and presents itself as full length, but with appropriate symmetry in the other form.
LEGENDRE_FOURIER_VECTORs, CHEBYSHEV_FOURIER_VECTORs, or even WAVELET_VECTORs etc.
Features standard mathematical functions (exp, sin, cos, tan etc. and inverses) extended to take complex arguments, and zealous post-conditions.
Daniel Prager, as at October 1999.
[ Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters]