# abs(x)

Returns the absolute value or vector length of x.

Returns the adjunct of matrix m. The inverse of m is equal to adj(m) divided by det(m).

# and(a,b,...)

Returns 1 if all arguments are nonzero. Returns 0 otherwise.

# arccos(x)

Returns the inverse cosine of x.

# arccosh(x)

Returns the inverse hyperbolic cosine of x.

# arcsin(x)

Returns the inverse sine of x.

# arcsinh(x)

Returns the inverse hyperbolic sine of x.

# arctan(x)

Returns the inverse tangent of x.

# arctanh(x)

Returns the inverse hyperbolic tangent of x.

# arg(z)

Returns the angle of complex z.

# besselj(x,n)

Returns a solution to the Bessel differential equation.

# ceiling(x)

Returns the smallest integer not less than x.

# check(x)

If x is true then continue, else stop. Use A=B or A==B to check that A equals B.

p = sqrt(E^2 - m^2)
beta = p/E
A = (E^2 + m^2 + p^2 * expcos(theta)) / (8*p^4)
B = (1 - beta^2 * expsin(theta/2)^2) / (4*p^2*beta^2)
check(A=B)
"A equals B"

# choose(n,k)

Returns the number of combinations of n items taken k at a time.

# circexp(x)

Returns expression x with circular and hyperbolic functions converted to exponential forms. Sometimes this will simplify an expression.

# coeff(p,x,n)

Returns the coefficient of x to the n in polynomial p. The x argument can be omitted for polynomials in x.

# cofactor(m,i,j)

Let c be the cofactor matrix of matrix m, i.e., tranpose(c) = adj(m). This function returns c[i,j].

# conj(z)

Returns the complex conjugate of z.

# contract(a,i,j)

Returns "a" summed over indices i and j. If i and j are omitted then 1 and 2 are used. contract(m) is equivalent to the trace of matrix m.

# cos(x)

Returns the cosine of x.

# cosh(x)

Returns the hyperbolic cosine of x.

# cross(u,v)

Returns the cross product of vectors u and v.

# curl(u)

Returns the curl of vector u.

# d(f,x)

Returns the partial derivative of f with respect to x.

# defint(f,x,a,b)

Returns the definite integral of f with respect to x evaluated from "a" to b. The argument list can be extended for multiple integrals. For example, defint(f,x,a,b,y,c,d).

f = (1 + cos(theta)^2) * sin(theta)
defint(f,theta,0,pi,phi,0,2*pi)

# deg(p,x)

Returns the degree of polynomial p(x).

# denominator(x)

Returns the denominator of expression x.

# det(m)

Returns the determinant of matrix m.

# dim(a,n)

Returns the cardinality of the nth index of tensor "a".

# do(a,b,...)

Evaluates each argument from left to right. Returns the result of the last argument.

# dot(a,b,...)

Returns the dot or inner product of tensors.

# draw(f,x)

Draws a graph of f(x). Drawing ranges can be set with xrange and yrange.

# eigenvec(m)

These functions compute eigenvalues and eigenvectors numerically. Matrix m must be both numerical and symmetric. The eigenval function returns a matrix with the eigenvalues along the diagonal. The eigenvec function returns a matrix with the eigenvectors arranged as row vectors. The eigen function does not return anything but stores the eigenvalue matrix in D and the eigenvector matrix in Q.

Example 1. Check the relation AX = lambda X where lambda is an eigenvalue and X is the associated eigenvector.

```Enter

A = hilbert(3)

eigen(A)

lambda = D[1,1]

X = Q

dot(A,X) - lambda X

Result

-1.16435e-14

-6.46705e-15

-4.55191e-15
```

Example 2: Check the relation A = QTDQ.

```Enter

A - dot(transpose(Q),D,Q)

Result

6.27365e-12    -1.58236e-11   1.81902e-11

-1.58236e-11   -1.95365e-11   2.56514e-12

1.81902e-11    2.56514e-12    1.32627e-11
```

# erf(x)

Error function of x.

# erfc(x)

Complementary error function of x.

# eval(f,x,a)

Returns f evaluated at x=a.

# exp(x)

Returns the exponential of x.

# expand(r,x)

Returns the partial fraction expansion of the ratio of polynomials r in x.

# expcos(x)

Returns the exponential cosine of x.

# expsin(x)

Returns the exponential sine of x.

# factor(n)

Factors integer n.

# factor(p,x)

Factors polynomial p of x. The x can be omitted for polynomials in x. The polynomial should be factorable over integers. The argument list can be extended for multivariate polynomials. For example, factor(p,x,y) factors p over x and then over y.

# factorial(x)

Can be entered as x!

# filter(f,a,b,...)

Returns f excluding any terms containing a, b, etc.

# float(x)

Converts rational numbers and integers to floating point values. The symbol pi is also converted.

# floor(x)

Returns the largest integer not greater than x.

# for(i,j,k,a,b,...)

For i equals j through k evaluate a, b, etc. The original value of the index variable is restored after "for" completes, it is not clobbered. The following script uses "for" to compute pi to six digits.

x = 0
y = 2
for(k,1,9,x=sqrt(2+x),y=2*y/x)
float(y)

# gcd(a,b,...)

Returns the greatest common divisor.

# hermite(x,n)

Returns the nth Hermite polynomial in x.

# hilbert(n)

Returns an n by n Hilbert matrix.

# imag(z)

Returns the imaginary part of complex z.

# inner(a,b,...)

Returns the inner product of tensors. Same as the dot product.

# integral(f,x)

Returns the integral of f with respect to x.

# inv(m)

Returns the inverse of matrix m.

# isprime(n)

Returns 1 if n is a prime number, returns zero otherwise.

# laguerre(x,n,a)

Returns the nth Laguerre polynomial in x. If "a" is omitted then a=0 is used.

# lcm(a,b,...)

Returns the least common multiple.

Returns the leading coefficient of polynomial p in x.

# legendre(x,n,m)

Returns the nth Legendre polynomial in x. If m is omitted then m=0 is used.

# log(x)

Returns the natural logarithm of x.

# mag(z)

Returns the magnitude of complex z.

# mod(a,b)

Returns the remainder of the result of "a" divided by b.

# not(x)

Returns 1 if x is zero. Returns 0 otherwise.

# nroots(p,x)

Returns all of the roots, both real and complex, of polynomial p in x. The roots are computed numerically. The coefficients of p can be real or complex.

# numerator(x)

Returns the numerator of expression x.

# or(a,b,...)

Returns 1 if any argument is nonzero. Returns 0 otherwise.

# outer(a,b,...)

Returns the outer product of tensors. Also known as the tensor product.

# polar(z)

Returns complex z in polar form.

# prime(n)

Returns the nth prime number. The domain of n is 1 to 10000.

# print(a,b,...)

Evaluate expressions and print the results. Useful for printing from inside a "for" loop.

# product(i,j,k,f)

For i equals j through k evaluate f. Returns the product of all f.

# quote(x)

Returns expression x without evaluating it first.

# quotient(p,q,x)

Returns the quotient of polynomial p(x) over q(x). The last argument can be omitted for polynomials in x. The remainder can be calculated by p-q*quotient(p,q).

# rank(a)

Returns the number of indices that tensor "a" has.

# rationalize(x)

Returns x with everything over a common denominator.

# real(z)

Returns the real part of complex z.

# rect(z)

Returns complex z in rectangular form.

# roots(p,x)

Returns the values of x such that p(x)=0. The polynomial p should be factorable over integers. Returns a vector for multiple roots. Individual roots can be obtained using component notation, i.e., r1=roots(p,x).

# simplify(x)

Returns x in a simpler form.

# sin(x)

Returns the sine of x.

# sinh(x)

Returns the hyperbolic sine of x.

# sqrt(x)

Returns the square root of x.

# stop()

In a script, it does what it says.

# subst(a,b,c)

Substitutes "a" for b in c and returns the result.

# sum(i,j,k,f)

For i equals j through k evaluate f. Returns the sum of all f.

# tan(x)

Returns the tangent of x.

# tanh(x)

Returns the hyperbolic tangent of x.

# taylor(f,x,n,a)

Returns the Taylor expansion of f(x) around x=a. If "a" is omitted then a=0 is used. The argument n is the degree of the expansion.

# test(a,b,c,d,...)

If "a" is true then b is returned else if c is true then d is returned, etc. If the number of arguments is odd then the last argument is returned when all else fails. Use A=B to test that A equals B.

# transpose(a,i,j)

Returns the transpose of "a" with respect to indices i and j. If i and j are omitted then 1 and 2 are used. Hence a matrix can be transposed with a single argument, i.e., transpose(a).

# unit(n)

Returns an n by n identity matrix.

# zero(i,j,...)

Returns a null tensor with dimensions i, j, etc. Useful for creating a tensor and then setting the component values.

A = zero(10,10)
for(k,1,10,A[k,k]=k)