There are three versions, Linux for Intel hardware; Mac for Intel hardware; and Mac for Apple hardware (the M1 chip). See below to download.
Fermat 7.0 includes everything from 6.5. The main new feature is the ability to factor multivariate polynomials over Z/p, and in a limited way, over Z. See
this document. (This was updated on November 14, 2023, January 11, 2024, February 11, 2024.)
Fermat 7.4 is for Mac and Linux. This update improves factoring polynomials over Z. Irred has been further improved since 7.3. You have to load the file factr (available here) for factoring. (In other words, Fermat now has the ability to load a collection of Fermat functions from an external text file and use them internally -- at least in this one case.) Similarly, the function FCTZ there has been improved, especially when polymodding (i.e., working modulo an irreducible polynomial). It can still fail and return -1, but this probably means irreducible.
There is a new function Varsp(f) to return the number of variables in f above field depth.
There is a new function Polymod to return true/false, polymodding or not. This is not the same as using Flevel to determne the field level.
When creating a field with polymodding, the auxiliary primes are not only computed and displayed, they are stored in an array aux_prime for user's use.
Fermat 7.3 is for Mac and Linux. This update addresses factoring polynomials over Z. The built-in function Irred for irreducible polynomial sometimes fails over Z (i.e. returns -1, can't decide). It has been improved, if you have loaded the file factr (available here) for factoring. (In other words, Fermat now has the ability to load a collection of Fermat functions from an external text file and use them internally -- at least in this one case.) Similarly, the function FCTZ there has been improved. But it can still fail by returning -1.
Fermat 7.2 is for Mac and Linux. The implementation of Zippel-like polynomial gcd was not very good for some cases of six variable polynomials. It has been improved.
Fermat 7.1 is for Mac. It is a "bug" fix. Relatively recently the Mac system programmers changed some low-level details about reading characters from the terminal. The result was that copying and pasting an array to the terminal no longer worked in fer64. Fermat 7.1 fixes that. No change is required in Linux.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNERS OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
NO ONE MAY USE THIS SOFTWARE AS PART OF ANY BUSINESS OR FOR-PROFIT ENDEAVOR WITHOUT THE
EXPRESS WRITTEN PERMISSION OF ROBERT H. LEWIS. ROBERT H. LEWIS RETAINS THE COPYRIGHT TO
ANY PROGRAM THAT INCLUDES THIS SOFTWARE.
See also the Fermat FAQ page.
July 23, 2023: Version 7.0.
- new function Nextvar: Nextvar returns the position (level) of the
second variable in the poly argument. If there is only one var, it returns 0. If the input is a
number or field element, it returns -1.
- new function Vars that returns the number of poly vars in the input. It includes vars that are part of the field if field_depth > 0.
- changes to Irred: It now works for any polynomial input. Over Z, drops into mod p for several p. Over Z/p, it uses the well known idea
to replace all vars but two with linear combinations of those two, then factor the two-var poly. See "Irreducibility of Multivariate Polynomials" by
Joachim von zur Gathen 1985. This is probabilistic, highly likely to be correct.
- new function Revpoly. It reverses the terms; i.e. if the degree is n, replaces exponent i with n-i.
- function Factor has been extended. Factor(u, [q]) now works for two-variable polys over Z/p.
- new function CIrred for irreducible with no content check. If you know the argument has no contents, use this instead of Irred. If in fact it does have contents,
the result is undefined.
Bug fix: Redrowech sometimes did not handle the auxiliary matrices correctly.
Bug fix: There was a bug in polynomial evaluation that sometimes popped up in modular mode.
Bug fix: There were several small memory leaks introduced in version 6.5.
Bug fix: You cannot call &F or &v inside a function. This is now an error.
64 bit Mac version 7.4 for Intel hardware. This was compiled with 10.15.7. It will not work on 10.5 and earlier.
Expand the tar bundle. Put Ferm7i in the right place so that the application Terminal sees it. Start up Terminal,
then cd into Ferm7i. Type ./fer64. Don't just open the folder and double-click on fer64. For me, at least, that doesn't work well.
64 bit Mac version 7.4 for Apple M1 hardware. This was compiled with 12.6.3.
64 bit Linux version 7.4. This was compiled with the static option on Ubuntu.
Fermat is freeware. Institutions or those with grant money should contribute a total of $US 75 per machine.