1844 lines
94 KiB
C++
1844 lines
94 KiB
C++
#ifndef TENSOR_CROSS_H
|
|
#define TENSOR_CROSS_H
|
|
|
|
#include "Fastor/meta/meta.h"
|
|
#include "Fastor/config/config.h"
|
|
|
|
namespace Fastor {
|
|
|
|
// classic vector cross product
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
template<typename T, size_t M, enable_if_t_<M==3,bool> = false>
|
|
FASTOR_INLINE void _vector_crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
c[0] = a[1] * b[2] - a[2] * b[1];
|
|
c[1] = a[2] * b[0] - a[0] * b[2];
|
|
c[2] = a[0] * b[1] - a[1] * b[0];
|
|
}
|
|
|
|
template<typename T, size_t M, enable_if_t_<M==2,bool> = false>
|
|
FASTOR_INLINE void _vector_crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
c[0] = 0;
|
|
c[1] = 0;
|
|
c[2] = a[0] * b[1] - a[1] * b[0];
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
// tensor cross products
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
template<typename T, size_t M, size_t K, size_t N,
|
|
enable_if_t_<is_equal_v_<M,3> && is_equal_v_<K,3> && is_equal_v_<N,3>,bool> = false>
|
|
FASTOR_INLINE void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
T ___A00 = a[0];
|
|
T ___A01 = a[1];
|
|
T ___A02 = a[2];
|
|
T ___A10 = a[3];
|
|
T ___A11 = a[4];
|
|
T ___A12 = a[5];
|
|
T ___A20 = a[6];
|
|
T ___A21 = a[7];
|
|
T ___A22 = a[8];
|
|
|
|
T ___B00 = b[0];
|
|
T ___B01 = b[1];
|
|
T ___B02 = b[2];
|
|
T ___B10 = b[3];
|
|
T ___B11 = b[4];
|
|
T ___B12 = b[5];
|
|
T ___B20 = b[6];
|
|
T ___B21 = b[7];
|
|
T ___B22 = b[8];
|
|
|
|
c[0] = ___A11*___B22 - ___A12*___B21 - ___A21*___B12 + ___A22*___B11;
|
|
c[1] = ___A12*___B20 - ___A10*___B22 + ___A20*___B12 - ___A22*___B10;
|
|
c[2] = ___A10*___B21 - ___A11*___B20 - ___A20*___B11 + ___A21*___B10;
|
|
c[3] = ___A02*___B21 - ___A01*___B22 + ___A21*___B02 - ___A22*___B01;
|
|
c[4] = ___A00*___B22 - ___A02*___B20 - ___A20*___B02 + ___A22*___B00;
|
|
c[5] = ___A01*___B20 - ___A00*___B21 + ___A20*___B01 - ___A21*___B00;
|
|
c[6] = ___A01*___B12 - ___A02*___B11 - ___A11*___B02 + ___A12*___B01;
|
|
c[7] = ___A02*___B10 - ___A00*___B12 + ___A10*___B02 - ___A12*___B00;
|
|
c[8] = ___A00*___B11 - ___A01*___B10 - ___A10*___B01 + ___A11*___B00;
|
|
}
|
|
|
|
template<typename T, size_t M, size_t K, size_t N,
|
|
enable_if_t_<is_equal_v_<M,2> && is_equal_v_<K,2> && is_equal_v_<N,2>,bool> = false>
|
|
FASTOR_INLINE void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
T ___A00 = a[0];
|
|
T ___A01 = a[1];
|
|
T ___A10 = a[3];
|
|
T ___A11 = a[4];
|
|
|
|
T ___B00 = b[0];
|
|
T ___B01 = b[1];
|
|
T ___B10 = b[3];
|
|
T ___B11 = b[4];
|
|
|
|
c[0] = 0;
|
|
c[1] = 0;
|
|
c[2] = 0;
|
|
c[3] = 0;
|
|
c[4] = 0;
|
|
c[5] = 0;
|
|
c[6] = 0;
|
|
c[7] = 0;
|
|
c[8] = ___A00*___B11 - ___A01*___B10 - ___A10*___B01 + ___A11*___B00;
|
|
}
|
|
|
|
// vectors and 2nd order tensors
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
template<typename T, size_t M, size_t K, size_t N,
|
|
enable_if_t_<is_equal_v_<M,3> && is_equal_v_<K,1> && is_equal_v_<N,3>,bool> = false>
|
|
FASTOR_INLINE void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
// vector-tensor cross product - regitster based
|
|
T ___A1 = a[0];
|
|
T ___A2 = a[1];
|
|
T ___A3 = a[2];
|
|
|
|
T B1_1 = b[0];
|
|
T B1_2 = b[1];
|
|
T B1_3 = b[2];
|
|
T B2_1 = b[3];
|
|
T B2_2 = b[4];
|
|
T B2_3 = b[5];
|
|
T B3_1 = b[6];
|
|
T B3_2 = b[7];
|
|
T B3_3 = b[8];
|
|
|
|
c[0] = ___A2*B3_1 - ___A3*B2_1;
|
|
c[1] = ___A2*B3_2 - ___A3*B2_2;
|
|
c[2] = ___A2*B3_3 - ___A3*B2_3;
|
|
c[3] = ___A3*B1_1 - ___A1*B3_1;
|
|
c[4] = ___A3*B1_2 - ___A1*B3_2;
|
|
c[5] = ___A3*B1_3 - ___A1*B3_3;
|
|
c[6] = ___A1*B2_1 - ___A2*B1_1;
|
|
c[7] = ___A1*B2_2 - ___A2*B1_2;
|
|
c[8] = ___A1*B2_3 - ___A2*B1_3;
|
|
|
|
// [ A2*B3_1 - A3*B2_1, A2*B3_2 - A3*B2_2, A2*B3_3 - A3*B2_3]
|
|
// [ A3*B1_1 - A1*B3_1, A3*B1_2 - A1*B3_2, A3*B1_3 - A1*B3_3]
|
|
// [ A1*B2_1 - A2*B1_1, A1*B2_2 - A2*B1_2, A1*B2_3 - A2*B1_3]
|
|
}
|
|
|
|
template<typename T, size_t M, size_t K, size_t N,
|
|
enable_if_t_<is_equal_v_<M,2> && is_equal_v_<K,1> && is_equal_v_<N,2>,bool> = false>
|
|
FASTOR_INLINE void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
// vector-tensor cross product - regitster based
|
|
T ___A1 = a[0];
|
|
T ___A2 = a[1];
|
|
|
|
T B1_1 = b[0];
|
|
T B1_2 = b[1];
|
|
T B2_1 = b[3];
|
|
T B2_2 = b[4];
|
|
|
|
c[0] = 0;
|
|
c[1] = 0;
|
|
c[2] = 0;
|
|
c[3] = 0;
|
|
c[4] = 0;
|
|
c[5] = 0;
|
|
c[6] = ___A1*B2_1 - ___A2*B1_1;
|
|
c[7] = ___A1*B2_2 - ___A2*B1_2;
|
|
c[8] = 0;
|
|
}
|
|
|
|
template<typename T, size_t M, size_t K, size_t N,
|
|
enable_if_t_<is_equal_v_<M,3> && is_equal_v_<K,3> && is_equal_v_<N,1>,bool> = false>
|
|
FASTOR_INLINE void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
// tensor-vector cross product - regitster based
|
|
T ___B1 = b[0];
|
|
T ___B2 = b[1];
|
|
T ___B3 = b[2];
|
|
|
|
T A1_1 = a[0];
|
|
T A1_2 = a[1];
|
|
T A1_3 = a[2];
|
|
T A2_1 = a[3];
|
|
T A2_2 = a[4];
|
|
T A2_3 = a[5];
|
|
T A3_1 = a[6];
|
|
T A3_2 = a[7];
|
|
T A3_3 = a[8];
|
|
|
|
c[0] = A1_2*___B3 - A1_3*___B2;
|
|
c[1] = A1_3*___B1 - A1_1*___B3;
|
|
c[2] = A1_1*___B2 - A1_2*___B1;
|
|
c[3] = A2_2*___B3 - A2_3*___B2;
|
|
c[4] = A2_3*___B1 - A2_1*___B3;
|
|
c[5] = A2_1*___B2 - A2_2*___B1;
|
|
c[6] = A3_2*___B3 - A3_3*___B2;
|
|
c[7] = A3_3*___B1 - A3_1*___B3;
|
|
c[8] = A3_1*___B2 - A3_2*___B1;
|
|
|
|
// [ A1_2*B3 - A1_3*B2, A1_3*B1 - A1_1*B3, A1_1*B2 - A1_2*B1]
|
|
// [ A2_2*B3 - A2_3*B2, A2_3*B1 - A2_1*B3, A2_1*B2 - A2_2*B1]
|
|
// [ A3_2*B3 - A3_3*B2, A3_3*B1 - A3_1*B3, A3_1*B2 - A3_2*B1]
|
|
}
|
|
|
|
template<typename T, size_t M, size_t K, size_t N,
|
|
enable_if_t_<is_equal_v_<M,2> && is_equal_v_<K,2> && is_equal_v_<N,1>,bool> = false>
|
|
FASTOR_INLINE void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
// tensor-vector cross product - regitster based
|
|
T ___B1 = b[0];
|
|
T ___B2 = b[1];
|
|
|
|
T A1_1 = a[0];
|
|
T A1_2 = a[1];
|
|
T A2_1 = a[3];
|
|
T A2_2 = a[4];
|
|
|
|
c[0] = 0;
|
|
c[1] = 0;
|
|
c[2] = A1_1*___B2 - A1_2*___B1;
|
|
c[3] = 0;
|
|
c[4] = 0;
|
|
c[5] = A2_1*___B2 - A2_2*___B1;
|
|
c[6] = 0;
|
|
c[7] = 0;
|
|
c[8] = 0;
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
// for plane strain problems
|
|
template<typename T, int ProblemType>
|
|
FASTOR_INLINE
|
|
void _crossproduct(const T *FASTOR_RESTRICT a, const T *FASTOR_RESTRICT b, T *FASTOR_RESTRICT c) {
|
|
// For plane strain problems a and b need to be 3D with last element a[8]=b[8]=1
|
|
// Note that in ultimate case you might not need the last row/column of the output matrix hence computing c22
|
|
// and storing it is un-necessary, hence the (c) array should really be 2x2=4 in length
|
|
// Load a data
|
|
T ___A00 = a[0];
|
|
T ___A11 = a[4];
|
|
T ___A22 = a[8];
|
|
T ___A01 = a[1];
|
|
T ___A02 = a[2];
|
|
T ___A12 = a[5];
|
|
T ___A10 = a[3];
|
|
T ___A20 = a[6];
|
|
T ___A21 = a[7];
|
|
|
|
T ___B00 = b[0];
|
|
T ___B11 = b[4];
|
|
T ___B22 = b[8];
|
|
T ___B01 = b[1];
|
|
T ___B02 = b[2];
|
|
T ___B12 = b[5];
|
|
T ___B10 = b[3];
|
|
T ___B20 = b[6];
|
|
T ___B21 = b[7];
|
|
|
|
c[0] = ___A11*___B22 - ___A12*___B21 - ___A21*___B12 + ___A22*___B11;
|
|
c[1] = ___A12*___B20 - ___A10*___B22 + ___A20*___B12 - ___A22*___B10;
|
|
c[0] = 0;
|
|
c[3] = ___A02*___B21 - ___A01*___B22 + ___A21*___B02 - ___A22*___B01;
|
|
c[4] = ___A00*___B22 - ___A02*___B20 - ___A20*___B02 + ___A22*___B00;
|
|
c[5] = 0;
|
|
c[6] = 0;
|
|
c[7] = 0;
|
|
// c[8] = A00*B11 - A01*B10 - A10*B01 + A11*B00;
|
|
c[8] = 0; // 1 ?
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
//(AxB)_{PiIQ} = E_{ijk}E_{IJK}A_{PjJ}B_{kKQ}
|
|
// tensor cross product of 3rd order tensors
|
|
template<typename T, size_t I, size_t J, size_t K, size_t L, size_t M, size_t N>
|
|
FASTOR_HINT_INLINE void _crossproduct(const T *FASTOR_RESTRICT A, const T *FASTOR_RESTRICT B, T *FASTOR_RESTRICT C) {
|
|
|
|
T _A000 = A[0];
|
|
T _A001 = A[1];
|
|
T _A002 = A[2];
|
|
T _A010 = A[3];
|
|
T _A011 = A[4];
|
|
T _A012 = A[5];
|
|
T _A020 = A[6];
|
|
T _A021 = A[7];
|
|
T _A022 = A[8];
|
|
T _A100 = A[9];
|
|
T _A101 = A[10];
|
|
T _A102 = A[11];
|
|
T _A110 = A[12];
|
|
T _A111 = A[13];
|
|
T _A112 = A[14];
|
|
T _A120 = A[15];
|
|
T _A121 = A[16];
|
|
T _A122 = A[17];
|
|
T _A200 = A[18];
|
|
T _A201 = A[19];
|
|
T _A202 = A[20];
|
|
T _A210 = A[21];
|
|
T _A211 = A[22];
|
|
T _A212 = A[23];
|
|
T _A220 = A[24];
|
|
T _A221 = A[25];
|
|
T _A222 = A[26];
|
|
|
|
|
|
T _B000 = B[0];
|
|
T _B001 = B[1];
|
|
T _B002 = B[2];
|
|
T _B010 = B[3];
|
|
T _B011 = B[4];
|
|
T _B012 = B[5];
|
|
T _B020 = B[6];
|
|
T _B021 = B[7];
|
|
T _B022 = B[8];
|
|
T _B100 = B[9];
|
|
T _B101 = B[10];
|
|
T _B102 = B[11];
|
|
T _B110 = B[12];
|
|
T _B111 = B[13];
|
|
T _B112 = B[14];
|
|
T _B120 = B[15];
|
|
T _B121 = B[16];
|
|
T _B122 = B[17];
|
|
T _B200 = B[18];
|
|
T _B201 = B[19];
|
|
T _B202 = B[20];
|
|
T _B210 = B[21];
|
|
T _B211 = B[22];
|
|
T _B212 = B[23];
|
|
T _B220 = B[24];
|
|
T _B221 = B[25];
|
|
T _B222 = B[26];
|
|
|
|
|
|
C[0] = _A022*_B110 - _A021*_B120 - _A012*_B210 + _A011*_B220;
|
|
C[1] = _A022*_B111 - _A021*_B121 - _A012*_B211 + _A011*_B221;
|
|
C[2] = _A022*_B112 - _A021*_B122 - _A012*_B212 + _A011*_B222;
|
|
C[3] = _A020*_B120 - _A022*_B100 + _A012*_B200 - _A010*_B220;
|
|
C[4] = _A020*_B121 - _A022*_B101 + _A012*_B201 - _A010*_B221;
|
|
C[5] = _A020*_B122 - _A022*_B102 + _A012*_B202 - _A010*_B222;
|
|
C[6] = _A021*_B100 - _A020*_B110 - _A011*_B200 + _A010*_B210;
|
|
C[7] = _A021*_B101 - _A020*_B111 - _A011*_B201 + _A010*_B211;
|
|
C[8] = _A021*_B102 - _A020*_B112 - _A011*_B202 + _A010*_B212;
|
|
C[9] = _A021*_B020 - _A022*_B010 + _A002*_B210 - _A001*_B220;
|
|
C[10] = _A021*_B021 - _A022*_B011 + _A002*_B211 - _A001*_B221;
|
|
C[11] = _A021*_B022 - _A022*_B012 + _A002*_B212 - _A001*_B222;
|
|
C[12] = _A022*_B000 - _A020*_B020 - _A002*_B200 + _A000*_B220;
|
|
C[13] = _A022*_B001 - _A020*_B021 - _A002*_B201 + _A000*_B221;
|
|
C[14] = _A022*_B002 - _A020*_B022 - _A002*_B202 + _A000*_B222;
|
|
C[15] = _A020*_B010 - _A021*_B000 + _A001*_B200 - _A000*_B210;
|
|
C[16] = _A020*_B011 - _A021*_B001 + _A001*_B201 - _A000*_B211;
|
|
C[17] = _A020*_B012 - _A021*_B002 + _A001*_B202 - _A000*_B212;
|
|
C[18] = _A012*_B010 - _A011*_B020 - _A002*_B110 + _A001*_B120;
|
|
C[19] = _A012*_B011 - _A011*_B021 - _A002*_B111 + _A001*_B121;
|
|
C[20] = _A012*_B012 - _A011*_B022 - _A002*_B112 + _A001*_B122;
|
|
C[21] = _A010*_B020 - _A012*_B000 + _A002*_B100 - _A000*_B120;
|
|
C[22] = _A010*_B021 - _A012*_B001 + _A002*_B101 - _A000*_B121;
|
|
C[23] = _A010*_B022 - _A012*_B002 + _A002*_B102 - _A000*_B122;
|
|
C[24] = _A011*_B000 - _A010*_B010 - _A001*_B100 + _A000*_B110;
|
|
C[25] = _A011*_B001 - _A010*_B011 - _A001*_B101 + _A000*_B111;
|
|
C[26] = _A011*_B002 - _A010*_B012 - _A001*_B102 + _A000*_B112;
|
|
C[27] = _A122*_B110 - _A121*_B120 - _A112*_B210 + _A111*_B220;
|
|
C[28] = _A122*_B111 - _A121*_B121 - _A112*_B211 + _A111*_B221;
|
|
C[29] = _A122*_B112 - _A121*_B122 - _A112*_B212 + _A111*_B222;
|
|
C[30] = _A120*_B120 - _A122*_B100 + _A112*_B200 - _A110*_B220;
|
|
C[31] = _A120*_B121 - _A122*_B101 + _A112*_B201 - _A110*_B221;
|
|
C[32] = _A120*_B122 - _A122*_B102 + _A112*_B202 - _A110*_B222;
|
|
C[33] = _A121*_B100 - _A120*_B110 - _A111*_B200 + _A110*_B210;
|
|
C[34] = _A121*_B101 - _A120*_B111 - _A111*_B201 + _A110*_B211;
|
|
C[35] = _A121*_B102 - _A120*_B112 - _A111*_B202 + _A110*_B212;
|
|
C[36] = _A121*_B020 - _A122*_B010 + _A102*_B210 - _A101*_B220;
|
|
C[37] = _A121*_B021 - _A122*_B011 + _A102*_B211 - _A101*_B221;
|
|
C[38] = _A121*_B022 - _A122*_B012 + _A102*_B212 - _A101*_B222;
|
|
C[39] = _A122*_B000 - _A120*_B020 - _A102*_B200 + _A100*_B220;
|
|
C[40] = _A122*_B001 - _A120*_B021 - _A102*_B201 + _A100*_B221;
|
|
C[41] = _A122*_B002 - _A120*_B022 - _A102*_B202 + _A100*_B222;
|
|
C[42] = _A120*_B010 - _A121*_B000 + _A101*_B200 - _A100*_B210;
|
|
C[43] = _A120*_B011 - _A121*_B001 + _A101*_B201 - _A100*_B211;
|
|
C[44] = _A120*_B012 - _A121*_B002 + _A101*_B202 - _A100*_B212;
|
|
C[45] = _A112*_B010 - _A111*_B020 - _A102*_B110 + _A101*_B120;
|
|
C[46] = _A112*_B011 - _A111*_B021 - _A102*_B111 + _A101*_B121;
|
|
C[47] = _A112*_B012 - _A111*_B022 - _A102*_B112 + _A101*_B122;
|
|
C[48] = _A110*_B020 - _A112*_B000 + _A102*_B100 - _A100*_B120;
|
|
C[49] = _A110*_B021 - _A112*_B001 + _A102*_B101 - _A100*_B121;
|
|
C[50] = _A110*_B022 - _A112*_B002 + _A102*_B102 - _A100*_B122;
|
|
C[51] = _A111*_B000 - _A110*_B010 - _A101*_B100 + _A100*_B110;
|
|
C[52] = _A111*_B001 - _A110*_B011 - _A101*_B101 + _A100*_B111;
|
|
C[53] = _A111*_B002 - _A110*_B012 - _A101*_B102 + _A100*_B112;
|
|
C[54] = _A222*_B110 - _A221*_B120 - _A212*_B210 + _A211*_B220;
|
|
C[55] = _A222*_B111 - _A221*_B121 - _A212*_B211 + _A211*_B221;
|
|
C[56] = _A222*_B112 - _A221*_B122 - _A212*_B212 + _A211*_B222;
|
|
C[57] = _A220*_B120 - _A222*_B100 + _A212*_B200 - _A210*_B220;
|
|
C[58] = _A220*_B121 - _A222*_B101 + _A212*_B201 - _A210*_B221;
|
|
C[59] = _A220*_B122 - _A222*_B102 + _A212*_B202 - _A210*_B222;
|
|
C[60] = _A221*_B100 - _A220*_B110 - _A211*_B200 + _A210*_B210;
|
|
C[61] = _A221*_B101 - _A220*_B111 - _A211*_B201 + _A210*_B211;
|
|
C[62] = _A221*_B102 - _A220*_B112 - _A211*_B202 + _A210*_B212;
|
|
C[63] = _A221*_B020 - _A222*_B010 + _A202*_B210 - _A201*_B220;
|
|
C[64] = _A221*_B021 - _A222*_B011 + _A202*_B211 - _A201*_B221;
|
|
C[65] = _A221*_B022 - _A222*_B012 + _A202*_B212 - _A201*_B222;
|
|
C[66] = _A222*_B000 - _A220*_B020 - _A202*_B200 + _A200*_B220;
|
|
C[67] = _A222*_B001 - _A220*_B021 - _A202*_B201 + _A200*_B221;
|
|
C[68] = _A222*_B002 - _A220*_B022 - _A202*_B202 + _A200*_B222;
|
|
C[69] = _A220*_B010 - _A221*_B000 + _A201*_B200 - _A200*_B210;
|
|
C[70] = _A220*_B011 - _A221*_B001 + _A201*_B201 - _A200*_B211;
|
|
C[71] = _A220*_B012 - _A221*_B002 + _A201*_B202 - _A200*_B212;
|
|
C[72] = _A212*_B010 - _A211*_B020 - _A202*_B110 + _A201*_B120;
|
|
C[73] = _A212*_B011 - _A211*_B021 - _A202*_B111 + _A201*_B121;
|
|
C[74] = _A212*_B012 - _A211*_B022 - _A202*_B112 + _A201*_B122;
|
|
C[75] = _A210*_B020 - _A212*_B000 + _A202*_B100 - _A200*_B120;
|
|
C[76] = _A210*_B021 - _A212*_B001 + _A202*_B101 - _A200*_B121;
|
|
C[77] = _A210*_B022 - _A212*_B002 + _A202*_B102 - _A200*_B122;
|
|
C[78] = _A211*_B000 - _A210*_B010 - _A201*_B100 + _A200*_B110;
|
|
C[79] = _A211*_B001 - _A210*_B011 - _A201*_B101 + _A200*_B111;
|
|
C[80] = _A211*_B002 - _A210*_B012 - _A201*_B102 + _A200*_B112;
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
//(AxB)_{pPiIqQ} = E_{ijk}E_{IJK}A_{pPjJ}B_{kKqQ}
|
|
// tensor cross product of 4th order tensors
|
|
template<typename T, size_t I, size_t J, size_t K, size_t L, size_t M, size_t N, size_t O, size_t P>
|
|
FASTOR_HINT_INLINE void _crossproduct(const T *FASTOR_RESTRICT A, const T *FASTOR_RESTRICT B, T *FASTOR_RESTRICT C) {
|
|
|
|
T _A0000 = A[0];
|
|
T _A0001 = A[1];
|
|
T _A0002 = A[2];
|
|
T _A0010 = A[3];
|
|
T _A0011 = A[4];
|
|
T _A0012 = A[5];
|
|
T _A0020 = A[6];
|
|
T _A0021 = A[7];
|
|
T _A0022 = A[8];
|
|
T _A0100 = A[9];
|
|
T _A0101 = A[10];
|
|
T _A0102 = A[11];
|
|
T _A0110 = A[12];
|
|
T _A0111 = A[13];
|
|
T _A0112 = A[14];
|
|
T _A0120 = A[15];
|
|
T _A0121 = A[16];
|
|
T _A0122 = A[17];
|
|
T _A0200 = A[18];
|
|
T _A0201 = A[19];
|
|
T _A0202 = A[20];
|
|
T _A0210 = A[21];
|
|
T _A0211 = A[22];
|
|
T _A0212 = A[23];
|
|
T _A0220 = A[24];
|
|
T _A0221 = A[25];
|
|
T _A0222 = A[26];
|
|
T _A1000 = A[27];
|
|
T _A1001 = A[28];
|
|
T _A1002 = A[29];
|
|
T _A1010 = A[30];
|
|
T _A1011 = A[31];
|
|
T _A1012 = A[32];
|
|
T _A1020 = A[33];
|
|
T _A1021 = A[34];
|
|
T _A1022 = A[35];
|
|
T _A1100 = A[36];
|
|
T _A1101 = A[37];
|
|
T _A1102 = A[38];
|
|
T _A1110 = A[39];
|
|
T _A1111 = A[40];
|
|
T _A1112 = A[41];
|
|
T _A1120 = A[42];
|
|
T _A1121 = A[43];
|
|
T _A1122 = A[44];
|
|
T _A1200 = A[45];
|
|
T _A1201 = A[46];
|
|
T _A1202 = A[47];
|
|
T _A1210 = A[48];
|
|
T _A1211 = A[49];
|
|
T _A1212 = A[50];
|
|
T _A1220 = A[51];
|
|
T _A1221 = A[52];
|
|
T _A1222 = A[53];
|
|
T _A2000 = A[54];
|
|
T _A2001 = A[55];
|
|
T _A2002 = A[56];
|
|
T _A2010 = A[57];
|
|
T _A2011 = A[58];
|
|
T _A2012 = A[59];
|
|
T _A2020 = A[60];
|
|
T _A2021 = A[61];
|
|
T _A2022 = A[62];
|
|
T _A2100 = A[63];
|
|
T _A2101 = A[64];
|
|
T _A2102 = A[65];
|
|
T _A2110 = A[66];
|
|
T _A2111 = A[67];
|
|
T _A2112 = A[68];
|
|
T _A2120 = A[69];
|
|
T _A2121 = A[70];
|
|
T _A2122 = A[71];
|
|
T _A2200 = A[72];
|
|
T _A2201 = A[73];
|
|
T _A2202 = A[74];
|
|
T _A2210 = A[75];
|
|
T _A2211 = A[76];
|
|
T _A2212 = A[77];
|
|
T _A2220 = A[78];
|
|
T _A2221 = A[79];
|
|
T _A2222 = A[80];
|
|
|
|
|
|
T _B0000 = B[0];
|
|
T _B0001 = B[1];
|
|
T _B0002 = B[2];
|
|
T _B0010 = B[3];
|
|
T _B0011 = B[4];
|
|
T _B0012 = B[5];
|
|
T _B0020 = B[6];
|
|
T _B0021 = B[7];
|
|
T _B0022 = B[8];
|
|
T _B0100 = B[9];
|
|
T _B0101 = B[10];
|
|
T _B0102 = B[11];
|
|
T _B0110 = B[12];
|
|
T _B0111 = B[13];
|
|
T _B0112 = B[14];
|
|
T _B0120 = B[15];
|
|
T _B0121 = B[16];
|
|
T _B0122 = B[17];
|
|
T _B0200 = B[18];
|
|
T _B0201 = B[19];
|
|
T _B0202 = B[20];
|
|
T _B0210 = B[21];
|
|
T _B0211 = B[22];
|
|
T _B0212 = B[23];
|
|
T _B0220 = B[24];
|
|
T _B0221 = B[25];
|
|
T _B0222 = B[26];
|
|
T _B1000 = B[27];
|
|
T _B1001 = B[28];
|
|
T _B1002 = B[29];
|
|
T _B1010 = B[30];
|
|
T _B1011 = B[31];
|
|
T _B1012 = B[32];
|
|
T _B1020 = B[33];
|
|
T _B1021 = B[34];
|
|
T _B1022 = B[35];
|
|
T _B1100 = B[36];
|
|
T _B1101 = B[37];
|
|
T _B1102 = B[38];
|
|
T _B1110 = B[39];
|
|
T _B1111 = B[40];
|
|
T _B1112 = B[41];
|
|
T _B1120 = B[42];
|
|
T _B1121 = B[43];
|
|
T _B1122 = B[44];
|
|
T _B1200 = B[45];
|
|
T _B1201 = B[46];
|
|
T _B1202 = B[47];
|
|
T _B1210 = B[48];
|
|
T _B1211 = B[49];
|
|
T _B1212 = B[50];
|
|
T _B1220 = B[51];
|
|
T _B1221 = B[52];
|
|
T _B1222 = B[53];
|
|
T _B2000 = B[54];
|
|
T _B2001 = B[55];
|
|
T _B2002 = B[56];
|
|
T _B2010 = B[57];
|
|
T _B2011 = B[58];
|
|
T _B2012 = B[59];
|
|
T _B2020 = B[60];
|
|
T _B2021 = B[61];
|
|
T _B2022 = B[62];
|
|
T _B2100 = B[63];
|
|
T _B2101 = B[64];
|
|
T _B2102 = B[65];
|
|
T _B2110 = B[66];
|
|
T _B2111 = B[67];
|
|
T _B2112 = B[68];
|
|
T _B2120 = B[69];
|
|
T _B2121 = B[70];
|
|
T _B2122 = B[71];
|
|
T _B2200 = B[72];
|
|
T _B2201 = B[73];
|
|
T _B2202 = B[74];
|
|
T _B2210 = B[75];
|
|
T _B2211 = B[76];
|
|
T _B2212 = B[77];
|
|
T _B2220 = B[78];
|
|
T _B2221 = B[79];
|
|
T _B2222 = B[80];
|
|
|
|
|
|
C[0] = _A0022*_B1100 - _A0021*_B1200 - _A0012*_B2100 + _A0011*_B2200;
|
|
C[1] = _A0022*_B1101 - _A0021*_B1201 - _A0012*_B2101 + _A0011*_B2201;
|
|
C[2] = _A0022*_B1102 - _A0021*_B1202 - _A0012*_B2102 + _A0011*_B2202;
|
|
C[3] = _A0022*_B1110 - _A0021*_B1210 - _A0012*_B2110 + _A0011*_B2210;
|
|
C[4] = _A0022*_B1111 - _A0021*_B1211 - _A0012*_B2111 + _A0011*_B2211;
|
|
C[5] = _A0022*_B1112 - _A0021*_B1212 - _A0012*_B2112 + _A0011*_B2212;
|
|
C[6] = _A0022*_B1120 - _A0021*_B1220 - _A0012*_B2120 + _A0011*_B2220;
|
|
C[7] = _A0022*_B1121 - _A0021*_B1221 - _A0012*_B2121 + _A0011*_B2221;
|
|
C[8] = _A0022*_B1122 - _A0021*_B1222 - _A0012*_B2122 + _A0011*_B2222;
|
|
C[9] = _A0020*_B1200 - _A0022*_B1000 + _A0012*_B2000 - _A0010*_B2200;
|
|
C[10] = _A0020*_B1201 - _A0022*_B1001 + _A0012*_B2001 - _A0010*_B2201;
|
|
C[11] = _A0020*_B1202 - _A0022*_B1002 + _A0012*_B2002 - _A0010*_B2202;
|
|
C[12] = _A0020*_B1210 - _A0022*_B1010 + _A0012*_B2010 - _A0010*_B2210;
|
|
C[13] = _A0020*_B1211 - _A0022*_B1011 + _A0012*_B2011 - _A0010*_B2211;
|
|
C[14] = _A0020*_B1212 - _A0022*_B1012 + _A0012*_B2012 - _A0010*_B2212;
|
|
C[15] = _A0020*_B1220 - _A0022*_B1020 + _A0012*_B2020 - _A0010*_B2220;
|
|
C[16] = _A0020*_B1221 - _A0022*_B1021 + _A0012*_B2021 - _A0010*_B2221;
|
|
C[17] = _A0020*_B1222 - _A0022*_B1022 + _A0012*_B2022 - _A0010*_B2222;
|
|
C[18] = _A0021*_B1000 - _A0020*_B1100 - _A0011*_B2000 + _A0010*_B2100;
|
|
C[19] = _A0021*_B1001 - _A0020*_B1101 - _A0011*_B2001 + _A0010*_B2101;
|
|
C[20] = _A0021*_B1002 - _A0020*_B1102 - _A0011*_B2002 + _A0010*_B2102;
|
|
C[21] = _A0021*_B1010 - _A0020*_B1110 - _A0011*_B2010 + _A0010*_B2110;
|
|
C[22] = _A0021*_B1011 - _A0020*_B1111 - _A0011*_B2011 + _A0010*_B2111;
|
|
C[23] = _A0021*_B1012 - _A0020*_B1112 - _A0011*_B2012 + _A0010*_B2112;
|
|
C[24] = _A0021*_B1020 - _A0020*_B1120 - _A0011*_B2020 + _A0010*_B2120;
|
|
C[25] = _A0021*_B1021 - _A0020*_B1121 - _A0011*_B2021 + _A0010*_B2121;
|
|
C[26] = _A0021*_B1022 - _A0020*_B1122 - _A0011*_B2022 + _A0010*_B2122;
|
|
C[27] = _A0021*_B0200 - _A0022*_B0100 + _A0002*_B2100 - _A0001*_B2200;
|
|
C[28] = _A0021*_B0201 - _A0022*_B0101 + _A0002*_B2101 - _A0001*_B2201;
|
|
C[29] = _A0021*_B0202 - _A0022*_B0102 + _A0002*_B2102 - _A0001*_B2202;
|
|
C[30] = _A0021*_B0210 - _A0022*_B0110 + _A0002*_B2110 - _A0001*_B2210;
|
|
C[31] = _A0021*_B0211 - _A0022*_B0111 + _A0002*_B2111 - _A0001*_B2211;
|
|
C[32] = _A0021*_B0212 - _A0022*_B0112 + _A0002*_B2112 - _A0001*_B2212;
|
|
C[33] = _A0021*_B0220 - _A0022*_B0120 + _A0002*_B2120 - _A0001*_B2220;
|
|
C[34] = _A0021*_B0221 - _A0022*_B0121 + _A0002*_B2121 - _A0001*_B2221;
|
|
C[35] = _A0021*_B0222 - _A0022*_B0122 + _A0002*_B2122 - _A0001*_B2222;
|
|
C[36] = _A0022*_B0000 - _A0020*_B0200 - _A0002*_B2000 + _A0000*_B2200;
|
|
C[37] = _A0022*_B0001 - _A0020*_B0201 - _A0002*_B2001 + _A0000*_B2201;
|
|
C[38] = _A0022*_B0002 - _A0020*_B0202 - _A0002*_B2002 + _A0000*_B2202;
|
|
C[39] = _A0022*_B0010 - _A0020*_B0210 - _A0002*_B2010 + _A0000*_B2210;
|
|
C[40] = _A0022*_B0011 - _A0020*_B0211 - _A0002*_B2011 + _A0000*_B2211;
|
|
C[41] = _A0022*_B0012 - _A0020*_B0212 - _A0002*_B2012 + _A0000*_B2212;
|
|
C[42] = _A0022*_B0020 - _A0020*_B0220 - _A0002*_B2020 + _A0000*_B2220;
|
|
C[43] = _A0022*_B0021 - _A0020*_B0221 - _A0002*_B2021 + _A0000*_B2221;
|
|
C[44] = _A0022*_B0022 - _A0020*_B0222 - _A0002*_B2022 + _A0000*_B2222;
|
|
C[45] = _A0020*_B0100 - _A0021*_B0000 + _A0001*_B2000 - _A0000*_B2100;
|
|
C[46] = _A0020*_B0101 - _A0021*_B0001 + _A0001*_B2001 - _A0000*_B2101;
|
|
C[47] = _A0020*_B0102 - _A0021*_B0002 + _A0001*_B2002 - _A0000*_B2102;
|
|
C[48] = _A0020*_B0110 - _A0021*_B0010 + _A0001*_B2010 - _A0000*_B2110;
|
|
C[49] = _A0020*_B0111 - _A0021*_B0011 + _A0001*_B2011 - _A0000*_B2111;
|
|
C[50] = _A0020*_B0112 - _A0021*_B0012 + _A0001*_B2012 - _A0000*_B2112;
|
|
C[51] = _A0020*_B0120 - _A0021*_B0020 + _A0001*_B2020 - _A0000*_B2120;
|
|
C[52] = _A0020*_B0121 - _A0021*_B0021 + _A0001*_B2021 - _A0000*_B2121;
|
|
C[53] = _A0020*_B0122 - _A0021*_B0022 + _A0001*_B2022 - _A0000*_B2122;
|
|
C[54] = _A0012*_B0100 - _A0011*_B0200 - _A0002*_B1100 + _A0001*_B1200;
|
|
C[55] = _A0012*_B0101 - _A0011*_B0201 - _A0002*_B1101 + _A0001*_B1201;
|
|
C[56] = _A0012*_B0102 - _A0011*_B0202 - _A0002*_B1102 + _A0001*_B1202;
|
|
C[57] = _A0012*_B0110 - _A0011*_B0210 - _A0002*_B1110 + _A0001*_B1210;
|
|
C[58] = _A0012*_B0111 - _A0011*_B0211 - _A0002*_B1111 + _A0001*_B1211;
|
|
C[59] = _A0012*_B0112 - _A0011*_B0212 - _A0002*_B1112 + _A0001*_B1212;
|
|
C[60] = _A0012*_B0120 - _A0011*_B0220 - _A0002*_B1120 + _A0001*_B1220;
|
|
C[61] = _A0012*_B0121 - _A0011*_B0221 - _A0002*_B1121 + _A0001*_B1221;
|
|
C[62] = _A0012*_B0122 - _A0011*_B0222 - _A0002*_B1122 + _A0001*_B1222;
|
|
C[63] = _A0010*_B0200 - _A0012*_B0000 + _A0002*_B1000 - _A0000*_B1200;
|
|
C[64] = _A0010*_B0201 - _A0012*_B0001 + _A0002*_B1001 - _A0000*_B1201;
|
|
C[65] = _A0010*_B0202 - _A0012*_B0002 + _A0002*_B1002 - _A0000*_B1202;
|
|
C[66] = _A0010*_B0210 - _A0012*_B0010 + _A0002*_B1010 - _A0000*_B1210;
|
|
C[67] = _A0010*_B0211 - _A0012*_B0011 + _A0002*_B1011 - _A0000*_B1211;
|
|
C[68] = _A0010*_B0212 - _A0012*_B0012 + _A0002*_B1012 - _A0000*_B1212;
|
|
C[69] = _A0010*_B0220 - _A0012*_B0020 + _A0002*_B1020 - _A0000*_B1220;
|
|
C[70] = _A0010*_B0221 - _A0012*_B0021 + _A0002*_B1021 - _A0000*_B1221;
|
|
C[71] = _A0010*_B0222 - _A0012*_B0022 + _A0002*_B1022 - _A0000*_B1222;
|
|
C[72] = _A0011*_B0000 - _A0010*_B0100 - _A0001*_B1000 + _A0000*_B1100;
|
|
C[73] = _A0011*_B0001 - _A0010*_B0101 - _A0001*_B1001 + _A0000*_B1101;
|
|
C[74] = _A0011*_B0002 - _A0010*_B0102 - _A0001*_B1002 + _A0000*_B1102;
|
|
C[75] = _A0011*_B0010 - _A0010*_B0110 - _A0001*_B1010 + _A0000*_B1110;
|
|
C[76] = _A0011*_B0011 - _A0010*_B0111 - _A0001*_B1011 + _A0000*_B1111;
|
|
C[77] = _A0011*_B0012 - _A0010*_B0112 - _A0001*_B1012 + _A0000*_B1112;
|
|
C[78] = _A0011*_B0020 - _A0010*_B0120 - _A0001*_B1020 + _A0000*_B1120;
|
|
C[79] = _A0011*_B0021 - _A0010*_B0121 - _A0001*_B1021 + _A0000*_B1121;
|
|
C[80] = _A0011*_B0022 - _A0010*_B0122 - _A0001*_B1022 + _A0000*_B1122;
|
|
C[81] = _A0122*_B1100 - _A0121*_B1200 - _A0112*_B2100 + _A0111*_B2200;
|
|
C[82] = _A0122*_B1101 - _A0121*_B1201 - _A0112*_B2101 + _A0111*_B2201;
|
|
C[83] = _A0122*_B1102 - _A0121*_B1202 - _A0112*_B2102 + _A0111*_B2202;
|
|
C[84] = _A0122*_B1110 - _A0121*_B1210 - _A0112*_B2110 + _A0111*_B2210;
|
|
C[85] = _A0122*_B1111 - _A0121*_B1211 - _A0112*_B2111 + _A0111*_B2211;
|
|
C[86] = _A0122*_B1112 - _A0121*_B1212 - _A0112*_B2112 + _A0111*_B2212;
|
|
C[87] = _A0122*_B1120 - _A0121*_B1220 - _A0112*_B2120 + _A0111*_B2220;
|
|
C[88] = _A0122*_B1121 - _A0121*_B1221 - _A0112*_B2121 + _A0111*_B2221;
|
|
C[89] = _A0122*_B1122 - _A0121*_B1222 - _A0112*_B2122 + _A0111*_B2222;
|
|
C[90] = _A0120*_B1200 - _A0122*_B1000 + _A0112*_B2000 - _A0110*_B2200;
|
|
C[91] = _A0120*_B1201 - _A0122*_B1001 + _A0112*_B2001 - _A0110*_B2201;
|
|
C[92] = _A0120*_B1202 - _A0122*_B1002 + _A0112*_B2002 - _A0110*_B2202;
|
|
C[93] = _A0120*_B1210 - _A0122*_B1010 + _A0112*_B2010 - _A0110*_B2210;
|
|
C[94] = _A0120*_B1211 - _A0122*_B1011 + _A0112*_B2011 - _A0110*_B2211;
|
|
C[95] = _A0120*_B1212 - _A0122*_B1012 + _A0112*_B2012 - _A0110*_B2212;
|
|
C[96] = _A0120*_B1220 - _A0122*_B1020 + _A0112*_B2020 - _A0110*_B2220;
|
|
C[97] = _A0120*_B1221 - _A0122*_B1021 + _A0112*_B2021 - _A0110*_B2221;
|
|
C[98] = _A0120*_B1222 - _A0122*_B1022 + _A0112*_B2022 - _A0110*_B2222;
|
|
C[99] = _A0121*_B1000 - _A0120*_B1100 - _A0111*_B2000 + _A0110*_B2100;
|
|
C[100] = _A0121*_B1001 - _A0120*_B1101 - _A0111*_B2001 + _A0110*_B2101;
|
|
C[101] = _A0121*_B1002 - _A0120*_B1102 - _A0111*_B2002 + _A0110*_B2102;
|
|
C[102] = _A0121*_B1010 - _A0120*_B1110 - _A0111*_B2010 + _A0110*_B2110;
|
|
C[103] = _A0121*_B1011 - _A0120*_B1111 - _A0111*_B2011 + _A0110*_B2111;
|
|
C[104] = _A0121*_B1012 - _A0120*_B1112 - _A0111*_B2012 + _A0110*_B2112;
|
|
C[105] = _A0121*_B1020 - _A0120*_B1120 - _A0111*_B2020 + _A0110*_B2120;
|
|
C[106] = _A0121*_B1021 - _A0120*_B1121 - _A0111*_B2021 + _A0110*_B2121;
|
|
C[107] = _A0121*_B1022 - _A0120*_B1122 - _A0111*_B2022 + _A0110*_B2122;
|
|
C[108] = _A0121*_B0200 - _A0122*_B0100 + _A0102*_B2100 - _A0101*_B2200;
|
|
C[109] = _A0121*_B0201 - _A0122*_B0101 + _A0102*_B2101 - _A0101*_B2201;
|
|
C[110] = _A0121*_B0202 - _A0122*_B0102 + _A0102*_B2102 - _A0101*_B2202;
|
|
C[111] = _A0121*_B0210 - _A0122*_B0110 + _A0102*_B2110 - _A0101*_B2210;
|
|
C[112] = _A0121*_B0211 - _A0122*_B0111 + _A0102*_B2111 - _A0101*_B2211;
|
|
C[113] = _A0121*_B0212 - _A0122*_B0112 + _A0102*_B2112 - _A0101*_B2212;
|
|
C[114] = _A0121*_B0220 - _A0122*_B0120 + _A0102*_B2120 - _A0101*_B2220;
|
|
C[115] = _A0121*_B0221 - _A0122*_B0121 + _A0102*_B2121 - _A0101*_B2221;
|
|
C[116] = _A0121*_B0222 - _A0122*_B0122 + _A0102*_B2122 - _A0101*_B2222;
|
|
C[117] = _A0122*_B0000 - _A0120*_B0200 - _A0102*_B2000 + _A0100*_B2200;
|
|
C[118] = _A0122*_B0001 - _A0120*_B0201 - _A0102*_B2001 + _A0100*_B2201;
|
|
C[119] = _A0122*_B0002 - _A0120*_B0202 - _A0102*_B2002 + _A0100*_B2202;
|
|
C[120] = _A0122*_B0010 - _A0120*_B0210 - _A0102*_B2010 + _A0100*_B2210;
|
|
C[121] = _A0122*_B0011 - _A0120*_B0211 - _A0102*_B2011 + _A0100*_B2211;
|
|
C[122] = _A0122*_B0012 - _A0120*_B0212 - _A0102*_B2012 + _A0100*_B2212;
|
|
C[123] = _A0122*_B0020 - _A0120*_B0220 - _A0102*_B2020 + _A0100*_B2220;
|
|
C[124] = _A0122*_B0021 - _A0120*_B0221 - _A0102*_B2021 + _A0100*_B2221;
|
|
C[125] = _A0122*_B0022 - _A0120*_B0222 - _A0102*_B2022 + _A0100*_B2222;
|
|
C[126] = _A0120*_B0100 - _A0121*_B0000 + _A0101*_B2000 - _A0100*_B2100;
|
|
C[127] = _A0120*_B0101 - _A0121*_B0001 + _A0101*_B2001 - _A0100*_B2101;
|
|
C[128] = _A0120*_B0102 - _A0121*_B0002 + _A0101*_B2002 - _A0100*_B2102;
|
|
C[129] = _A0120*_B0110 - _A0121*_B0010 + _A0101*_B2010 - _A0100*_B2110;
|
|
C[130] = _A0120*_B0111 - _A0121*_B0011 + _A0101*_B2011 - _A0100*_B2111;
|
|
C[131] = _A0120*_B0112 - _A0121*_B0012 + _A0101*_B2012 - _A0100*_B2112;
|
|
C[132] = _A0120*_B0120 - _A0121*_B0020 + _A0101*_B2020 - _A0100*_B2120;
|
|
C[133] = _A0120*_B0121 - _A0121*_B0021 + _A0101*_B2021 - _A0100*_B2121;
|
|
C[134] = _A0120*_B0122 - _A0121*_B0022 + _A0101*_B2022 - _A0100*_B2122;
|
|
C[135] = _A0112*_B0100 - _A0111*_B0200 - _A0102*_B1100 + _A0101*_B1200;
|
|
C[136] = _A0112*_B0101 - _A0111*_B0201 - _A0102*_B1101 + _A0101*_B1201;
|
|
C[137] = _A0112*_B0102 - _A0111*_B0202 - _A0102*_B1102 + _A0101*_B1202;
|
|
C[138] = _A0112*_B0110 - _A0111*_B0210 - _A0102*_B1110 + _A0101*_B1210;
|
|
C[139] = _A0112*_B0111 - _A0111*_B0211 - _A0102*_B1111 + _A0101*_B1211;
|
|
C[140] = _A0112*_B0112 - _A0111*_B0212 - _A0102*_B1112 + _A0101*_B1212;
|
|
C[141] = _A0112*_B0120 - _A0111*_B0220 - _A0102*_B1120 + _A0101*_B1220;
|
|
C[142] = _A0112*_B0121 - _A0111*_B0221 - _A0102*_B1121 + _A0101*_B1221;
|
|
C[143] = _A0112*_B0122 - _A0111*_B0222 - _A0102*_B1122 + _A0101*_B1222;
|
|
C[144] = _A0110*_B0200 - _A0112*_B0000 + _A0102*_B1000 - _A0100*_B1200;
|
|
C[145] = _A0110*_B0201 - _A0112*_B0001 + _A0102*_B1001 - _A0100*_B1201;
|
|
C[146] = _A0110*_B0202 - _A0112*_B0002 + _A0102*_B1002 - _A0100*_B1202;
|
|
C[147] = _A0110*_B0210 - _A0112*_B0010 + _A0102*_B1010 - _A0100*_B1210;
|
|
C[148] = _A0110*_B0211 - _A0112*_B0011 + _A0102*_B1011 - _A0100*_B1211;
|
|
C[149] = _A0110*_B0212 - _A0112*_B0012 + _A0102*_B1012 - _A0100*_B1212;
|
|
C[150] = _A0110*_B0220 - _A0112*_B0020 + _A0102*_B1020 - _A0100*_B1220;
|
|
C[151] = _A0110*_B0221 - _A0112*_B0021 + _A0102*_B1021 - _A0100*_B1221;
|
|
C[152] = _A0110*_B0222 - _A0112*_B0022 + _A0102*_B1022 - _A0100*_B1222;
|
|
C[153] = _A0111*_B0000 - _A0110*_B0100 - _A0101*_B1000 + _A0100*_B1100;
|
|
C[154] = _A0111*_B0001 - _A0110*_B0101 - _A0101*_B1001 + _A0100*_B1101;
|
|
C[155] = _A0111*_B0002 - _A0110*_B0102 - _A0101*_B1002 + _A0100*_B1102;
|
|
C[156] = _A0111*_B0010 - _A0110*_B0110 - _A0101*_B1010 + _A0100*_B1110;
|
|
C[157] = _A0111*_B0011 - _A0110*_B0111 - _A0101*_B1011 + _A0100*_B1111;
|
|
C[158] = _A0111*_B0012 - _A0110*_B0112 - _A0101*_B1012 + _A0100*_B1112;
|
|
C[159] = _A0111*_B0020 - _A0110*_B0120 - _A0101*_B1020 + _A0100*_B1120;
|
|
C[160] = _A0111*_B0021 - _A0110*_B0121 - _A0101*_B1021 + _A0100*_B1121;
|
|
C[161] = _A0111*_B0022 - _A0110*_B0122 - _A0101*_B1022 + _A0100*_B1122;
|
|
C[162] = _A0222*_B1100 - _A0221*_B1200 - _A0212*_B2100 + _A0211*_B2200;
|
|
C[163] = _A0222*_B1101 - _A0221*_B1201 - _A0212*_B2101 + _A0211*_B2201;
|
|
C[164] = _A0222*_B1102 - _A0221*_B1202 - _A0212*_B2102 + _A0211*_B2202;
|
|
C[165] = _A0222*_B1110 - _A0221*_B1210 - _A0212*_B2110 + _A0211*_B2210;
|
|
C[166] = _A0222*_B1111 - _A0221*_B1211 - _A0212*_B2111 + _A0211*_B2211;
|
|
C[167] = _A0222*_B1112 - _A0221*_B1212 - _A0212*_B2112 + _A0211*_B2212;
|
|
C[168] = _A0222*_B1120 - _A0221*_B1220 - _A0212*_B2120 + _A0211*_B2220;
|
|
C[169] = _A0222*_B1121 - _A0221*_B1221 - _A0212*_B2121 + _A0211*_B2221;
|
|
C[170] = _A0222*_B1122 - _A0221*_B1222 - _A0212*_B2122 + _A0211*_B2222;
|
|
C[171] = _A0220*_B1200 - _A0222*_B1000 + _A0212*_B2000 - _A0210*_B2200;
|
|
C[172] = _A0220*_B1201 - _A0222*_B1001 + _A0212*_B2001 - _A0210*_B2201;
|
|
C[173] = _A0220*_B1202 - _A0222*_B1002 + _A0212*_B2002 - _A0210*_B2202;
|
|
C[174] = _A0220*_B1210 - _A0222*_B1010 + _A0212*_B2010 - _A0210*_B2210;
|
|
C[175] = _A0220*_B1211 - _A0222*_B1011 + _A0212*_B2011 - _A0210*_B2211;
|
|
C[176] = _A0220*_B1212 - _A0222*_B1012 + _A0212*_B2012 - _A0210*_B2212;
|
|
C[177] = _A0220*_B1220 - _A0222*_B1020 + _A0212*_B2020 - _A0210*_B2220;
|
|
C[178] = _A0220*_B1221 - _A0222*_B1021 + _A0212*_B2021 - _A0210*_B2221;
|
|
C[179] = _A0220*_B1222 - _A0222*_B1022 + _A0212*_B2022 - _A0210*_B2222;
|
|
C[180] = _A0221*_B1000 - _A0220*_B1100 - _A0211*_B2000 + _A0210*_B2100;
|
|
C[181] = _A0221*_B1001 - _A0220*_B1101 - _A0211*_B2001 + _A0210*_B2101;
|
|
C[182] = _A0221*_B1002 - _A0220*_B1102 - _A0211*_B2002 + _A0210*_B2102;
|
|
C[183] = _A0221*_B1010 - _A0220*_B1110 - _A0211*_B2010 + _A0210*_B2110;
|
|
C[184] = _A0221*_B1011 - _A0220*_B1111 - _A0211*_B2011 + _A0210*_B2111;
|
|
C[185] = _A0221*_B1012 - _A0220*_B1112 - _A0211*_B2012 + _A0210*_B2112;
|
|
C[186] = _A0221*_B1020 - _A0220*_B1120 - _A0211*_B2020 + _A0210*_B2120;
|
|
C[187] = _A0221*_B1021 - _A0220*_B1121 - _A0211*_B2021 + _A0210*_B2121;
|
|
C[188] = _A0221*_B1022 - _A0220*_B1122 - _A0211*_B2022 + _A0210*_B2122;
|
|
C[189] = _A0221*_B0200 - _A0222*_B0100 + _A0202*_B2100 - _A0201*_B2200;
|
|
C[190] = _A0221*_B0201 - _A0222*_B0101 + _A0202*_B2101 - _A0201*_B2201;
|
|
C[191] = _A0221*_B0202 - _A0222*_B0102 + _A0202*_B2102 - _A0201*_B2202;
|
|
C[192] = _A0221*_B0210 - _A0222*_B0110 + _A0202*_B2110 - _A0201*_B2210;
|
|
C[193] = _A0221*_B0211 - _A0222*_B0111 + _A0202*_B2111 - _A0201*_B2211;
|
|
C[194] = _A0221*_B0212 - _A0222*_B0112 + _A0202*_B2112 - _A0201*_B2212;
|
|
C[195] = _A0221*_B0220 - _A0222*_B0120 + _A0202*_B2120 - _A0201*_B2220;
|
|
C[196] = _A0221*_B0221 - _A0222*_B0121 + _A0202*_B2121 - _A0201*_B2221;
|
|
C[197] = _A0221*_B0222 - _A0222*_B0122 + _A0202*_B2122 - _A0201*_B2222;
|
|
C[198] = _A0222*_B0000 - _A0220*_B0200 - _A0202*_B2000 + _A0200*_B2200;
|
|
C[199] = _A0222*_B0001 - _A0220*_B0201 - _A0202*_B2001 + _A0200*_B2201;
|
|
C[200] = _A0222*_B0002 - _A0220*_B0202 - _A0202*_B2002 + _A0200*_B2202;
|
|
C[201] = _A0222*_B0010 - _A0220*_B0210 - _A0202*_B2010 + _A0200*_B2210;
|
|
C[202] = _A0222*_B0011 - _A0220*_B0211 - _A0202*_B2011 + _A0200*_B2211;
|
|
C[203] = _A0222*_B0012 - _A0220*_B0212 - _A0202*_B2012 + _A0200*_B2212;
|
|
C[204] = _A0222*_B0020 - _A0220*_B0220 - _A0202*_B2020 + _A0200*_B2220;
|
|
C[205] = _A0222*_B0021 - _A0220*_B0221 - _A0202*_B2021 + _A0200*_B2221;
|
|
C[206] = _A0222*_B0022 - _A0220*_B0222 - _A0202*_B2022 + _A0200*_B2222;
|
|
C[207] = _A0220*_B0100 - _A0221*_B0000 + _A0201*_B2000 - _A0200*_B2100;
|
|
C[208] = _A0220*_B0101 - _A0221*_B0001 + _A0201*_B2001 - _A0200*_B2101;
|
|
C[209] = _A0220*_B0102 - _A0221*_B0002 + _A0201*_B2002 - _A0200*_B2102;
|
|
C[210] = _A0220*_B0110 - _A0221*_B0010 + _A0201*_B2010 - _A0200*_B2110;
|
|
C[211] = _A0220*_B0111 - _A0221*_B0011 + _A0201*_B2011 - _A0200*_B2111;
|
|
C[212] = _A0220*_B0112 - _A0221*_B0012 + _A0201*_B2012 - _A0200*_B2112;
|
|
C[213] = _A0220*_B0120 - _A0221*_B0020 + _A0201*_B2020 - _A0200*_B2120;
|
|
C[214] = _A0220*_B0121 - _A0221*_B0021 + _A0201*_B2021 - _A0200*_B2121;
|
|
C[215] = _A0220*_B0122 - _A0221*_B0022 + _A0201*_B2022 - _A0200*_B2122;
|
|
C[216] = _A0212*_B0100 - _A0211*_B0200 - _A0202*_B1100 + _A0201*_B1200;
|
|
C[217] = _A0212*_B0101 - _A0211*_B0201 - _A0202*_B1101 + _A0201*_B1201;
|
|
C[218] = _A0212*_B0102 - _A0211*_B0202 - _A0202*_B1102 + _A0201*_B1202;
|
|
C[219] = _A0212*_B0110 - _A0211*_B0210 - _A0202*_B1110 + _A0201*_B1210;
|
|
C[220] = _A0212*_B0111 - _A0211*_B0211 - _A0202*_B1111 + _A0201*_B1211;
|
|
C[221] = _A0212*_B0112 - _A0211*_B0212 - _A0202*_B1112 + _A0201*_B1212;
|
|
C[222] = _A0212*_B0120 - _A0211*_B0220 - _A0202*_B1120 + _A0201*_B1220;
|
|
C[223] = _A0212*_B0121 - _A0211*_B0221 - _A0202*_B1121 + _A0201*_B1221;
|
|
C[224] = _A0212*_B0122 - _A0211*_B0222 - _A0202*_B1122 + _A0201*_B1222;
|
|
C[225] = _A0210*_B0200 - _A0212*_B0000 + _A0202*_B1000 - _A0200*_B1200;
|
|
C[226] = _A0210*_B0201 - _A0212*_B0001 + _A0202*_B1001 - _A0200*_B1201;
|
|
C[227] = _A0210*_B0202 - _A0212*_B0002 + _A0202*_B1002 - _A0200*_B1202;
|
|
C[228] = _A0210*_B0210 - _A0212*_B0010 + _A0202*_B1010 - _A0200*_B1210;
|
|
C[229] = _A0210*_B0211 - _A0212*_B0011 + _A0202*_B1011 - _A0200*_B1211;
|
|
C[230] = _A0210*_B0212 - _A0212*_B0012 + _A0202*_B1012 - _A0200*_B1212;
|
|
C[231] = _A0210*_B0220 - _A0212*_B0020 + _A0202*_B1020 - _A0200*_B1220;
|
|
C[232] = _A0210*_B0221 - _A0212*_B0021 + _A0202*_B1021 - _A0200*_B1221;
|
|
C[233] = _A0210*_B0222 - _A0212*_B0022 + _A0202*_B1022 - _A0200*_B1222;
|
|
C[234] = _A0211*_B0000 - _A0210*_B0100 - _A0201*_B1000 + _A0200*_B1100;
|
|
C[235] = _A0211*_B0001 - _A0210*_B0101 - _A0201*_B1001 + _A0200*_B1101;
|
|
C[236] = _A0211*_B0002 - _A0210*_B0102 - _A0201*_B1002 + _A0200*_B1102;
|
|
C[237] = _A0211*_B0010 - _A0210*_B0110 - _A0201*_B1010 + _A0200*_B1110;
|
|
C[238] = _A0211*_B0011 - _A0210*_B0111 - _A0201*_B1011 + _A0200*_B1111;
|
|
C[239] = _A0211*_B0012 - _A0210*_B0112 - _A0201*_B1012 + _A0200*_B1112;
|
|
C[240] = _A0211*_B0020 - _A0210*_B0120 - _A0201*_B1020 + _A0200*_B1120;
|
|
C[241] = _A0211*_B0021 - _A0210*_B0121 - _A0201*_B1021 + _A0200*_B1121;
|
|
C[242] = _A0211*_B0022 - _A0210*_B0122 - _A0201*_B1022 + _A0200*_B1122;
|
|
C[243] = _A1022*_B1100 - _A1021*_B1200 - _A1012*_B2100 + _A1011*_B2200;
|
|
C[244] = _A1022*_B1101 - _A1021*_B1201 - _A1012*_B2101 + _A1011*_B2201;
|
|
C[245] = _A1022*_B1102 - _A1021*_B1202 - _A1012*_B2102 + _A1011*_B2202;
|
|
C[246] = _A1022*_B1110 - _A1021*_B1210 - _A1012*_B2110 + _A1011*_B2210;
|
|
C[247] = _A1022*_B1111 - _A1021*_B1211 - _A1012*_B2111 + _A1011*_B2211;
|
|
C[248] = _A1022*_B1112 - _A1021*_B1212 - _A1012*_B2112 + _A1011*_B2212;
|
|
C[249] = _A1022*_B1120 - _A1021*_B1220 - _A1012*_B2120 + _A1011*_B2220;
|
|
C[250] = _A1022*_B1121 - _A1021*_B1221 - _A1012*_B2121 + _A1011*_B2221;
|
|
C[251] = _A1022*_B1122 - _A1021*_B1222 - _A1012*_B2122 + _A1011*_B2222;
|
|
C[252] = _A1020*_B1200 - _A1022*_B1000 + _A1012*_B2000 - _A1010*_B2200;
|
|
C[253] = _A1020*_B1201 - _A1022*_B1001 + _A1012*_B2001 - _A1010*_B2201;
|
|
C[254] = _A1020*_B1202 - _A1022*_B1002 + _A1012*_B2002 - _A1010*_B2202;
|
|
C[255] = _A1020*_B1210 - _A1022*_B1010 + _A1012*_B2010 - _A1010*_B2210;
|
|
C[256] = _A1020*_B1211 - _A1022*_B1011 + _A1012*_B2011 - _A1010*_B2211;
|
|
C[257] = _A1020*_B1212 - _A1022*_B1012 + _A1012*_B2012 - _A1010*_B2212;
|
|
C[258] = _A1020*_B1220 - _A1022*_B1020 + _A1012*_B2020 - _A1010*_B2220;
|
|
C[259] = _A1020*_B1221 - _A1022*_B1021 + _A1012*_B2021 - _A1010*_B2221;
|
|
C[260] = _A1020*_B1222 - _A1022*_B1022 + _A1012*_B2022 - _A1010*_B2222;
|
|
C[261] = _A1021*_B1000 - _A1020*_B1100 - _A1011*_B2000 + _A1010*_B2100;
|
|
C[262] = _A1021*_B1001 - _A1020*_B1101 - _A1011*_B2001 + _A1010*_B2101;
|
|
C[263] = _A1021*_B1002 - _A1020*_B1102 - _A1011*_B2002 + _A1010*_B2102;
|
|
C[264] = _A1021*_B1010 - _A1020*_B1110 - _A1011*_B2010 + _A1010*_B2110;
|
|
C[265] = _A1021*_B1011 - _A1020*_B1111 - _A1011*_B2011 + _A1010*_B2111;
|
|
C[266] = _A1021*_B1012 - _A1020*_B1112 - _A1011*_B2012 + _A1010*_B2112;
|
|
C[267] = _A1021*_B1020 - _A1020*_B1120 - _A1011*_B2020 + _A1010*_B2120;
|
|
C[268] = _A1021*_B1021 - _A1020*_B1121 - _A1011*_B2021 + _A1010*_B2121;
|
|
C[269] = _A1021*_B1022 - _A1020*_B1122 - _A1011*_B2022 + _A1010*_B2122;
|
|
C[270] = _A1021*_B0200 - _A1022*_B0100 + _A1002*_B2100 - _A1001*_B2200;
|
|
C[271] = _A1021*_B0201 - _A1022*_B0101 + _A1002*_B2101 - _A1001*_B2201;
|
|
C[272] = _A1021*_B0202 - _A1022*_B0102 + _A1002*_B2102 - _A1001*_B2202;
|
|
C[273] = _A1021*_B0210 - _A1022*_B0110 + _A1002*_B2110 - _A1001*_B2210;
|
|
C[274] = _A1021*_B0211 - _A1022*_B0111 + _A1002*_B2111 - _A1001*_B2211;
|
|
C[275] = _A1021*_B0212 - _A1022*_B0112 + _A1002*_B2112 - _A1001*_B2212;
|
|
C[276] = _A1021*_B0220 - _A1022*_B0120 + _A1002*_B2120 - _A1001*_B2220;
|
|
C[277] = _A1021*_B0221 - _A1022*_B0121 + _A1002*_B2121 - _A1001*_B2221;
|
|
C[278] = _A1021*_B0222 - _A1022*_B0122 + _A1002*_B2122 - _A1001*_B2222;
|
|
C[279] = _A1022*_B0000 - _A1020*_B0200 - _A1002*_B2000 + _A1000*_B2200;
|
|
C[280] = _A1022*_B0001 - _A1020*_B0201 - _A1002*_B2001 + _A1000*_B2201;
|
|
C[281] = _A1022*_B0002 - _A1020*_B0202 - _A1002*_B2002 + _A1000*_B2202;
|
|
C[282] = _A1022*_B0010 - _A1020*_B0210 - _A1002*_B2010 + _A1000*_B2210;
|
|
C[283] = _A1022*_B0011 - _A1020*_B0211 - _A1002*_B2011 + _A1000*_B2211;
|
|
C[284] = _A1022*_B0012 - _A1020*_B0212 - _A1002*_B2012 + _A1000*_B2212;
|
|
C[285] = _A1022*_B0020 - _A1020*_B0220 - _A1002*_B2020 + _A1000*_B2220;
|
|
C[286] = _A1022*_B0021 - _A1020*_B0221 - _A1002*_B2021 + _A1000*_B2221;
|
|
C[287] = _A1022*_B0022 - _A1020*_B0222 - _A1002*_B2022 + _A1000*_B2222;
|
|
C[288] = _A1020*_B0100 - _A1021*_B0000 + _A1001*_B2000 - _A1000*_B2100;
|
|
C[289] = _A1020*_B0101 - _A1021*_B0001 + _A1001*_B2001 - _A1000*_B2101;
|
|
C[290] = _A1020*_B0102 - _A1021*_B0002 + _A1001*_B2002 - _A1000*_B2102;
|
|
C[291] = _A1020*_B0110 - _A1021*_B0010 + _A1001*_B2010 - _A1000*_B2110;
|
|
C[292] = _A1020*_B0111 - _A1021*_B0011 + _A1001*_B2011 - _A1000*_B2111;
|
|
C[293] = _A1020*_B0112 - _A1021*_B0012 + _A1001*_B2012 - _A1000*_B2112;
|
|
C[294] = _A1020*_B0120 - _A1021*_B0020 + _A1001*_B2020 - _A1000*_B2120;
|
|
C[295] = _A1020*_B0121 - _A1021*_B0021 + _A1001*_B2021 - _A1000*_B2121;
|
|
C[296] = _A1020*_B0122 - _A1021*_B0022 + _A1001*_B2022 - _A1000*_B2122;
|
|
C[297] = _A1012*_B0100 - _A1011*_B0200 - _A1002*_B1100 + _A1001*_B1200;
|
|
C[298] = _A1012*_B0101 - _A1011*_B0201 - _A1002*_B1101 + _A1001*_B1201;
|
|
C[299] = _A1012*_B0102 - _A1011*_B0202 - _A1002*_B1102 + _A1001*_B1202;
|
|
C[300] = _A1012*_B0110 - _A1011*_B0210 - _A1002*_B1110 + _A1001*_B1210;
|
|
C[301] = _A1012*_B0111 - _A1011*_B0211 - _A1002*_B1111 + _A1001*_B1211;
|
|
C[302] = _A1012*_B0112 - _A1011*_B0212 - _A1002*_B1112 + _A1001*_B1212;
|
|
C[303] = _A1012*_B0120 - _A1011*_B0220 - _A1002*_B1120 + _A1001*_B1220;
|
|
C[304] = _A1012*_B0121 - _A1011*_B0221 - _A1002*_B1121 + _A1001*_B1221;
|
|
C[305] = _A1012*_B0122 - _A1011*_B0222 - _A1002*_B1122 + _A1001*_B1222;
|
|
C[306] = _A1010*_B0200 - _A1012*_B0000 + _A1002*_B1000 - _A1000*_B1200;
|
|
C[307] = _A1010*_B0201 - _A1012*_B0001 + _A1002*_B1001 - _A1000*_B1201;
|
|
C[308] = _A1010*_B0202 - _A1012*_B0002 + _A1002*_B1002 - _A1000*_B1202;
|
|
C[309] = _A1010*_B0210 - _A1012*_B0010 + _A1002*_B1010 - _A1000*_B1210;
|
|
C[310] = _A1010*_B0211 - _A1012*_B0011 + _A1002*_B1011 - _A1000*_B1211;
|
|
C[311] = _A1010*_B0212 - _A1012*_B0012 + _A1002*_B1012 - _A1000*_B1212;
|
|
C[312] = _A1010*_B0220 - _A1012*_B0020 + _A1002*_B1020 - _A1000*_B1220;
|
|
C[313] = _A1010*_B0221 - _A1012*_B0021 + _A1002*_B1021 - _A1000*_B1221;
|
|
C[314] = _A1010*_B0222 - _A1012*_B0022 + _A1002*_B1022 - _A1000*_B1222;
|
|
C[315] = _A1011*_B0000 - _A1010*_B0100 - _A1001*_B1000 + _A1000*_B1100;
|
|
C[316] = _A1011*_B0001 - _A1010*_B0101 - _A1001*_B1001 + _A1000*_B1101;
|
|
C[317] = _A1011*_B0002 - _A1010*_B0102 - _A1001*_B1002 + _A1000*_B1102;
|
|
C[318] = _A1011*_B0010 - _A1010*_B0110 - _A1001*_B1010 + _A1000*_B1110;
|
|
C[319] = _A1011*_B0011 - _A1010*_B0111 - _A1001*_B1011 + _A1000*_B1111;
|
|
C[320] = _A1011*_B0012 - _A1010*_B0112 - _A1001*_B1012 + _A1000*_B1112;
|
|
C[321] = _A1011*_B0020 - _A1010*_B0120 - _A1001*_B1020 + _A1000*_B1120;
|
|
C[322] = _A1011*_B0021 - _A1010*_B0121 - _A1001*_B1021 + _A1000*_B1121;
|
|
C[323] = _A1011*_B0022 - _A1010*_B0122 - _A1001*_B1022 + _A1000*_B1122;
|
|
C[324] = _A1122*_B1100 - _A1121*_B1200 - _A1112*_B2100 + _A1111*_B2200;
|
|
C[325] = _A1122*_B1101 - _A1121*_B1201 - _A1112*_B2101 + _A1111*_B2201;
|
|
C[326] = _A1122*_B1102 - _A1121*_B1202 - _A1112*_B2102 + _A1111*_B2202;
|
|
C[327] = _A1122*_B1110 - _A1121*_B1210 - _A1112*_B2110 + _A1111*_B2210;
|
|
C[328] = _A1122*_B1111 - _A1121*_B1211 - _A1112*_B2111 + _A1111*_B2211;
|
|
C[329] = _A1122*_B1112 - _A1121*_B1212 - _A1112*_B2112 + _A1111*_B2212;
|
|
C[330] = _A1122*_B1120 - _A1121*_B1220 - _A1112*_B2120 + _A1111*_B2220;
|
|
C[331] = _A1122*_B1121 - _A1121*_B1221 - _A1112*_B2121 + _A1111*_B2221;
|
|
C[332] = _A1122*_B1122 - _A1121*_B1222 - _A1112*_B2122 + _A1111*_B2222;
|
|
C[333] = _A1120*_B1200 - _A1122*_B1000 + _A1112*_B2000 - _A1110*_B2200;
|
|
C[334] = _A1120*_B1201 - _A1122*_B1001 + _A1112*_B2001 - _A1110*_B2201;
|
|
C[335] = _A1120*_B1202 - _A1122*_B1002 + _A1112*_B2002 - _A1110*_B2202;
|
|
C[336] = _A1120*_B1210 - _A1122*_B1010 + _A1112*_B2010 - _A1110*_B2210;
|
|
C[337] = _A1120*_B1211 - _A1122*_B1011 + _A1112*_B2011 - _A1110*_B2211;
|
|
C[338] = _A1120*_B1212 - _A1122*_B1012 + _A1112*_B2012 - _A1110*_B2212;
|
|
C[339] = _A1120*_B1220 - _A1122*_B1020 + _A1112*_B2020 - _A1110*_B2220;
|
|
C[340] = _A1120*_B1221 - _A1122*_B1021 + _A1112*_B2021 - _A1110*_B2221;
|
|
C[341] = _A1120*_B1222 - _A1122*_B1022 + _A1112*_B2022 - _A1110*_B2222;
|
|
C[342] = _A1121*_B1000 - _A1120*_B1100 - _A1111*_B2000 + _A1110*_B2100;
|
|
C[343] = _A1121*_B1001 - _A1120*_B1101 - _A1111*_B2001 + _A1110*_B2101;
|
|
C[344] = _A1121*_B1002 - _A1120*_B1102 - _A1111*_B2002 + _A1110*_B2102;
|
|
C[345] = _A1121*_B1010 - _A1120*_B1110 - _A1111*_B2010 + _A1110*_B2110;
|
|
C[346] = _A1121*_B1011 - _A1120*_B1111 - _A1111*_B2011 + _A1110*_B2111;
|
|
C[347] = _A1121*_B1012 - _A1120*_B1112 - _A1111*_B2012 + _A1110*_B2112;
|
|
C[348] = _A1121*_B1020 - _A1120*_B1120 - _A1111*_B2020 + _A1110*_B2120;
|
|
C[349] = _A1121*_B1021 - _A1120*_B1121 - _A1111*_B2021 + _A1110*_B2121;
|
|
C[350] = _A1121*_B1022 - _A1120*_B1122 - _A1111*_B2022 + _A1110*_B2122;
|
|
C[351] = _A1121*_B0200 - _A1122*_B0100 + _A1102*_B2100 - _A1101*_B2200;
|
|
C[352] = _A1121*_B0201 - _A1122*_B0101 + _A1102*_B2101 - _A1101*_B2201;
|
|
C[353] = _A1121*_B0202 - _A1122*_B0102 + _A1102*_B2102 - _A1101*_B2202;
|
|
C[354] = _A1121*_B0210 - _A1122*_B0110 + _A1102*_B2110 - _A1101*_B2210;
|
|
C[355] = _A1121*_B0211 - _A1122*_B0111 + _A1102*_B2111 - _A1101*_B2211;
|
|
C[356] = _A1121*_B0212 - _A1122*_B0112 + _A1102*_B2112 - _A1101*_B2212;
|
|
C[357] = _A1121*_B0220 - _A1122*_B0120 + _A1102*_B2120 - _A1101*_B2220;
|
|
C[358] = _A1121*_B0221 - _A1122*_B0121 + _A1102*_B2121 - _A1101*_B2221;
|
|
C[359] = _A1121*_B0222 - _A1122*_B0122 + _A1102*_B2122 - _A1101*_B2222;
|
|
C[360] = _A1122*_B0000 - _A1120*_B0200 - _A1102*_B2000 + _A1100*_B2200;
|
|
C[361] = _A1122*_B0001 - _A1120*_B0201 - _A1102*_B2001 + _A1100*_B2201;
|
|
C[362] = _A1122*_B0002 - _A1120*_B0202 - _A1102*_B2002 + _A1100*_B2202;
|
|
C[363] = _A1122*_B0010 - _A1120*_B0210 - _A1102*_B2010 + _A1100*_B2210;
|
|
C[364] = _A1122*_B0011 - _A1120*_B0211 - _A1102*_B2011 + _A1100*_B2211;
|
|
C[365] = _A1122*_B0012 - _A1120*_B0212 - _A1102*_B2012 + _A1100*_B2212;
|
|
C[366] = _A1122*_B0020 - _A1120*_B0220 - _A1102*_B2020 + _A1100*_B2220;
|
|
C[367] = _A1122*_B0021 - _A1120*_B0221 - _A1102*_B2021 + _A1100*_B2221;
|
|
C[368] = _A1122*_B0022 - _A1120*_B0222 - _A1102*_B2022 + _A1100*_B2222;
|
|
C[369] = _A1120*_B0100 - _A1121*_B0000 + _A1101*_B2000 - _A1100*_B2100;
|
|
C[370] = _A1120*_B0101 - _A1121*_B0001 + _A1101*_B2001 - _A1100*_B2101;
|
|
C[371] = _A1120*_B0102 - _A1121*_B0002 + _A1101*_B2002 - _A1100*_B2102;
|
|
C[372] = _A1120*_B0110 - _A1121*_B0010 + _A1101*_B2010 - _A1100*_B2110;
|
|
C[373] = _A1120*_B0111 - _A1121*_B0011 + _A1101*_B2011 - _A1100*_B2111;
|
|
C[374] = _A1120*_B0112 - _A1121*_B0012 + _A1101*_B2012 - _A1100*_B2112;
|
|
C[375] = _A1120*_B0120 - _A1121*_B0020 + _A1101*_B2020 - _A1100*_B2120;
|
|
C[376] = _A1120*_B0121 - _A1121*_B0021 + _A1101*_B2021 - _A1100*_B2121;
|
|
C[377] = _A1120*_B0122 - _A1121*_B0022 + _A1101*_B2022 - _A1100*_B2122;
|
|
C[378] = _A1112*_B0100 - _A1111*_B0200 - _A1102*_B1100 + _A1101*_B1200;
|
|
C[379] = _A1112*_B0101 - _A1111*_B0201 - _A1102*_B1101 + _A1101*_B1201;
|
|
C[380] = _A1112*_B0102 - _A1111*_B0202 - _A1102*_B1102 + _A1101*_B1202;
|
|
C[381] = _A1112*_B0110 - _A1111*_B0210 - _A1102*_B1110 + _A1101*_B1210;
|
|
C[382] = _A1112*_B0111 - _A1111*_B0211 - _A1102*_B1111 + _A1101*_B1211;
|
|
C[383] = _A1112*_B0112 - _A1111*_B0212 - _A1102*_B1112 + _A1101*_B1212;
|
|
C[384] = _A1112*_B0120 - _A1111*_B0220 - _A1102*_B1120 + _A1101*_B1220;
|
|
C[385] = _A1112*_B0121 - _A1111*_B0221 - _A1102*_B1121 + _A1101*_B1221;
|
|
C[386] = _A1112*_B0122 - _A1111*_B0222 - _A1102*_B1122 + _A1101*_B1222;
|
|
C[387] = _A1110*_B0200 - _A1112*_B0000 + _A1102*_B1000 - _A1100*_B1200;
|
|
C[388] = _A1110*_B0201 - _A1112*_B0001 + _A1102*_B1001 - _A1100*_B1201;
|
|
C[389] = _A1110*_B0202 - _A1112*_B0002 + _A1102*_B1002 - _A1100*_B1202;
|
|
C[390] = _A1110*_B0210 - _A1112*_B0010 + _A1102*_B1010 - _A1100*_B1210;
|
|
C[391] = _A1110*_B0211 - _A1112*_B0011 + _A1102*_B1011 - _A1100*_B1211;
|
|
C[392] = _A1110*_B0212 - _A1112*_B0012 + _A1102*_B1012 - _A1100*_B1212;
|
|
C[393] = _A1110*_B0220 - _A1112*_B0020 + _A1102*_B1020 - _A1100*_B1220;
|
|
C[394] = _A1110*_B0221 - _A1112*_B0021 + _A1102*_B1021 - _A1100*_B1221;
|
|
C[395] = _A1110*_B0222 - _A1112*_B0022 + _A1102*_B1022 - _A1100*_B1222;
|
|
C[396] = _A1111*_B0000 - _A1110*_B0100 - _A1101*_B1000 + _A1100*_B1100;
|
|
C[397] = _A1111*_B0001 - _A1110*_B0101 - _A1101*_B1001 + _A1100*_B1101;
|
|
C[398] = _A1111*_B0002 - _A1110*_B0102 - _A1101*_B1002 + _A1100*_B1102;
|
|
C[399] = _A1111*_B0010 - _A1110*_B0110 - _A1101*_B1010 + _A1100*_B1110;
|
|
C[400] = _A1111*_B0011 - _A1110*_B0111 - _A1101*_B1011 + _A1100*_B1111;
|
|
C[401] = _A1111*_B0012 - _A1110*_B0112 - _A1101*_B1012 + _A1100*_B1112;
|
|
C[402] = _A1111*_B0020 - _A1110*_B0120 - _A1101*_B1020 + _A1100*_B1120;
|
|
C[403] = _A1111*_B0021 - _A1110*_B0121 - _A1101*_B1021 + _A1100*_B1121;
|
|
C[404] = _A1111*_B0022 - _A1110*_B0122 - _A1101*_B1022 + _A1100*_B1122;
|
|
C[405] = _A1222*_B1100 - _A1221*_B1200 - _A1212*_B2100 + _A1211*_B2200;
|
|
C[406] = _A1222*_B1101 - _A1221*_B1201 - _A1212*_B2101 + _A1211*_B2201;
|
|
C[407] = _A1222*_B1102 - _A1221*_B1202 - _A1212*_B2102 + _A1211*_B2202;
|
|
C[408] = _A1222*_B1110 - _A1221*_B1210 - _A1212*_B2110 + _A1211*_B2210;
|
|
C[409] = _A1222*_B1111 - _A1221*_B1211 - _A1212*_B2111 + _A1211*_B2211;
|
|
C[410] = _A1222*_B1112 - _A1221*_B1212 - _A1212*_B2112 + _A1211*_B2212;
|
|
C[411] = _A1222*_B1120 - _A1221*_B1220 - _A1212*_B2120 + _A1211*_B2220;
|
|
C[412] = _A1222*_B1121 - _A1221*_B1221 - _A1212*_B2121 + _A1211*_B2221;
|
|
C[413] = _A1222*_B1122 - _A1221*_B1222 - _A1212*_B2122 + _A1211*_B2222;
|
|
C[414] = _A1220*_B1200 - _A1222*_B1000 + _A1212*_B2000 - _A1210*_B2200;
|
|
C[415] = _A1220*_B1201 - _A1222*_B1001 + _A1212*_B2001 - _A1210*_B2201;
|
|
C[416] = _A1220*_B1202 - _A1222*_B1002 + _A1212*_B2002 - _A1210*_B2202;
|
|
C[417] = _A1220*_B1210 - _A1222*_B1010 + _A1212*_B2010 - _A1210*_B2210;
|
|
C[418] = _A1220*_B1211 - _A1222*_B1011 + _A1212*_B2011 - _A1210*_B2211;
|
|
C[419] = _A1220*_B1212 - _A1222*_B1012 + _A1212*_B2012 - _A1210*_B2212;
|
|
C[420] = _A1220*_B1220 - _A1222*_B1020 + _A1212*_B2020 - _A1210*_B2220;
|
|
C[421] = _A1220*_B1221 - _A1222*_B1021 + _A1212*_B2021 - _A1210*_B2221;
|
|
C[422] = _A1220*_B1222 - _A1222*_B1022 + _A1212*_B2022 - _A1210*_B2222;
|
|
C[423] = _A1221*_B1000 - _A1220*_B1100 - _A1211*_B2000 + _A1210*_B2100;
|
|
C[424] = _A1221*_B1001 - _A1220*_B1101 - _A1211*_B2001 + _A1210*_B2101;
|
|
C[425] = _A1221*_B1002 - _A1220*_B1102 - _A1211*_B2002 + _A1210*_B2102;
|
|
C[426] = _A1221*_B1010 - _A1220*_B1110 - _A1211*_B2010 + _A1210*_B2110;
|
|
C[427] = _A1221*_B1011 - _A1220*_B1111 - _A1211*_B2011 + _A1210*_B2111;
|
|
C[428] = _A1221*_B1012 - _A1220*_B1112 - _A1211*_B2012 + _A1210*_B2112;
|
|
C[429] = _A1221*_B1020 - _A1220*_B1120 - _A1211*_B2020 + _A1210*_B2120;
|
|
C[430] = _A1221*_B1021 - _A1220*_B1121 - _A1211*_B2021 + _A1210*_B2121;
|
|
C[431] = _A1221*_B1022 - _A1220*_B1122 - _A1211*_B2022 + _A1210*_B2122;
|
|
C[432] = _A1221*_B0200 - _A1222*_B0100 + _A1202*_B2100 - _A1201*_B2200;
|
|
C[433] = _A1221*_B0201 - _A1222*_B0101 + _A1202*_B2101 - _A1201*_B2201;
|
|
C[434] = _A1221*_B0202 - _A1222*_B0102 + _A1202*_B2102 - _A1201*_B2202;
|
|
C[435] = _A1221*_B0210 - _A1222*_B0110 + _A1202*_B2110 - _A1201*_B2210;
|
|
C[436] = _A1221*_B0211 - _A1222*_B0111 + _A1202*_B2111 - _A1201*_B2211;
|
|
C[437] = _A1221*_B0212 - _A1222*_B0112 + _A1202*_B2112 - _A1201*_B2212;
|
|
C[438] = _A1221*_B0220 - _A1222*_B0120 + _A1202*_B2120 - _A1201*_B2220;
|
|
C[439] = _A1221*_B0221 - _A1222*_B0121 + _A1202*_B2121 - _A1201*_B2221;
|
|
C[440] = _A1221*_B0222 - _A1222*_B0122 + _A1202*_B2122 - _A1201*_B2222;
|
|
C[441] = _A1222*_B0000 - _A1220*_B0200 - _A1202*_B2000 + _A1200*_B2200;
|
|
C[442] = _A1222*_B0001 - _A1220*_B0201 - _A1202*_B2001 + _A1200*_B2201;
|
|
C[443] = _A1222*_B0002 - _A1220*_B0202 - _A1202*_B2002 + _A1200*_B2202;
|
|
C[444] = _A1222*_B0010 - _A1220*_B0210 - _A1202*_B2010 + _A1200*_B2210;
|
|
C[445] = _A1222*_B0011 - _A1220*_B0211 - _A1202*_B2011 + _A1200*_B2211;
|
|
C[446] = _A1222*_B0012 - _A1220*_B0212 - _A1202*_B2012 + _A1200*_B2212;
|
|
C[447] = _A1222*_B0020 - _A1220*_B0220 - _A1202*_B2020 + _A1200*_B2220;
|
|
C[448] = _A1222*_B0021 - _A1220*_B0221 - _A1202*_B2021 + _A1200*_B2221;
|
|
C[449] = _A1222*_B0022 - _A1220*_B0222 - _A1202*_B2022 + _A1200*_B2222;
|
|
C[450] = _A1220*_B0100 - _A1221*_B0000 + _A1201*_B2000 - _A1200*_B2100;
|
|
C[451] = _A1220*_B0101 - _A1221*_B0001 + _A1201*_B2001 - _A1200*_B2101;
|
|
C[452] = _A1220*_B0102 - _A1221*_B0002 + _A1201*_B2002 - _A1200*_B2102;
|
|
C[453] = _A1220*_B0110 - _A1221*_B0010 + _A1201*_B2010 - _A1200*_B2110;
|
|
C[454] = _A1220*_B0111 - _A1221*_B0011 + _A1201*_B2011 - _A1200*_B2111;
|
|
C[455] = _A1220*_B0112 - _A1221*_B0012 + _A1201*_B2012 - _A1200*_B2112;
|
|
C[456] = _A1220*_B0120 - _A1221*_B0020 + _A1201*_B2020 - _A1200*_B2120;
|
|
C[457] = _A1220*_B0121 - _A1221*_B0021 + _A1201*_B2021 - _A1200*_B2121;
|
|
C[458] = _A1220*_B0122 - _A1221*_B0022 + _A1201*_B2022 - _A1200*_B2122;
|
|
C[459] = _A1212*_B0100 - _A1211*_B0200 - _A1202*_B1100 + _A1201*_B1200;
|
|
C[460] = _A1212*_B0101 - _A1211*_B0201 - _A1202*_B1101 + _A1201*_B1201;
|
|
C[461] = _A1212*_B0102 - _A1211*_B0202 - _A1202*_B1102 + _A1201*_B1202;
|
|
C[462] = _A1212*_B0110 - _A1211*_B0210 - _A1202*_B1110 + _A1201*_B1210;
|
|
C[463] = _A1212*_B0111 - _A1211*_B0211 - _A1202*_B1111 + _A1201*_B1211;
|
|
C[464] = _A1212*_B0112 - _A1211*_B0212 - _A1202*_B1112 + _A1201*_B1212;
|
|
C[465] = _A1212*_B0120 - _A1211*_B0220 - _A1202*_B1120 + _A1201*_B1220;
|
|
C[466] = _A1212*_B0121 - _A1211*_B0221 - _A1202*_B1121 + _A1201*_B1221;
|
|
C[467] = _A1212*_B0122 - _A1211*_B0222 - _A1202*_B1122 + _A1201*_B1222;
|
|
C[468] = _A1210*_B0200 - _A1212*_B0000 + _A1202*_B1000 - _A1200*_B1200;
|
|
C[469] = _A1210*_B0201 - _A1212*_B0001 + _A1202*_B1001 - _A1200*_B1201;
|
|
C[470] = _A1210*_B0202 - _A1212*_B0002 + _A1202*_B1002 - _A1200*_B1202;
|
|
C[471] = _A1210*_B0210 - _A1212*_B0010 + _A1202*_B1010 - _A1200*_B1210;
|
|
C[472] = _A1210*_B0211 - _A1212*_B0011 + _A1202*_B1011 - _A1200*_B1211;
|
|
C[473] = _A1210*_B0212 - _A1212*_B0012 + _A1202*_B1012 - _A1200*_B1212;
|
|
C[474] = _A1210*_B0220 - _A1212*_B0020 + _A1202*_B1020 - _A1200*_B1220;
|
|
C[475] = _A1210*_B0221 - _A1212*_B0021 + _A1202*_B1021 - _A1200*_B1221;
|
|
C[476] = _A1210*_B0222 - _A1212*_B0022 + _A1202*_B1022 - _A1200*_B1222;
|
|
C[477] = _A1211*_B0000 - _A1210*_B0100 - _A1201*_B1000 + _A1200*_B1100;
|
|
C[478] = _A1211*_B0001 - _A1210*_B0101 - _A1201*_B1001 + _A1200*_B1101;
|
|
C[479] = _A1211*_B0002 - _A1210*_B0102 - _A1201*_B1002 + _A1200*_B1102;
|
|
C[480] = _A1211*_B0010 - _A1210*_B0110 - _A1201*_B1010 + _A1200*_B1110;
|
|
C[481] = _A1211*_B0011 - _A1210*_B0111 - _A1201*_B1011 + _A1200*_B1111;
|
|
C[482] = _A1211*_B0012 - _A1210*_B0112 - _A1201*_B1012 + _A1200*_B1112;
|
|
C[483] = _A1211*_B0020 - _A1210*_B0120 - _A1201*_B1020 + _A1200*_B1120;
|
|
C[484] = _A1211*_B0021 - _A1210*_B0121 - _A1201*_B1021 + _A1200*_B1121;
|
|
C[485] = _A1211*_B0022 - _A1210*_B0122 - _A1201*_B1022 + _A1200*_B1122;
|
|
C[486] = _A2022*_B1100 - _A2021*_B1200 - _A2012*_B2100 + _A2011*_B2200;
|
|
C[487] = _A2022*_B1101 - _A2021*_B1201 - _A2012*_B2101 + _A2011*_B2201;
|
|
C[488] = _A2022*_B1102 - _A2021*_B1202 - _A2012*_B2102 + _A2011*_B2202;
|
|
C[489] = _A2022*_B1110 - _A2021*_B1210 - _A2012*_B2110 + _A2011*_B2210;
|
|
C[490] = _A2022*_B1111 - _A2021*_B1211 - _A2012*_B2111 + _A2011*_B2211;
|
|
C[491] = _A2022*_B1112 - _A2021*_B1212 - _A2012*_B2112 + _A2011*_B2212;
|
|
C[492] = _A2022*_B1120 - _A2021*_B1220 - _A2012*_B2120 + _A2011*_B2220;
|
|
C[493] = _A2022*_B1121 - _A2021*_B1221 - _A2012*_B2121 + _A2011*_B2221;
|
|
C[494] = _A2022*_B1122 - _A2021*_B1222 - _A2012*_B2122 + _A2011*_B2222;
|
|
C[495] = _A2020*_B1200 - _A2022*_B1000 + _A2012*_B2000 - _A2010*_B2200;
|
|
C[496] = _A2020*_B1201 - _A2022*_B1001 + _A2012*_B2001 - _A2010*_B2201;
|
|
C[497] = _A2020*_B1202 - _A2022*_B1002 + _A2012*_B2002 - _A2010*_B2202;
|
|
C[498] = _A2020*_B1210 - _A2022*_B1010 + _A2012*_B2010 - _A2010*_B2210;
|
|
C[499] = _A2020*_B1211 - _A2022*_B1011 + _A2012*_B2011 - _A2010*_B2211;
|
|
C[500] = _A2020*_B1212 - _A2022*_B1012 + _A2012*_B2012 - _A2010*_B2212;
|
|
C[501] = _A2020*_B1220 - _A2022*_B1020 + _A2012*_B2020 - _A2010*_B2220;
|
|
C[502] = _A2020*_B1221 - _A2022*_B1021 + _A2012*_B2021 - _A2010*_B2221;
|
|
C[503] = _A2020*_B1222 - _A2022*_B1022 + _A2012*_B2022 - _A2010*_B2222;
|
|
C[504] = _A2021*_B1000 - _A2020*_B1100 - _A2011*_B2000 + _A2010*_B2100;
|
|
C[505] = _A2021*_B1001 - _A2020*_B1101 - _A2011*_B2001 + _A2010*_B2101;
|
|
C[506] = _A2021*_B1002 - _A2020*_B1102 - _A2011*_B2002 + _A2010*_B2102;
|
|
C[507] = _A2021*_B1010 - _A2020*_B1110 - _A2011*_B2010 + _A2010*_B2110;
|
|
C[508] = _A2021*_B1011 - _A2020*_B1111 - _A2011*_B2011 + _A2010*_B2111;
|
|
C[509] = _A2021*_B1012 - _A2020*_B1112 - _A2011*_B2012 + _A2010*_B2112;
|
|
C[510] = _A2021*_B1020 - _A2020*_B1120 - _A2011*_B2020 + _A2010*_B2120;
|
|
C[511] = _A2021*_B1021 - _A2020*_B1121 - _A2011*_B2021 + _A2010*_B2121;
|
|
C[512] = _A2021*_B1022 - _A2020*_B1122 - _A2011*_B2022 + _A2010*_B2122;
|
|
C[513] = _A2021*_B0200 - _A2022*_B0100 + _A2002*_B2100 - _A2001*_B2200;
|
|
C[514] = _A2021*_B0201 - _A2022*_B0101 + _A2002*_B2101 - _A2001*_B2201;
|
|
C[515] = _A2021*_B0202 - _A2022*_B0102 + _A2002*_B2102 - _A2001*_B2202;
|
|
C[516] = _A2021*_B0210 - _A2022*_B0110 + _A2002*_B2110 - _A2001*_B2210;
|
|
C[517] = _A2021*_B0211 - _A2022*_B0111 + _A2002*_B2111 - _A2001*_B2211;
|
|
C[518] = _A2021*_B0212 - _A2022*_B0112 + _A2002*_B2112 - _A2001*_B2212;
|
|
C[519] = _A2021*_B0220 - _A2022*_B0120 + _A2002*_B2120 - _A2001*_B2220;
|
|
C[520] = _A2021*_B0221 - _A2022*_B0121 + _A2002*_B2121 - _A2001*_B2221;
|
|
C[521] = _A2021*_B0222 - _A2022*_B0122 + _A2002*_B2122 - _A2001*_B2222;
|
|
C[522] = _A2022*_B0000 - _A2020*_B0200 - _A2002*_B2000 + _A2000*_B2200;
|
|
C[523] = _A2022*_B0001 - _A2020*_B0201 - _A2002*_B2001 + _A2000*_B2201;
|
|
C[524] = _A2022*_B0002 - _A2020*_B0202 - _A2002*_B2002 + _A2000*_B2202;
|
|
C[525] = _A2022*_B0010 - _A2020*_B0210 - _A2002*_B2010 + _A2000*_B2210;
|
|
C[526] = _A2022*_B0011 - _A2020*_B0211 - _A2002*_B2011 + _A2000*_B2211;
|
|
C[527] = _A2022*_B0012 - _A2020*_B0212 - _A2002*_B2012 + _A2000*_B2212;
|
|
C[528] = _A2022*_B0020 - _A2020*_B0220 - _A2002*_B2020 + _A2000*_B2220;
|
|
C[529] = _A2022*_B0021 - _A2020*_B0221 - _A2002*_B2021 + _A2000*_B2221;
|
|
C[530] = _A2022*_B0022 - _A2020*_B0222 - _A2002*_B2022 + _A2000*_B2222;
|
|
C[531] = _A2020*_B0100 - _A2021*_B0000 + _A2001*_B2000 - _A2000*_B2100;
|
|
C[532] = _A2020*_B0101 - _A2021*_B0001 + _A2001*_B2001 - _A2000*_B2101;
|
|
C[533] = _A2020*_B0102 - _A2021*_B0002 + _A2001*_B2002 - _A2000*_B2102;
|
|
C[534] = _A2020*_B0110 - _A2021*_B0010 + _A2001*_B2010 - _A2000*_B2110;
|
|
C[535] = _A2020*_B0111 - _A2021*_B0011 + _A2001*_B2011 - _A2000*_B2111;
|
|
C[536] = _A2020*_B0112 - _A2021*_B0012 + _A2001*_B2012 - _A2000*_B2112;
|
|
C[537] = _A2020*_B0120 - _A2021*_B0020 + _A2001*_B2020 - _A2000*_B2120;
|
|
C[538] = _A2020*_B0121 - _A2021*_B0021 + _A2001*_B2021 - _A2000*_B2121;
|
|
C[539] = _A2020*_B0122 - _A2021*_B0022 + _A2001*_B2022 - _A2000*_B2122;
|
|
C[540] = _A2012*_B0100 - _A2011*_B0200 - _A2002*_B1100 + _A2001*_B1200;
|
|
C[541] = _A2012*_B0101 - _A2011*_B0201 - _A2002*_B1101 + _A2001*_B1201;
|
|
C[542] = _A2012*_B0102 - _A2011*_B0202 - _A2002*_B1102 + _A2001*_B1202;
|
|
C[543] = _A2012*_B0110 - _A2011*_B0210 - _A2002*_B1110 + _A2001*_B1210;
|
|
C[544] = _A2012*_B0111 - _A2011*_B0211 - _A2002*_B1111 + _A2001*_B1211;
|
|
C[545] = _A2012*_B0112 - _A2011*_B0212 - _A2002*_B1112 + _A2001*_B1212;
|
|
C[546] = _A2012*_B0120 - _A2011*_B0220 - _A2002*_B1120 + _A2001*_B1220;
|
|
C[547] = _A2012*_B0121 - _A2011*_B0221 - _A2002*_B1121 + _A2001*_B1221;
|
|
C[548] = _A2012*_B0122 - _A2011*_B0222 - _A2002*_B1122 + _A2001*_B1222;
|
|
C[549] = _A2010*_B0200 - _A2012*_B0000 + _A2002*_B1000 - _A2000*_B1200;
|
|
C[550] = _A2010*_B0201 - _A2012*_B0001 + _A2002*_B1001 - _A2000*_B1201;
|
|
C[551] = _A2010*_B0202 - _A2012*_B0002 + _A2002*_B1002 - _A2000*_B1202;
|
|
C[552] = _A2010*_B0210 - _A2012*_B0010 + _A2002*_B1010 - _A2000*_B1210;
|
|
C[553] = _A2010*_B0211 - _A2012*_B0011 + _A2002*_B1011 - _A2000*_B1211;
|
|
C[554] = _A2010*_B0212 - _A2012*_B0012 + _A2002*_B1012 - _A2000*_B1212;
|
|
C[555] = _A2010*_B0220 - _A2012*_B0020 + _A2002*_B1020 - _A2000*_B1220;
|
|
C[556] = _A2010*_B0221 - _A2012*_B0021 + _A2002*_B1021 - _A2000*_B1221;
|
|
C[557] = _A2010*_B0222 - _A2012*_B0022 + _A2002*_B1022 - _A2000*_B1222;
|
|
C[558] = _A2011*_B0000 - _A2010*_B0100 - _A2001*_B1000 + _A2000*_B1100;
|
|
C[559] = _A2011*_B0001 - _A2010*_B0101 - _A2001*_B1001 + _A2000*_B1101;
|
|
C[560] = _A2011*_B0002 - _A2010*_B0102 - _A2001*_B1002 + _A2000*_B1102;
|
|
C[561] = _A2011*_B0010 - _A2010*_B0110 - _A2001*_B1010 + _A2000*_B1110;
|
|
C[562] = _A2011*_B0011 - _A2010*_B0111 - _A2001*_B1011 + _A2000*_B1111;
|
|
C[563] = _A2011*_B0012 - _A2010*_B0112 - _A2001*_B1012 + _A2000*_B1112;
|
|
C[564] = _A2011*_B0020 - _A2010*_B0120 - _A2001*_B1020 + _A2000*_B1120;
|
|
C[565] = _A2011*_B0021 - _A2010*_B0121 - _A2001*_B1021 + _A2000*_B1121;
|
|
C[566] = _A2011*_B0022 - _A2010*_B0122 - _A2001*_B1022 + _A2000*_B1122;
|
|
C[567] = _A2122*_B1100 - _A2121*_B1200 - _A2112*_B2100 + _A2111*_B2200;
|
|
C[568] = _A2122*_B1101 - _A2121*_B1201 - _A2112*_B2101 + _A2111*_B2201;
|
|
C[569] = _A2122*_B1102 - _A2121*_B1202 - _A2112*_B2102 + _A2111*_B2202;
|
|
C[570] = _A2122*_B1110 - _A2121*_B1210 - _A2112*_B2110 + _A2111*_B2210;
|
|
C[571] = _A2122*_B1111 - _A2121*_B1211 - _A2112*_B2111 + _A2111*_B2211;
|
|
C[572] = _A2122*_B1112 - _A2121*_B1212 - _A2112*_B2112 + _A2111*_B2212;
|
|
C[573] = _A2122*_B1120 - _A2121*_B1220 - _A2112*_B2120 + _A2111*_B2220;
|
|
C[574] = _A2122*_B1121 - _A2121*_B1221 - _A2112*_B2121 + _A2111*_B2221;
|
|
C[575] = _A2122*_B1122 - _A2121*_B1222 - _A2112*_B2122 + _A2111*_B2222;
|
|
C[576] = _A2120*_B1200 - _A2122*_B1000 + _A2112*_B2000 - _A2110*_B2200;
|
|
C[577] = _A2120*_B1201 - _A2122*_B1001 + _A2112*_B2001 - _A2110*_B2201;
|
|
C[578] = _A2120*_B1202 - _A2122*_B1002 + _A2112*_B2002 - _A2110*_B2202;
|
|
C[579] = _A2120*_B1210 - _A2122*_B1010 + _A2112*_B2010 - _A2110*_B2210;
|
|
C[580] = _A2120*_B1211 - _A2122*_B1011 + _A2112*_B2011 - _A2110*_B2211;
|
|
C[581] = _A2120*_B1212 - _A2122*_B1012 + _A2112*_B2012 - _A2110*_B2212;
|
|
C[582] = _A2120*_B1220 - _A2122*_B1020 + _A2112*_B2020 - _A2110*_B2220;
|
|
C[583] = _A2120*_B1221 - _A2122*_B1021 + _A2112*_B2021 - _A2110*_B2221;
|
|
C[584] = _A2120*_B1222 - _A2122*_B1022 + _A2112*_B2022 - _A2110*_B2222;
|
|
C[585] = _A2121*_B1000 - _A2120*_B1100 - _A2111*_B2000 + _A2110*_B2100;
|
|
C[586] = _A2121*_B1001 - _A2120*_B1101 - _A2111*_B2001 + _A2110*_B2101;
|
|
C[587] = _A2121*_B1002 - _A2120*_B1102 - _A2111*_B2002 + _A2110*_B2102;
|
|
C[588] = _A2121*_B1010 - _A2120*_B1110 - _A2111*_B2010 + _A2110*_B2110;
|
|
C[589] = _A2121*_B1011 - _A2120*_B1111 - _A2111*_B2011 + _A2110*_B2111;
|
|
C[590] = _A2121*_B1012 - _A2120*_B1112 - _A2111*_B2012 + _A2110*_B2112;
|
|
C[591] = _A2121*_B1020 - _A2120*_B1120 - _A2111*_B2020 + _A2110*_B2120;
|
|
C[592] = _A2121*_B1021 - _A2120*_B1121 - _A2111*_B2021 + _A2110*_B2121;
|
|
C[593] = _A2121*_B1022 - _A2120*_B1122 - _A2111*_B2022 + _A2110*_B2122;
|
|
C[594] = _A2121*_B0200 - _A2122*_B0100 + _A2102*_B2100 - _A2101*_B2200;
|
|
C[595] = _A2121*_B0201 - _A2122*_B0101 + _A2102*_B2101 - _A2101*_B2201;
|
|
C[596] = _A2121*_B0202 - _A2122*_B0102 + _A2102*_B2102 - _A2101*_B2202;
|
|
C[597] = _A2121*_B0210 - _A2122*_B0110 + _A2102*_B2110 - _A2101*_B2210;
|
|
C[598] = _A2121*_B0211 - _A2122*_B0111 + _A2102*_B2111 - _A2101*_B2211;
|
|
C[599] = _A2121*_B0212 - _A2122*_B0112 + _A2102*_B2112 - _A2101*_B2212;
|
|
C[600] = _A2121*_B0220 - _A2122*_B0120 + _A2102*_B2120 - _A2101*_B2220;
|
|
C[601] = _A2121*_B0221 - _A2122*_B0121 + _A2102*_B2121 - _A2101*_B2221;
|
|
C[602] = _A2121*_B0222 - _A2122*_B0122 + _A2102*_B2122 - _A2101*_B2222;
|
|
C[603] = _A2122*_B0000 - _A2120*_B0200 - _A2102*_B2000 + _A2100*_B2200;
|
|
C[604] = _A2122*_B0001 - _A2120*_B0201 - _A2102*_B2001 + _A2100*_B2201;
|
|
C[605] = _A2122*_B0002 - _A2120*_B0202 - _A2102*_B2002 + _A2100*_B2202;
|
|
C[606] = _A2122*_B0010 - _A2120*_B0210 - _A2102*_B2010 + _A2100*_B2210;
|
|
C[607] = _A2122*_B0011 - _A2120*_B0211 - _A2102*_B2011 + _A2100*_B2211;
|
|
C[608] = _A2122*_B0012 - _A2120*_B0212 - _A2102*_B2012 + _A2100*_B2212;
|
|
C[609] = _A2122*_B0020 - _A2120*_B0220 - _A2102*_B2020 + _A2100*_B2220;
|
|
C[610] = _A2122*_B0021 - _A2120*_B0221 - _A2102*_B2021 + _A2100*_B2221;
|
|
C[611] = _A2122*_B0022 - _A2120*_B0222 - _A2102*_B2022 + _A2100*_B2222;
|
|
C[612] = _A2120*_B0100 - _A2121*_B0000 + _A2101*_B2000 - _A2100*_B2100;
|
|
C[613] = _A2120*_B0101 - _A2121*_B0001 + _A2101*_B2001 - _A2100*_B2101;
|
|
C[614] = _A2120*_B0102 - _A2121*_B0002 + _A2101*_B2002 - _A2100*_B2102;
|
|
C[615] = _A2120*_B0110 - _A2121*_B0010 + _A2101*_B2010 - _A2100*_B2110;
|
|
C[616] = _A2120*_B0111 - _A2121*_B0011 + _A2101*_B2011 - _A2100*_B2111;
|
|
C[617] = _A2120*_B0112 - _A2121*_B0012 + _A2101*_B2012 - _A2100*_B2112;
|
|
C[618] = _A2120*_B0120 - _A2121*_B0020 + _A2101*_B2020 - _A2100*_B2120;
|
|
C[619] = _A2120*_B0121 - _A2121*_B0021 + _A2101*_B2021 - _A2100*_B2121;
|
|
C[620] = _A2120*_B0122 - _A2121*_B0022 + _A2101*_B2022 - _A2100*_B2122;
|
|
C[621] = _A2112*_B0100 - _A2111*_B0200 - _A2102*_B1100 + _A2101*_B1200;
|
|
C[622] = _A2112*_B0101 - _A2111*_B0201 - _A2102*_B1101 + _A2101*_B1201;
|
|
C[623] = _A2112*_B0102 - _A2111*_B0202 - _A2102*_B1102 + _A2101*_B1202;
|
|
C[624] = _A2112*_B0110 - _A2111*_B0210 - _A2102*_B1110 + _A2101*_B1210;
|
|
C[625] = _A2112*_B0111 - _A2111*_B0211 - _A2102*_B1111 + _A2101*_B1211;
|
|
C[626] = _A2112*_B0112 - _A2111*_B0212 - _A2102*_B1112 + _A2101*_B1212;
|
|
C[627] = _A2112*_B0120 - _A2111*_B0220 - _A2102*_B1120 + _A2101*_B1220;
|
|
C[628] = _A2112*_B0121 - _A2111*_B0221 - _A2102*_B1121 + _A2101*_B1221;
|
|
C[629] = _A2112*_B0122 - _A2111*_B0222 - _A2102*_B1122 + _A2101*_B1222;
|
|
C[630] = _A2110*_B0200 - _A2112*_B0000 + _A2102*_B1000 - _A2100*_B1200;
|
|
C[631] = _A2110*_B0201 - _A2112*_B0001 + _A2102*_B1001 - _A2100*_B1201;
|
|
C[632] = _A2110*_B0202 - _A2112*_B0002 + _A2102*_B1002 - _A2100*_B1202;
|
|
C[633] = _A2110*_B0210 - _A2112*_B0010 + _A2102*_B1010 - _A2100*_B1210;
|
|
C[634] = _A2110*_B0211 - _A2112*_B0011 + _A2102*_B1011 - _A2100*_B1211;
|
|
C[635] = _A2110*_B0212 - _A2112*_B0012 + _A2102*_B1012 - _A2100*_B1212;
|
|
C[636] = _A2110*_B0220 - _A2112*_B0020 + _A2102*_B1020 - _A2100*_B1220;
|
|
C[637] = _A2110*_B0221 - _A2112*_B0021 + _A2102*_B1021 - _A2100*_B1221;
|
|
C[638] = _A2110*_B0222 - _A2112*_B0022 + _A2102*_B1022 - _A2100*_B1222;
|
|
C[639] = _A2111*_B0000 - _A2110*_B0100 - _A2101*_B1000 + _A2100*_B1100;
|
|
C[640] = _A2111*_B0001 - _A2110*_B0101 - _A2101*_B1001 + _A2100*_B1101;
|
|
C[641] = _A2111*_B0002 - _A2110*_B0102 - _A2101*_B1002 + _A2100*_B1102;
|
|
C[642] = _A2111*_B0010 - _A2110*_B0110 - _A2101*_B1010 + _A2100*_B1110;
|
|
C[643] = _A2111*_B0011 - _A2110*_B0111 - _A2101*_B1011 + _A2100*_B1111;
|
|
C[644] = _A2111*_B0012 - _A2110*_B0112 - _A2101*_B1012 + _A2100*_B1112;
|
|
C[645] = _A2111*_B0020 - _A2110*_B0120 - _A2101*_B1020 + _A2100*_B1120;
|
|
C[646] = _A2111*_B0021 - _A2110*_B0121 - _A2101*_B1021 + _A2100*_B1121;
|
|
C[647] = _A2111*_B0022 - _A2110*_B0122 - _A2101*_B1022 + _A2100*_B1122;
|
|
C[648] = _A2222*_B1100 - _A2221*_B1200 - _A2212*_B2100 + _A2211*_B2200;
|
|
C[649] = _A2222*_B1101 - _A2221*_B1201 - _A2212*_B2101 + _A2211*_B2201;
|
|
C[650] = _A2222*_B1102 - _A2221*_B1202 - _A2212*_B2102 + _A2211*_B2202;
|
|
C[651] = _A2222*_B1110 - _A2221*_B1210 - _A2212*_B2110 + _A2211*_B2210;
|
|
C[652] = _A2222*_B1111 - _A2221*_B1211 - _A2212*_B2111 + _A2211*_B2211;
|
|
C[653] = _A2222*_B1112 - _A2221*_B1212 - _A2212*_B2112 + _A2211*_B2212;
|
|
C[654] = _A2222*_B1120 - _A2221*_B1220 - _A2212*_B2120 + _A2211*_B2220;
|
|
C[655] = _A2222*_B1121 - _A2221*_B1221 - _A2212*_B2121 + _A2211*_B2221;
|
|
C[656] = _A2222*_B1122 - _A2221*_B1222 - _A2212*_B2122 + _A2211*_B2222;
|
|
C[657] = _A2220*_B1200 - _A2222*_B1000 + _A2212*_B2000 - _A2210*_B2200;
|
|
C[658] = _A2220*_B1201 - _A2222*_B1001 + _A2212*_B2001 - _A2210*_B2201;
|
|
C[659] = _A2220*_B1202 - _A2222*_B1002 + _A2212*_B2002 - _A2210*_B2202;
|
|
C[660] = _A2220*_B1210 - _A2222*_B1010 + _A2212*_B2010 - _A2210*_B2210;
|
|
C[661] = _A2220*_B1211 - _A2222*_B1011 + _A2212*_B2011 - _A2210*_B2211;
|
|
C[662] = _A2220*_B1212 - _A2222*_B1012 + _A2212*_B2012 - _A2210*_B2212;
|
|
C[663] = _A2220*_B1220 - _A2222*_B1020 + _A2212*_B2020 - _A2210*_B2220;
|
|
C[664] = _A2220*_B1221 - _A2222*_B1021 + _A2212*_B2021 - _A2210*_B2221;
|
|
C[665] = _A2220*_B1222 - _A2222*_B1022 + _A2212*_B2022 - _A2210*_B2222;
|
|
C[666] = _A2221*_B1000 - _A2220*_B1100 - _A2211*_B2000 + _A2210*_B2100;
|
|
C[667] = _A2221*_B1001 - _A2220*_B1101 - _A2211*_B2001 + _A2210*_B2101;
|
|
C[668] = _A2221*_B1002 - _A2220*_B1102 - _A2211*_B2002 + _A2210*_B2102;
|
|
C[669] = _A2221*_B1010 - _A2220*_B1110 - _A2211*_B2010 + _A2210*_B2110;
|
|
C[670] = _A2221*_B1011 - _A2220*_B1111 - _A2211*_B2011 + _A2210*_B2111;
|
|
C[671] = _A2221*_B1012 - _A2220*_B1112 - _A2211*_B2012 + _A2210*_B2112;
|
|
C[672] = _A2221*_B1020 - _A2220*_B1120 - _A2211*_B2020 + _A2210*_B2120;
|
|
C[673] = _A2221*_B1021 - _A2220*_B1121 - _A2211*_B2021 + _A2210*_B2121;
|
|
C[674] = _A2221*_B1022 - _A2220*_B1122 - _A2211*_B2022 + _A2210*_B2122;
|
|
C[675] = _A2221*_B0200 - _A2222*_B0100 + _A2202*_B2100 - _A2201*_B2200;
|
|
C[676] = _A2221*_B0201 - _A2222*_B0101 + _A2202*_B2101 - _A2201*_B2201;
|
|
C[677] = _A2221*_B0202 - _A2222*_B0102 + _A2202*_B2102 - _A2201*_B2202;
|
|
C[678] = _A2221*_B0210 - _A2222*_B0110 + _A2202*_B2110 - _A2201*_B2210;
|
|
C[679] = _A2221*_B0211 - _A2222*_B0111 + _A2202*_B2111 - _A2201*_B2211;
|
|
C[680] = _A2221*_B0212 - _A2222*_B0112 + _A2202*_B2112 - _A2201*_B2212;
|
|
C[681] = _A2221*_B0220 - _A2222*_B0120 + _A2202*_B2120 - _A2201*_B2220;
|
|
C[682] = _A2221*_B0221 - _A2222*_B0121 + _A2202*_B2121 - _A2201*_B2221;
|
|
C[683] = _A2221*_B0222 - _A2222*_B0122 + _A2202*_B2122 - _A2201*_B2222;
|
|
C[684] = _A2222*_B0000 - _A2220*_B0200 - _A2202*_B2000 + _A2200*_B2200;
|
|
C[685] = _A2222*_B0001 - _A2220*_B0201 - _A2202*_B2001 + _A2200*_B2201;
|
|
C[686] = _A2222*_B0002 - _A2220*_B0202 - _A2202*_B2002 + _A2200*_B2202;
|
|
C[687] = _A2222*_B0010 - _A2220*_B0210 - _A2202*_B2010 + _A2200*_B2210;
|
|
C[688] = _A2222*_B0011 - _A2220*_B0211 - _A2202*_B2011 + _A2200*_B2211;
|
|
C[689] = _A2222*_B0012 - _A2220*_B0212 - _A2202*_B2012 + _A2200*_B2212;
|
|
C[690] = _A2222*_B0020 - _A2220*_B0220 - _A2202*_B2020 + _A2200*_B2220;
|
|
C[691] = _A2222*_B0021 - _A2220*_B0221 - _A2202*_B2021 + _A2200*_B2221;
|
|
C[692] = _A2222*_B0022 - _A2220*_B0222 - _A2202*_B2022 + _A2200*_B2222;
|
|
C[693] = _A2220*_B0100 - _A2221*_B0000 + _A2201*_B2000 - _A2200*_B2100;
|
|
C[694] = _A2220*_B0101 - _A2221*_B0001 + _A2201*_B2001 - _A2200*_B2101;
|
|
C[695] = _A2220*_B0102 - _A2221*_B0002 + _A2201*_B2002 - _A2200*_B2102;
|
|
C[696] = _A2220*_B0110 - _A2221*_B0010 + _A2201*_B2010 - _A2200*_B2110;
|
|
C[697] = _A2220*_B0111 - _A2221*_B0011 + _A2201*_B2011 - _A2200*_B2111;
|
|
C[698] = _A2220*_B0112 - _A2221*_B0012 + _A2201*_B2012 - _A2200*_B2112;
|
|
C[699] = _A2220*_B0120 - _A2221*_B0020 + _A2201*_B2020 - _A2200*_B2120;
|
|
C[700] = _A2220*_B0121 - _A2221*_B0021 + _A2201*_B2021 - _A2200*_B2121;
|
|
C[701] = _A2220*_B0122 - _A2221*_B0022 + _A2201*_B2022 - _A2200*_B2122;
|
|
C[702] = _A2212*_B0100 - _A2211*_B0200 - _A2202*_B1100 + _A2201*_B1200;
|
|
C[703] = _A2212*_B0101 - _A2211*_B0201 - _A2202*_B1101 + _A2201*_B1201;
|
|
C[704] = _A2212*_B0102 - _A2211*_B0202 - _A2202*_B1102 + _A2201*_B1202;
|
|
C[705] = _A2212*_B0110 - _A2211*_B0210 - _A2202*_B1110 + _A2201*_B1210;
|
|
C[706] = _A2212*_B0111 - _A2211*_B0211 - _A2202*_B1111 + _A2201*_B1211;
|
|
C[707] = _A2212*_B0112 - _A2211*_B0212 - _A2202*_B1112 + _A2201*_B1212;
|
|
C[708] = _A2212*_B0120 - _A2211*_B0220 - _A2202*_B1120 + _A2201*_B1220;
|
|
C[709] = _A2212*_B0121 - _A2211*_B0221 - _A2202*_B1121 + _A2201*_B1221;
|
|
C[710] = _A2212*_B0122 - _A2211*_B0222 - _A2202*_B1122 + _A2201*_B1222;
|
|
C[711] = _A2210*_B0200 - _A2212*_B0000 + _A2202*_B1000 - _A2200*_B1200;
|
|
C[712] = _A2210*_B0201 - _A2212*_B0001 + _A2202*_B1001 - _A2200*_B1201;
|
|
C[713] = _A2210*_B0202 - _A2212*_B0002 + _A2202*_B1002 - _A2200*_B1202;
|
|
C[714] = _A2210*_B0210 - _A2212*_B0010 + _A2202*_B1010 - _A2200*_B1210;
|
|
C[715] = _A2210*_B0211 - _A2212*_B0011 + _A2202*_B1011 - _A2200*_B1211;
|
|
C[716] = _A2210*_B0212 - _A2212*_B0012 + _A2202*_B1012 - _A2200*_B1212;
|
|
C[717] = _A2210*_B0220 - _A2212*_B0020 + _A2202*_B1020 - _A2200*_B1220;
|
|
C[718] = _A2210*_B0221 - _A2212*_B0021 + _A2202*_B1021 - _A2200*_B1221;
|
|
C[719] = _A2210*_B0222 - _A2212*_B0022 + _A2202*_B1022 - _A2200*_B1222;
|
|
C[720] = _A2211*_B0000 - _A2210*_B0100 - _A2201*_B1000 + _A2200*_B1100;
|
|
C[721] = _A2211*_B0001 - _A2210*_B0101 - _A2201*_B1001 + _A2200*_B1101;
|
|
C[722] = _A2211*_B0002 - _A2210*_B0102 - _A2201*_B1002 + _A2200*_B1102;
|
|
C[723] = _A2211*_B0010 - _A2210*_B0110 - _A2201*_B1010 + _A2200*_B1110;
|
|
C[724] = _A2211*_B0011 - _A2210*_B0111 - _A2201*_B1011 + _A2200*_B1111;
|
|
C[725] = _A2211*_B0012 - _A2210*_B0112 - _A2201*_B1012 + _A2200*_B1112;
|
|
C[726] = _A2211*_B0020 - _A2210*_B0120 - _A2201*_B1020 + _A2200*_B1120;
|
|
C[727] = _A2211*_B0021 - _A2210*_B0121 - _A2201*_B1021 + _A2200*_B1121;
|
|
C[728] = _A2211*_B0022 - _A2210*_B0122 - _A2201*_B1022 + _A2200*_B1122;
|
|
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
//(AxB)_{IjJ} = E_{jpq}E_{JPQ}A_{IpP}B_{qQ}
|
|
// tensor cross product of 3rd and 2nd order tensors
|
|
template<typename T, size_t I, size_t J, size_t K, size_t L, size_t M>
|
|
FASTOR_HINT_INLINE void _crossproduct32(const T *FASTOR_RESTRICT A, const T *FASTOR_RESTRICT B, T *FASTOR_RESTRICT C) {
|
|
|
|
T _A000 = A[0];
|
|
T _A001 = A[1];
|
|
T _A002 = A[2];
|
|
T _A010 = A[3];
|
|
T _A011 = A[4];
|
|
T _A012 = A[5];
|
|
T _A020 = A[6];
|
|
T _A021 = A[7];
|
|
T _A022 = A[8];
|
|
T _A100 = A[9];
|
|
T _A101 = A[10];
|
|
T _A102 = A[11];
|
|
T _A110 = A[12];
|
|
T _A111 = A[13];
|
|
T _A112 = A[14];
|
|
T _A120 = A[15];
|
|
T _A121 = A[16];
|
|
T _A122 = A[17];
|
|
T _A200 = A[18];
|
|
T _A201 = A[19];
|
|
T _A202 = A[20];
|
|
T _A210 = A[21];
|
|
T _A211 = A[22];
|
|
T _A212 = A[23];
|
|
T _A220 = A[24];
|
|
T _A221 = A[25];
|
|
T _A222 = A[26];
|
|
|
|
|
|
T _B00 = B[0];
|
|
T _B01 = B[1];
|
|
T _B02 = B[2];
|
|
T _B10 = B[3];
|
|
T _B11 = B[4];
|
|
T _B12 = B[5];
|
|
T _B20 = B[6];
|
|
T _B21 = B[7];
|
|
T _B22 = B[8];
|
|
|
|
|
|
C[0] = _A011*_B22 - _A012*_B21 - _A021*_B12 + _A022*_B11;
|
|
C[1] = _A012*_B20 - _A010*_B22 + _A020*_B12 - _A022*_B10;
|
|
C[2] = _A010*_B21 - _A011*_B20 - _A020*_B11 + _A021*_B10;
|
|
C[3] = _A002*_B21 - _A001*_B22 + _A021*_B02 - _A022*_B01;
|
|
C[4] = _A000*_B22 - _A002*_B20 - _A020*_B02 + _A022*_B00;
|
|
C[5] = _A001*_B20 - _A000*_B21 + _A020*_B01 - _A021*_B00;
|
|
C[6] = _A001*_B12 - _A002*_B11 - _A011*_B02 + _A012*_B01;
|
|
C[7] = _A002*_B10 - _A000*_B12 + _A010*_B02 - _A012*_B00;
|
|
C[8] = _A000*_B11 - _A001*_B10 - _A010*_B01 + _A011*_B00;
|
|
C[9] = _A111*_B22 - _A112*_B21 - _A121*_B12 + _A122*_B11;
|
|
C[10] = _A112*_B20 - _A110*_B22 + _A120*_B12 - _A122*_B10;
|
|
C[11] = _A110*_B21 - _A111*_B20 - _A120*_B11 + _A121*_B10;
|
|
C[12] = _A102*_B21 - _A101*_B22 + _A121*_B02 - _A122*_B01;
|
|
C[13] = _A100*_B22 - _A102*_B20 - _A120*_B02 + _A122*_B00;
|
|
C[14] = _A101*_B20 - _A100*_B21 + _A120*_B01 - _A121*_B00;
|
|
C[15] = _A101*_B12 - _A102*_B11 - _A111*_B02 + _A112*_B01;
|
|
C[16] = _A102*_B10 - _A100*_B12 + _A110*_B02 - _A112*_B00;
|
|
C[17] = _A100*_B11 - _A101*_B10 - _A110*_B01 + _A111*_B00;
|
|
C[18] = _A211*_B22 - _A212*_B21 - _A221*_B12 + _A222*_B11;
|
|
C[19] = _A212*_B20 - _A210*_B22 + _A220*_B12 - _A222*_B10;
|
|
C[20] = _A210*_B21 - _A211*_B20 - _A220*_B11 + _A221*_B10;
|
|
C[21] = _A202*_B21 - _A201*_B22 + _A221*_B02 - _A222*_B01;
|
|
C[22] = _A200*_B22 - _A202*_B20 - _A220*_B02 + _A222*_B00;
|
|
C[23] = _A201*_B20 - _A200*_B21 + _A220*_B01 - _A221*_B00;
|
|
C[24] = _A201*_B12 - _A202*_B11 - _A211*_B02 + _A212*_B01;
|
|
C[25] = _A202*_B10 - _A200*_B12 + _A210*_B02 - _A212*_B00;
|
|
C[26] = _A200*_B11 - _A201*_B10 - _A210*_B01 + _A211*_B00;
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
//(AxB)_{iIJ} = E_{ipq}E_{IPQ}A_{qQJ}B_{pP}
|
|
// tensor cross product of 2nd and 3rd order tensors
|
|
template<typename T, size_t I, size_t J, size_t K, size_t L, size_t M>
|
|
FASTOR_HINT_INLINE void _crossproduct23(const T *FASTOR_RESTRICT A, const T *FASTOR_RESTRICT B, T *FASTOR_RESTRICT C) {
|
|
|
|
T _A000 = A[0];
|
|
T _A001 = A[1];
|
|
T _A002 = A[2];
|
|
T _A010 = A[3];
|
|
T _A011 = A[4];
|
|
T _A012 = A[5];
|
|
T _A020 = A[6];
|
|
T _A021 = A[7];
|
|
T _A022 = A[8];
|
|
T _A100 = A[9];
|
|
T _A101 = A[10];
|
|
T _A102 = A[11];
|
|
T _A110 = A[12];
|
|
T _A111 = A[13];
|
|
T _A112 = A[14];
|
|
T _A120 = A[15];
|
|
T _A121 = A[16];
|
|
T _A122 = A[17];
|
|
T _A200 = A[18];
|
|
T _A201 = A[19];
|
|
T _A202 = A[20];
|
|
T _A210 = A[21];
|
|
T _A211 = A[22];
|
|
T _A212 = A[23];
|
|
T _A220 = A[24];
|
|
T _A221 = A[25];
|
|
T _A222 = A[26];
|
|
|
|
|
|
T _B00 = B[0];
|
|
T _B01 = B[1];
|
|
T _B02 = B[2];
|
|
T _B10 = B[3];
|
|
T _B11 = B[4];
|
|
T _B12 = B[5];
|
|
T _B20 = B[6];
|
|
T _B21 = B[7];
|
|
T _B22 = B[8];
|
|
|
|
|
|
C[0] = _A110*_B22 - _A120*_B21 - _A210*_B12 + _A220*_B11;
|
|
C[1] = _A111*_B22 - _A121*_B21 - _A211*_B12 + _A221*_B11;
|
|
C[2] = _A112*_B22 - _A122*_B21 - _A212*_B12 + _A222*_B11;
|
|
C[3] = _A120*_B20 - _A100*_B22 + _A200*_B12 - _A220*_B10;
|
|
C[4] = _A121*_B20 - _A101*_B22 + _A201*_B12 - _A221*_B10;
|
|
C[5] = _A122*_B20 - _A102*_B22 + _A202*_B12 - _A222*_B10;
|
|
C[6] = _A100*_B21 - _A110*_B20 - _A200*_B11 + _A210*_B10;
|
|
C[7] = _A101*_B21 - _A111*_B20 - _A201*_B11 + _A211*_B10;
|
|
C[8] = _A102*_B21 - _A112*_B20 - _A202*_B11 + _A212*_B10;
|
|
C[9] = _A020*_B21 - _A010*_B22 + _A210*_B02 - _A220*_B01;
|
|
C[10] = _A021*_B21 - _A011*_B22 + _A211*_B02 - _A221*_B01;
|
|
C[11] = _A022*_B21 - _A012*_B22 + _A212*_B02 - _A222*_B01;
|
|
C[12] = _A000*_B22 - _A020*_B20 - _A200*_B02 + _A220*_B00;
|
|
C[13] = _A001*_B22 - _A021*_B20 - _A201*_B02 + _A221*_B00;
|
|
C[14] = _A002*_B22 - _A022*_B20 - _A202*_B02 + _A222*_B00;
|
|
C[15] = _A010*_B20 - _A000*_B21 + _A200*_B01 - _A210*_B00;
|
|
C[16] = _A011*_B20 - _A001*_B21 + _A201*_B01 - _A211*_B00;
|
|
C[17] = _A012*_B20 - _A002*_B21 + _A202*_B01 - _A212*_B00;
|
|
C[18] = _A010*_B12 - _A020*_B11 - _A110*_B02 + _A120*_B01;
|
|
C[19] = _A011*_B12 - _A021*_B11 - _A111*_B02 + _A121*_B01;
|
|
C[20] = _A012*_B12 - _A022*_B11 - _A112*_B02 + _A122*_B01;
|
|
C[21] = _A020*_B10 - _A000*_B12 + _A100*_B02 - _A120*_B00;
|
|
C[22] = _A021*_B10 - _A001*_B12 + _A101*_B02 - _A121*_B00;
|
|
C[23] = _A022*_B10 - _A002*_B12 + _A102*_B02 - _A122*_B00;
|
|
C[24] = _A000*_B11 - _A010*_B10 - _A100*_B01 + _A110*_B00;
|
|
C[25] = _A001*_B11 - _A011*_B10 - _A101*_B01 + _A111*_B00;
|
|
C[26] = _A002*_B11 - _A012*_B10 - _A102*_B01 + _A112*_B00;
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
//(AxB)_{iIjJ} = E_{jpq}E_{JPQ}A_{iIpP}B_{qQ}
|
|
// tensor cross product of 4th and 2nd order tensors
|
|
template<typename T, size_t I, size_t J, size_t K, size_t L, size_t M, size_t N>
|
|
FASTOR_HINT_INLINE void _crossproduct42(const T *FASTOR_RESTRICT A, const T *FASTOR_RESTRICT B, T *FASTOR_RESTRICT C) {
|
|
|
|
T _A0000 = A[0];
|
|
T _A0001 = A[1];
|
|
T _A0002 = A[2];
|
|
T _A0010 = A[3];
|
|
T _A0011 = A[4];
|
|
T _A0012 = A[5];
|
|
T _A0020 = A[6];
|
|
T _A0021 = A[7];
|
|
T _A0022 = A[8];
|
|
T _A0100 = A[9];
|
|
T _A0101 = A[10];
|
|
T _A0102 = A[11];
|
|
T _A0110 = A[12];
|
|
T _A0111 = A[13];
|
|
T _A0112 = A[14];
|
|
T _A0120 = A[15];
|
|
T _A0121 = A[16];
|
|
T _A0122 = A[17];
|
|
T _A0200 = A[18];
|
|
T _A0201 = A[19];
|
|
T _A0202 = A[20];
|
|
T _A0210 = A[21];
|
|
T _A0211 = A[22];
|
|
T _A0212 = A[23];
|
|
T _A0220 = A[24];
|
|
T _A0221 = A[25];
|
|
T _A0222 = A[26];
|
|
T _A1000 = A[27];
|
|
T _A1001 = A[28];
|
|
T _A1002 = A[29];
|
|
T _A1010 = A[30];
|
|
T _A1011 = A[31];
|
|
T _A1012 = A[32];
|
|
T _A1020 = A[33];
|
|
T _A1021 = A[34];
|
|
T _A1022 = A[35];
|
|
T _A1100 = A[36];
|
|
T _A1101 = A[37];
|
|
T _A1102 = A[38];
|
|
T _A1110 = A[39];
|
|
T _A1111 = A[40];
|
|
T _A1112 = A[41];
|
|
T _A1120 = A[42];
|
|
T _A1121 = A[43];
|
|
T _A1122 = A[44];
|
|
T _A1200 = A[45];
|
|
T _A1201 = A[46];
|
|
T _A1202 = A[47];
|
|
T _A1210 = A[48];
|
|
T _A1211 = A[49];
|
|
T _A1212 = A[50];
|
|
T _A1220 = A[51];
|
|
T _A1221 = A[52];
|
|
T _A1222 = A[53];
|
|
T _A2000 = A[54];
|
|
T _A2001 = A[55];
|
|
T _A2002 = A[56];
|
|
T _A2010 = A[57];
|
|
T _A2011 = A[58];
|
|
T _A2012 = A[59];
|
|
T _A2020 = A[60];
|
|
T _A2021 = A[61];
|
|
T _A2022 = A[62];
|
|
T _A2100 = A[63];
|
|
T _A2101 = A[64];
|
|
T _A2102 = A[65];
|
|
T _A2110 = A[66];
|
|
T _A2111 = A[67];
|
|
T _A2112 = A[68];
|
|
T _A2120 = A[69];
|
|
T _A2121 = A[70];
|
|
T _A2122 = A[71];
|
|
T _A2200 = A[72];
|
|
T _A2201 = A[73];
|
|
T _A2202 = A[74];
|
|
T _A2210 = A[75];
|
|
T _A2211 = A[76];
|
|
T _A2212 = A[77];
|
|
T _A2220 = A[78];
|
|
T _A2221 = A[79];
|
|
T _A2222 = A[80];
|
|
|
|
|
|
T _B00 = B[0];
|
|
T _B01 = B[1];
|
|
T _B02 = B[2];
|
|
T _B10 = B[3];
|
|
T _B11 = B[4];
|
|
T _B12 = B[5];
|
|
T _B20 = B[6];
|
|
T _B21 = B[7];
|
|
T _B22 = B[8];
|
|
|
|
|
|
C[0] = _A0011*_B22 - _A0012*_B21 - _A0021*_B12 + _A0022*_B11;
|
|
C[1] = _A0012*_B20 - _A0010*_B22 + _A0020*_B12 - _A0022*_B10;
|
|
C[2] = _A0010*_B21 - _A0011*_B20 - _A0020*_B11 + _A0021*_B10;
|
|
C[3] = _A0002*_B21 - _A0001*_B22 + _A0021*_B02 - _A0022*_B01;
|
|
C[4] = _A0000*_B22 - _A0002*_B20 - _A0020*_B02 + _A0022*_B00;
|
|
C[5] = _A0001*_B20 - _A0000*_B21 + _A0020*_B01 - _A0021*_B00;
|
|
C[6] = _A0001*_B12 - _A0002*_B11 - _A0011*_B02 + _A0012*_B01;
|
|
C[7] = _A0002*_B10 - _A0000*_B12 + _A0010*_B02 - _A0012*_B00;
|
|
C[8] = _A0000*_B11 - _A0001*_B10 - _A0010*_B01 + _A0011*_B00;
|
|
C[9] = _A0111*_B22 - _A0112*_B21 - _A0121*_B12 + _A0122*_B11;
|
|
C[10] = _A0112*_B20 - _A0110*_B22 + _A0120*_B12 - _A0122*_B10;
|
|
C[11] = _A0110*_B21 - _A0111*_B20 - _A0120*_B11 + _A0121*_B10;
|
|
C[12] = _A0102*_B21 - _A0101*_B22 + _A0121*_B02 - _A0122*_B01;
|
|
C[13] = _A0100*_B22 - _A0102*_B20 - _A0120*_B02 + _A0122*_B00;
|
|
C[14] = _A0101*_B20 - _A0100*_B21 + _A0120*_B01 - _A0121*_B00;
|
|
C[15] = _A0101*_B12 - _A0102*_B11 - _A0111*_B02 + _A0112*_B01;
|
|
C[16] = _A0102*_B10 - _A0100*_B12 + _A0110*_B02 - _A0112*_B00;
|
|
C[17] = _A0100*_B11 - _A0101*_B10 - _A0110*_B01 + _A0111*_B00;
|
|
C[18] = _A0211*_B22 - _A0212*_B21 - _A0221*_B12 + _A0222*_B11;
|
|
C[19] = _A0212*_B20 - _A0210*_B22 + _A0220*_B12 - _A0222*_B10;
|
|
C[20] = _A0210*_B21 - _A0211*_B20 - _A0220*_B11 + _A0221*_B10;
|
|
C[21] = _A0202*_B21 - _A0201*_B22 + _A0221*_B02 - _A0222*_B01;
|
|
C[22] = _A0200*_B22 - _A0202*_B20 - _A0220*_B02 + _A0222*_B00;
|
|
C[23] = _A0201*_B20 - _A0200*_B21 + _A0220*_B01 - _A0221*_B00;
|
|
C[24] = _A0201*_B12 - _A0202*_B11 - _A0211*_B02 + _A0212*_B01;
|
|
C[25] = _A0202*_B10 - _A0200*_B12 + _A0210*_B02 - _A0212*_B00;
|
|
C[26] = _A0200*_B11 - _A0201*_B10 - _A0210*_B01 + _A0211*_B00;
|
|
C[27] = _A1011*_B22 - _A1012*_B21 - _A1021*_B12 + _A1022*_B11;
|
|
C[28] = _A1012*_B20 - _A1010*_B22 + _A1020*_B12 - _A1022*_B10;
|
|
C[29] = _A1010*_B21 - _A1011*_B20 - _A1020*_B11 + _A1021*_B10;
|
|
C[30] = _A1002*_B21 - _A1001*_B22 + _A1021*_B02 - _A1022*_B01;
|
|
C[31] = _A1000*_B22 - _A1002*_B20 - _A1020*_B02 + _A1022*_B00;
|
|
C[32] = _A1001*_B20 - _A1000*_B21 + _A1020*_B01 - _A1021*_B00;
|
|
C[33] = _A1001*_B12 - _A1002*_B11 - _A1011*_B02 + _A1012*_B01;
|
|
C[34] = _A1002*_B10 - _A1000*_B12 + _A1010*_B02 - _A1012*_B00;
|
|
C[35] = _A1000*_B11 - _A1001*_B10 - _A1010*_B01 + _A1011*_B00;
|
|
C[36] = _A1111*_B22 - _A1112*_B21 - _A1121*_B12 + _A1122*_B11;
|
|
C[37] = _A1112*_B20 - _A1110*_B22 + _A1120*_B12 - _A1122*_B10;
|
|
C[38] = _A1110*_B21 - _A1111*_B20 - _A1120*_B11 + _A1121*_B10;
|
|
C[39] = _A1102*_B21 - _A1101*_B22 + _A1121*_B02 - _A1122*_B01;
|
|
C[40] = _A1100*_B22 - _A1102*_B20 - _A1120*_B02 + _A1122*_B00;
|
|
C[41] = _A1101*_B20 - _A1100*_B21 + _A1120*_B01 - _A1121*_B00;
|
|
C[42] = _A1101*_B12 - _A1102*_B11 - _A1111*_B02 + _A1112*_B01;
|
|
C[43] = _A1102*_B10 - _A1100*_B12 + _A1110*_B02 - _A1112*_B00;
|
|
C[44] = _A1100*_B11 - _A1101*_B10 - _A1110*_B01 + _A1111*_B00;
|
|
C[45] = _A1211*_B22 - _A1212*_B21 - _A1221*_B12 + _A1222*_B11;
|
|
C[46] = _A1212*_B20 - _A1210*_B22 + _A1220*_B12 - _A1222*_B10;
|
|
C[47] = _A1210*_B21 - _A1211*_B20 - _A1220*_B11 + _A1221*_B10;
|
|
C[48] = _A1202*_B21 - _A1201*_B22 + _A1221*_B02 - _A1222*_B01;
|
|
C[49] = _A1200*_B22 - _A1202*_B20 - _A1220*_B02 + _A1222*_B00;
|
|
C[50] = _A1201*_B20 - _A1200*_B21 + _A1220*_B01 - _A1221*_B00;
|
|
C[51] = _A1201*_B12 - _A1202*_B11 - _A1211*_B02 + _A1212*_B01;
|
|
C[52] = _A1202*_B10 - _A1200*_B12 + _A1210*_B02 - _A1212*_B00;
|
|
C[53] = _A1200*_B11 - _A1201*_B10 - _A1210*_B01 + _A1211*_B00;
|
|
C[54] = _A2011*_B22 - _A2012*_B21 - _A2021*_B12 + _A2022*_B11;
|
|
C[55] = _A2012*_B20 - _A2010*_B22 + _A2020*_B12 - _A2022*_B10;
|
|
C[56] = _A2010*_B21 - _A2011*_B20 - _A2020*_B11 + _A2021*_B10;
|
|
C[57] = _A2002*_B21 - _A2001*_B22 + _A2021*_B02 - _A2022*_B01;
|
|
C[58] = _A2000*_B22 - _A2002*_B20 - _A2020*_B02 + _A2022*_B00;
|
|
C[59] = _A2001*_B20 - _A2000*_B21 + _A2020*_B01 - _A2021*_B00;
|
|
C[60] = _A2001*_B12 - _A2002*_B11 - _A2011*_B02 + _A2012*_B01;
|
|
C[61] = _A2002*_B10 - _A2000*_B12 + _A2010*_B02 - _A2012*_B00;
|
|
C[62] = _A2000*_B11 - _A2001*_B10 - _A2010*_B01 + _A2011*_B00;
|
|
C[63] = _A2111*_B22 - _A2112*_B21 - _A2121*_B12 + _A2122*_B11;
|
|
C[64] = _A2112*_B20 - _A2110*_B22 + _A2120*_B12 - _A2122*_B10;
|
|
C[65] = _A2110*_B21 - _A2111*_B20 - _A2120*_B11 + _A2121*_B10;
|
|
C[66] = _A2102*_B21 - _A2101*_B22 + _A2121*_B02 - _A2122*_B01;
|
|
C[67] = _A2100*_B22 - _A2102*_B20 - _A2120*_B02 + _A2122*_B00;
|
|
C[68] = _A2101*_B20 - _A2100*_B21 + _A2120*_B01 - _A2121*_B00;
|
|
C[69] = _A2101*_B12 - _A2102*_B11 - _A2111*_B02 + _A2112*_B01;
|
|
C[70] = _A2102*_B10 - _A2100*_B12 + _A2110*_B02 - _A2112*_B00;
|
|
C[71] = _A2100*_B11 - _A2101*_B10 - _A2110*_B01 + _A2111*_B00;
|
|
C[72] = _A2211*_B22 - _A2212*_B21 - _A2221*_B12 + _A2222*_B11;
|
|
C[73] = _A2212*_B20 - _A2210*_B22 + _A2220*_B12 - _A2222*_B10;
|
|
C[74] = _A2210*_B21 - _A2211*_B20 - _A2220*_B11 + _A2221*_B10;
|
|
C[75] = _A2202*_B21 - _A2201*_B22 + _A2221*_B02 - _A2222*_B01;
|
|
C[76] = _A2200*_B22 - _A2202*_B20 - _A2220*_B02 + _A2222*_B00;
|
|
C[77] = _A2201*_B20 - _A2200*_B21 + _A2220*_B01 - _A2221*_B00;
|
|
C[78] = _A2201*_B12 - _A2202*_B11 - _A2211*_B02 + _A2212*_B01;
|
|
C[79] = _A2202*_B10 - _A2200*_B12 + _A2210*_B02 - _A2212*_B00;
|
|
C[80] = _A2200*_B11 - _A2201*_B10 - _A2210*_B01 + _A2211*_B00;
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
//(AxB)_{iIjJ} = E_{ipq}E_{IPQ}A_{qQjJ}B_{pP}
|
|
// tensor cross product of 2nd and 4th order tensors
|
|
template<typename T, size_t I, size_t J, size_t K, size_t L, size_t M, size_t N>
|
|
FASTOR_HINT_INLINE void _crossproduct24(const T *FASTOR_RESTRICT A, const T *FASTOR_RESTRICT B, T *FASTOR_RESTRICT C) {
|
|
|
|
T _A0000 = A[0];
|
|
T _A0001 = A[1];
|
|
T _A0002 = A[2];
|
|
T _A0010 = A[3];
|
|
T _A0011 = A[4];
|
|
T _A0012 = A[5];
|
|
T _A0020 = A[6];
|
|
T _A0021 = A[7];
|
|
T _A0022 = A[8];
|
|
T _A0100 = A[9];
|
|
T _A0101 = A[10];
|
|
T _A0102 = A[11];
|
|
T _A0110 = A[12];
|
|
T _A0111 = A[13];
|
|
T _A0112 = A[14];
|
|
T _A0120 = A[15];
|
|
T _A0121 = A[16];
|
|
T _A0122 = A[17];
|
|
T _A0200 = A[18];
|
|
T _A0201 = A[19];
|
|
T _A0202 = A[20];
|
|
T _A0210 = A[21];
|
|
T _A0211 = A[22];
|
|
T _A0212 = A[23];
|
|
T _A0220 = A[24];
|
|
T _A0221 = A[25];
|
|
T _A0222 = A[26];
|
|
T _A1000 = A[27];
|
|
T _A1001 = A[28];
|
|
T _A1002 = A[29];
|
|
T _A1010 = A[30];
|
|
T _A1011 = A[31];
|
|
T _A1012 = A[32];
|
|
T _A1020 = A[33];
|
|
T _A1021 = A[34];
|
|
T _A1022 = A[35];
|
|
T _A1100 = A[36];
|
|
T _A1101 = A[37];
|
|
T _A1102 = A[38];
|
|
T _A1110 = A[39];
|
|
T _A1111 = A[40];
|
|
T _A1112 = A[41];
|
|
T _A1120 = A[42];
|
|
T _A1121 = A[43];
|
|
T _A1122 = A[44];
|
|
T _A1200 = A[45];
|
|
T _A1201 = A[46];
|
|
T _A1202 = A[47];
|
|
T _A1210 = A[48];
|
|
T _A1211 = A[49];
|
|
T _A1212 = A[50];
|
|
T _A1220 = A[51];
|
|
T _A1221 = A[52];
|
|
T _A1222 = A[53];
|
|
T _A2000 = A[54];
|
|
T _A2001 = A[55];
|
|
T _A2002 = A[56];
|
|
T _A2010 = A[57];
|
|
T _A2011 = A[58];
|
|
T _A2012 = A[59];
|
|
T _A2020 = A[60];
|
|
T _A2021 = A[61];
|
|
T _A2022 = A[62];
|
|
T _A2100 = A[63];
|
|
T _A2101 = A[64];
|
|
T _A2102 = A[65];
|
|
T _A2110 = A[66];
|
|
T _A2111 = A[67];
|
|
T _A2112 = A[68];
|
|
T _A2120 = A[69];
|
|
T _A2121 = A[70];
|
|
T _A2122 = A[71];
|
|
T _A2200 = A[72];
|
|
T _A2201 = A[73];
|
|
T _A2202 = A[74];
|
|
T _A2210 = A[75];
|
|
T _A2211 = A[76];
|
|
T _A2212 = A[77];
|
|
T _A2220 = A[78];
|
|
T _A2221 = A[79];
|
|
T _A2222 = A[80];
|
|
|
|
|
|
T _B00 = B[0];
|
|
T _B01 = B[1];
|
|
T _B02 = B[2];
|
|
T _B10 = B[3];
|
|
T _B11 = B[4];
|
|
T _B12 = B[5];
|
|
T _B20 = B[6];
|
|
T _B21 = B[7];
|
|
T _B22 = B[8];
|
|
|
|
|
|
C[0] = _A1100*_B22 - _A1200*_B21 - _A2100*_B12 + _A2200*_B11;
|
|
C[1] = _A1101*_B22 - _A1201*_B21 - _A2101*_B12 + _A2201*_B11;
|
|
C[2] = _A1102*_B22 - _A1202*_B21 - _A2102*_B12 + _A2202*_B11;
|
|
C[3] = _A1110*_B22 - _A1210*_B21 - _A2110*_B12 + _A2210*_B11;
|
|
C[4] = _A1111*_B22 - _A1211*_B21 - _A2111*_B12 + _A2211*_B11;
|
|
C[5] = _A1112*_B22 - _A1212*_B21 - _A2112*_B12 + _A2212*_B11;
|
|
C[6] = _A1120*_B22 - _A1220*_B21 - _A2120*_B12 + _A2220*_B11;
|
|
C[7] = _A1121*_B22 - _A1221*_B21 - _A2121*_B12 + _A2221*_B11;
|
|
C[8] = _A1122*_B22 - _A1222*_B21 - _A2122*_B12 + _A2222*_B11;
|
|
C[9] = _A1200*_B20 - _A1000*_B22 + _A2000*_B12 - _A2200*_B10;
|
|
C[10] = _A1201*_B20 - _A1001*_B22 + _A2001*_B12 - _A2201*_B10;
|
|
C[11] = _A1202*_B20 - _A1002*_B22 + _A2002*_B12 - _A2202*_B10;
|
|
C[12] = _A1210*_B20 - _A1010*_B22 + _A2010*_B12 - _A2210*_B10;
|
|
C[13] = _A1211*_B20 - _A1011*_B22 + _A2011*_B12 - _A2211*_B10;
|
|
C[14] = _A1212*_B20 - _A1012*_B22 + _A2012*_B12 - _A2212*_B10;
|
|
C[15] = _A1220*_B20 - _A1020*_B22 + _A2020*_B12 - _A2220*_B10;
|
|
C[16] = _A1221*_B20 - _A1021*_B22 + _A2021*_B12 - _A2221*_B10;
|
|
C[17] = _A1222*_B20 - _A1022*_B22 + _A2022*_B12 - _A2222*_B10;
|
|
C[18] = _A1000*_B21 - _A1100*_B20 - _A2000*_B11 + _A2100*_B10;
|
|
C[19] = _A1001*_B21 - _A1101*_B20 - _A2001*_B11 + _A2101*_B10;
|
|
C[20] = _A1002*_B21 - _A1102*_B20 - _A2002*_B11 + _A2102*_B10;
|
|
C[21] = _A1010*_B21 - _A1110*_B20 - _A2010*_B11 + _A2110*_B10;
|
|
C[22] = _A1011*_B21 - _A1111*_B20 - _A2011*_B11 + _A2111*_B10;
|
|
C[23] = _A1012*_B21 - _A1112*_B20 - _A2012*_B11 + _A2112*_B10;
|
|
C[24] = _A1020*_B21 - _A1120*_B20 - _A2020*_B11 + _A2120*_B10;
|
|
C[25] = _A1021*_B21 - _A1121*_B20 - _A2021*_B11 + _A2121*_B10;
|
|
C[26] = _A1022*_B21 - _A1122*_B20 - _A2022*_B11 + _A2122*_B10;
|
|
C[27] = _A0200*_B21 - _A0100*_B22 + _A2100*_B02 - _A2200*_B01;
|
|
C[28] = _A0201*_B21 - _A0101*_B22 + _A2101*_B02 - _A2201*_B01;
|
|
C[29] = _A0202*_B21 - _A0102*_B22 + _A2102*_B02 - _A2202*_B01;
|
|
C[30] = _A0210*_B21 - _A0110*_B22 + _A2110*_B02 - _A2210*_B01;
|
|
C[31] = _A0211*_B21 - _A0111*_B22 + _A2111*_B02 - _A2211*_B01;
|
|
C[32] = _A0212*_B21 - _A0112*_B22 + _A2112*_B02 - _A2212*_B01;
|
|
C[33] = _A0220*_B21 - _A0120*_B22 + _A2120*_B02 - _A2220*_B01;
|
|
C[34] = _A0221*_B21 - _A0121*_B22 + _A2121*_B02 - _A2221*_B01;
|
|
C[35] = _A0222*_B21 - _A0122*_B22 + _A2122*_B02 - _A2222*_B01;
|
|
C[36] = _A0000*_B22 - _A0200*_B20 - _A2000*_B02 + _A2200*_B00;
|
|
C[37] = _A0001*_B22 - _A0201*_B20 - _A2001*_B02 + _A2201*_B00;
|
|
C[38] = _A0002*_B22 - _A0202*_B20 - _A2002*_B02 + _A2202*_B00;
|
|
C[39] = _A0010*_B22 - _A0210*_B20 - _A2010*_B02 + _A2210*_B00;
|
|
C[40] = _A0011*_B22 - _A0211*_B20 - _A2011*_B02 + _A2211*_B00;
|
|
C[41] = _A0012*_B22 - _A0212*_B20 - _A2012*_B02 + _A2212*_B00;
|
|
C[42] = _A0020*_B22 - _A0220*_B20 - _A2020*_B02 + _A2220*_B00;
|
|
C[43] = _A0021*_B22 - _A0221*_B20 - _A2021*_B02 + _A2221*_B00;
|
|
C[44] = _A0022*_B22 - _A0222*_B20 - _A2022*_B02 + _A2222*_B00;
|
|
C[45] = _A0100*_B20 - _A0000*_B21 + _A2000*_B01 - _A2100*_B00;
|
|
C[46] = _A0101*_B20 - _A0001*_B21 + _A2001*_B01 - _A2101*_B00;
|
|
C[47] = _A0102*_B20 - _A0002*_B21 + _A2002*_B01 - _A2102*_B00;
|
|
C[48] = _A0110*_B20 - _A0010*_B21 + _A2010*_B01 - _A2110*_B00;
|
|
C[49] = _A0111*_B20 - _A0011*_B21 + _A2011*_B01 - _A2111*_B00;
|
|
C[50] = _A0112*_B20 - _A0012*_B21 + _A2012*_B01 - _A2112*_B00;
|
|
C[51] = _A0120*_B20 - _A0020*_B21 + _A2020*_B01 - _A2120*_B00;
|
|
C[52] = _A0121*_B20 - _A0021*_B21 + _A2021*_B01 - _A2121*_B00;
|
|
C[53] = _A0122*_B20 - _A0022*_B21 + _A2022*_B01 - _A2122*_B00;
|
|
C[54] = _A0100*_B12 - _A0200*_B11 - _A1100*_B02 + _A1200*_B01;
|
|
C[55] = _A0101*_B12 - _A0201*_B11 - _A1101*_B02 + _A1201*_B01;
|
|
C[56] = _A0102*_B12 - _A0202*_B11 - _A1102*_B02 + _A1202*_B01;
|
|
C[57] = _A0110*_B12 - _A0210*_B11 - _A1110*_B02 + _A1210*_B01;
|
|
C[58] = _A0111*_B12 - _A0211*_B11 - _A1111*_B02 + _A1211*_B01;
|
|
C[59] = _A0112*_B12 - _A0212*_B11 - _A1112*_B02 + _A1212*_B01;
|
|
C[60] = _A0120*_B12 - _A0220*_B11 - _A1120*_B02 + _A1220*_B01;
|
|
C[61] = _A0121*_B12 - _A0221*_B11 - _A1121*_B02 + _A1221*_B01;
|
|
C[62] = _A0122*_B12 - _A0222*_B11 - _A1122*_B02 + _A1222*_B01;
|
|
C[63] = _A0200*_B10 - _A0000*_B12 + _A1000*_B02 - _A1200*_B00;
|
|
C[64] = _A0201*_B10 - _A0001*_B12 + _A1001*_B02 - _A1201*_B00;
|
|
C[65] = _A0202*_B10 - _A0002*_B12 + _A1002*_B02 - _A1202*_B00;
|
|
C[66] = _A0210*_B10 - _A0010*_B12 + _A1010*_B02 - _A1210*_B00;
|
|
C[67] = _A0211*_B10 - _A0011*_B12 + _A1011*_B02 - _A1211*_B00;
|
|
C[68] = _A0212*_B10 - _A0012*_B12 + _A1012*_B02 - _A1212*_B00;
|
|
C[69] = _A0220*_B10 - _A0020*_B12 + _A1020*_B02 - _A1220*_B00;
|
|
C[70] = _A0221*_B10 - _A0021*_B12 + _A1021*_B02 - _A1221*_B00;
|
|
C[71] = _A0222*_B10 - _A0022*_B12 + _A1022*_B02 - _A1222*_B00;
|
|
C[72] = _A0000*_B11 - _A0100*_B10 - _A1000*_B01 + _A1100*_B00;
|
|
C[73] = _A0001*_B11 - _A0101*_B10 - _A1001*_B01 + _A1101*_B00;
|
|
C[74] = _A0002*_B11 - _A0102*_B10 - _A1002*_B01 + _A1102*_B00;
|
|
C[75] = _A0010*_B11 - _A0110*_B10 - _A1010*_B01 + _A1110*_B00;
|
|
C[76] = _A0011*_B11 - _A0111*_B10 - _A1011*_B01 + _A1111*_B00;
|
|
C[77] = _A0012*_B11 - _A0112*_B10 - _A1012*_B01 + _A1112*_B00;
|
|
C[78] = _A0020*_B11 - _A0120*_B10 - _A1020*_B01 + _A1120*_B00;
|
|
C[79] = _A0021*_B11 - _A0121*_B10 - _A1021*_B01 + _A1121*_B00;
|
|
C[80] = _A0022*_B11 - _A0122*_B10 - _A1022*_B01 + _A1122*_B00;
|
|
}
|
|
//--------------------------------------------------------------------------------------------------------//
|
|
|
|
} // end of namespace Fastor
|
|
|
|
|
|
#endif // TENSOR_CROSS_H
|
|
|