25 #ifndef CASADI_SLICOT_LA_HPP
26 #define CASADI_SLICOT_LA_HPP
33 const double *A,
const double *B,
double *C,
34 casadi_int strideA, casadi_int strideB, casadi_int strideC) {
35 for (casadi_int i=0;i<n;++i) {
36 for (casadi_int j=0;j<n;++j) {
37 C[strideC*i + j] = -A[strideA*(i/m) + (j/m)]*B[strideB*(i%m) + (j%m)];
43 const double *A,
const double *B,
double *C,
44 casadi_int strideA, casadi_int strideB, casadi_int strideC) {
45 for (casadi_int i=0;i<n;++i) {
46 for (casadi_int j=0;j<m;++j) {
47 for (casadi_int k=0;k<l;++k) {
48 C[strideC*i + j] += A[strideA*i + k]*B[strideB*j + k];
57 const double *A,
const double *B,
double *C) {
62 const double *A,
const double *B,
double *C,
63 casadi_int strideA, casadi_int strideB, casadi_int strideC) {
64 for (casadi_int i=0;i<n;++i) {
65 for (casadi_int j=0;j<m;++j) {
66 for (casadi_int k=0;k<l;++k) {
67 C[strideC*i + j] += A[strideA*i + k]*B[strideB*k + j];
74 casadi_int strideA, casadi_int strideB) {
75 for (casadi_int i=0;i<n;++i) {
76 for (casadi_int j=0;j<m;++j) {
77 B[strideB*i + j] = A[strideA*i+j];
83 casadi_int strideA, casadi_int strideB) {
84 for (casadi_int i=0;i<n;++i) {
85 for (casadi_int j=0;j<m;++j) {
86 B[strideB*j + i] = A[strideA*i+j];
94 const double *A,
const double *B,
double *C) {
101 const double *A,
const double *B,
double *C) {
102 for (casadi_int i=0;i<n;++i) {
103 for (casadi_int j=0;j<m;++j) {
104 for (casadi_int k=0;k<l;++k) {
105 C[i + n*j] += A[i + n*k]*B[k + l*j];
115 const double *A,
const double *B,
double *C) {
116 for (casadi_int i=0;i<n;++i) {
117 for (casadi_int j=0;j<m;++j) {
118 for (casadi_int k=0;k<l;++k) {
119 C[n*i + j] += A[l*k + i]*B[l*k + j];
void dense_mul_nn(casadi_int n, casadi_int m, casadi_int l, const double *A, const double *B, double *C)
void dense_mul_tn(casadi_int n, casadi_int m, casadi_int l, const double *A, const double *B, double *C)
void dense_mul_nt(casadi_int n, casadi_int m, casadi_int l, const double *A, const double *B, double *C)
void dense_copy_t_stride(casadi_int n, casadi_int m, const double *A, double *B, casadi_int strideA, casadi_int strideB)
void dense_kron_stride(casadi_int n, casadi_int m, const double *A, const double *B, double *C, casadi_int strideA, casadi_int strideB, casadi_int strideC)
void dense_mul_nn_stride(casadi_int n, casadi_int m, casadi_int l, const double *A, const double *B, double *C, casadi_int strideA, casadi_int strideB, casadi_int strideC)
void dense_copy_stride(casadi_int n, casadi_int m, const double *A, double *B, casadi_int strideA, casadi_int strideB)
void dense_mul_nt_stride(casadi_int n, casadi_int m, casadi_int l, const double *A, const double *B, double *C, casadi_int strideA, casadi_int strideB, casadi_int strideC)
void dense_mul_nn2(casadi_int n, casadi_int m, casadi_int l, const double *A, const double *B, double *C)