The Eigenmath manual and additional support materials are available at eigenmath.org

Returns the absolute value or vector length of x.

```X = (x,y,z)
abs(X)
```
```┌            ┐1/2
│ 2    2    2│
│x  + y  + z │
│            │
└            ┘
```

Returns the adjunct of matrix m. Adjunct is equal to determinant times inverse.

```A = ((a,b),(c,d))
```
```1
```

Returns 1 if all arguments are true (nonzero). Returns 0 otherwise.

```and(1=1,2=2)
```
```1
```

Returns the arc cosine of x.

```arccos(1/2)
```
``` 1
╶─╴ π
3
```

Returns the arc hyperbolic cosine of x.

Returns the arc sine of x.

```arcsin(1/2)
```
``` 1
╶─╴ π
6
```

Returns the arc hyperbolic sine of x.

Returns the arc tangent of y over x. If x is omitted then x = 1 is used.

```arctan(1,0)
```
``` 1
╶─╴ π
2
```

Returns the arc hyperbolic tangent of x.

Returns the angle of complex z.

```arg(2 - 3i)
```
```arctan(-3,2)
```

The result of evaluating a symbol can differ from the symbol's binding. For example, the result may be expanded. The binding function returns the actual binding of a symbol.

```p = quote((x + 1)^2)
p
```
```     2
p = x  + 2 x + 1
```
```binding(p)
```
```       2
(x + 1)
```

Returns the smallest integer greater than or equal to x.

```ceiling(1/2)
```
```1
```

If x is true (nonzero) then continue in a script, else stop. Expression x can include the relational operators =, ==, <, <=, >, >=. Use the not function to test for inequality.

```A = 1
B = 1
check(A=B) -- script stops here if A not equal to B
```

Returns expression x with circular and hyperbolic functions converted to exponentials.

```circexp(cos(x) + i sin(x))
```
```exp(i x)
```

Clears all symbol definitions.

Returns complex z in polar form with base of negative 1 instead of e.

```clock(2 - 3i)
```
```           arctan(−3,2)
╶────────────╴
1/2           π
13    (−1)
```

Returns the cofactor of matrix m for row i and column j.

```A = ((a,b),(c,d))
```
```1
```

Returns the complex conjugate of z.

```conj(2 - 3i)
```
```2 + 3 i
```

Returns tensor a summed over indices i and j. If i and j are omitted then 1 and 2 are used. The expression contract(m) computes the trace of matrix m.

```A = ((a,b),(c,d))
contract(A)
```
```a + d
```

Returns the cosine of x.

```cos(pi/4)
```
```  1
╶────╴
1/2
2
```

Returns the hyperbolic cosine of x.

```circexp(cosh(x))
```
``` 1             1
╶─╴ exp(−x) + ╶─╴ exp(x)
2             2
```

Returns the partial derivative of f with respect to x.

```d(x^2,x)
```
```2 x
```

Argument f can be a tensor of any rank. Argument x can be a vector. When x is a vector the result is the gradient of f.

```F = (f(),g(),h())
X = (x,y,z)
d(F,X)
```
```┌                                ┐
│ d(f(),x)   d(f(),y)   d(f(),z) │
│                                │
│ d(g(),x)   d(g(),y)   d(g(),z) │
│                                │
│ d(h(),x)   d(h(),y)   d(h(),z) │
└                                ┘
```

It is OK to use d as a variable name. It will not conflict with function d.

It is OK to redefine d as a different function. The function derivative, a synonym for d, can still be used to obtain a partial derivative.

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) is equivalent to defint(defint(f,x,a,b),y,c,d).

```f = (1 + cos(theta)^2) sin(theta)
defint(f, theta, 0, pi, phi, 0, 2pi)
```
``` 16
╶──╴ π
3
```

Returns the denominator of expression x.

```denominator(a/b)
```
```b
```

Returns the determinant of matrix m.

```A = ((a,b),(c,d))
det(A)
```
```a d - b c
```

Returns the dimension of the nth index of tensor a. Index numbering starts with 1.

```A = ((1,2),(3,4),(5,6))
dim(A,1)
```
```3
```

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

```do(A=1,B=2,A+B)
```
```3
```

Returns the dot product of vectors, matrices, and tensors. Also known as the matrix product.

```-- solve for X in AX=B
A = ((1,2),(3,4))
B = (5,6)
X = dot(inv(A),B)
X
```
```    ┌     ┐
│ −4  │
│     │
X = │  9  │
│ ╶─╴ │
│  2  │
└     ┘
```

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

```xrange = (0,1)
yrange = (0,1)
draw(x^2,x)
```

Symbol e is initialized to the natural number e.

```e^x
```
```exp(x)
```

Note: It is OK to clear or redefine e and use the symbol for something else.

Returns expression f evaluated at x equals a. The argument list can be extended for multivariate expressions. For example, eval(f,x,a,y,b) is equivalent to eval(eval(f,x,a),y,b).

```eval(x + y,x,a,y,b)
```
```a + b
```

Returns the exponential of x.

```exp(i pi)
```
```-1
```

Returns the cosine of z in exponential form.

```expcos(z)
```
``` 1              1
╶─╴ exp(i z) + ╶─╴ exp(−i z)
2              2
```

Returns the hyperbolic cosine of z in exponential form.

```expcosh(z)
```
``` 1             1
╶─╴ exp(−z) + ╶─╴ exp(z)
2             2
```

Returns the sine of z in exponential form.

```expsin(z)
```
```  1                1
−╶─╴ i exp(i z) + ╶─╴ i exp(−i z)
2                2
```

Returns the hyperbolic sine of z in exponential form.

```expsinh(z)
```
```  1             1
−╶─╴ exp(−z) + ╶─╴ exp(z)
2             2
```

Returns the tangent of z in exponential form.

```exptan(z)
```
```       i             i exp(2 i z)
╶──────────────╴ − ╶──────────────╴
exp(2 i z) + 1     exp(2 i z) + 1
```

Returns the hyperbolic tangent of z in exponential form.

```exptanh(z)
```
```       1             exp(2 z)
−╶────────────╴ + ╶────────────╴
exp(2 z) + 1     exp(2 z) + 1
```

Returns the factorial of n. The expression n! can also be used.

```20!
```
```2432902008176640000
```

Returns expression x with rational numbers and integers converted to floating point values. The symbol pi and the natural number are also converted.

```float(212^17)
```
```          39
3.52947 10
```

Returns the largest integer less than or equal to x.

```floor(1/2)
```
```0
```

For i equals j through k evaluate a, b, etc.

```for(k,1,3,A=k,print(A))
```
```A = 1
A = 2
A = 3
```

Note: The original value of i is restored after for completes. If symbol i is used for index variable i then the imaginary unit is overridden in the scope of for.

Returns the Hadamard (element-wise) product. The arguments are required to have the same dimensions. The Hadamard product is also accomplished by simply multiplying the arguments.

```A = ((A11,A12),(A21,A22))
B = ((B11,B12),(B21,B22))
A B
```
```┌                   ┐
│ A   B     A   B   │
│  11  11    12  12 │
│                   │
│ A   B     A   B   │
│  21  21    22  22 │
└                   ┘
```

Symbol i is initialized to the imaginary unit (−1)1/2.

```exp(i pi)
```
```-1
```

Note: It is OK to clear or redefine i and use the symbol for something else.

Returns the imaginary part of complex z.

```imag(2 - 3i)
```
```-3
```

Returns the inner product of vectors, matrices, and tensors. Also known as the matrix product.

```A = ((a,b),(c,d))
B = (x,y)
inner(A,B)
```
```┌           ┐
│ a x + b y │
│           │
│ c x + d y │
└           ┘
```

Note: inner and dot are the same function.

Returns the integral of f with respect to x.

```integral(x^2,x)
```
``` 1   3
╶─╴ x
3
```

Returns the inverse of matrix m.

```A = ((1,2),(3,4))
inv(A)
```
```┌            ┐
│ −2     1   │
│            │
│  3      1  │
│ ╶─╴   −╶─╴ │
│  2      2  │
└            ┘
```

Set j=sqrt(-1) to use j for the imaginary unit instead of i.

```j = sqrt(-1)
1/sqrt(-1)
```
```-j
```

Returns the Kronecker product of vectors and matrices.

```A = ((1,2),(3,4))
B = ((a,b),(c,d))
kronecker(A,B)
```
```┌                       ┐
│  a     b    2 a   2 b │
│                       │
│  c     d    2 c   2 d │
│                       │
│ 3 a   3 b   4 a   4 b │
│                       │
│ 3 c   3 d   4 c   4 d │
└                       ┘
```

The result of the previous calculation is stored in last.

```212^17
```
```3529471145760275132301897342055866171392
```
```last^(1/17)
```
```212
```

Note: Symbol last is an implied argument when a function has no argument list.

```212^17
```
```3529471145760275132301897342055866171392
```
```float
```
```          39
3.52947 10
```

Returns the natural logarithm of x.

```log(x^y)
```
```y log(x)
```

Returns the magnitude of complex z.

```mag(x + i y)
```
```┌       ┐1/2
│ 2    2│
│x  + y │
│       │
└       ┘
```

Returns the minor of matrix m for row i and column j.

```A = ((1,2,3),(4,5,6),(7,8,9))
minor(A,1,1) == det(minormatrix(A,1,1))
```
```1
```

Returns a copy of matrix m with row i and column j removed.

```A = ((1,2,3),(4,5,6),(7,8,9))
minormatrix(A,1,1)
```
```┌       ┐
│ 5   6 │
│       │
│ 8   9 │
└       ┘
```

Returns the remainder of a over b.

```mod(5,3/8)
```
``` 1
╶─╴
8
```

Evaluates expression x without expanding products of sums.

```noexpand((x + 1)^2 / (x + 1))
```
```x + 1
```

Returns 0 if x is true (nonzero). Returns 1 otherwise.

```not(1=1)
```
```0
```

Returns the numerator of expression x.

```numerator(a/b)
```
```a
```

Returns 1 if at least one argument is true (nonzero). Returns 0 otherwise.

```or(1=1,2=2)
```
```1
```

Returns the outer product of vectors, matrices, and tensors.

```A = (a,b,c)
B = (x,y,z)
outer(A,B)
```
```┌                 ┐
│ a x   a y   a z │
│                 │
│ b x   b y   b z │
│                 │
│ c x   c y   c z │
└                 ┘
```

Symbol for π.

```exp(i pi)
```
```-1
```

Returns complex z in polar form.

```polar(x - i y)
```
```┌       ┐1/2
│ 2    2│
│x  + y │    exp(i arctan(−y,x))
│       │
└       ┘
```

Use ^ to raise something to a power. Use parentheses for negative powers.

```x^(-1/2)
```
```  1
╶────╴
1/2
x
```

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

```for(j,1,3,print(j))
```
```j = 1
j = 2
j = 3
```

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

```product(j,1,3,x + j)
```
``` 3      2
x  + 6 x  + 11 x + 6
```

The original value of i is restored after product completes. If symbol i is used for index variable i then the imaginary unit is overridden in the scope of product.

product(y)

Returns the product of components of y.

```product((1,2,3,4))
```
```24
```

Returns expression x without evaluating it first.

```quote((x + 1)^2)
```
```       2
(x + 1)
```

Returns the number of indices that tensor a has.

```A = ((a,b),(c,d))
rank(A)
```
```2
```

Returns expression x with everything over a common denominator.

```rationalize(1/a + 1/b + 1/2)
```
``` 2 a + a b + 2 b
╶───────────────╴
2 a b
```

Note: rationalize returns an unexpanded expression. If the result is assigned to a symbol, evaluating the symbol will expand the result. Use binding to retrieve the unexpanded expression.

```f = rationalize(1/a + 1/b + 1/2)
binding(f)
```
``` 2 a + a b + 2 b
╶───────────────╴
2 a b
```

Returns the real part of complex z.

```real(2 - 3i)
```
```2
```

Returns complex z in rectangular form.

```rect(exp(i x))
```
```cos(x) + i sin(x)
```

Rotates vector u and returns the result. Vector u is required to have 2n elements where n is an integer from 1 to 15. Arguments s,k,... are a sequence of rotation codes where s is an upper case letter and k is a qubit number 0 to n − 1. Rotations are evaluated from left to right. The available rotations are

 C, k Control prefix H, k Hadamard P, k, φ Phase modifier (use φ = 1/4 π for T rotation) Q, k Quantum Fourier transform V, k Inverse quantum Fourier transform W, k, j Swap qubits X, k Pauli X Y, k Pauli Y Z, k Pauli Z

Control prefix C, k modifies the next rotation code so that it is a controlled rotation with k as the control qubit. Use two or more prefixes to specify multiple control qubits. For example, C, k, C, j, X, m is a Toffoli rotation. Fourier rotations Q, k and V, k are applied to qubits 0 through k. (Q and V ignore any control prefix.) See also section 3 of the Eigenmath manual.

```psi = (1,0,0,0)
rotate(psi,H,0)
```
```┌        ┐
│   1    │
│ ╶────╴ │
│   1/2  │
│  2     │
│        │
│   1    │
│ ╶────╴ │
│   1/2  │
│  2     │
│        │
│   0    │
│        │
│   0    │
└        ┘
```

Run script file. Useful for importing function libraries.

```run("Downloads/EVA.txt")
```

Note: file must be in the Downloads folder due to security requirements for apps distributed on the Mac App Store.

Returns expression x in a simpler form.

```simplify(sin(x)^2 + cos(x)^2)
```
```1
```

Returns the sine of x.

```sin(pi/4)
```
```  1
╶────╴
1/2
2
```

Returns the hyperbolic sine of x.

```circexp(sinh(x))
```
```  1             1
−╶─╴ exp(−x) + ╶─╴ exp(x)
2             2
```

Returns the square root of x.

```sqrt(10!)
```
```     1/2
720 7
```

In a script, it does what it says.

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

```sum(j,1,5,x^j)
```
``` 5    4    3    2
x  + x  + x  + x  + x
```

The original value of i is restored after sum completes. If symbol i is used for index variable i then the imaginary unit is overridden in the scope of sum.

sum(y)

Returns the sum of components of y.

```sum((1,2,3,4))
```
```10
```

Returns the tangent of x.

Returns the hyperbolic tangent of x.

```circexp(tanh(x))
```
```       1             exp(2 x)
−╶────────────╴ + ╶────────────╴
exp(2 x) + 1     exp(2 x) + 1
```

If argument a is true (nonzero) then b is returned, else if c is true then d is returned, etc. If the number of arguments is odd then the final argument is returned if all else fails. Expressions can include the relational operators =, ==, <, <=, >, >=. Use the not function to test for inequality. (The equality operator == is available for contexts in which = is the assignment operator.)

```A = 1
B = 1
test(A=B,"yes","no")
```
```yes
```

Set trace=1 in a script to print the script as it is evaluated. Useful for debugging.

```trace = 1
```

Note: The contract function is used to obtain the trace of a matrix.

Returns the transpose of tensor 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.

```A = ((a,b),(c,d))
transpose(A)
```
```┌       ┐
│ a   c │
│       │
│ b   d │
└       ┘
```

Note: The argument list can be extended for multiple transpose operations. The arguments are evaluated from left to right. For example, transpose(A,1,2,2,3) is equivalent to transpose(transpose(A,1,2),2,3).

Returns an n by n identity matrix.

```unit(3)
```
```┌           ┐
│ 1   0   0 │
│           │
│ 0   1   0 │
│           │
│ 0   0   1 │
└           ┘
```

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

```A = zero(3,3)
for(k,1,3,A[k,k]=k)
A
```
```    ┌           ┐
│ 1   0   0 │
│           │
A = │ 0   2   0 │
│           │
│ 0   0   3 │
└           ┘
```