mirror of
https://github.com/Karaka-Management/cOMS.git
synced 2026-01-11 19:28:40 +00:00
221 lines
7.8 KiB
C
221 lines
7.8 KiB
C
/**
|
|
* Jingga
|
|
*
|
|
* @copyright Jingga
|
|
* @license OMS License 2.0
|
|
* @version 1.0.0
|
|
* @link https://jingga.app
|
|
*/
|
|
#ifndef TOS_MATH_MATRIX_INT64_H
|
|
#define TOS_MATH_MATRIX_INT64_H
|
|
|
|
#include "../../stdlib/Intrinsics.h"
|
|
#include "../../utils/MathUtils.h"
|
|
|
|
#endif
|
|
|
|
// Remarks: sizes for the second matrix/vector are often implied by the first parameter and the rules for matrix/vector
|
|
// multiplication.
|
|
|
|
// First element is always a matrix of int64_t
|
|
/////////////////////////////////
|
|
|
|
/////////////////////////////////
|
|
// Multiplication
|
|
/////////////////////////////////
|
|
|
|
// Array matrix multiplication
|
|
/////////////////////////////////
|
|
// mult_mat_int32(int64_t **a, size_t ai, size_t aj, int32_t **b)
|
|
// mult_mat_int64(int64_t **a, size_t ai, size_t aj, int64_t **b)
|
|
// mult_mat_float(int64_t **a, size_t ai, size_t aj, float **b)
|
|
|
|
// mult_vec_int32(int64_t **a, size_t ai, size_t aj, int32_t *b)
|
|
// mult_vec_int64(int64_t **a, size_t ai, size_t aj, int64_t *b)
|
|
// mult_vec_float(int64_t **a, size_t ai, size_t aj, float *b)
|
|
|
|
// mult_scal_int32(int64_t **a, size_t ai, size_t aj, int32_t b)
|
|
// mult_scal_int64(int64_t **a, size_t ai, size_t aj, int64_t b)
|
|
// mult_scal_float(int64_t **a, size_t ai, size_t aj, float b)
|
|
|
|
// Modifies the original matrix
|
|
// vector 2 matrix multiplication
|
|
/////////////////////////////////
|
|
// v2_mult_mat_int32(v2 *a, size_t a, int32_t **b)
|
|
// v2_mult_mat_int64(v2 *a, size_t a, int64_t **b)
|
|
// v2_mult_mat_float(v2 *a, size_t a, float **b)
|
|
// v2_mult_mat_v2(v2 *a, size_t a, v2 *b)
|
|
|
|
// v2_mult_vec_int32(v2 *a, size_t a, int32_t *b)
|
|
// v2_mult_vec_int64(v2 *a, size_t a, int64_t *b)
|
|
// v2_mult_vec_float(v2 *a, size_t a, float *b)
|
|
// v2_mult_vec_v2(v2 *a, size_t a, v2 *b)
|
|
|
|
// v2_mult_scal_int32(v2 *a, size_t a, int32_t b)
|
|
// v2_mult_scal_int64(v2 *a, size_t a, int64_t b)
|
|
// v2_mult_scal_float(v2 *a, size_t a, float b)
|
|
|
|
// vector 3 matrix multiplication
|
|
/////////////////////////////////
|
|
// v3_mult_mat_int32(v3 *a, size_t a, int32_t **b)
|
|
// v3_mult_mat_int64(v3 *a, size_t a, int64_t **b)
|
|
// v3_mult_mat_float(v3 *a, size_t a, float **b)
|
|
// v3_mult_mat_v3(v3 *a, size_t a, v3 *b)
|
|
|
|
// v3_mult_vec_int32(v3 *a, size_t a, int32_t *b)
|
|
// v3_mult_vec_int64(v3 *a, size_t a, int64_t *b)
|
|
// v3_mult_vec_float(v3 *a, size_t a, float *b)
|
|
// v3_mult_vec_v3(v3 *a, size_t a, v3 *b)
|
|
|
|
// v3_mult_scal_int32(v3 *a, size_t a, int32_t b)
|
|
// v3_mult_scal_int64(v3 *a, size_t a, int64_t b)
|
|
// v3_mult_scal_float(v3 *a, size_t a, float b)
|
|
|
|
// vector 4 matrix multiplication
|
|
/////////////////////////////////
|
|
// v4_mult_mat_int32(v4 *a, size_t a, int32_t **b)
|
|
// v4_mult_mat_int64(v4 *a, size_t a, int64_t **b)
|
|
// v4_mult_mat_float(v4 *a, size_t a, float **b)
|
|
// v4_mult_mat_v4(v4 *a, size_t a, v4 *b)
|
|
|
|
// v4_mult_vec_int32(v4 *a, size_t a, int32_t *b)
|
|
// v4_mult_vec_int64(v4 *a, size_t a, int64_t *b)
|
|
// v4_mult_vec_float(v4 *a, size_t a, float *b)
|
|
// v4_mult_vec_v4(v4 *a, size_t a, v4 *b)
|
|
|
|
// v4_mult_scal_int32(v4 *a, size_t a, int32_t b)
|
|
// v4_mult_scal_int64(v4 *a, size_t a, int64_t b)
|
|
// v4_mult_scal_float(v4 *a, size_t a, float b)
|
|
|
|
/////////////////////////////////
|
|
// Addition
|
|
/////////////////////////////////
|
|
|
|
// Array matrix addition
|
|
/////////////////////////////////
|
|
// add_mat_int32(int64_t **a, size_t ai, size_t aj, int32_t **b)
|
|
// add_mat_int64(int64_t **a, size_t ai, size_t aj, int64_t **b)
|
|
// add_mat_float(int64_t **a, size_t ai, size_t aj, float **b)
|
|
|
|
// add_vec_int32(int64_t **a, size_t ai, size_t aj, int32_t *b)
|
|
// add_vec_int64(int64_t **a, size_t ai, size_t aj, int64_t *b)
|
|
// add_vec_float(int64_t **a, size_t ai, size_t aj, float *b)
|
|
|
|
// add_scal_int32(int64_t **a, size_t ai, size_t aj, int32_t b)
|
|
// add_scal_int64(int64_t **a, size_t ai, size_t aj, int64_t b)
|
|
// add_scal_float(int64_t **a, size_t ai, size_t aj, float b)
|
|
|
|
// vector 2 matrix addition
|
|
/////////////////////////////////
|
|
// v2_add_mat_int32(v2 *a, size_t a, int32_t **b)
|
|
// v2_add_mat_int64(v2 *a, size_t a, int64_t **b)
|
|
// v2_add_mat_float(v2 *a, size_t a, float **b)
|
|
// v2_add_mat_v2(v2 *a, size_t a, v2 *b)
|
|
|
|
// v2_add_vec_int32(v2 *a, size_t a, int32_t *b)
|
|
// v2_add_vec_int64(v2 *a, size_t a, int64_t *b)
|
|
// v2_add_vec_float(v2 *a, size_t a, float *b)
|
|
// v2_add_vec_v2(v2 *a, size_t a, v2 *b)
|
|
|
|
// v2_add_scal_int32(v2 *a, size_t a, int32_t b)
|
|
// v2_add_scal_int64(v2 *a, size_t a, int64_t b)
|
|
// v2_add_scal_float(v2 *a, size_t a, float b)
|
|
|
|
// vector 3 matrix addition
|
|
/////////////////////////////////
|
|
// v3_add_mat_int32(v3 *a, size_t a, int32_t **b)
|
|
// v3_add_mat_int64(v3 *a, size_t a, int64_t **b)
|
|
// v3_add_mat_float(v3 *a, size_t a, float **b)
|
|
// v3_add_mat_v3(v3 *a, size_t a, v3 *b)
|
|
|
|
// v3_add_vec_int32(v3 *a, size_t a, int32_t *b)
|
|
// v3_add_vec_int64(v3 *a, size_t a, int64_t *b)
|
|
// v3_add_vec_float(v3 *a, size_t a, float *b)
|
|
// v3_add_vec_v3(v3 *a, size_t a, v3 *b)
|
|
|
|
// v3_add_scal_int32(v3 *a, size_t a, int32_t b)
|
|
// v3_add_scal_int64(v3 *a, size_t a, int64_t b)
|
|
// v3_add_scal_float(v3 *a, size_t a, float b)
|
|
|
|
// vector 4 matrix addition
|
|
/////////////////////////////////
|
|
// v4_add_mat_int32(v4 *a, size_t a, int32_t **b)
|
|
// v4_add_mat_int64(v4 *a, size_t a, int64_t **b)
|
|
// v4_add_mat_float(v4 *a, size_t a, float **b)
|
|
// v4_add_mat_v4(v4 *a, size_t a, v4 *b)
|
|
|
|
// v4_add_vec_int32(v4 *a, size_t a, int32_t *b)
|
|
// v4_add_vec_int64(v4 *a, size_t a, int64_t *b)
|
|
// v4_add_vec_float(v4 *a, size_t a, float *b)
|
|
// v4_add_vec_v4(v4 *a, size_t a, v4 *b)
|
|
|
|
// v4_add_scal_int32(v4 *a, size_t a, int32_t b)
|
|
// v4_add_scal_int64(v4 *a, size_t a, int64_t b)
|
|
// v4_add_scal_float(v4 *a, size_t a, float b)
|
|
|
|
/////////////////////////////////
|
|
// Subtraction
|
|
/////////////////////////////////
|
|
|
|
// Array matrix subtraction
|
|
/////////////////////////////////
|
|
// sub_mat_int32(int64_t **a, size_t ai, size_t aj, int32_t **b)
|
|
// sub_mat_int64(int64_t **a, size_t ai, size_t aj, int64_t **b)
|
|
// sub_mat_float(int64_t **a, size_t ai, size_t aj, float **b)
|
|
|
|
// sub_vec_int32(int64_t **a, size_t ai, size_t aj, int32_t *b)
|
|
// sub_vec_int64(int64_t **a, size_t ai, size_t aj, int64_t *b)
|
|
// sub_vec_float(int64_t **a, size_t ai, size_t aj, float *b)
|
|
|
|
// sub_scal_int32(int64_t **a, size_t ai, size_t aj, int32_t b)
|
|
// sub_scal_int64(int64_t **a, size_t ai, size_t aj, int64_t b)
|
|
// sub_scal_float(int64_t **a, size_t ai, size_t aj, float b)
|
|
|
|
// vector 2 matrix subtraction
|
|
/////////////////////////////////
|
|
// v2_sub_mat_int32(v2 *a, size_t a, int32_t **b)
|
|
// v2_sub_mat_int64(v2 *a, size_t a, int64_t **b)
|
|
// v2_sub_mat_float(v2 *a, size_t a, float **b)
|
|
// v2_sub_mat_v2(v2 *a, size_t a, v2 *b)
|
|
|
|
// v2_sub_vec_int32(v2 *a, size_t a, int32_t *b)
|
|
// v2_sub_vec_int64(v2 *a, size_t a, int64_t *b)
|
|
// v2_sub_vec_float(v2 *a, size_t a, float *b)
|
|
// v2_sub_vec_v2(v2 *a, size_t a, v2 *b)
|
|
|
|
// v2_sub_scal_int32(v2 *a, size_t a, int32_t b)
|
|
// v2_sub_scal_int64(v2 *a, size_t a, int64_t b)
|
|
// v2_sub_scal_float(v2 *a, size_t a, float b)
|
|
|
|
// vector 3 matrix subtraction
|
|
/////////////////////////////////
|
|
// v3_sub_mat_int32(v3 *a, size_t a, int32_t **b)
|
|
// v3_sub_mat_int64(v3 *a, size_t a, int64_t **b)
|
|
// v3_sub_mat_float(v3 *a, size_t a, float **b)
|
|
// v3_sub_mat_v3(v3 *a, size_t a, v3 *b)
|
|
|
|
// v3_sub_vec_int32(v3 *a, size_t a, int32_t *b)
|
|
// v3_sub_vec_int64(v3 *a, size_t a, int64_t *b)
|
|
// v3_sub_vec_float(v3 *a, size_t a, float *b)
|
|
// v3_sub_vec_v3(v3 *a, size_t a, v3 *b)
|
|
|
|
// v3_sub_scal_int32(v3 *a, size_t a, int32_t b)
|
|
// v3_sub_scal_int64(v3 *a, size_t a, int64_t b)
|
|
// v3_sub_scal_float(v3 *a, size_t a, float b)
|
|
|
|
// vector 4 matrix subtraction
|
|
/////////////////////////////////
|
|
// v4_sub_mat_int32(v4 *a, size_t a, int32_t **b)
|
|
// v4_sub_mat_int64(v4 *a, size_t a, int64_t **b)
|
|
// v4_sub_mat_float(v4 *a, size_t a, float **b)
|
|
// v4_sub_mat_v4(v4 *a, size_t a, v4 *b)
|
|
|
|
// v4_sub_vec_int32(v4 *a, size_t a, int32_t *b)
|
|
// v4_sub_vec_int64(v4 *a, size_t a, int64_t *b)
|
|
// v4_sub_vec_float(v4 *a, size_t a, float *b)
|
|
// v4_sub_vec_v4(v4 *a, size_t a, v4 *b)
|
|
|
|
// v4_sub_scal_int32(v4 *a, size_t a, int32_t b)
|
|
// v4_sub_scal_int64(v4 *a, size_t a, int64_t b)
|
|
// v4_sub_scal_float(v4 *a, size_t a, float b)
|