2024-06-02 22:15:33 +02:00

67 lines
1.3 KiB
C++

#ifndef INC_MATRIX_HPP_
#define INC_MATRIX_HPP_
#include <cstdint>
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_ */