object ComplexEvaluator extends AbstractEvaluator[ComplexFunction]
An Evaluator which parses an expression as a ComplexFunction.
This allows the basic operators +
, -
, *
, /
and ^
and the use of brackets.
The following strings are treated as constants:
- i
- pi or π
- tau or τ
- e
Furthermore, the following functions are recognised:
- im
- re
- arg
- abs
- conj
- sqrt or √
- log or ln
- sin
- asin
- cos
- acos
- tan
- atan
- sinh
- asinh
- cosh
- acosh
- tanh
- atanh
There is currently no support for implicit multiplication without the *
symbol, such as 2i
.
A string can be parsed like this:
val complexFunction = ComplexEvaluator.evaluate("2 + i * sin(x)")
That returned ComplexFunction
can then be evaluated for a given input for x
with:
val complexNumber = complexFunction(Map("x" -> xValue))
For example, replacing xValue
with Complex.Pi
would produce a complex number roughly equal to 2.
It is recommended to then round the result by calling .round
to round the number to an appropriate degree
of accuracy.
- Source
- ComplexEvaluator.scala
- Alphabetic
- By Inheritance
- ComplexEvaluator
- AbstractEvaluator
- Evaluator
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
evaluate(expression: String): ComplexFunction
Parses a string.
Parses a string.
First of all, this tokenizes the string using the abstract
tokenizer
method, which must be overridden by the user. This returns a Tokenizer which breaks the string down into a Seq of Tokens, representing the principle parts of the string.Then, this evaluates the provided array of tokens as the user defines, producing a result of type
R
. For more information on how this happens, see Token.- expression
The input string to parse
- returns
The result of parsing the input
- Definition Classes
- AbstractEvaluator → Evaluator
- Exceptions thrown
net.totietje.evaluator.EvaluationException
If there is a syntax error in the expression
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
tokenizer: Tokenizer[ComplexFunction]
- Attributes
- protected
- Definition Classes
- ComplexEvaluator → AbstractEvaluator
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
This is the documentation for the Evaluator project (see GitHub).
The main package net.totietje.evaluator. The net.totietje.complex package contains an example usage of this package, which may also be useful.