TVM  0.9.4
ProtoTaskDetails.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <tvm/api.h>
6 #include <tvm/defs.h>
7 
8 #include <tvm/constraint/enums.h>
11 
12 #include <Eigen/Core>
13 
14 namespace tvm
15 {
16 
17 namespace utils
18 {
19 
20 namespace internal
21 {
27 enum class RHSType
28 {
29  Zero,
30  Double,
31  Vector
32 };
33 
37 class RHS
38 {
39 public:
40  RHS(double d);
41  template<typename Derived>
42  RHS(const Eigen::MatrixBase<Derived> & v);
43 
44  Eigen::VectorXd toVector(Eigen::DenseIndex n) const;
45 
47  double d_;
48  Eigen::VectorXd v_;
49 };
50 
51 inline RHS::RHS(double d) : type_(d == 0 ? RHSType::Zero : RHSType::Double), d_(d) {}
52 
53 template<typename Derived>
54 inline RHS::RHS(const Eigen::MatrixBase<Derived> & v) : type_(RHSType::Vector), v_(v)
55 {}
56 
57 inline Eigen::VectorXd RHS::toVector(Eigen::DenseIndex n) const
58 {
59  switch(type_)
60  {
62  return Eigen::VectorXd::Zero(n);
64  return Eigen::VectorXd::Constant(n, d_);
66  assert(v_.size() == n);
67  return v_;
68  default:
69  assert(false);
70  return Eigen::VectorXd();
71  break;
72  }
73 }
74 
75 } // namespace internal
76 
77 } // namespace utils
78 
79 } // namespace tvm
Definition: ProtoTaskDetails.h:38
Eigen::VectorXd v_
Definition: ProtoTaskDetails.h:48
RHS(const Eigen::MatrixBase< Derived > &v)
double d_
Definition: ProtoTaskDetails.h:47
Eigen::VectorXd toVector(Eigen::DenseIndex n) const
RHSType type_
Definition: ProtoTaskDetails.h:46
RHSType
Definition: ProtoTaskDetails.h:28
Definition: Clock.h:12