40 if (!valid) {
return valid; }
52 if (!valid) {
return valid; }
64 if (!valid) {
return valid; }
76 if (!valid) {
return valid; }
88 if (!valid) {
return valid; }
100 if (!valid) {
return valid; }
112 if (!valid) {
return valid; }
124 if (!valid) {
return valid; }
136 if (!valid) {
return valid; }
141 "log10 argument cannot be null",
145 auto numerator = SymbolicExpr::ln(expression);
146 auto denominator = SymbolicExpr::ln(SymbolicExpr::number(10));
147 auto result = SymbolicExpr::divide(numerator,
denominator);
150 "log10 expression construction failed",
154 }
catch (
const std::bad_alloc&) {
156 "log10 expression allocation failed",
158 }
catch (
const std::exception& error) {
209 "clamp arguments cannot be null",
215 std::vector<std::shared_ptr<const SymbolicNode>>{
219 std::vector<std::shared_ptr<const SymbolicNode>>{
223 }
catch (
const std::bad_alloc&) {
225 "clamp expression allocation failed",
227 }
catch (
const std::exception& error) {
static Result failure(CasErrc code, std::string message, std::string operation={})
static Result success(ExprPtr value)
std::shared_ptr<::LMCAS::SymbolicExpr > make_expression_ptr(SymbolicNodePtr root)
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept
std::shared_ptr< const Node > make_node(Args &&... args)
ExprResult make_unary_function_expr(const ExprPtr &expression, ComputationContext &context, const char *function_name, FunctionNode::FuncType type)
ExprResult require_dimensionless(const ExprPtr &expression, const char *function_name)
ExprResult expression_failure(CasErrc code, std::string message, const char *operation)
ExprResult make_unary_math_expr(const ExprPtr &expression, ComputationContext &context, const char *function_name, ExprPtr(*factory)(ExprPtr))
constexpr const char * kMathOperation
ExprResult pow(const ExprPtr &base, const ExprPtr &exponent, ComputationContext &context)
ExprResult exp(const ExprPtr &expression, ComputationContext &context)
ExprResult log10(const ExprPtr &expression, ComputationContext &context)
__attribute__((visibility("default"))) ExprResult function(const std __attribute__((visibility("default"))) ExprResult finite_set(std ExprPtr upper
ExprResult ceil(const ExprPtr &expression, ComputationContext &context)
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
ExprResult acos(const ExprPtr &expression, ComputationContext &context)
Result< ExprPtr > ExprResult
ExprResult atan(const ExprPtr &expression, ComputationContext &context)
ExprResult clamp(const ExprPtr &expression, const ExprPtr &lower, const ExprPtr &upper, ComputationContext &context)
ExprResult asin(const ExprPtr &expression, ComputationContext &context)
ExprResult sin(const ExprPtr &expression, ComputationContext &context)
ExprResult tan(const ExprPtr &expression, ComputationContext &context)
ExprResult cos(const ExprPtr &expression, ComputationContext &context)
std::shared_ptr< SymbolicExpr > ExprPtr
QuantityResult quantity_power(const std::shared_ptr< SymbolicExpr > &base, const std::shared_ptr< SymbolicExpr > &exponent, ComputationContext &context)
ExprResult sqrt(const ExprPtr &expression, ComputationContext &context)
ExprResult log(const ExprPtr &expression, ComputationContext &context)
ExprResult floor(const ExprPtr &expression, ComputationContext &context)
const ExprPtr & denominator
ExprResult rational(const Rational &value)
ExprResult round(const ExprPtr &expression, ComputationContext &context)