42 lines
1.5 KiB
Plaintext
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);
|
|
}
|