# expr

Evaluate a mathematical expression

## Description

Evaluate an expression using a C-like language. Variables and operators are used to create output values.

## Examples

## Discussion

Use the expr object to perform mathematical calculations using C language-style mathematical operations. The object evaluates expressions that use the "variables" $i1-$i9 (the first to ninth inlets, taken as integers), $f1-$f9 (the inlets as floats) and $s1-$s9 (the inlets as symbols), and/or constants of the same types. The operators are +, -, *, /, &, |, &&, ||, !, ~, and ^, and you can also use a set of predefined mathematical and statistical functions. The list of functions in expr are as follows: min, max, int (convert to integer), float (convert to float), pow (power), sqrt (square root), exp (power of e to x), log10 (log), ln (natural log), log (nat. log), sin, cos, tan, asin (arcsin), acos, atan, atan2, sinh, cosh, tanh, fact (factorial), random, size (size of a table), sum (sum of table contents), Sum (sum with boundaries), avg (of table contents), Avg (avg with boundaries), store (store into a table).

## Arguments

### expression [list]

The argument to the expr object is a mathematical expression composed of numbers, arithmetic operators such as + or *, comparisons such as < or > , C functions such as min () or pow () , names of table objects, and changeable arguments ( $i , $f , and $s ) for ints, floats, and symbols received in the inlets.

### constant [number]

Numbers can be used as constants in the mathematical expression.

### inlet-format [symbol]

Changeable arguments that specify data formats associated with an inlet are described using a combination of a data type ( $i or $f ) and an inlet number (example: $i2 ). The argument will be replaced by numbers received in the specified inlet.

### table-info [$s]

Changeable arguments that specify accessing data from a table are described using the argument $s and an inlet number which is replaced by the name of a table to be accessed. The argument should be immediately followed by a number in brackets specifying an address in the table. (Examples: $s2[7] or $s3[$i1] .)

### (other) [symbol]

The expr object understands the following arithmetic operators: + , - , * , / , %. Other operators are ~ (one's complement), ^ (bitwise exclusive or), & , && , | , || , and ! (not).

## Attributes

### Common Box Attributes

### annotation [symbol]

Sets the text that will be displayed in the Clue window when the user moves the mouse over the object.

### background [int] (default: 0)

Adds or removes the object from the patcher's background layer. background 1 adds the object to the background layer, background 0 removes it. Objects in the background layer are shown behind all objects in the default foreground layer.

### color [4 floats]

Sets the color for the object box outline.

### fontface [int]

Sets the type style used by the object. The options are:

plain

bold

italic

bold italic

Possible values:

0 = 'regular'

1 = 'bold'

2 = 'italic'

3 = 'bold italic'

### fontname [symbol]

Sets the object's font.

### fontsize [float]

Sets the object's font size (in points).

Possible values:

'8'

'9'

'10'

'11'

'12'

'13'

'14'

'16'

'18'

'20'

'24'

'30'

'36'

'48'

'64'

'72'

### hidden [int] (default: 0)

Toggles whether an object is hidden when the patcher is locked.

### hint [symbol]

Sets the text that will be displayed in as a pop-up hint when the user moves the mouse over the object in a locked patcher.

### ignoreclick [int] (default: 0)

Toggles whether an object ignores mouse clicks in a locked patcher.

### patching_rect [4 floats] (default: 0. 0. 100. 0.)

Sets the position and size of the object in the patcher window.

### position [2 floats]

Sets the object's x and y position in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its size unchanged.

### presentation [int] (default: 0)

Sets whether an object belongs to the patcher's presentation.

### presentation_rect [4 floats] (default: 0. 0. 0. 0.)

Sets the x and y position and width and height of the object in the patcher's presentation, leaving its patching position unchanged.

### rect [4 floats]

Sets the x and y position and width and height of the object in both patching and presentation modes (if the object belongs to its patcher's presentation).

### size [2 floats]

Sets the object's width and height in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its position unchanged.

### textcolor [float]

Sets the color for the object's text in RGBA format.

### textjustification [int]

Text Justification

Possible values:

0 = 'left'

1 = 'center'

2 = 'right'

### varname [symbol]

Sets the patcher's scripting name, which can be used to address the object by name in pattr, scripting messages to thispatcher, and the js object.

## Messages

### bang

### int

#### Arguments

### (inlet1)

#### Arguments

### (inlet2)

#### Arguments

### (inlet3)

#### Arguments

### (inlet4)

#### Arguments

### (inlet5)

#### Arguments

### (inlet6)

#### Arguments

### (inlet7)

#### Arguments

### (inlet8)

#### Arguments

### (inlet9)

#### Arguments

### float

#### Arguments

### (inlet1)

#### Arguments

### (inlet2)

#### Arguments

### (inlet3)

#### Arguments

### (inlet4)

#### Arguments

### (inlet5)

#### Arguments

### (inlet6)

#### Arguments

### (inlet7)

#### Arguments

### (inlet8)

#### Arguments

### (inlet9)

#### Arguments

### set

#### Arguments

### sm1

#### Arguments

### sm2

#### Arguments

### sm3

#### Arguments

### sm4

#### Arguments

### sm5

#### Arguments

### sm6

#### Arguments

### sm7

#### Arguments

### sm8

#### Arguments

### sm9

#### Arguments

### symbol

#### Arguments

### list

#### Arguments

## Output

### float

The output is the result of the evaluated expression.

### int

The output is the result of the evaluated expression.

## See Also

Name | Description |
---|---|

if | Conditional statement in if/then/else form |

vexpr | Evaluate a math expression for a list |

round | Round to a value |

Max Basic Tutorial 22: Designing Equations | Max Basic Tutorial 22: Designing Equations |