mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-peak.git
synced 2025-06-10 18:16:00 +00:00
62 lines
1.2 KiB
C++
62 lines
1.2 KiB
C++
#ifndef INC_MATRIX_HPP_
|
|
#define INC_MATRIX_HPP_
|
|
#include <cstdint>
|
|
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);
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
#endif /* INC_MATRIX_HPP_ */
|