Loading...
Searching...
No Matches
SymEngine::ImmutableDenseMatrix Class Reference
+ Inheritance diagram for SymEngine::ImmutableDenseMatrix:
+ Collaboration diagram for SymEngine::ImmutableDenseMatrix:

Public Member Functions

 ImmutableDenseMatrix (size_t m, size_t n, const vec_basic &values)
 
void accept (Visitor &v) const override
 
void accept (EvalRealDoubleVisitorFinal &v) const override
 
hash_t __hash__ () const override
 
bool __eq__ (const Basic &o) const override
 Test equality.
 
int compare (const Basic &o) const override
 
bool is_canonical (size_t m, size_t n, const vec_basic &values) const
 
vec_basic get_args () const override
 Returns the list of arguments.
 
RCP< const Basicget (size_t i, size_t j) const
 
size_t nrows () const
 
size_t ncols () const
 
const vec_basicget_values () const
 
- Public Member Functions inherited from SymEngine::Basic
TypeID get_type_code () const
 
 Basic ()
 Constructor.
 
 Basic (const Basic &)=delete
 Delete the copy constructor and assignment.
 
Basicoperator= (const Basic &)=delete
 Assignment operator in continuation with above.
 
 Basic (Basic &&)=delete
 Delete the move constructor and assignment.
 
Basicoperator= (Basic &&)=delete
 Assignment operator in continuation with above.
 
hash_t hash () const
 
bool __neq__ (const Basic &o) const
 true if this is not equal to o.
 
int __cmp__ (const Basic &o) const
 Comparison operator.
 
std::string __str__ () const
 
std::string dumps () const
 Returns a string of the instance serialized.
 
RCP< const Basicsubs (const map_basic_basic &subs_dict) const
 Substitutes 'subs_dict' into 'self'.
 
RCP< const Basicxreplace (const map_basic_basic &subs_dict) const
 
virtual RCP< const Basicexpand_as_exp () const
 expands the special function in terms of exp function
 
RCP< const Basicdiff (const RCP< const Symbol > &x, bool cache=true) const
 
- Public Member Functions inherited from SymEngine::EnableRCPFromThis< Basic >
RCP< Basicrcp_from_this ()
 Get RCP<T> pointer to self (it will cast the pointer to T)
 
RCP< const Basicrcp_from_this () const
 Get RCP<const T> pointer to self (it will cast the pointer to const T)
 
RCP< const T2 > rcp_from_this_cast () const
 Get RCP<T2> pointer to self (it will cast the pointer to T2)
 
unsigned int use_count () const
 

Static Public Attributes

static const TypeID type_code_id = SYMENGINE_IMMUTABLEDENSEMATRIX
 

Private Attributes

size_t m_
 
size_t n_
 
vec_basic values_
 

Additional Inherited Members

- Static Public Member Functions inherited from SymEngine::Basic
static RCP< const Basicloads (const std::string &)
 Creates an instance of a serialized string.
 
- Data Fields inherited from SymEngine::Basic
TypeID type_code_
 

Detailed Description

Definition at line 11 of file immutable_dense_matrix.h.

Constructor & Destructor Documentation

◆ ImmutableDenseMatrix()

SymEngine::ImmutableDenseMatrix::ImmutableDenseMatrix ( size_t  m,
size_t  n,
const vec_basic values 
)
inline

Definition at line 18 of file immutable_dense_matrix.h.

19 : m_(m), n_(n), values_(values)
20 {
21 SYMENGINE_ASSIGN_TYPEID();
22 SYMENGINE_ASSERT(is_canonical(m, n, values));
23 }
void hash_combine(hash_t &seed, const T &v)
Definition basic-inl.h:95

Member Function Documentation

◆ __eq__()

bool SymEngine::ImmutableDenseMatrix::__eq__ ( const Basic o) const
overridevirtual

Test equality.

A virtual function for testing the equality of two Basic objects

Deprecated:
Use eq(const Basic &a, const Basic &b) non-member method
Parameters
oa constant reference to object to test against
Returns
True if this is equal to o

Implements SymEngine::Basic.

Definition at line 20 of file immutable_dense_matrix.cpp.

21{
23 const ImmutableDenseMatrix &other
25 if (m_ != other.m_ || n_ != other.n_) {
26 return false;
27 }
28 return unified_eq(values_, other.values_);
29 }
30 return false;
31}

◆ __hash__()

hash_t SymEngine::ImmutableDenseMatrix::__hash__ ( ) const
overridevirtual

Calculates the hash of the given SymEngine class. Use Basic.hash() which gives a cached version of the hash.

Returns
64-bit integer value for the hash

Implements SymEngine::Basic.

Definition at line 9 of file immutable_dense_matrix.cpp.

10{
12 hash_combine(seed, m_);
13 hash_combine(seed, n_);
14 for (const auto &a : values_) {
15 hash_combine<Basic>(seed, *a);
16 }
17 return seed;
18}

◆ accept() [1/2]

void SymEngine::ImmutableDenseMatrix::accept ( EvalRealDoubleVisitorFinal v) const
overridevirtual

Implements SymEngine::Basic.

◆ accept() [2/2]

void SymEngine::ImmutableDenseMatrix::accept ( Visitor v) const
overridevirtual

Implements SymEngine::Basic.

◆ compare()

int SymEngine::ImmutableDenseMatrix::compare ( const Basic o) const
overridevirtual

Returns -1, 0, 1 for this < o, this == o, this > o. This method is used when you want to sort things like x+y+z into canonical order. This function assumes that o is the same type as this. Use __cmp__ if you want general comparison.

Implements SymEngine::Basic.

Definition at line 33 of file immutable_dense_matrix.cpp.

34{
35 SYMENGINE_ASSERT(is_a<ImmutableDenseMatrix>(o));
36 const ImmutableDenseMatrix &other
38 if (m_ < other.m_) {
39 return -1;
40 } else if (m_ > other.m_) {
41 return 1;
42 }
43 if (n_ < other.n_) {
44 return -1;
45 } else if (n_ > other.n_) {
46 return 1;
47 }
48 return unified_compare(values_, other.values_);
49}
int unified_compare(const T &a, const T &b)
Definition dict.h:205

◆ get()

RCP< const Basic > SymEngine::ImmutableDenseMatrix::get ( size_t  i,
size_t  j 
) const
inline

Definition at line 38 of file immutable_dense_matrix.h.

39 {
40 return values_[i * n_ + j];
41 }

◆ get_args()

vec_basic SymEngine::ImmutableDenseMatrix::get_args ( ) const
inlineoverridevirtual

Returns the list of arguments.

Implements SymEngine::Basic.

Definition at line 31 of file immutable_dense_matrix.h.

32 {
33 vec_basic args = vec_basic({integer(m_), integer(n_)});
34 args.insert(args.begin(), values_.begin(), values_.end());
35 return args;
36 }
T begin(T... args)
T end(T... args)
T insert(T... args)
std::enable_if< std::is_integral< T >::value, RCP< constInteger > >::type integer(T i)
Definition integer.h:197

◆ get_values()

const vec_basic & SymEngine::ImmutableDenseMatrix::get_values ( ) const
inline

Definition at line 53 of file immutable_dense_matrix.h.

54 {
55 return values_;
56 }

◆ is_canonical()

bool SymEngine::ImmutableDenseMatrix::is_canonical ( size_t  m,
size_t  n,
const vec_basic values 
) const

Definition at line 108 of file immutable_dense_matrix.cpp.

110{
111 if (m < 1 || n < 1 || values.size() == 0) {
112 return false;
113 }
114 if (m * n != values.size()) {
115 return false;
116 }
117 if (is_zero_vec(values)) {
118 return false;
119 }
120 if (m == n && is_identity_dense(m, values)) {
121 return false;
122 }
123 if (m == n && is_diagonal_dense(m, values)) {
124 return false;
125 }
126 return true;
127}

◆ ncols()

size_t SymEngine::ImmutableDenseMatrix::ncols ( ) const
inline

Definition at line 48 of file immutable_dense_matrix.h.

49 {
50 return n_;
51 }

◆ nrows()

size_t SymEngine::ImmutableDenseMatrix::nrows ( ) const
inline

Definition at line 43 of file immutable_dense_matrix.h.

44 {
45 return m_;
46 }

Field Documentation

◆ m_

size_t SymEngine::ImmutableDenseMatrix::m_
private

Definition at line 14 of file immutable_dense_matrix.h.

◆ n_

size_t SymEngine::ImmutableDenseMatrix::n_
private

Definition at line 14 of file immutable_dense_matrix.h.

◆ type_code_id

const TypeID SymEngine::ImmutableDenseMatrix::type_code_id = SYMENGINE_IMMUTABLEDENSEMATRIX
static

Type_code_id shared by all instances

Definition at line 25 of file immutable_dense_matrix.h.

◆ values_

vec_basic SymEngine::ImmutableDenseMatrix::values_
private

Definition at line 15 of file immutable_dense_matrix.h.


The documentation for this class was generated from the following files: