Sub AppStart (Args() As String)
Dim e As B4XEval
e.Initialize(Me, "Eval")
Log(e.Eval("1 + Min(2, Max(-4, 1), 6)"))
Log(e.Eval("-(2+5)*(7-3) + Sin(15 + 15) + Cos(30)"))
Log("Error? " & e.Error)
Log(e.Eval("-(2+5)*-(7-3)"))
Log(e.Eval("-((-7-3))"))
Log(1.321/-2/3.123 + (2 * 2 + 3) + 4)
Log(e.Eval("1.321/-2/3.123 + (2 * 2 + 3) + 4"))
End Sub
'custom functions implementation
Sub Eval_Function (Name As String, Values As List) As Double
Select Name 'it will be lower case
Case "min"
Dim d As Double = Values.Get(0)
For Each n As Double In Values
If n < d Then d = n
Next
Return d
Case "max"
Dim d As Double = Values.Get(0)
For Each n As Double In Values
If n > d Then d = n
Next
Return d
Case "sin"
Return SinD(Values.Get(0))
Case Else
Log("Invalid function: " & Name)
Dim e As B4XEval = Sender
e.Error = True
Return 0
End Select
End Sub