evaluate method
Evaluates this expression according to given type and context.
Implementation
@override
dynamic evaluate(EvaluationType type, ContextModel context) {
final dynamic argEval = arg.evaluate(type, context);
if (type == EvaluationType.REAL) {
// Compensate for inaccuracies in machine-pi.
// If argEval divides cleanly from pi, return 0.
if ((argEval / math.pi).abs() % 1 == 0) {
return 0.0;
}
return math.sin(argEval);
}
if (type == EvaluationType.VECTOR) {
//TODO Apply function to all vector elements
}
if (type == EvaluationType.INTERVAL) {
// TODO evaluate endpoints and critical points ((1/2 + n) * pi)
// or just return [-1, 1] if half a period is in the given interval
}
throw UnimplementedError('Can not evaluate $name on $type yet.');
}