16#include <unordered_map>
31namespace tcalc::builtins {
37using Function = std::function<error::Result<double>(
const std::vector<double>&,
56 : _node{ std::move(node) }
89 : _node{ std::move(node) }
111sqrt(
const std::vector<double>& args,
const EvalContext& ctx);
120pow(
const std::vector<double>& args,
const EvalContext& ctx);
130log(
const std::vector<double>& args,
const EvalContext& ctx);
140sin(
const std::vector<double>& args,
const EvalContext& ctx);
150cos(
const std::vector<double>& args,
const EvalContext& ctx);
160tan(
const std::vector<double>& args,
const EvalContext& ctx);
170acos(
const std::vector<double>& args,
const EvalContext& ctx);
180asin(
const std::vector<double>& args,
const EvalContext& ctx);
190atan(
const std::vector<double>& args,
const EvalContext& ctx);
200exp(
const std::vector<double>& args,
const EvalContext& ctx);
208 {
"sqrt",
sqrt }, {
"pow",
pow }, {
"log",
log }, {
"sin",
sin },
209 {
"cos",
cos }, {
"tan",
tan }, {
"acos",
acos }, {
"asin",
asin },
210 {
"atan",
atan }, {
"exp",
exp }
TCALC_PUBLIC error::Result< double > asin(const std::vector< double > &args, const EvalContext &ctx)
Built-in asin function.
Definition builtins.cpp:146
TCALC_PUBLIC error::Result< double > exp(const std::vector< double > &args, const EvalContext &ctx)
Built-in exp function.
Definition builtins.cpp:170
const std::unordered_map< std::string, double > BUILTIN_VARIABLES
Definition builtins.hpp:202
TCALC_PUBLIC error::Result< double > log(const std::vector< double > &args, const EvalContext &ctx)
Built-in log function.
Definition builtins.cpp:86
TCALC_PUBLIC error::Result< double > sqrt(const std::vector< double > &args, const EvalContext &ctx)
Built-in sqrt function.
Definition builtins.cpp:62
TCALC_PUBLIC error::Result< double > tan(const std::vector< double > &args, const EvalContext &ctx)
Built-in tan function.
Definition builtins.cpp:122
TCALC_PUBLIC error::Result< double > acos(const std::vector< double > &args, const EvalContext &ctx)
Built-in acos function.
Definition builtins.cpp:134
const std::unordered_map< std::string, Function > BUILTIN_FUNCTIONS
Definition builtins.hpp:207
std::function< error::Result< double >(const std::vector< double > &, const EvalContext &)> Function
Built-in function type.
Definition builtins.hpp:38
TCALC_PUBLIC error::Result< double > sin(const std::vector< double > &args, const EvalContext &ctx)
Built-in sin function.
Definition builtins.cpp:98
TCALC_PUBLIC error::Result< double > pow(const std::vector< double > &args, const EvalContext &ctx)
Built-in pow function.
Definition builtins.cpp:74
TCALC_PUBLIC error::Result< double > cos(const std::vector< double > &args, const EvalContext &ctx)
Built-in cos function.
Definition builtins.cpp:110
TCALC_PUBLIC error::Result< double > atan(const std::vector< double > &args, const EvalContext &ctx)
Built-in atan function.
Definition builtins.cpp:158
Evaluation context which stores variables and built-in functions.
Definition eval.hpp:32
Wrapper for User-defined functions.
Definition builtins.hpp:45
FunctionWrapper(ast::NodePtr< ast::FdefNode > node)
Construct a new Function Wrapper object.
Definition builtins.hpp:55
Wrapper for ProgramImportNode.
Definition builtins.hpp:78
ImportWrapper(ast::NodePtr< ast::ProgramImportNode > node)
Construct a new Import Wrapper object.
Definition builtins.hpp:88
_TCALC_EXPECTED_NS::expected< T, Error > Result
Result type.
Definition error.hpp:153
Base class for AST nodes.
std::shared_ptr< NT > NodePtr
Shared pointer to a node.
Definition node.hpp:119