Fermat (computer algebra system)
   HOME

TheInfoList



OR:

Fermat (named after
Pierre de Fermat Pierre de Fermat (; between 31 October and 6 December 1607 – 12 January 1665) was a French mathematician who is given credit for early developments that led to infinitesimal calculus, including his technique of adequality. In particular, he ...
) is a
freeware Freeware is software, most often proprietary, that is distributed at no monetary cost to the end user. There is no agreed-upon set of rights, license, or EULA that defines ''freeware'' unambiguously; every publisher defines its own rules for the f ...
program developed by Prof. Robert H. Lewis of
Fordham University Fordham University () is a Private university, private Jesuit universities, Jesuit research university in New York City. Established in 1841 and named after the Fordham, Bronx, Fordham neighborhood of the The Bronx, Bronx in which its origina ...
. It is a
computer algebra system A computer algebra system (CAS) or symbolic algebra system (SAS) is any mathematical software with the ability to manipulate mathematical expressions in a way similar to the traditional manual computations of mathematicians and scientists. The de ...
, in which items being computed can be
integer An integer is the number zero (), a positive natural number (, , , etc.) or a negative integer with a minus sign (−1, −2, −3, etc.). The negative numbers are the additive inverses of the corresponding positive numbers. In the language ...
s (of arbitrary size),
rational number In mathematics, a rational number is a number that can be expressed as the quotient or fraction of two integers, a numerator and a non-zero denominator . For example, is a rational number, as is every integer (e.g. ). The set of all ration ...
s,
real number In mathematics, a real number is a number that can be used to measure a ''continuous'' one-dimensional quantity such as a distance, duration or temperature. Here, ''continuous'' means that values can have arbitrarily small variations. Every real ...
s,
complex number In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the form ...
s, modular numbers,
finite field In mathematics, a finite field or Galois field (so-named in honor of Évariste Galois) is a field that contains a finite number of elements. As with any field, a finite field is a set on which the operations of multiplication, addition, subtr ...
elements, multivariable
polynomial In mathematics, a polynomial is an expression consisting of indeterminates (also called variables) and coefficients, that involves only the operations of addition, subtraction, multiplication, and positive-integer powers of variables. An exa ...
s,
rational function In mathematics, a rational function is any function that can be defined by a rational fraction, which is an algebraic fraction such that both the numerator and the denominator are polynomials. The coefficients of the polynomials need not be rat ...
s, or polynomials modulo other polynomials. The main areas of application are multivariate rational function arithmetic and
matrix algebra In abstract algebra, a matrix ring is a set of matrices with entries in a ring ''R'' that form a ring under matrix addition and matrix multiplication . The set of all matrices with entries in ''R'' is a matrix ring denoted M''n''(''R'')Lang, ''U ...
over
ring Ring may refer to: * Ring (jewellery), a round band, usually made of metal, worn as ornamental jewelry * To make a sound with a bell, and the sound made by a bell :(hence) to initiate a telephone connection Arts, entertainment and media Film and ...
s of multivariate polynomials or rational functions. Fermat does not do simplification of
transcendental function In mathematics, a transcendental function is an analytic function that does not satisfy a polynomial equation, in contrast to an algebraic function. In other words, a transcendental function "transcends" algebra in that it cannot be expressed alge ...
s or
symbolic integration In calculus, symbolic integration is the problem of finding a formula for the antiderivative, or ''indefinite integral'', of a given function ''f''(''x''), i.e. to find a differentiable function ''F''(''x'') such that :\frac = f(x). This is also ...
. A session with Fermat usually starts by choosing rational or modular "mode" to establish the ground
field Field may refer to: Expanses of open ground * Field (agriculture), an area of land used for agricultural purposes * Airfield, an aerodrome that lacks the infrastructure of an airport * Battlefield * Lawn, an area of mowed grass * Meadow, a grass ...
(or ground ring) F as \mathbb or \mathbb/n. On top of this may be attached any number of symbolic variables t_1, t_2, \dots, t_n, thereby creating the
polynomial ring In mathematics, especially in the field of algebra, a polynomial ring or polynomial algebra is a ring (which is also a commutative algebra) formed from the set of polynomials in one or more indeterminates (traditionally also called variables) ...
F _1, t_2, \dots, t_n/math> and its quotient field. Further, some polynomials p, q, \dots involving some of the t_i can be chosen to mod out with, creating the
quotient ring In ring theory, a branch of abstract algebra, a quotient ring, also known as factor ring, difference ring or residue class ring, is a construction quite similar to the quotient group in group theory and to the quotient space in linear algebra. ...
F(t_1, t_2, \dots)/(p, q, \dots). Finally, it is possible to allow
Laurent polynomial In mathematics, a Laurent polynomial (named after Pierre Alphonse Laurent) in one variable over a field \mathbb is a linear combination of positive and negative powers of the variable with coefficients in \mathbb. Laurent polynomials in ''X'' f ...
s, those with negative as well as positive exponents. Once the computational ring is established in this way, all computations are of elements of this ring. The computational ring can be changed later in the session. The polynomial gcd procedures, which call each other in a highly recursive manner, are about 7000 lines of code. Fermat has extensive built-in primitives for array and matrix manipulations, such as
submatrix In mathematics, a matrix (plural matrices) is a rectangular array or table of numbers, symbols, or expressions, arranged in rows and columns, which is used to represent a mathematical object or a property of such an object. For example, \begin ...
,
sparse matrix In numerical analysis and scientific computing, a sparse matrix or sparse array is a matrix in which most of the elements are zero. There is no strict definition regarding the proportion of zero-value elements for a matrix to qualify as sparse b ...
,
determinant In mathematics, the determinant is a scalar value that is a function of the entries of a square matrix. It characterizes some properties of the matrix and the linear map represented by the matrix. In particular, the determinant is nonzero if and ...
, normalize, column reduce, row echelon,
Smith normal form In mathematics, the Smith normal form (sometimes abbreviated SNF) is a normal form that can be defined for any matrix (not necessarily square) with entries in a principal ideal domain (PID). The Smith normal form of a matrix is diagonal, and can b ...
, and
matrix inverse In linear algebra, an -by- square matrix is called invertible (also nonsingular or nondegenerate), if there exists an -by- square matrix such that :\mathbf = \mathbf = \mathbf_n \ where denotes the -by- identity matrix and the multiplica ...
. It is consistently faster than some well known computer algebra systems, especially in
multivariate polynomial In mathematics, a polynomial is an expression consisting of indeterminates (also called variables) and coefficients, that involves only the operations of addition, subtraction, multiplication, and positive-integer powers of variables. An exampl ...
gcd. It is also space efficient. The basic data item in Fermat is a multivariate rational function or quolynomial. The numerator and denominator are polynomials with no common factor. Polynomials are implemented recursively as general linked lists, unlike some systems that implement polynomials as lists of
monomial In mathematics, a monomial is, roughly speaking, a polynomial which has only one term. Two definitions of a monomial may be encountered: # A monomial, also called power product, is a product of powers of variables with nonnegative integer exponent ...
s. To implement (most) finite fields, the user finds an irreducible monic polynomial in a symbolic variable, say p(t_1), and commands Fermat to mod out by it. This may be continued recursively, q(t_2, t_1), etc. Low level data structures are set up to facilitate arithmetic and gcd over this newly created
ground field In mathematics, a ground field is a field ''K'' fixed at the beginning of the discussion. Use It is used in various areas of algebra: In linear algebra In linear algebra, the concept of a vector space may be developed over any field. In algeb ...
. Two special fields, GF(2^) and GF(2^), are more efficiently implemented at the bit level.


History

With Windows 10, and thanks to Bogdan Radu, it is now possible (May 2021) to run Fermat Linux natively on Windows. See the main web page http://home.bway.net/lewis Fermat was last updated on 20 May 2020 (Mac and Linux; latest Windows version: 1 November 2011). In an earlier version, called FFermat (Float Fermat), the basic number type is
floating point In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
numbers of 18 digits. That version allows for numerical computing techniques, has extensive graphics capabilities, no sophisticated polynomial gcd algorithms, and is available only for Mac OS 9. Fermat was originally written in
Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of people and fictional characters with the name ** Blaise Pascal, Fren ...
for a DEC
VAX VAX (an acronym for Virtual Address eXtension) is a series of computers featuring a 32-bit instruction set architecture (ISA) and virtual memory that was developed and sold by Digital Equipment Corporation (DEC) in the late 20th century. The V ...
, then for the
classic Mac OS Mac OS (originally System Software; retronym: Classic Mac OS) is the series of operating systems developed for the Macintosh family of personal computers by Apple Computer from 1984 to 2001, starting with System 1 and ending with Mac OS 9. The ...
during 1985–1996. It was
ported In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally desi ...
to
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
in 1998. In 2003 it was translated into C and ported to
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
(Intel machines) and
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
(Sparc/Sun). It is about 98,000 lines of C code. The FFermat and (old) Windows Fermat Pascal
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
have been made available to the public under a restrictive license. The manual was extensively revised and updated on 25 July 2011 (latest small revision in June 2016, apparently another revision on 25 March 2020).


See also

*
Comparison of computer algebra systems The following tables provide a comparison of computer algebra systems (CAS). A CAS is a package comprising a set of algorithms for performing symbolic manipulations on algebraic objects, a language to implement them, and an environment in which to ...


External links

*
Windows Fermat Pascal source codeRobert H. Lewis at academia.edu
{{Computer algebra systems C (programming language) software Computer algebra system software for Linux Computer algebra systems Proprietary freeware for Linux