# Extra Functions and Operators¶

**Table of contents**- Extra Functions and Operators

There are a number of extra functions and operators included in this version of `exp4j`

, non of this are enabled by default, they are in the `net.objecthunter.exp4j.extras`

package.

## Comparison Operators¶

Aside from the arithmetic operators several comparison operators are included: `<`

, `<=`

, `>`

, `>=`

, `!=`

and `==`

.

Please note that since `exp4j`

itself has no concept of `boolean`

, the results given by all of the comparison operators will be `1.0`

if `true`

and `0.0`

if `false`

. Let it be noted that due to rounding, equality operators use a radix in which they consider numbers to be "equal", that is:

Let `a`

and `b`

be two real numbers, `a == b`

will evaluate to `true`

if and only if the distance between `a`

and `b`

(`dist(a, b) := abs(a - b)`

) is less or equal than `1e-12`

(`0.000000000001`

) and `false`

otherwise.

### Precedence¶

Operator precedence is altered when using the comparison operators, the new precedence is:

FIRST-> * / % - + > >= < <= ¬ & | == != <-LAST ----- --- --------- - - - ----- ^^^ The dashes indicate groups with the same precedence

### Warning!¶

See Warning -> Concatenating Comparison Operators

## Boolean Functions¶

Even though we have boolean operators, there are also a number of boolean functions that can be used (some people prefer functions)

`and(a, b)`

: Logical and__equivalent to__`a & b`

`or(a, b)`

: Logical or__equivalent to__`a | b`

`xor(a, b)`

: Exclusive or`nand(a, b)`

:__equivalent to__`¬(a & b)`

`nor(a, b)`

:__equivalent to__`¬(a | b)`

`xnor(a, b)`

: Negated exclusive or`not(a)`

:__equivalent to__`¬a`

## Boolean Constants¶

`true()`

: true value`1.0`

(true is actually any value different than zero, but this is the value returned by comparison operators, boolean operators and boolean functions.`false()`

: false value`0.0`

## Extra Functions¶

`if(e, v_true, v_false)`

: Branches the formula, it will be evaluated as`v_true`

if`e == true()`

and`v_false`

if`e == false()`

`equals(a, b)`

: Equivalent to`a == b`

, so the same conditions apply.`isNan(a)`

: Tells if a value is`Not A Number`

`min(x, y)`

: Returns the smallest (closest to negative infinity) of two numbers.`max(x, y)`

: Returns the largest (closest to positive infinity) of two numbers.`lcm(x, y)`

: Returns the Least Common Multiple of two numbers.`gcd(x, y)`

: Returns the Greatest Common Divisor of two numbers.`round(x)`

: Returns the closest integer of`x`

.`deg2rad(x)`

: Returns the value of`x`

expressed in radians.`rad2deg(x)`

: Returns the value of`x`

expressed in degrees.

## Signal Functions¶

`sinc(t)`

: Cardinal sine of`t`

(not normalized), equivalent to`sin(t)/t`

`triangle(t)`

: Triangle wave`sawtooth(t)`

: Sawtooth wave`heavyside(t)`

: Heavyside Step function`rectangle(t, X, Y)`

: Rectangular function

## Extra constants¶

`inf()`

: Retrieves the value of`Double.POSITIVE_INFINITY`

## Expression based functions¶

- It's now possible to create expression based functions! See: Expression Based Functions

## Code¶

Updated by Federico Vera about 2 years ago · 11 revisions

Go to top