Integers  
irem  remainder 
iquo  quotient 
iquorem  quotient and remainder 
ifactor  prime factorization 
ifactors  list of prime factors 
idivis  list of divisors 
gcd  greatest common divisor 
lcm  least common multiple 
iegcd  Bezout’s identity 
isprime  primality test 
nextprime  next prime number 
previousprime  previous prime number 
a%p  a modulo p 
powmod(a,n,p)  a^{n} modulo p 
Xcas has the usual number theoretic functions. The iquo command will find the integer quotient of two integers and irem will find the remainder. The iquorem command will return a list of both the quotient and remainder; if you enter
iquorem(30,7)
you will get
[4,2] 
since 30 divided by 7 is 4 with a remainder of 2.
The gcd and lcm commands will find the greatest common divisor and least common multiple of two integers. If you enter
gcd(72,120)
you will get
24 
The greatest common divisor d of two integers a and b can always be written in the form a*u + b*v = d for integers u and v. (This is known as Bézout’s Identity.) The iegcd will return the coefficients u and v as well as the greatest commond divisor. If you enter
iegcd(72,120)
you will get
[2,−1,24] 
since
72· 2 + 120·(−1) = 24 
The ifactor command will give the prime factorization of an integer; if you enter
ifactor(250)
you will get
2*5^{3} 
You can use ifactors to get a list of the prime factors of an integer, where in the list each factor is followed by its multiplicity. If you enter
ifactors(250)
you will get
[2,1,5,3] 
since 250 has a prime factor of 2 (it has 1 factor of 2) and a prime factor of 5 (it has 3 factors of 5). The idivis command will return a complete list of factors;
idivis(250)
will return
[1,2,5,10,25,50,125,250] 
The subject of primes is a difficult one, and you should see the manual for a discussion of how Xcas checks for primes. But the command isprime will return true or false depending on whether or not you enter a prime. If you enter
isprime(37)
you will get
true 
since 37 is a prime number. The commands nextprime and previousprime will find the first prime after (or before) the number that you give it; if you enter
nextprime(37)
you will get
41 
since the first prime after 37 is 41.
Integers modulo p are defined by putting % p after them. Once an integer modulo p is defined, then any calculations done with it are done in ℤ/pℤ. For example, if you define
a := 3 % 5
then
a*2
will return
1 % 5 
(since 6 mod 5 is reduced to 1 mod 5);
1/a
will return
2 % 5 
etc. The powermod or powmod functions can be used to efficiently calculate powers modulo a number.
Polynomials  
normal  normal form (expanded and reduced) 
expand  expanded form 
ptayl  Taylor form 
peval or horner  evaluation using Horner’s method 
canonical_form  canonical form for a trinomial 
coeff  list of coefficients 
poly2symb  transform an algebraic polynomial to list form 
symb2poly  transform the list form of a polynomial to algebraic form 
pcoeff  return the polynomial (list form) given a list of zeroes 
degree  degree 
lcoeff  the coefficient of the leading term 
valuation  the lowest degree of the terms 
tcoeff  the coefficient of the term with the lowest degree 
factor  prime factorization 
factors  list of prime factors 
divis  list of divisors 
froot  roots with multiplicities 
proot  approximate values of the roots 
sturmab  the number of roots in an interval 
getNum  the numerator of a rational function 
getDenom  the denominator of a rational function 
propfrac  writes a rational expression as a whole part and a proper rational part 
partfrac  partial fraction decomposition 
quo  quotient 
rem  remainder 
gcd  greatest common divisor 
lcm  least common multiple 
egcd  Bezout’s identity 
divpc  Taylor polynomial for a rational expression 
randpoly  random polynomial 
cyclotomic  cyclotomic polynomial 
lagrange  Lagrange polynomials 
hermite  Hermite polynomials 
laguerre  Laguerre polynomials 
tchebyshev1  Tchebyshev polynomials 
tchebyshev2  Tchebyshev polynomials 
Various polynomial operations are available in the Polynomials submenu of the Cmds menu.
The expand and normal operators will distribute multiplication across addition, and so expand a polynomial completely out. If you enter
expand((x+1)*(x+2)^2)
you will get
x^{3}+5*x^{2}+8*x+4 
Additionally, normal will reduce a rational expression to lowest terms; if you enter
normal((x1)^2/(x^21))
you will get

The factor operator will factor a polynomial. If you enter
factor(x^3+6*x^2+3*x10
you will get
(x−1)*(x+2)*(x+5) 
The result often depends on the number field being used. For example, over the rational numbers the polynomial x^{4} − 1 factors as (x−1)(x+1)(x^{2} + 1), while over the complex numbers it factors as (x−1)(x+1)(x−i)(x+i). If the coefficients of a polynomial are exact fractions, then the factoring will be over the rationals. To factor over the complex numbers, you can configure Xcas to do complex factorization (see section 2.3, “Configuration”) or use the cfactor command. If the coefficients are in ℤ/pℤ then the polynomial will be factored over ℤ/pℤ.
Trigonométrie  
tlin  linearize 
tcollect  linearize and regroup 
texpand  expand 
trig2exp  trigonometric to exponential 
exp2trig  exponential to trigonometric 
hyp2exp  hyperbolic to exponential 
Xcas has the usual trigonometic functions, both circular and hyperbolic, as well as their inverses. It also has commands for manipulating trigonometric expressions; these are in the Trigo submenus of the Expression menu.
One example is the tlin command will write products and powers of sines and cosines as linear combinations of sin(n x)s and cos(n x)s. If you enter
tlin(2*sin(x)^2*cos(3*x))
you will get
− 
 + cos(3*x) − 

The texpand command will take expressions involving sin(n x) and cos(n x) and write them in terms of powers if sin(x) and cos(x). If you enter
texpand(sin(2*x)^2*cos(3*x))
you will get
16*cos(x)^{5}*sin(x)^{2}−12*cos(x)^{3}*sin(x)^{2} 
Vectors and matrices  
v*w  scalar product 
cross(v,w)  cross product 
A*B  matrix product 
A.*B  term by term product 
1/A  inverse 
tran  transpose 
rank  rank 
det  determinant 
ker  basis for the kernel 
image  base for the image 
idn  identity matrix 
ranm  matrix with random coefficients 
makematrix  make a matrix from a function 
matrix  make a matrix from a function 
blockmatrix  combine matrices 
A vector is a list of numbers, such as [2,3,5], and a matrix is a list of vectors all of the same length, such as [[1,2,3],[4,5,6]].
The usual matrix operations (addition, scalar multiplication, matrix multiplication) are done with the usual operators + and *. If you define
A := [[1,2,3],[4,5,6],[7,8,9]]
B := [[1,1,1],[2,2,2]]
then
3*A
will give you

and
B*A
will give you

A vector can be regarded as a matrix with one row, except that if a matrix is multiplied on the right by a vector, the vector will be regarded as a column. In particular, if v and w are vectors of the same length, then v*w will return the scalar product.
The idn command will create an identity matrix;
idn(2)
will return

You can also use makemat or matrix commands to build a matrix. They both require a realvalued function of two variables, the number of rows and the number of columns. The indices start at 0, and with the makemat the function comes first, with matrix the function comes last. Both
makemat((j,k)>j+k,3,2)
and
matrix(3,2,(j,k)>j+k)
produce

Several matrices can be combined into a larger matrix with the blockmatrix command. To arrange m * n matrices into m rows and n columns, you give blockmatrix the values m, n and a list of the matrices. If you enter
A := [[1,2,3],[4,5,6]]
B := [[1,2],[2,3]]
then
blockmatrix(2,2,[A,B,B,A])
will give you

You can get the elements from a matrix by following the matrix with the indices in brackets, separated by commas. For A as above,
A[1,2]
will return
6 
You can extract a submatrix by using intervals of indices (the beginning and end index separated by two periods);
A[0..1,1..2]
returns

Note that if you change one value of a matrix in Xcas, the entire matrix will be copied. If a program modifies parts of a large matrix one element at a time, this time can add up.
Linear systems  
linsolve  solution of a linear system 
simult  solutions of many linear systems 
rref  GaussJordan reduction 
The linsolve command will solve a system of linear equations; its syntax is the same as that of solve (see section 4.4, “Solving equations”). If you enter
linsolve([2*x + 3*y = 4, 5*x + 4*y = 3],[x,y])
you will get
[−1,2] 
The simult command can also solve a system of linear equations; more generally, it can solve several systems with the same coefficient matrix. To solve the systems
Ax = b_{1},…,Ax=b_{k} 
you can enter
simult(A,B)
where
B =  ⎛ ⎝  b_{1} ⋯ b_{k}  ⎞ ⎠ 
The result will be a matrix whose jth column is the solution of Ax=b_{j}. For example, if you want to solve the systems
⎧ ⎪ ⎨ ⎪ ⎩ 

⎧ ⎪ ⎨ ⎪ ⎩ 

which both have the same matrix of coefficients

you can create the matrix which has one column for each system

If you enter
simult([[1,1,1],[1,1,1],[1,1,1]],[[1,2],[1,1],[2,1]])
you will get

The solution to the first system is the first column, x=1,y=−1/2,z=−1/2, and the solution to the second system is the second column, x=−1/2,y=−1/2,z=1.
When there are no solutions, linsolve will return the empty list while simult will return an error. When there are infinitely many solutions, linsolve will return formulas for all solutions while simult will return one solution.
Matrix reduction  
jordan  diagonalization or Jordan reduction 
pcar  characteristic polynomial (list form) 
pmin  minimal polynomial (list form) 
eigenvals  eigenvalues 
eigenvects  eigenvectors 
The jordan command will take a matrix A and returns a transition matrix P and a matrix J in Jordan canonical form, so that P^{−1} A P = J. In particular, if A is diagonalizable, then J will be diagonal with the eigenvalues of A on the diagonal and the columns of P will be the corresponding eigenvectors. If you enter
jordan([[4,1],[8,5]])
you will get
⎛ ⎜ ⎝ 
 , 
 ⎞ ⎟ ⎠ 
This means that 3 and −4 (the diagonal elements of the second matrix) are the eigenvalues of (
4  1 
−8  −5 
) and the corresponding eigenvectors are (
1 
−1 
) and (
1 
−8 
) (the columns of the first matrix). For diagonalizable matrices you can also get this information with the eigenvals and eigenvects commands;
eigenvals([[4,1],[8,5]])
will return
(3,−4) 
and
eigenvects([[4,1],[8,5]])
will return

For matrices with exact and symbolic values, the only eigenvalues used are those computable with solve; for matrices with floating point numbers, a numerical algorithm is used to find the eigenvalues. This algorithm may fail in some cases where there are very close eigenvalues or eigenvalues with multiplicity greater than one.
If a function is defined by a polynomial, you can evaluate it with an argument of a square matrix. If a function is given by a series, the Jordan form of the matrix can be used to define the value of the function at a matrix. For example, you can find the exponential of a square matrix;
exp([[0,1],[1,2]])
will result in
