FusionCalculator/src/Expressions/FunctionCallExpression.fu

42 lines
1.5 KiB
Plaintext

abstract class FunctionCallExpression : IExpression {
IExpression X;
internal void Init!(IExpression x){
X = x;
}
internal abstract double FunctionImplementation(double x);
internal override double Calculate() => FunctionImplementation(X.Calculate());
}
class FunctionCallExpressionSin : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Sin(x);
}
class FunctionCallExpressionCos : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Cos(x);
}
class FunctionCallExpressionTg : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Tan(x);
}
class FunctionCallExpressionCtg : FunctionCallExpression {
internal override double FunctionImplementation(double x) => 1 / Math.Tan(x);
}
class FunctionCallExpressionAsin : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Asin(x);
}
class FunctionCallExpressionAcos : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Acos(x);
}
class FunctionCallExpressionAtg : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Atan(x);
}
class FunctionCallExpressionActg : FunctionCallExpression {
internal override double FunctionImplementation(double x) => Math.Atan(1 / x);
}
class FunctionCallExpressionLn : FunctionCallExpression{
internal override double FunctionImplementation(double x) => Math.Log(x);
}