Project

General

Profile

Actions

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

Code

The code for the functions is here, here and here.

Updated by Federico Vera 8 months ago · 11 revisions

Go to top