Ai Modules ====== Formula ====== ^ section | Math | ^ short description | Outputs a value calculated from the input value(s), with an easy-to-use formula language. | ^ licence level | Anjuna | ^ ports | Input A [numeric/control]\\ Input B [numeric/control]\\ Input C [numeric/control]\\ Input D [numeric/control]\\ Out [numeric/control]\\ Compile Formula [pushbutton] | ^ skins | Small, **Medium** | Type in the formula, wire inputs and output, hit ''Compile''. Now the output value is dynamically computed from the input value(s). ==== used in example ==== {{backlinks>.#ai:examples}} ===== Manual ===== > Applies a user defined formula to the inputs and outputs the value on the Out port. The formula syntax follows the mu parser format as specifed here: http://muparser.beltoforion.de/ with a few additional functions such as the Modulus function mod(a, b) and the addition of vector component access in the Vector Formula module. > {{:ai:modules:math:formula_skins.png|}} ===== Skins ===== ==== Medium ==== 4 inputs, medium-sized formula textfield. Can be resized. ==== Small ==== 2 inputs, slightly smaller formula textfield. Can be resized. ===== Formula language ===== Currently a list of the available commands is available here: http://beltoforion.de/article.php?a=muparser&hl=en&p=features&da=1. For ease of use it is replicated here, however, as always you are reeferred to the original source. ==== Built-in functions ==== The following table gives an overview of the functions supported by the default implementation. It lists the function names, the number of arguments and a brief description. ^ Name ^ Argc. ^ Explanation ^ | sin | 1 | sine function | | cos | 1 | cosine function | | tan | 1 | tangens function | | asin | 1 | arcus sine function | | acos | 1 | arcus cosine function | | atan | 1 | arcus tangens function | | sinh | 1 | hyperbolic sine function | | cosh | 1 | hyperbolic cosine | | tanh | 1 | hyperbolic tangens function | | asinh | 1 | hyperbolic arcus sine function | | acosh | 1 | hyperbolic arcus tangens function | | atanh | 1 | hyperbolic arcus tangens function | | log2 | 1 | logarithm to the base 2 | | log10 | 1 | logarithm to the base 10 | | log | 1 | logarithm to base e (2.71828...) | | ln | 1 | logarithm to base e (2.71828...) | | exp | 1 | e raised to the power of x | | sqrt | 1 | square root of a value | | sign | 1 | sign function -1 if x<0; 1 if x>0 | | rint | 1 | round to nearest integer | | abs | 1 | absolute value | | min | var. | min of all arguments | | max | var. | max of all arguments | | sum | var. | sum of all arguments | | avg | var. | mean value of all arguments | ==== Built-in binary operators ==== The following table lists the default binary operators supported by the parser. ^ Operator ^ Description ^ Priority ^ | = | assignement | -1 | | && | logical and | 1 | | || | logical or | 2 | | <= | less or equal | 4 | | >= | greater or equal | 4 | | != | not equal | 4 | | == | equal | 4 | | > | greater than | 4 | | < | less than | 4 | | + | addition | 5 | | - | subtraction | 5 | | * | multiplication | 6 | | / | division | 6 | | ^ | raise x to the power of y | 7 | * The assignment operator is special since it changes one of its arguments and can only by applied to variables. ==== Ternary Operators ==== > muParser has built in support for the if then else operator. It uses lazy evaluation in order to make sure only the necessary branch of the expression is evaluated. ^ Operator ^ Description ^ Remarks ^ | ?: | if then else operator | C++ style syntax |