Operators
In DPUSER, operators are used to combine expressions. There are several types of operators:Assignment
To assign a value to a variable, the assignment operator is used. The general syntax of an assignment is:VARIABLE = valueor, if you wish to assign a value to a subset of a matrix:
VARIABLE = value
...
VARIABLE[range] = valueLike in the C programming language, several assignment operators are possible.
VARIABLE[range] = value
...
Operator | Syntax | Operands |
Assignment | VARIABLE = value | Number, matrix, string, string array |
Increment | VARIABLE | Number, matrix |
Decrement | VARIABLE-- | Number, matrix |
Multiplication | VARIABLE *= value | Number, matrix |
Division | VARIABLE /= value | Number, matrix |
Addition | VARIABLE = value | Number, matrix, string, string array |
Subtraction | VARIABLE -= value | Number, matrix |
If the " =" operator is applied to a string array, the string
at the right hand side of the statement will be appended to the string
array.
The assignment operator "=" can be used to write a matrix
as a FITS file. The syntax for doing this is 'filename'=matrix,
i.e. you assign a matrix to a filename, which is in single quotes. Note
that writing FITS files is also possible using the writefits
procedure.
Examples
var = 6 | creates a new variable named var and assigns a value of 6 |
'gauss.fits' = gauss(129, 129, 30) | writes a 2-dimensional gaussian to a disk file named gauss.fits |
var[100:200, *] | Increments elements 100 through 200 in the first dimension and all elements in the second dimension |
Parentesis
Parentesis are used in two ways: To enclose arguments to a function, and to group expressions. Parentesis can be used to override operator precedence.Examples
print sin(pi()) | prints out the sine of pi |
var = 2 3 * 5 | yields 17 |
var = (2 3) * 5 | yields 25 |
Ranges
With ranges, you can create matrices and string arrays, and you can access subscripts of arrays. To access a single elements of a matrix, supply the coordinates like [5,3]. To access a range, give the inclusive range, separated by a colon like [100:300, 50:60]. You can use the asterisk (*) to access all elements in an axes. Ranges in DPUSER are 1-based like in fortran. The arguments in a range can be the result of an expression.Examples
mvar = [1, sin(pi()), 3 5] | creates a 1-dimensional matrix with the values 1, 0, 8 |
nvar = [-3600:3600] / 10 | creates a 1D matrix with the values -360, -359.9, ..., 360 |
svar = ["test", "string"] | creates a string array with 2 elements |
print mvar[2] | prints the second element of mvar, which is 0 |
print svar[1] | prints out "test" |
print svar[2][strlen(svar[2])] | prints out the last character of the second element of svar, which is a "g" |
newvar = nvar[3601:3700] | creates a new matrix variable with 100 elements and assigns the values 0, 0.1, ..., 9.9 |
Mathematical operators
The basic mathematical operators are used in DPUSER. Depending on the type of associated variables, different actions (described below) are taken. If a matrix is combined with another matrix or a number, the result will be a matrix in which the operation is performed on each element. The available operators in precedence order are:Operator | Syntax | Arguments | Return Value |
Exponentation | x ^ y | Number, Matrix | Number if both x and y are numbers
Matrix if either x or y is a matrix |
Multiplication | x * y | Number, Matrix | Number if both x and y are numbers
Matrix if either x or y is a matrix |
Matrix multiplication | x # y | Matrix or vector | Matrix |
Division | x / y | Number, Matrix | Number if both x and y are numbers
Matrix if either x or y is a matrix |
Modulus | x % y | Integer number | Integer number |
Addition | x y | Number, Matrix | Number if both x and y are numbers
Matrix if either x or y is a matrix |
Number, String | String if either x or y is a string | ||
String, String array | String array if either x or y is a string array | ||
Subtraction | x - y | Number, Matrix | Number if both x and y are numbers
Matrix if either x or y is a matrix |
Boolean operators
Conditional statements can be given using the following operators. The list is in precedence order:Operator | Syntax | Arguments | Return Value |
Not | !x | Boolean | Boolean |
Not equals | x != y | Number, String | Boolean |
Equals | x == y | Number, String | Boolean |
Greater than | x > y | Number, String | Boolean |
Greater or equal | x >= y | Number, String | Boolean |
Less than | x < y | Number, String | Boolean |
Less than or equal to | x <= y | Number, String | Boolean |
And | x && y | Boolean | Boolean |
Or | x || y | Boolean | Boolean |