# Numerical Expressions

This STx-related article may be outdated.

#### General

A numerical expression is a combination of symbols which represent some numerical value. In STx numerical expressions can be used in many places (e.g. in evaluation commands, as an argument, ...) and may contain the following parts:

• any integer or decimal number
• the contents of a numerical variable
• the operators addition '`+`', subtraction '`-`', multiplication '`*`', division '`/`', modulus '`%'`, logical and '`&`', logical or '`|`', power '`^`' , NOT '`!'` , unary minus '`-`' and parenthesis '`(`' and '`)`'.
• mathematical functions

All calculations are performed using 64 bit floating point numbers. Since the default data format in STx macros is the string, the commands `NUM``,` `INT` or `EVAL` must be used to evaluate numerical expressions when assigning them to a variable (e.g. '`#value := PI`' assigns the string '`PI`' to '`#value`', whereas '`#value := NUM PI`' assigns '`3.14159`' to '`#value`').

If you use the `EVAL` command, you can also perform calculations using vectors and matrices. Please see the `EVAL` command documentation in the Command Reference for details.

The conversion to (32 bit) integer values is performed (if necessary) after expression evaluation.

Expressions should be enclosed in quotes to allow blanks inside the expression and to disable parsing of special characters (e.g. the slash '`/`', which is used in expressions as divide-operator and in commands to mark options).

#### Operators

The following operators are supported:

##### Unary Operators
 sign `-` -expr logical not `!` !expr

##### Binary Operators
 add `+` exprA+exprB subtract `-` exprA-exprB multiply `*` exprA*exprB divide `/` exprA/exprB modulus `%` exprA%exprB power `^` exprA^exprB logical and `&` exprA&exprB logical or exprA|exprB

##### Precedence

Precedence of operators (Operators on the same level are evaluated from left to right):

• parenthesis ( )
• unary minus '`-`', logical not '`!`'
• power '`^`', logical and '`&`', logical or '`|`'
• multiplication '`*`', division '`/`', modulus '`%`'
• addition '`+`', subtraction '`-`'

#### Functions

The following mathematical functions are available in numerical expressions:

##### abs

The absolute value of x.{| |- |Usage: |abs(x) |- |Arguments: |{| |- |x |A numerical value. |}

| |}

##### acos

The inverse cosine of x.{| |- |Usage: |acos(x) |- |Arguments: |{| |- |x |-1 <= x <= 1 |}

| |}

##### asin

The inverse sine of x.{| |- |Usage: |asin(x) |- |Arguments: |{| |- |x |-1 <= x <= 1 |}

| |}

##### atan

The inverse tangent of x.

 Usage: atan(x) Arguments: x A numerical value.

| |}

##### bark2hz

Computes the Hertz equivalent of the Bark value x.{| |- |Usage: |bark2hz(x) |- |Arguments: |{| |- |x |A numerical value in Bark |}

| |}

##### bit

Computes 2 ^ x (0 <= x < 32). Use this to compute bit masks.

 Usage: bit(x) Arguments: x An integer value (0 <= x <= 32).

| |}

##### cos

The cosine of x.{| |- |Usage: |cos(x) |- |Arguments: |{| |- |x |A value in radians. |}

| |}

##### db

The value of x in converted thus: 10 ^ (x / 20)

 Usage: db(x) Arguments: x A numerical value.

| |}

##### exp

The value `e` raised to the power of x.{| |- |Usage: |exp(x) |- |Arguments: |{| |- |x |a numerical value |}

| |}

##### floor

The floor of x.{| |- |Usage: |floor(x) |- |Arguments: |{| |- |x |any real number |}

| |}

##### hz2bark

Computes the Bark equivalent of the Hertz value x.{| |- |Usage: |hz2bark(x) |- |Arguments: |{| |- |x |A numerical value in Hertz (0 <= x <= 20000). |}

| |}

##### int

The integer value of x. This function truncates the value x.{| |- |Usage: |int(x) |- |Arguments: |{| |- |x |A numerical value. |}

| |}

##### ln

The natural logarithm of x.{| |- |Usage: |ln(x) |- |Arguments: |{| |- |x |A numerical value (x > 0) |}

| |}

##### log

The 10 base logarithm of the argument x.{| |- |Usage: |log(x) |- |Arguments: |{| |- |x |A numerical value (x > 0) |}

| |}

##### lran

A linear distributed random number (Interval = [0,1]).

##### pi

The constant p to 16 decimal places.

##### round

Round the number x to the nearest integer.{| |- |Usage: |round(x) |- |Arguments: |{| |- |x |The value to round. |}

| |}

##### setlran

Set the random seed for the lran function to x or the current time.

 Usage: setlran(x) Arguments: x Set the random seed to the current time (x = 0) or to the value of x (0 < x < 1).

| |}

##### sign

-1 if x is negative, otherwise 1.

 Usage: sign(x) Arguments: x A numerical value.

| |}

##### sin

The sine of x.{| |- |Usage: |sin(x) |- |Arguments: |{| |- |x |A value in radians. |}

| |}

##### sinc

The sinc function of x.

 Usage: sinc(x) Arguments: x A numerical value

| |}

##### sinx

1 if x = 0, otherwise sin(x)/x{| |- |Usage: |sinx(x) |- |Arguments: |{| |- |x |A numerical value. |}

| |}

##### sqrt

The square root of x.{| |- |Usage: |sqrt(x) |- |Arguments: |{| |- |x |A numerical value. |}

| |}

##### tan

The tangent of x.{| |- |Usage: |tan(x) |- |Arguments: |{| |- |x |A value in radians. |}

| |}