#ifndef INC_MATRIX_HPP_ #define INC_MATRIX_HPP_ #include namespace sta { namespace math { struct matrix { float * datafield = nullptr; uint8_t * shape = nullptr; matrix(); matrix(const matrix&); matrix(uint8_t, uint8_t); matrix(uint8_t, uint8_t, float*); ~matrix(); bool is_valid(); uint16_t get_size(); uint8_t get_rows(); uint8_t get_cols(); matrix clone(); void show_serial(); void show_shape(); matrix& operator=(matrix); void reshape(uint8_t, uint8_t); float det(); matrix get_block(uint8_t, uint8_t, uint8_t, uint8_t); void set_block(uint8_t, uint8_t, matrix); void set(uint8_t, uint8_t, float); void set(uint16_t, float); matrix get_submatrix(uint8_t, uint8_t); static matrix eye(uint8_t); static matrix zeros(uint8_t, uint8_t); static matrix full(uint8_t, uint8_t, float); float operator()(uint8_t, uint8_t); float operator[](uint16_t); uint16_t get_idx(uint8_t, uint8_t); matrix T(); matrix flatten(); float minor(uint8_t, uint8_t); matrix operator*(float); matrix operator*(matrix); matrix operator+(matrix); matrix operator-(matrix); }; } // namespace math } // namespace sta #endif /* INC_MATRIX_HPP_ */