for |

Linux and Mac OSX |

32 bit and 64 bit versions |

Robert H. Lewis |

© 1992, 1995 - 2011 by Robert H. Lewis. all rights reserved. |

http://home.bway.net/lewis/ |

July 25, 2011 v3.9.99, 4.19 (64 bit) |

Appendix 4. Summary of Matrix and Polynomial Features

Matrix and polynomial computations are the heart of Fermat. Here is a concise annotated list of relevant features and commands. Most are explained further earlier in the manual.

As of version 3.4.7 Fermat implements the finite field GF(2

BAD: for i = 1, m do if n = i+1 then .... ;; i+1 is NOT 1 more than i (!) GOOD: for i = 1, m do if n = _(i+1) then ... BAD: rc := 1 + Sigma<j=1,n> [ Deg(za,j)*exp[j] ] GOOD: rc := 1 + _Sigma<j=1,n> [ Deg(za,j)*exp[j] ]Technically, over any modular ground ring, one should use the &_m or _(...) as above, but I at least usually use large primes p in Z/p, maybe 44449, so no harm results - usually. But over GF(2

for i = 1, 2n do... x := y^(i+2); s := c[2*n+1];It is fine to attach poly vars on top of these ground fields. However, do not do &P on top of that. I have not thoroughly checked that.

In roughly chronological order. These features are all described earlier in this manual too. The new parts are emphasized here.

&_s: Suppress/don't suppress display of long polynomials. &_t: Toggle switch to turn on/off a certain fast probabalistic algorithm to test if one multivariate polynomial divides another over ground ring Z. Rarely, this technique can fail, in which case you will see a "Fermat error" about "number in trial_poly_divide". Then turn it off. &_G: sort the heap garbage. This can be added to the user's functions periodically during memory intensive polynomial calculations. A noticeable speedup occurs when used between repetitions of an intensive calculation. &v: List all current variables. ... Only about the first 150 lines of a large polynomial are shown, unless &_s has been set. To help compute the Dixon resultant, a feature has been added to Det. It may be used when a system of equations exhibiting symmetry leads to a determinant that is a polynomial in one variable, say t, over Z. Set the flags to select LaGrange interpolation. The syntax is Det([m], dr, power1, power2, exp). [m] is the matrix in question (must be

As of October 2009, the LaGrange modular determinant coefficients can be dumped to a file, rather than stored in RAM. This can be a big space saving when doing a very large computation. The command is &(_L=1). In other words, if the highest precedence variable is x and lower ones are y, z, …, and if a determinant c

As a time- and space-saving aid, one can add the

The display of elapsed time changed in 2010. When timing is enabled, two numbers are displayed, called "Elapsed CPU time" and "Elapsed real time". CPU time is just the CPU time used by Fermat. This is what has been displayed by Fermat in most previous versions. However, the number is meaningful only up to about an hour. For much longer times, the value shown is meaningless. Elapsed real time is wall clock time, just as it sounds. If the elapsed real time is more than 5 seconds, then it is also displayed.

File translated from T

On 25 Jul 2011, 11:36.