#pragma once #include #include #include #include #include #include namespace c10 { class SymIntNodeImpl; using SymIntNode = c10::intrusive_ptr; class SymFloat; class SymFloatNodeImpl; using SymFloatNode = c10::intrusive_ptr; class C10_API SymFloatNodeImpl : public c10::intrusive_ptr_target { public: c10::SymFloat toSymFloat(); virtual ~SymFloatNodeImpl(){}; template c10::intrusive_ptr dyn_cast() const { return c10::intrusive_ptr::reclaim_copy(dynamic_cast(this)); } virtual SymFloatNode wrap(double num) { TORCH_CHECK(false, "NYI"); }; virtual SymFloatNode add(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); } virtual SymFloatNode sub(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); } virtual SymFloatNode mul(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); } virtual SymFloatNode truediv(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); } virtual SymFloatNode eq(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); }; virtual SymFloatNode ne(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); }; virtual SymFloatNode gt(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); }; virtual SymFloatNode lt(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); }; virtual SymFloatNode le(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); }; virtual SymFloatNode ge(const SymFloatNode& other) { TORCH_CHECK(false, "NYI"); }; virtual SymIntNode ceil(); virtual std::string str() { TORCH_CHECK(false, "NYI"); }; std::ostream& operator<<(std::ostream& os) { os << str(); return os; }; }; } // namespace c10