+Rounding: round(x) - round to the nearest integer; floor(x) - round to the smaller integer (towards -∞); ceiling(x) - round to the greater integer (towards +∞); trunc(x) - round to the smaller integer (towards zero);
+Integer: mod(x;y) - the remainder of an integer division; gcd(x;y;z…) - the greatest common divisor of several integers; lcm(x;y;z…) - the least common multiple of several integers;
+Complex: re(z) - the real part of a complex number; im(z) - the imaginary part of a complex number; abs(x) - absolute value/magnitude; phase(z) - the phase of a complex number; conj(z) - the conjugate of a complex number;
+Other: sign(x) - sign of a number; random(x) - a random number between 0 and x; getunits(x) - gets the units of x without the value. Returns 1 if x is unitless; setunits(x;u) - sets the units u to x where x can be scalar, vector or matrix; clrunits(x) - clears the units from a scalar, vector or matrix x; hp(x) - converts x to its high performance (hp) equivalent type; ishp(x) - checks if the type of x is a high-performance (hp) vector or matrix;
+Vector: Creational: vector(n) - creates an empty vector with length n; vector_hp(n) - creates an empty high performance (hp) vector with length n; range(x1;xn;step) - creates a vector with values spanning from x1 to xn with step step; range_hp(x1;xn;step)- creates a high performance (hp) from a range of values as above; Structural: len(⃗v) - returns the length of vector ⃗v; size(⃗v) - the actual size of vector ⃗v (the index of the last non-zero element); resize(⃗v;n) - sets a new length n of vector ⃗v; fill(⃗v;x) - fills vector ⃗v with value x; join(M;⃗v;x…) - creates a vector by joining the arguments: matrices, vectors and scalars; slice(⃗v;i1;i2) - returns the part of vector ⃗v bounded by indexes i1 and i2 inclusive; first(⃗v;n) - the first n elements of vector ⃗v; last(⃗v;n) - the last n elements of vector ⃗v; extract(⃗v;⃗vi) - extracts the elements from ⃗v which indexes are contained in ⃗vi; Data: sort(⃗v) - sorts the elements of vector ⃗v in ascending order; rsort(⃗v) - sorts the elements of vector ⃗v in descending order; order(⃗v) - the indexes of vector ⃗v, arranged by the ascending order of its elements; revorder(⃗v) - the indexes of vector ⃗v, arranged by the descending order of its elements; reverse(⃗v) - a new vector containing the elements of ⃗v in reverse order; count(⃗v;x;i) - the number of elements in ⃗v, after the i-th one, that are equal to x; search(⃗v;x;i)- the index of the first element in ⃗v, after the i-th one, that is equal to x; find(⃗v;x;i) or find_eq(⃗v;x;i) - the indexes of all elements in ⃗v, after the i-th one, that are = x; find_ne(⃗v;x;i) - the indexes of all elements in ⃗v, after the i-th one, that are ≠ x; find_lt(⃗v;x;i) - the indexes of all elements in ⃗v, after the i-th one, that are < x; find_le(⃗v;x;i) - the indexes of all elements in ⃗v, after the i-th one, that are ≤ x; find_gt(⃗v;x;i) - the indexes of all elements in ⃗v, after the i-th one, that are > x; find_ge(⃗v;x;i) - the indexes of all elements in ⃗v, after the i-th one, that are ≥ x; lookup(⃗a;⃗b;x) or lookup_eq(⃗a;⃗b;x) - all elements in ⃗a for which the respective elements in ⃗b are = x; lookup_ne(⃗a;⃗b;x) - all elements in ⃗a for which the respective elements in ⃗b are ≠ x; lookup_lt(⃗a;⃗b;x) - all elements in ⃗a for which the respective elements in ⃗b are < x; lookup_le(⃗a;⃗b;x) - all elements in ⃗a for which the respective elements in ⃗b are ≤ x; lookup_gt(⃗a;⃗b;x) - all elements in ⃗a for which the respective elements in ⃗b are > x; lookup_ge(⃗a;⃗b;x) - all elements in ⃗a for which the respective elements in ⃗b are ≥ x; Math: norm_1(⃗v) - L1 (Manhattan) norm of vector ⃗v; norm(⃗v) or norm_2(⃗v) or norm_e(⃗v) - L2 (Euclidean) norm of vector ⃗v; norm_p(⃗v;p) - Lp norm of vector ⃗v; norm_i(⃗v) - L∞ (infinity) norm of vector ⃗v; unit(⃗v) - the normalized vector ⃗v (with L2 norm = 1); dot(⃗a;⃗b) - scalar product of two vectors ⃗a and ⃗b; cross(⃗a;⃗b) - cross product of two vectors ⃗a and ⃗b (with length 2 or 3);
+Matrix: Creational: matrix(m;n) - creates an empty matrix with dimensions m⨯n; identity(n) - creates an identity matrix with dimensions n⨯n; diagonal(n;d) - creates a n⨯n diagonal matrix and fills the diagonal with value d; column(m;c) - creates a column matrix with dimensions m⨯1, filled with value c; utriang(n) - creates an upper triangular matrix with dimensions n⨯n; ltriang(n) - creates a lower triangular matrix with dimensions n⨯n; symmetric(n) - creates a symmetric matrix with dimensions n⨯n; matrix_hp(m;n) - creates a high-performance (hp) matrix with dimensions m⨯n; identity_hp(n) - creates a high-performance (hp) identity matrix with dimensions n⨯n; diagonal_hp(n;d) - creates a high-performance (hp) n⨯n diagonal matrix filled with value d; column_hp(m;c) - creates a high-performance (hp) m⨯1 column matrix filled with value c; utriang_hp(n) - creates a high-performance (hp) n⨯n upper triangular matrix; ltriang_hp(n) - creates a high-performance (hp) n⨯n lower triangular matrix; symmetric_hp(n) - creates a high-performance (hp) symmetric matrix with dimensions n⨯n; vec2diag(⃗v) - creates a diagonal matrix from the elements of vector ⃗v; vec2row(⃗v) - creates a row matrix from the elements of vector ⃗v; vec2col(⃗v) - creates a column matrix from the elements of vector ⃗v; join_cols(⃗c1;⃗c2;⃗c3…) - creates a new matrix by joining column vectors; join_rows(⃗r1;⃗r2;⃗r3…) - creates a new matrix by joining row vectors; augment(A;B;C…) - creates a new matrix by appending matrices A;B;C side by side; stack(A;B;C…) - creates a new matrix by stacking matrices A;B;C one below the other; Structural: n_rows(M) - number of rows in matrix M; n_cols(M) - number of columns in matrix M; mresize(M;m;n) - sets new dimensions m and n for matrix M; mfill(M;x) - fills matrix M with value x; fill_row(M;i;x) - fills the i-th row of matrix M with value x; fill_col(M;j;x) - fills the j-th column of matrix M with value x; copy(A;B;i;j) - copies all elements from A to B, starting from indexes i and j of B; add(A;B;i;j) - adds all elements from A to those of B, starting from indexes i and j of B; row(M;i) - extracts the i-th row of matrix M as a vector; col(M;j) - extracts the j-th column of matrix M as a vector; extract_rows(M;⃗vi) - extracts the rows from matrix M whose indexes are contained in vector ⃗vi; extract_cols(M;⃗vj) - extracts the columns from matrix M whose indexes are contained in vector ⃗vj; diag2vec(M) - extracts the diagonal elements of matrix M to a vector; submatrix(M;i1;i2;j1;j2) - extracts a submatrix of M, bounded by rows i1 and i2 and columns j1 and j2, incl.; Data: sort_cols(M;i) - sorts the columns of M based on the values in row i in ascending order; rsort_cols(M;i) - sorts the columns of M based on the values in row i in descending order; sort_rows(M;j) - sorts the rows of M based on the values in column j in ascending order; rsort_rows(M;j) - sorts the rows of M based on the values in column j in descending order; order_cols(M;i) - the indexes of the columns of M based on the ordering of the values from row i in ascending order; revorder_cols(M;i) - the indexes of the columns of M based on the ordering of the values from row i in descending order; order_rows(M;j) - the indexes of the rows of M based on the ordering of the values in column j in ascending order; revorder_rows(M;j) - the indexes of the rows of M based on the ordering of the values in column j in descending order; mcount(M;x) - number of occurrences of value x in matrix M; msearch(M;x;i;j) - vector with the two indexes of the first occurrence of x in matrix M, starting from indexes i and j; mfind(M;x) or mfind_eq(M;x) - the indexes of all elements in M that are = x; mfind_ne(M;x) - the indexes of all elements in M that are ≠ x; mfind_lt(M;x) - the indexes of all elements in M that are < x; mfind_le(M;x) - the indexes of all elements in M that are ≤ x; mfind_gt(M;x) - the indexes of all elements in M that are > x; mfind_ge(M;x) - the indexes of all elements in M that are ≥ x; hlookup(M;x;i1;i2) or hlookup_eq(M;x;i1;i2) - the values from row i2 of M, for which the elements in row i1 are = x; hlookup_ne(M;x;i1;i2) - the values from row i2 of M, for which the elements in row i1 are ≠ x; hlookup_lt(M;x;i1;i2) - the values from row i2 of M, for which the elements in row i1 are < x; hlookup_le(M;x;i1;i2) - the values from row i2 of M, for which the elements in row i1 are ≤ x; hlookup_gt(M;x;i1;i2) - the values from row i2 of M, for which the elements in row i1 are > x; hlookup_ge(M;x;i1;i2) - the values from row i2 of M, for which the elements in row i1 are ≥ x; vlookup(M;x;j1;j2) or vlookup_eq(M;x;j1;j2) - the values from column j2 of M, for which the elements in column j1 are = x; vlookup_ne(M;x;j1;j2) - the values from column j2 of M, for which the elements in column j1 are ≠ x; vlookup_lt(M;x;j1;j2) - the values from column j2 of M, for which the elements in column j1 are < x; vlookup_le(M;x;j1;j2) - the values from column j2 of M, for which the elements in column j1 are ≤ x; vlookup_gt(M;x;j1;j2) - the values from column j2 of M, for which the elements in column j1 are > x; vlookup_ge(M;x;j1;j2) - the values from column j2 of M, for which the elements in column j1 are ≥ x; Math: hprod(A;B) - Hadamard product of matrices A and B; fprod(A;B) - Frobenius product of matrices A and B; kprod(A;B) - Kronecker product of matrices A and B; mnorm_1(M) - L1 norm of matrix M; mnorm(M) or mnorm_2(M) - L2 norm of matrix M; mnorm_e(M) - Frobenius norm of matrix M; mnorm_i(M) - L∞ norm of matrix M; cond_1(M) - condition number of M based on the L1 norm; cond(M) or cond_2(M) - condition number of M based on the L2 norm; cond_e(M) - condition number of M based on the Frobenius norm; cond_i(M) - condition number of M based on the L∞ norm; det(M) - determinant of matrix M; rank(M) - rank of matrix M; trace(M) - trace of matrix M; transp(M) - transpose of matrix M; adj(M) - adjugate of matrix M; cofactor(M) - cofactor matrix of M; eigenvals(M;ne) - the first ne eigenvalues of matrix M (or all if omitted); eigenvecs(M;ne) - the first ne eigenvectors of matrix M (or all if omitted); eigen(M;ne) - the first ne eigenvalues and eigenvectors of matrix M (or all if omitted); cholesky(M) - Cholesky decomposition of a symmetric, positive-definite matrix M; lu(M) - LU decomposition of matrix M; qr(M) - QR decomposition of matrix M; svd(M) - singular value decomposition of M; inverse(M) - inverse of matrix M; lsolve(A;⃗b) - solves the system of linear equations A⃗x = ⃗b using LDLT decomposition for symmetric matrices, and LU for non-symmetric; clsolve(A;⃗b) - solves the linear matrix equation A⃗x = ⃗b with symmetric, positive-definite coefficient matrix A using Cholesky decomposition; slsolve(A;⃗b) - solves the linear matrix equation A⃗x = ⃗b with high-performance symmetric, positive-definite matrix A using preconditioned conjugate gradient (PCG) method; msolve(A;B) - solves the generalized matrix equation AX = B using LDLT decomposition for symmetric matrices, and LU for non-symmetric; cmsolve(A;B) - solves the generalized matrix equation AX = B with symmetric, positive-definite coefficient matrix A using Cholesky decomposition; smsolve(A;B) - solves the generalized matrix equation AX = B with high-performance symmetric, positive-definite matrix A using preconditioned conjugate gradient (PCG) method; fft(M) - performs fast Fourier transform of row-major matrix M. It must have one row for real data and two rows for complex; ift(M) - performs inverse Fourier transform of row-major matrix M. It must have one row for real data and two rows for complex; Double interpolation: take(x;y;M) - returns the element of matrix M at indexes x and y; line(x;y;M) - double linear interpolation from the elements of matrix M based on the values of x and y; spline(x;y;M) - double Hermite spline interpolation from the elements of matrix M based on the values of x and y. Tol - target tolerance for the iterative PCG solver.
Comments: "Title" or 'text' in double or single quotes. HTML, CSS, JS and SVG are allowed.
+Output control: #hide - hide the report contents; #show - always show the contents (default); #pre - show the next contents only before calculations; #post - show the next contents only after calculations; #val - show only the final result, without the equation; #equ - show complete equations and results (default); #noc - show only equations without results (no calculations); #nosub - do not substitute variables (no substitution); #novar - show equations only with substituted values (no variables); #varsub - show equations with variables and substituted values (default); #split - split equations that do not fit on a single line; #wrap - wrap equations that do not fit on a single line (default); #round n - rounds the output to n digits after the decimal point; #round default - restores rounding to the default settings; #format FFFF - specifies custom format string; #format default - restores the default formatting; #md on - enables markdown in comments; #md off - disables markdown in comments; #phasor - sets output format of complex numbers to polar phasor: A∠φ; #complex - sets output format of complex numbers to Cartesian algebraic: a + bi.
Each of the above commands is effective after the current line until the end of the report or another command that overrides it.
+Breakpoints for step-by-step execution: #pause - calculates down to the current line and waits for the user to resume manually; #input - renders an input form to the current line and waits for user input.