16#ifndef Simd_MatrixArray_template_included
17#define Simd_MatrixArray_template_included
19#include <Simd_template.h>
20#include <FixedVector.h>
28template<
typename _TYPE_,
int N,
int Nlines,
int Ncolumns>
34 assert(line >= 0 && line < Nlines && col >= 0 && col < Ncolumns && matrix_index >= 0 && matrix_index < N);
35 return data_[line][col][matrix_index];
38 const _TYPE_&
operator()(
int matrix_index,
int line,
int col)
const
40 assert(line >= 0 && line < Nlines && col >= 0 && col < Ncolumns && matrix_index >= 0 && matrix_index < N);
41 return data_[line][col][matrix_index];
46 assert(line >= 0 && line < Nlines && col >= 0 && col < Ncolumns && matrix_index >= 0 && matrix_index < N);
52 assert(line >= 0 && line < Nlines && col >= 0 && col < Ncolumns && matrix_index >= 0 && matrix_index < N);
57 _TYPE_
data_[Nlines][Ncolumns][N];
65template<
typename _TYPE_,
int N>
72 for (
int i = 0; i < N; i += vsize)
84 resu.
SimdPut(i,0,0, (a11*a22-a12*a21)*t17);
85 resu.
SimdPut(i,0,1, (a02*a21-a01*a22)*t17);
86 resu.
SimdPut(i,0,2, (a01*a12-a02*a11)*t17);
87 resu.
SimdPut(i,1,0, (a12*a20-a10*a22)*t17);
88 resu.
SimdPut(i,1,1, (a00*a22-t14)*t17);
89 resu.
SimdPut(i,1,2, (t10-t6)*t17);
90 resu.
SimdPut(i,2,0, (a10*a21-a11*a20)*t17);
91 resu.
SimdPut(i,2,1, (t12-a00*a21)*t17);
92 resu.
SimdPut(i,2,2, (t4-t8)*t17);
const _TYPE_ & operator()(int matrix_index, int line, int col) const
float data_[Nlines][Ncolumns][N]
_TYPE_ & operator()(int matrix_index, int line, int col)
Simd_template< _TYPE_ > SimdGet(int matrix_index, int line, int col) const
void SimdPut(int matrix_index, int line, int col, const Simd_template< _TYPE_ > &x)
This class provides a generic access to simd operations on x86, x86 AMD and ARM architectures.