10 #include <tvm/deprecated.hh>
16 #include <unordered_map>
51 struct make_shared_token
74 const std::string &
name()
const;
103 void set(Eigen::DenseIndex idx,
double value);
213 Eigen::CommaInitializer<VectorRef>
operator<<(
double d);
216 template<
typename Derived>
217 Eigen::CommaInitializer<VectorRef>
operator<<(
const Eigen::DenseBase<Derived> & other);
244 [[nodiscard]]
VariablePtr subvariable(
Space space, std::string_view baseName,
Space shift,
bool autoName)
const;
270 int derivativeNumber_;
283 std::unique_ptr<Variable> derivative_;
288 mutable std::unordered_map<int, MappingHelper> startIn_;
299 if(n <= derivativeNumber_)
300 return primitiveNoCheck<n>();
302 throw std::runtime_error(
"This variable is not the n-th derivative of an other variable.");
306 inline VariablePtr Variable::primitiveNoCheck()
const
308 static_assert(n > 0,
"Works only for non-negative numbers.");
315 if(derivativeNumber_ > 1)
321 inline Eigen::CommaInitializer<VectorRef>
Variable::operator<<(
double d) {
return {value_, d}; }
323 template<
typename Derived>
324 inline Eigen::CommaInitializer<VectorRef>
Variable::operator<<(
const Eigen::DenseBase<Derived> & other)
325 {
return {value_, other}; }
328 {
return u.value_.data() == v.value_.data() && u.
size() == v.
size(); }
341 template<
typename Derived>
343 {
return *v.get() << other; }
346 template<
typename Derived>
348 const Eigen::DenseBase<Derived> & other)
349 {
return *v.get() << other; }
Eigen::CommaInitializer< tvm::VectorRef > operator<<(tvm::VariablePtr &v, double d)
Definition: Variable.h:335
#define TVM_DLLAPI
Definition: api.h:35
Definition: VariableVector.h:41
Definition: Variable.h:49
bool contains(const Variable &v) const
Variable & operator=(const Variable &)=delete
const Space & space() const
int derivativeNumber() const
VariablePtr subvariable(Space space, Space shift={0}) const
VariablePtr basePrimitive() const
VariablePtr subvariable(Space space, std::string_view baseName, Space shift={0}) const
Eigen::CommaInitializer< VectorRef > operator<<(double d)
Definition: Variable.h:321
bool isSubvariable() const
void set(const VectorConstRef &x)
VariablePtr superVariable() const
VectorConstRef value() const
bool isBasePrimitive() const
bool isSuperVariable() const
bool isPrimitiveOf(const Variable &v) const
Variable(const Variable &)=delete
const Space & spaceShift() const
TVM_DEPRECATED void value(const VectorConstRef &x)
Definition: Variable.h:99
VariablePtr shared_from_this()
Range subvariableRange() const
VariablePtr primitive() const
Definition: Variable.h:297
friend VariablePtr TVM_DLLAPI dot(VariablePtr, int, bool)
bool intersects(const Variable &v) const
const std::string & name() const
bool isSuperVariableOf(const Variable &v) const
void set(Eigen::DenseIndex idx, double value)
bool isDerivativeOf(const Variable &v) const
Range getMappingIn(const VariableVector &variables) const
Variable(make_shared_token, VariablePtr var, const Space &space, std::string_view name, const Space &shift)
Range tSubvariableRange() const
void set(Eigen::DenseIndex idx, Eigen::DenseIndex length, const VectorConstRef &value)
VariablePtr duplicate(std::string_view name="") const
Definition: ObjWithId.h:14
std::shared_ptr< Variable > VariablePtr
Definition: defs.h:65
bool operator!=(const Variable &u, const Variable &v)
Definition: Variable.h:330
Eigen::Ref< Eigen::VectorXd > VectorRef
Definition: defs.h:51
bool operator==(const Variable &u, const Variable &v)
Definition: Variable.h:327
Eigen::Ref< const Eigen::VectorXd > VectorConstRef
Definition: defs.h:50
VariablePtr TVM_DLLAPI dot(VariablePtr var, int ndiff=1, bool autoName=false)