Error fixed below, incorrect link to Linux file for version 7.0. Thank you Feng Feng!
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 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.0 for Intel hardware. This was compiled with 10.14.6. 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.0 for Apple M1 hardware. This was compiled with 12.6.3.
64 bit Linux version 7.0. This was compiled with the static option on Ubuntu. (This link was incorrect on
the July version of this file.)
Fermat is freeware. Institutions or those with grant money should contribute a total of $US 75 per machine.