Float Versions of Fermat

March 28, 2013; November 6, 2012; June 12, 2012; January 3, 2012

There are now float versions of Fermat.

Until around 2007, there was a version of Fermat called FFermat, meaning float Fermat. It was written in Pascal and ran on Mac OS 9. It no longer runs on any modern platform. It is described here, and the binaries are here. It had very nice features, including very good graphics capabilities. Complex numbers were directly implemented as pairs of Reals (floats).

I have now used the modern C versions of Fermat to create three float versions. These allow the user to enter numerical data into polynomials and matrices created presumably by the "real" versions of Fermat, which of course operate over exact ground rings. This is quite useful, as eventually most actual problems need to work with numerical data.

There are no graphics capabilities. These float versions are not intended to compete with, say, Matlab.

Determinant, inverse matrix, multivariate polynomials, polynomial evaluation, characteristic polynomial, and other features work as a user familiar with Fermat would expect. Of course one cannot drop into modular mode (modular ground ring); the only ground field is floats. Inevitable round-off errors may eventually lead to trouble, as most users will appreciate. Such errors may eventually lead to a crash.

Polynomial gcd, especially multivariate, is problematical. Determinant algorithms, such as Gaussian elimination, applied to a matrix of polynomials will probably produce a rational function ("quolynomial") instead of a polynomial. However, truncating the answer (with the \$ command) will likely produce quite a good approximation.

The syntax is the same as the other C versions, so use those manuals. To implement complex numbers, attach a polynomial variable first, say i, then mod out via &(P = i^2+1, 1) as usual in Fermat.

Transcendental functions: for the trig functions use _sin( ), _cos( ), _tan( ), _atan( ), _asin( ). For exp and ln, use _e( ), _ln( ).

Eventually, algorithms such as SVD will be implemented. There may be a single version that includes both exact ground rings and floats.

There are Mac, Linux, and Windows versions. The Mac and Linux versions provide about 19 significant digits; the Windows only around 15. This is due to features of Cygwin.

Fermat is freeware. Institutions or those with grant money should contribute \$US 60 per machine.

Suggested donation \$60, using PayPal. (You don't have to have a PayPal account.)