CLI Syntax
> [:ALG] :OP {:OPERANT1} {:OPERANT2}
Remark
>
appears automatically at the start of each round of dialogue. Don't type it manually.
Brackets ([]
and {}
) are necessary in order to ensure parser works properly. Because we allow whitespaces present inside a formula of :OPERANT
, the parser cannot tell where to truncate between arguments without brackets' help.
:ALG
and :OP
are not case-sensitive. As to :OPERANTS
, keep x
in polynomial and i
in complex numbers in lowercase, otherwise the parser may throw an error.
Examples
Here we omit the outputs. I advise you have a look at the examples section, where host much more instances with output attached.
> [Z] Add {1} {2}
> [Q] Div {4/7} {6/13}
> [F(13)] Sub {0} {2}
> [QPol] Divmod {9x^2+12x+1} {x+3}
> [FPol(7)] Bezout {6x^4 + x^3 + 2} {x^5 + 5x^13 + 4}
> [Zi] Mul {18 + 3i} {7i + 16}
:ALG
Currently, following algebraic structures are supported, divided into two categories, rings and fields. See the respective page for a detailed description on how commands take effect mathematically in each case.
Fields:
Q, F(p)
Here, Q
stands for rationals. F(p)
is the finite field of p
elements, in which p
must be specified as a positive prime number. F(13)
, F(19)
are accepted, while F(10)
, F(0)
, F(-7)
, and F()
are not.
Rings:
Z, Zi, QPol, FPol(p)
Z
stands for integers. QPol
means polynomials with rational coefficients. FPol(p)
means polynomial with F(p)
coefficients.
Zi
means Gaussian integers, namely all complex numbers a+bi
such that a
and b
are integers.
:OP
:OP
means operations. In some sense, it's the main component of a command. Following are all supported arguments:
Add, Sub, Mul, Div, Divmod, Bezout
Add
, Sub
, Mul
mean addition (+), subtraction (-), multiplication (*) respectively. They are available for any :ALG
.
Div
, division (/), only makes sense if :ALG
is a field. If the second operand is zero, it returns a error.
Similarly, Divmod
and Bezout
are valid only if :ALG
is a ring. Divmod
evaluates the Euclidean division, outputing a quotient and a remainder. If the second operand is zero, it errs. Bezout
returns the triple in Bézout's identity.
:OPERANT
:OPERANT
means numbers that engage in an operation. So far, all operations take exactly two operants. Future features may drop this requirement.
Depending on your choice of :ALG
, the parser uses different strategies to read it. The rules of formatting operants are specified in the parse section.