1#ifndef COMMS_MATRIX_HPP
2#define COMMS_MATRIX_HPP
24 for (
size_t i = 0; i < m; i++) {
25 for (
size_t j = 0; j <
p; j++) {
27 for (
size_t k = 0; k <
n; k++) {
28 sum += A[i *
n + k] * B[k *
p + j];
38 for (
size_t i = 0; i < m; i++) {
39 for (
size_t j = 0; j <
n; j++) {
40 B[j * m + i] = A[i *
n + j];
47inline void matrix_add(
const double* A,
const double* B,
size_t m,
size_t n,
double* C) {
48 for (
size_t i = 0; i < m *
n; i++) {
55inline void matrix_subtract(
const double* A,
const double* B,
size_t m,
size_t n,
double* C) {
56 for (
size_t i = 0; i < m *
n; i++) {
63inline void matrix_scale(
const double* A,
double alpha,
size_t m,
size_t n,
double* B) {
64 for (
size_t i = 0; i < m *
n; i++) {
71 std::fill(A, A + m *
n, 0.0);
77 for (
size_t i = 0; i <
n; i++) {
83inline void matrix_copy(
const double* A,
size_t m,
size_t n,
double* B) {
84 std::memcpy(B, A, m *
n *
sizeof(
double));
91 for (
size_t i = 0; i < m; i++) {
93 for (
size_t j = 0; j <
n; j++) {
94 sum += A[i *
n + j] * x[j];
103 for (
size_t i = 0; i <
n; i++) {
117 for (
size_t i = 0; i <
n; i++) {
*brief create JSON pointer *sa reference_tokens const string_t const string_t & b
*brief create JSON pointer *sa reference_tokens const string_t & a
void matrix_scale(const double *A, double alpha, size_t m, size_t n, double *B)
void matrix_identity(double *A, size_t n)
void matrix_zeros(double *A, size_t m, size_t n)
void matrix_subtract(const double *A, const double *B, size_t m, size_t n, double *C)
void matrix_multiply(const double *A, size_t m, size_t n, const double *B, size_t p, double *C)
Matrix operations for sensor calibration and filtering.
double vector_dot(const double *a, const double *b, size_t n)
void matrix_transpose(const double *A, size_t m, size_t n, double *B)
void matrix_copy(const double *A, size_t m, size_t n, double *B)
double matrix_trace(const double *A, size_t n)
double vector_norm(const double *a, size_t n)
void matrix_vector_multiply(const double *A, size_t m, size_t n, const double *x, double *y)
void matrix_add(const double *A, const double *B, size_t m, size_t n, double *C)
Central message header for all communication messages.
*brief user defined string literal for JSON values *sa std::size_t n