Package com.singularsys.jep.functions

# Class Logarithm

java.lang.Object
com.singularsys.jep.functions.PostfixMathCommand
com.singularsys.jep.functions.UnaryFunction
com.singularsys.jep.functions.Logarithm

All Implemented Interfaces:
  `PostfixMathCommandI`, `RealUnaryFunction`, `Serializable`

public class Logarithm extends UnaryFunction implements RealUnaryFunction
Log base 10. By default, negative arguments will return a complex result

    log(|x|) + pi i

if the strict flag is set in the constructor

version 3.4: Speedup by using static final fields.

version 3.4: Change to use Java 5 Math.log10() method.

version 3.5: For negative arguments `log10(-x) =log10(x) + i pi log10(e)` as `10^(log10(x) + i log10(e)) = x * e^(i pi) = -x`. For complex arguments, `(x+i y) = r e^(i th)`, `log10(r e^(i th)) = log10(r) + i th log10(e)` as `10^(log10(r) + i th log10(e)) = r * e^(i th)`.

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class com.singularsys.jep.functions.UnaryFunction

  `UnaryFunction.FunctionWithException<T>`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final boolean`
  `strict`

  ### Fields inherited from class com.singularsys.jep.functions.PostfixMathCommand

  `curNumberOfParameters, description, name, NaN, numberOfParameters`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Logarithm()`
  Standard constructor, returns complex results for negative arguments
  `Logarithm(boolean strict)`
  Constructor with control for behaviour for complex results

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `eval(Object arg)`
  Evaluate the function
  `double`
  `evaluate(double val)`
  Evaluate the function
  `Object`
  `log(Object param)`

  ### Methods inherited from class com.singularsys.jep.functions.UnaryFunction

  `instanceOf, instanceOf, instanceOf, instanceOf, run`

  ### Methods inherited from class com.singularsys.jep.functions.PostfixMathCommand

  `asArray, asBool, asDouble, asInt, asLong, asStrictInt, asString, asType, checkNumberOfParameters, getDescription, getDescription, getDescriptionWithType, getName, getNumberOfParameters, setCurNumberOfParameters, setDescription, setName, toString, toString`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### strict

    protected final boolean strict

- ## Constructor Details

  - ### Logarithm

    public Logarithm(boolean strict)
    Constructor with control for behaviour for complex results
    Parameters:
      `strict` - if true negative real arguments return NaN, otherwise complex results are returned

  - ### Logarithm

    public Logarithm()
    Standard constructor, returns complex results for negative arguments

- ## Method Details

  - ### eval

    public Object eval(Object arg) throws EvaluationException
    Description copied from class: `UnaryFunction`
    Evaluate the function
    Specified by:
      `eval` in class `UnaryFunction`
    Parameters:
      `arg` - the single argument passed in
    Returns:
      the result of the function
    Throws:
      `EvaluationException` - on error

  - ### log

    public Object log(Object param) throws EvaluationException
    Throws:
      `EvaluationException`

  - ### evaluate

    public double evaluate(double val)
    Description copied from interface: `RealUnaryFunction`
    Evaluate the function
    Specified by:
      `evaluate` in interface `RealUnaryFunction`
    Parameters:
      `val` - the argument
    Returns:
      the result of applying the function to the argument