Proyecto

General

Perfil

Extra Functions and Operators » Histórico » Revisión 2

Revisión 1 (Federico Vera, 2018-06-10 00:01) → Revisión 2/11 (Federico Vera, 2018-07-08 06:02)

# 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`](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/show/src/main/java/net/objecthunter/exp4j/extras) [`net.objecthunter.exp4j.extras`](https://gitlab.com/riddler_arg/exp4j/tree/master/src/main/java/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`)](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/extras/FunctionsMisc.java#L38) (`0.000000000001`)](https://gitlab.com/riddler_arg/exp4j/blob/master/src/main/java/net/objecthunter/exp4j/extras/FunctionsMisc.java#L38) 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 
 ~~~ 

 ## 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. 
 * `sinc(x)`: [Cardinal sine of `x`](https://en.wikipedia.org/wiki/Sinc_function) (not normalized), equivalent to `sin(x)/x` 

 ## Code 
 The code for the functions is [here](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/extras/OperatorsComparison.java), [here](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/extras/FunctionsMisc.java) [here](https://gitlab.com/riddler_arg/exp4j/blob/master/src/main/java/net/objecthunter/exp4j/extras/OperatorsComparison.java), [here](https://gitlab.com/riddler_arg/exp4j/blob/master/src/main/java/net/objecthunter/exp4j/extras/FunctionsMisc.java) and [here](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/extras/FunctionsBoolean.java). [here](https://gitlab.com/riddler_arg/exp4j/blob/master/src/main/java/net/objecthunter/exp4j/extras/FunctionsBoolean.java).
Volver al inicio