diff --git a/src/Expressions/FunctionCallExpression.fu b/src/Expressions/FunctionCallExpression.fu index 060b1bf..aa8e664 100644 --- a/src/Expressions/FunctionCallExpression.fu +++ b/src/Expressions/FunctionCallExpression.fu @@ -16,9 +16,12 @@ class FunctionCallExpressionSin : FunctionCallExpression { class FunctionCallExpressionCos : FunctionCallExpression { internal override double FunctionImplementation(double x) => Math.Cos(x); } -class FunctionCallExpressionTan : FunctionCallExpression { +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); @@ -26,10 +29,13 @@ class FunctionCallExpressionAsin : FunctionCallExpression { class FunctionCallExpressionAcos : FunctionCallExpression { internal override double FunctionImplementation(double x) => Math.Acos(x); } -class FunctionCallExpressionAtan : FunctionCallExpression { +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 FunctionCallExpressionLog : FunctionCallExpression{ +class FunctionCallExpressionLn : FunctionCallExpression{ internal override double FunctionImplementation(double x) => Math.Log(x); } diff --git a/src/Parser.fu b/src/Parser.fu index b4f4dc4..8309002 100644 --- a/src/Parser.fu +++ b/src/Parser.fu @@ -119,7 +119,11 @@ class Parser { PushFunctionExpression(expressionStack, str, new FunctionCallExpressionCos()); break; case "tan": - PushFunctionExpression(expressionStack, str, new FunctionCallExpressionTan()); + case "tg": + PushFunctionExpression(expressionStack, str, new FunctionCallExpressionTg()); + break; + case "ctg": + PushFunctionExpression(expressionStack, str, new FunctionCallExpressionCtg()); break; case "asin": PushFunctionExpression(expressionStack, str, new FunctionCallExpressionAsin()); @@ -128,10 +132,16 @@ class Parser { PushFunctionExpression(expressionStack, str, new FunctionCallExpressionAcos()); break; case "atan": - PushFunctionExpression(expressionStack, str, new FunctionCallExpressionAtan()); + case "atg": + case "arctg": + PushFunctionExpression(expressionStack, str, new FunctionCallExpressionAtg()); break; - case "log": - PushFunctionExpression(expressionStack, str, new FunctionCallExpressionLog()); + case "actg": + case "arcctg": + PushFunctionExpression(expressionStack, str, new FunctionCallExpressionActg()); + break; + case "ln": + PushFunctionExpression(expressionStack, str, new FunctionCallExpressionLn()); break; default: { ThrowError($"invalid literal '{str}'");