20 struct AnalyticExprWrapper;
23 class AnalyticVarExpr :
public AnalyticExpr<T>,
public VarBase
30 virtual const ExprID& unique_id()
const
32 return AnalyticExpr<T>::unique_id();
35 T fwd_eval(ValuesMap& v, [[maybe_unused]] Index total_input_size, [[maybe_unused]]
bool natural_eval)
const
37 return AnalyticExpr<T>::value(v);
40 void bwd_eval([[maybe_unused]] ValuesMap& v)
const
43 void replace_expr([[maybe_unused]]
const ExprID& old_expr_id, [[maybe_unused]]
const std::shared_ptr<ExprBase>& new_expr)
46 virtual bool belongs_to_args_list(
const FunctionArgsList& args)
const
48 for(
const auto& xi : args)
49 if(xi->unique_id() == this->unique_id())
55 class ScalarVar :
public AnalyticVarExpr<ScalarType>
61 std::shared_ptr<VarBase> arg_copy()
const;
62 std::shared_ptr<ExprBase> copy()
const;
65 AnalyticExprWrapper<ScalarType> operator-()
const;
68 class VectorVar :
public AnalyticVarExpr<VectorType>
72 explicit VectorVar(Index n);
74 std::shared_ptr<VarBase> arg_copy()
const;
75 std::shared_ptr<ExprBase> copy()
const;
78 AnalyticExprWrapper<ScalarType> operator[](Index i)
const;
79 AnalyticExprWrapper<VectorType> subvector(Index i, Index j)
const;
86 class MatrixVar :
public AnalyticVarExpr<MatrixType>
90 explicit MatrixVar(Index r, Index c);
92 std::shared_ptr<VarBase> arg_copy()
const;
93 std::shared_ptr<ExprBase> copy()
const;
98 AnalyticExprWrapper<ScalarType> operator()(Index i, Index j)
const;