Mathematical Functions
From Flowcode Help
Jump to navigationJump to searchThe following mathematical functions can be used in calculations. All of these functions are now usable on each chip type.
Functions
Flowcode includes an additional set of mathematical functions:
Function Prototype | Description | Example |
---|---|---|
Floating Point Arithmetic | ||
float = fadd(float, float) | Add two floating point numbers together | fadd(3.14, 2.86) = 6.0 |
float = fsub(float, float) | Subtract two floating point numbers | fsub(10.5, 3.2) = 7.3 |
float = fmul(float, float) | Multiply two floating point numbers | fmul(4.5, 2.0) = 9.0 |
float = fdiv(float, float) | Divide two floating point numbers | fdiv(15.0, 3.0) = 5.0 |
float = fmod(float, float) | MOD function for floating point numbers | fmod(7.5, 2.0) = 1.5 |
byte = isinf(float) | Checks to see if the floating point number is infinite | isinf(1.0/0.0) = 1 |
byte = isnan(float) | Checks to see if the floating point is not a number | isnan(0.0/0.0) = 1 |
byte = float_eq(float, float) | Compares two floating point numbers to see if they are equal | float_eq(3.14, 3.14) = 1 |
byte = float_ge(float, float) | Compares two floating point numbers to see if they are greater then or equal | float_ge(5.0, 3.0) = 1 |
byte = float_gt(float, float) | Compares two floating point numbers to see if they are greater then | float_gt(5.0, 3.0) = 1 |
byte = float_le(float, float) | Compares two floating point numbers to see if they are less then or equal | float_le(3.0, 5.0) = 1 |
byte = float_lt(float, float) | Compares two floating point numbers to see if they are less then | float_lt(3.0, 5.0) = 1 |
int = random() | Generates a random number (0-65535) | (random() MOD 10) + 1 = 7 (range 1-10) |
Mathematical Functions | ||
fabs( x ), floor( x ), ceil( x ) | Absolute value, floor and ceiling functions | fabs(-5.7) = 5.7 floor(4.9) = 4 ceil(4.1) = 5 |
fmod( x , y ) | Floating point modulus (remainder of x divided by y) | fmod(25.5, 7.0) = 4.5 |
sqrt( x ), cbrt( x ) | Square and cube roots | sqrt(25) = 5.0 cbrt(27) = 3.0 |
log( x ), log10( x ) | Logarithms (base e and base 10) | log(2.718) ~ 1.0 log10(100) = 2.0 |
exp( x ), pow( x , y ) | Exponential and power functions (x to the power of y) | exp(1) ~ 2.718 pow(2, 8) = 256 |
sin( x ), cos( x ), tan( x ) | Trigonometric functions where x is in radians | sin(1.57) ~ 1.0 cos(0) = 1.0 tan(0.785) ~ 1.0 |
asin( x ), acos( x ), atan( x ) | Inverse trigonometric functions where x is in radians | asin(0.5) ~ 0.524 acos(0.707) ~ 0.785 atan(1) ~ 0.785 |
atan2( y , x ) | Four-quadrant inverse tangent | atan2(1, 1) = 0.785 |
sinh( x ), cosh( x ), tanh( x ) | Hyperbolic functions | sinh(1) ~ 1.175 cosh(0) = 1.0 tanh(1) ~ 0.762 |
isnan( x ), isinf( x ) | Tests for not-a-number and infinity | isnan(5.0) = 0 isinf(5.0) = 0 |
round( x ) | Decimal rounding (x rounded to the nearest integer) | round(3.7) = 4 |
fround( x , y ) | Floating point rounding (x rounded to y decimal places) | fround(3.14159, 2) = 3.14 |
asinh( x ), acosh( x ), atanh( x ) | Inverse hyperbolic functions | asinh(1) ~ 0.881 acosh(1) = 0 atanh(0.5) ~ 0.549 |
fact( x ) | Factorial (multiply all numbers down to 1) | fact(5) = 120 (5×4×3×2×1) |
Integer Operations | ||
MOD | Returns the remainder after division | 17 MOD 5 = 2 (17÷5 = 3 remainder 2) |
Bitwise Operations | ||
AND | Bitwise AND operation | 0b1100 AND 0b1010 = 0b1000 |
OR | Bitwise OR operation | 0b1100 OR 0b1010 = 0b1110 |
XOR | Bitwise XOR (exclusive OR) operation | 0b1100 XOR 0b1010 = 0b0110 |
NOT | Bitwise NOT operation | NOT 0b1100 = 0b0011 |
<< | Left shift operation (multiply by 2^n) | 5 << 2 = 20 (5 × 4) |
>> | Right shift operation (divide by 2^n) | 20 >> 2 = 5 (20 ÷ 4) |
Logical Operations (usually used in decision branches) | ||
&& | Logical AND operation | Value = 10 If (Value > 2) && (Value < 15) then True |
|| | Logical OR operation | Value = 20 If (Value < 5) || (Value > 15) then True |
! | Logical NOT operation | Flag = 1 If ! Flag then False (inverts the value) |
!= | Logical XOR (not equal to) operation | If Value1 != Value2 then True (compares two values) |
Array Functions | ||
arraydims( array ) | Get the number of dimensions in an array | arraydims(data[5][3]) = 2 |
arraysize( array ) | Get the total size of an array | arraysize(data[5][3]) = 15 |
Hardware Functions | ||
SetPinNoDDR( PortPin, Output ) | Set output pin quickly without changing data direction state. | SetPinNoDDR(PORTA.0, 1) = pin high |
Input = GetPinNoDDR( PortPin ) | Read input pin quickly without changing data direction state. | GetPinNoDDR(PORTB.1) = 0 or 1 |
Type Conversion | ||
float2int( x ) | Convert floating point number to integer | float2int(5.7) = 5 (truncates) |
int2float( x ) | Convert integer to floating point number | int2float(42) = 42.0 |
Type Casting Operators (For more information see Typecasting) | ||
STRING | Convert numeric value to string type | STRING 123 = "123" |
FLOAT | Convert value to floating point type | FLOAT 5 = 5.0 |
SIGNED | Convert value to signed integer type | SIGNED -5 = -5 (as signed) |
UNSIGNED | Convert value to unsigned integer type | UNSIGNED -5 = 65531 (as unsigned) |