**Note**

We are actively expanding the set of operators and are keen to receive feature requests for new operators. Are you missing an operator? Let us know by providing

a (short) example exercise

description of the input and output of the operator

Operator name suggestion

We will quickly get back to you whether we can implement such an operator.

# List of operators

We currently support the following operators in parameter definitions:

## Basic operators

Random: Generate a random number between two bounds

Range: Generate a random number between two bounds, with a specified step

Formula: Perform an arbitrary expression calculation

Interval: specify an interval (probability theory)

Select: Extract a value from a list / matrix

Unique: Return all unique values of the input list

Length: Return the length of the input list or set

Max: Get the maximum value in a list or set

Min: Get the minimum value in a list or set

Round: Round a value to a specified number of decimals with one of several available rounding methods

Answer rule definition: define a (part of) an answer rule to reuse in multiple answer rules

Left hand side: Get the left hand side of an expression

Right hand side: get the right hand side of an expression

## Calculus

Imaginair part: Extract the Imaginair part of an expression

Real part: Extract the real part of an expression

Integral: Evaluate the integral of an expression

Derivative: Evaluate the derivative of an expression

Limit: Calculate the limit of an expression

Substitute: Substitute variables in an expression

Product: Evaluate the product of an expression

Sum: Evaluate the sum of an expression

## Linear Algebra

Determinant: Calculate the determinant of a matrix

Column space: Calculate the column-space of a matrix

Null space: Calculate the null-space of a matrix

Rank: Calculate the rank of a matrix

Transpose: Transpose a matrix

RREF: Calculate the Row Reduced Echelon Form of a matrix

EigenValues: Calculate the Eigenvalues of a matrix

EigenVectors: Calculate the Eigenvectors of a matrix

Shape: Calculates the shape of a matrix

Diagonalize: Calculates the P and D matrices of an input matrix

## Statistics

Mean: Get the mean of the values in a list or set

Median: Get the median of the values in a list or set

Mode: Get the mode of the values in a list

Variance: Get the sample or population variance of the values in the list.

CDF: Calculate the cumulative distribution function of a given distribution.

PDF: Calculate the probability density function of a given distribution.

Quantile: Calculate the value of a given quantile of a given distribution

Standard deviation: Get the sample or population standard deviation of the values in the list

Dataset: Upload a dataset to the platform

Sample: Sample rows from a given dataset

Correlation: Calculates the correlation between two lists of numeric values

Linear Regression: Perform Ordinary least squares linear regression

## Conversions

Read Decimal From Base: assume the input is a number (integer) using a specific number base (e.g. binary) and transform it to its decimal number base value.

Display Decimal As Base: transform the decimal number (integer) input to the specified base (e.g. hexadecimal) to be used for displaying in the text.

Read expression with mixed numbers: assume that the given expression uses an integer followed by a fraction to represent a mixed number, instead of a multiplication.

Display expression with mixed numbers: visualise the given expression with mixed number instead of improper fractions.

## Distributions

Normal: Define a normal distribution with an optional mean and standard deviation

Student T: Define a Student T distribution with a given degrees of freedom

Chi-squared: Define a Chi Squared distribution with a given degrees of freedom

# Detailed descriptions

# Basic operators

## Random

*Input*:* *

min: minimal value for the range

max: maximum value for the range

decimals: number of decimals to round the answer to

*Output: *A value between *min* and *max* rounded to *decimals* numbers

## Range

*Input*:* *

min: minimal value for the range

step: the step-size between

*min*and*max*max: maximum value for the range

*Output: *A value out of the set *[min, min+1*step_size, min+2*stepsize, ..., min+n*stepsize, max]*

## Formula

*Input*:* *any expression, such as numbers, formula's, lists, sets, vectors or matrices

*Output: *The results of evaluating and **simplifying** the input.

NOTE: you can specify an interval via the "Interval" operator. See below for more detail.

## Interval

*Input*:* *an interval definition. See for more detail "Interval Syntax"

*Output: *the interval object to use in other operators.

## Select

*Input*:

value: any formula expression resulting in a Matrix, Vector, list or Dataset

first index selector: a selector for the first dimension to select (see comments below)

second index selector: a selector for the second dimension to select (see comments below). This selector is only used of the value has more than 1 dimension.

*Output: *The value of the selected dimensions. Depending on the input this can be a list, a matrix, a vector, or a single value.

Index selectors are either

a single index value (starting the count at

**1**)a list of index values separated by a comma (e.g. "[1,3]")

a '

**:**' to represent the whole rangea range in the form of "range_start:range_end" where the "range_end" can be negative which is a short-hand notation for counting back from length (e.g. "1:4" or "2:-1")

Note: if the input is not a Matrix, Vector, list, or Dataset the original expression will be returned.

**Unique**

*Input*:* *Any formula expression resulting in a list

*Output: *A list containing all unique values of the input list

## Length

*Input*:* *Any formula expression resulting in a list or set

*Output: *The number of items in the input list, or the number of unique items in the set

## Max

*Input*:* *Any formula expression resulting in a list or set

*Output: *Maximum value in input

## Min

*Input*:* *Any formula expression resulting in a list or set

*Output: *Minimum value in input

## Round

*Input*:

value: any expression which can be evaluated to a numeric value, or a list of numeric values, or a matrix containing only numeric values

decimals: number of decimals to round to (integer value >= 0)

method: one of the available methods to be used for rounding.

*Output: *a numeric value (integer or floating point value), or a list of numeric values, or a matrix containing only numeric values.

The available methods are:

*half away from zero*

Rounds to the closest decimal and for halves it rounds away from zero, making the method symmetric around zero.

This method rounds**1.25 to 1.3**and**-1.25 to -1.3**when rounding to a single decimal.

*half towards zero*

Rounds to the closest decimal and for halves it rounds towards zero, making the method symmetric around zero.

This method rounds**1.25 to 1.2**and**-1.25 to -1.2**when rounding to a single decimal.

*half towards even*

Rounds to the closest decimal and for halves it rounds to the nearest even number at the desired precision, making the method symmetric around zero.

This method rounds**1.25 to 1.2**,**-1.25 to -1.2**,**1.35 to 1.4**and**-1.35 to -1.4**when rounding to a single decimal.

*away from zero*

Always rounds away from zero. Similar to rounding up, but this method is symmetric around zero.

This method rounds**1.22 to 1.3**and**-1.22 to -1.3**when rounding to a single decimal.

*towards zero*

Always rounds towards zero. Similar to rounding down, but this method is symmetric around zero.

This method rounds**1.28 to 1.2**and**-1.28 to -1.2**when rounding to a single decimal.

*up (ceil)*

Always rounds up, making this method non-symmetric around zero.

This methods rounds**1.22 to 1.3**and**-1.28 to -1.2**when rounding to a single decimal.

*down (floor)*

Always rounds down, making this method asymmetric around zero.

This method rounds**1.28 to 1.2**and**-1.22 to -1.3**when rounding to a single decimal.

## Answer rule definition

*Input:* A (partial) definition of an answer rule

*Output: *1 of the defined answer rule is True, 0 otherwise.

## Left Hand Side

*Input:* Any expression

*Output: *The left hand side of the expression if the expression represents a relation such as `=`

, `<`

, `>`

, `<=`

, `>=`

, or the same expression of the expression does not represent a relation.

## Right Hand Side

*Input:* Any expression

*Output: *The right hand side of the expression if the expression represents a relation such as `=`

, `<`

, `>`

, `<=`

, `>=`

, or the same expression of the expression does not represent a relation.

# Calculus

## Imaginair part

*Input:* Any formula expression

*Output: *The imaginary part of the expression

For more details on the implementation see the underlying function documentation.

## Real part

*Input:* Any formula expression

*Output: *The real part of the expression

For more details on the implementation see the underlying function documentation.

## Integral

*Input:*

Formula: the formula to integrate

Argument: the variable which to integrate to

sub (optional): the lower bounds of the interval to integrate on

sup (optional): the upper bounds of the interval to integrate on

*Output: *The integrated formula

For more details on the implementation see the underlying function documentation.

## Derivative

*Input:*

Formula: the formula to differentiate

Argument: the variable which to differentiate to

*Output: *The differentiated formula

For more details on the implementation see the underlying function documentation.

## Limit

*Input:*

Formula: the formula to calculate the limit of

Argument: the variable to calculate the limit of

C: the value which

*argument*approachesdirection (optional, either

**+**or**-**): the direction in which the limit should be calculated

*Output: *The limit of *formula* of *argument* as *argument* approaches *C*

For more details on the implementation see the underlying function documentation.

## Substitute

*Input:*

Formula: the formula to substitute values in

substitutions: a list of tuples (pattern, replacement)

Note: the substitutes need to be done one by one, see the image below as an example on how this looks

*Output: *The *formula* in which all *patterns* are substituted by *replacements *(in the specified order)

For more details on the implementation see the underlying function documentation.

## Product

*Input:*

Formula: the formula to calculate the product of

index: the variable which represents the value of the index

lower_bound: the start value of the iteration (an integer)

upper_bound: the end value of the iteration (an integer)

*Output: *The product of the sequence defined by the formula and the range

## Sum

*Input:*

Formula: the formula to calculate the sum of

index: the variable which represents the value of the index

lower_bound: the start value of the iteration (an integer)

upper_bound: the end value of the iteration (an integer)

*Output: *The sum of the sequence defined by the formula and the range

# Linear Algebra

## Determinant

*Input:* A matrix

*Output: *The determinant of *matrix*

For more details on the implementation see the underlying function documentation.

## Column space

*Input:* A matrix

*Output: *List of column vectors that span the column space of the matrix

For more details on the implementation see the underlying function documentation.

## Null space

*Input:* A matrix

*Output: *List of column vectors that span the null space of the matrix

For more details on the implementation see the underlying function documentation.

## Rank

*Input:* A matrix

*Output: *The rank of the input *matrix*

For more details on the implementation see the underlying function documentation.

## Transpose

*Input:* A matrix

*Output: *The transpose of the input *matrix*

For more details on the implementation see the underlying function documentation.

## RREF

*Input:* A matrix

*Output: *The Row Reduced Echelon Form of the input *matrix*

For more details on the implementation see the underlying function documentation. Note that we only return a m*atrix*, not the tuple of index columns.

## EigenValues

*Input:* A matrix

*Output: *A list with the EigenValues of the input *matrix*

For more details on the implementation see the underlying function documentation. Note that we return the EigenValues in the same order as the EigenVectors

## EigenVectors

*Input:* A matrix

*Output: *A list with the EigenVectors of the input *matrix*

For more details on the implementation see the underlying function documentation. Note that we return the EigenVectors in the same order as the EigenValues

## Shape

*Input:* A matrix

*Output: *Two values, one for the number of rows of the matrix and one for the number of columns of the matrix. These values can be selected as separate placeholder names.

## Diagonalize

*Input:* A matrix

*Output: *Two values, one matrix ** D** which is diagonal, and a matrix

**such that 𝑃𝐷𝑃^-1 gives the input matrix.**

*P*

For more details on the implementation see the underlying function documentation.

# Statistics

## Mean

*Input*:* *Any formula expression resulting in a list or set

*Output: *Mean value of the input

## Median

*Input*:* *Any formula expression resulting in a list or set

*Output: *Median value of the input

## Mode

*Input*:* *Any formula expression resulting in a list

*Output: *Mode value of the input

IMPORTANT: you can **not apply** this operator on multi-modal distributions (e.g. [1,2,2,3,3]). This will result in an error and a warning message.

## Variance

*Input:*

Value: Any formula expression resulting in a list or set

Method:

**sample**(default) or**population**

*Output: *the variance of the list or set using the method specified

**CDF**

*Input:*

X: A distribution defined by one of the distribution function

p: The value on which the CDF needs to be computed

*Output:*

The probability that X will take a value less than or equal to p

**PDF**

*Input:*

X: A distribution defined by one of the distribution function

p: The value on which the PDF needs to be computed

*Output:*

The likelihood that X will take the value x

**Quantile**

*Inputs*

X: A distribution defined by one of the distribution function

p: The required quantile (a number between 0 and 1)

*Output*

The value of the quantile x for distribution X

## Standard Deviation

*Input:*

Value: Any formula expression resulting in a list or set

Method:

**sample**(default) or**population**

*Output: *the standard deviation of the list or set using the method specified

## Dataset

*Input*: A file with comma separated values. This file should have column names in the first row, no missing values, and should be less than 2MB in size.

*Output*: A dataset variable which can be used in other dataset-based operators

## Sample

*Input*:

A dataset based variable

The size of the samples

*Output*: A dataset variable which can be used in other dataset-based operators

## Correlation

*Input:*

Two lists of numeric values. These values can be the result of mathematical expressions, or result of selecting a single column of a dataset using the Select operator.

Note: all values of the lists should be numeric and available. The current operator cannot deal with missing data.The method of correlation to use

*Output*: Two values:

the estimate of the correlation

the p-value of the correlation

These values can be selected as separate placeholder names.

## Linear Regression

*Input:*

A list of numeric values for the dependent variable,

A list of lists of numeric values, one for each coefficient B1 ... Bn

These values can be the result of mathematical expressions, or result of selecting a single column of a dataset using the Select operator.

Note: all values of the lists should be numeric and available. The current operator cannot deal with missing data.

*Output:* Multiple values:

The coefficient of the constant

The standard deviation of the coefficient of the constant

The coefficient of each of B1 ... Bn

The standard deviation of each coefficient B1 ... Bn

The R-Squared value of the model

The adjusted R-Squared value of the model

The residual standard error of the model

These values can be selected as separate placeholder names.

# Conversions

## Read Decimal From Base

*Input:*

value: an expression to be interpreted as a integer value in the specified number base

base: one of the four options provided in the dropdown (binary, octal, decimal, hexadecimal

*Output: *an integer value representing the input in the decimal number.

NOTE: the output has a latex representation without the subscript (10).

## Display Decimal As Base

*Input:*

value: an integer value to be displayed in the specified number base

base: one of the four options provided in the dropdown (binary, octal, decimal, hexadecimal

*Output: *the value in the specified base with the subscript of the base

NOTE: this value cannot be used as "integer value" in other parameter input field or answer rule field. It can be used for displaying an integer value in a non-decimal base.

## Read expression with mixed numbers

*Input:*

value: an expression in which an integer followed by a fraction is meant to represent a mixed number i.s.o. a multiplication.

*Output: *the parsed expression.

For more details see this article.

## Display expression with mixed numbers

*Input:*

value: an expression

*Output: *the expression visualised with mixed number instead of improper fractions.

For more details see this article.

# Distributions

**Normal (distribution)**

*Input:*

The mean of the distribution (default 0)

The standard deviation of the distribution (default 1)

*Output*:

An object representing the configured continuous distribution to be used on some of the statistical functions

**Student T (distribution)**

*Input*:

The degrees of freedom

*Output*:

An object representing the configured continuous distribution to be used on some of the statistical functions

**Chi-squared (distribution)**

Input:

The degrees of freedom

Output:

An object representing the configured continuous distribution to be used on some of the statistical functions

# New operators

We are actively expanding the set of operators and are keen to receive feature requests for new operators. Are you missing an operator? Let us know by providing

a (short) example exercise

description of the input and output of the operator

Operator name suggestion

We will quickly get back to you whether we can implement such an operator.

If you have any questions regarding operators or other functionality, please reach out to us via the chat icon in the bottom right.