12593348eSBarry Smith 26524c165SJacob Faibussowitsch #ifndef __BAIJ_H 335aab85fSBarry Smith #define __BAIJ_H 4af0996ceSBarry Smith #include <petsc/private/matimpl.h> 5c6db04a5SJed Brown #include <../src/mat/impls/aij/seq/aij.h> 6c6db04a5SJed Brown #include <../src/mat/impls/baij/seq/ftn-kernels/fsolvebaij.h> 726cec326SBarry Smith #include <petsc/private/hashmapijv.h> 826cec326SBarry Smith #include <petsc/private/hashsetij.h> 92593348eSBarry Smith 10fb56d528SJed Brown // This is sometimes needed for PETSC_Prefetch. 11fb56d528SJed Brown #if defined(PETSC_HAVE_XMMINTRIN_H) 12fb56d528SJed Brown #include <xmmintrin.h> 13fb56d528SJed Brown #endif 14fb56d528SJed Brown 152593348eSBarry Smith /* 1635aab85fSBarry Smith MATSEQBAIJ format - Block compressed row storage. The i[] and j[] 17e24b481bSBarry Smith arrays start at 0. 182593348eSBarry Smith */ 192593348eSBarry Smith 206c6c5352SBarry Smith /* This header is shared by the SeqSBAIJ matrix */ 216c6c5352SBarry Smith #define SEQBAIJHEADER \ 22521d7252SBarry Smith PetscInt bs2; /* square of block size */ \ 23690b6cddSBarry Smith PetscInt mbs, nbs; /* rows/bs, columns/bs */ \ 246c6c5352SBarry Smith PetscScalar *mult_work; /* work array for matrix vector product*/ \ 25f361c04dSBarry Smith PetscScalar *sor_workt; /* work array for SOR */ \ 26de80f912SBarry Smith PetscScalar *sor_work; /* work array for SOR */ \ 27dd6ea824SBarry Smith MatScalar *saved_values; \ 286c6c5352SBarry Smith \ 296ad2eaddSHong Zhang Mat sbaijMat; /* mat in sbaij format */ \ 306c6c5352SBarry Smith \ 31dd6ea824SBarry Smith MatScalar *idiag; /* inverse of block diagonal */ \ 3226cec326SBarry Smith PetscBool idiagvalid; /* if above has correct/current values */ \ 3326cec326SBarry Smith /* MatSetValues() via hash related fields */ \ 3426cec326SBarry Smith PetscHMapIJV ht; \ 3526cec326SBarry Smith PetscInt *dnz; \ 3626cec326SBarry Smith PetscHSetIJ bht; \ 3726cec326SBarry Smith PetscInt *bdnz; \ 3826cec326SBarry Smith struct _MatOps cops 39e6b907acSBarry Smith 406c6c5352SBarry Smith typedef struct { 41dd6ea824SBarry Smith SEQAIJHEADER(MatScalar); 42e6b907acSBarry Smith SEQBAIJHEADER; 4335aab85fSBarry Smith } Mat_SeqBAIJ; 442593348eSBarry Smith 45*f9663b93SPierre Jolivet PETSC_INTERN PetscErrorCode MatSeqBAIJSetPreallocation_SeqBAIJ(Mat B, PetscInt bs, PetscInt nz, const PetscInt nnz[]); 46b5b72c8aSIrina Sokolova PETSC_INTERN PetscErrorCode MatAXPY_SeqBAIJ(Mat Y, PetscScalar a, Mat X, MatStructure str); 47b5b72c8aSIrina Sokolova 48525d23c0SHong Zhang PETSC_INTERN PetscErrorCode MatGetColumnIJ_SeqBAIJ_Color(Mat, PetscInt, PetscBool, PetscBool, PetscInt *, const PetscInt *[], const PetscInt *[], PetscInt *[], PetscBool *); 49525d23c0SHong Zhang PETSC_INTERN PetscErrorCode MatRestoreColumnIJ_SeqBAIJ_Color(Mat, PetscInt, PetscBool, PetscBool, PetscInt *, const PetscInt *[], const PetscInt *[], PetscInt *[], PetscBool *); 50525d23c0SHong Zhang 515a576424SJed Brown PETSC_INTERN PetscErrorCode MatILUFactorSymbolic_SeqBAIJ(Mat, Mat, IS, IS, const MatFactorInfo *); 525a576424SJed Brown PETSC_INTERN PetscErrorCode MatICCFactorSymbolic_SeqBAIJ(Mat, Mat, IS, const MatFactorInfo *); 535a576424SJed Brown PETSC_INTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqBAIJ(Mat, Mat, IS, const MatFactorInfo *); 545a576424SJed Brown PETSC_INTERN PetscErrorCode MatCholeskyFactorNumeric_SeqBAIJ_N(Mat, Mat, const MatFactorInfo *); 555a576424SJed Brown PETSC_INTERN PetscErrorCode MatCholeskyFactorNumeric_SeqBAIJ_N_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 565a576424SJed Brown PETSC_INTERN PetscErrorCode MatDuplicate_SeqBAIJ(Mat, MatDuplicateOption, Mat *); 575a576424SJed Brown PETSC_INTERN PetscErrorCode MatMissingDiagonal_SeqBAIJ(Mat, PetscBool *, PetscInt *); 585a576424SJed Brown PETSC_INTERN PetscErrorCode MatMarkDiagonal_SeqBAIJ(Mat); 595a576424SJed Brown PETSC_INTERN PetscErrorCode MatILUDTFactor_SeqBAIJ(Mat, IS, IS, const MatFactorInfo *, Mat *); 60be3590efSBarry Smith 615a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorSymbolic_SeqBAIJ(Mat, Mat, IS, IS, const MatFactorInfo *); 625a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactor_SeqBAIJ(Mat, IS, IS, const MatFactorInfo *); 635a576424SJed Brown PETSC_INTERN PetscErrorCode MatIncreaseOverlap_SeqBAIJ(Mat, PetscInt, IS *, PetscInt); 647dae84e0SHong Zhang PETSC_INTERN PetscErrorCode MatCreateSubMatrix_SeqBAIJ(Mat, IS, IS, MatReuse, Mat *); 657dae84e0SHong Zhang PETSC_INTERN PetscErrorCode MatCreateSubMatrices_SeqBAIJ(Mat, PetscInt, const IS[], const IS[], MatReuse, Mat *[]); 665a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultTranspose_SeqBAIJ(Mat, Vec, Vec); 675a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultHermitianTranspose_SeqBAIJ(Mat, Vec, Vec); 685a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultTransposeAdd_SeqBAIJ(Mat, Vec, Vec, Vec); 695a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultHermitianTransposeAdd_SeqBAIJ(Mat, Vec, Vec, Vec); 705a576424SJed Brown PETSC_INTERN PetscErrorCode MatScale_SeqBAIJ(Mat, PetscScalar); 715a576424SJed Brown PETSC_INTERN PetscErrorCode MatNorm_SeqBAIJ(Mat, NormType, PetscReal *); 725a576424SJed Brown PETSC_INTERN PetscErrorCode MatEqual_SeqBAIJ(Mat, Mat, PetscBool *); 73d1e9a80fSBarry Smith PETSC_INTERN PetscErrorCode MatFDColoringApply_BAIJ(Mat, MatFDColoring, Vec, void *); 745a576424SJed Brown PETSC_INTERN PetscErrorCode MatGetDiagonal_SeqBAIJ(Mat, Vec); 755a576424SJed Brown PETSC_INTERN PetscErrorCode MatDiagonalScale_SeqBAIJ(Mat, Vec, Vec); 765a576424SJed Brown PETSC_INTERN PetscErrorCode MatGetInfo_SeqBAIJ(Mat, MatInfoType, MatInfo *); 775a576424SJed Brown PETSC_INTERN PetscErrorCode MatZeroEntries_SeqBAIJ(Mat); 785a576424SJed Brown PETSC_INTERN PetscErrorCode MatDestroy_SeqBAIJ(Mat); 795a576424SJed Brown PETSC_INTERN PetscErrorCode MatAssemblyEnd_SeqBAIJ(Mat, MatAssemblyType); 8054138f6bSKris Buschelman 815a576424SJed Brown PETSC_INTERN PetscErrorCode MatSeqBAIJ_UpdateFactorNumeric_NaturalOrdering(Mat); 8254138f6bSKris Buschelman 835a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_1_inplace(Mat, Vec, Vec); 845a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_1(Mat, Vec, Vec); 855a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_1_NaturalOrdering_inplace(Mat, Vec, Vec); 865a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_1_NaturalOrdering(Mat, Vec, Vec); 879f5c0bcdSBarry Smith PETSC_INTERN PetscErrorCode MatForwardSolve_SeqBAIJ_1_NaturalOrdering(Mat, Vec, Vec); 889f5c0bcdSBarry Smith PETSC_INTERN PetscErrorCode MatBackwardSolve_SeqBAIJ_1_NaturalOrdering(Mat, Vec, Vec); 895a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_2_inplace(Mat, Vec, Vec); 905a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_2(Mat, Vec, Vec); 915a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_2_NaturalOrdering_inplace(Mat, Vec, Vec); 925a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_2_NaturalOrdering(Mat, Vec, Vec); 939f5c0bcdSBarry Smith PETSC_INTERN PetscErrorCode MatForwardSolve_SeqBAIJ_2_NaturalOrdering(Mat, Vec, Vec); 949f5c0bcdSBarry Smith PETSC_INTERN PetscErrorCode MatBackwardSolve_SeqBAIJ_2_NaturalOrdering(Mat, Vec, Vec); 9506e38f1dSHong Zhang 965a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_3_inplace(Mat, Vec, Vec); 975a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_3(Mat, Vec, Vec); 985a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_3_NaturalOrdering_inplace(Mat, Vec, Vec); 995a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_3_NaturalOrdering(Mat, Vec, Vec); 1009f5c0bcdSBarry Smith PETSC_INTERN PetscErrorCode MatForwardSolve_SeqBAIJ_3_NaturalOrdering(Mat, Vec, Vec); 1019f5c0bcdSBarry Smith PETSC_INTERN PetscErrorCode MatBackwardSolve_SeqBAIJ_3_NaturalOrdering(Mat, Vec, Vec); 10206e38f1dSHong Zhang 1035a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4_inplace(Mat, Vec, Vec); 1045a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4(Mat, Vec, Vec); 1055a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_inplace(Mat, Vec, Vec); 1065a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering(Mat, Vec, Vec); 10754138f6bSKris Buschelman #if defined(PETSC_HAVE_SSE) 1085a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4_SSE_Demotion(Mat, Vec, Vec); 1095a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_SSE_Demotion(Mat, Vec, Vec); 1105a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_SSE_Demotion_usj(Mat, Vec, Vec); 1114110d75bSKris Buschelman #endif 1125a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_5_inplace(Mat, Vec, Vec); 1135a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_5(Mat, Vec, Vec); 1145a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_5_NaturalOrdering_inplace(Mat, Vec, Vec); 1155a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_5_NaturalOrdering(Mat, Vec, Vec); 11606e38f1dSHong Zhang 1175a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_6_inplace(Mat, Vec, Vec); 1185a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_6(Mat, Vec, Vec); 1195a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_6_NaturalOrdering_inplace(Mat, Vec, Vec); 1205a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_6_NaturalOrdering(Mat, Vec, Vec); 12106e38f1dSHong Zhang 1225a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_7_inplace(Mat, Vec, Vec); 1235a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_7(Mat, Vec, Vec); 1245a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_7_NaturalOrdering_inplace(Mat, Vec, Vec); 1255a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_7_NaturalOrdering(Mat, Vec, Vec); 12606e38f1dSHong Zhang 12796e086a2SDaniel Kokron PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_9_NaturalOrdering(Mat, Vec, Vec); 128412af7a7SHong Zhang PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_11_NaturalOrdering(Mat, Vec, Vec); 129ba7f0461SHong Zhang PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_12_NaturalOrdering(Mat, Vec, Vec); 130ba7f0461SHong Zhang PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_13_NaturalOrdering(Mat, Vec, Vec); 131ba7f0461SHong Zhang PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_14_NaturalOrdering(Mat, Vec, Vec); 132412af7a7SHong Zhang 1335a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_15_NaturalOrdering_ver1(Mat, Vec, Vec); 1345a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_15_NaturalOrdering_ver2(Mat, Vec, Vec); 1352b0b2ea7SShri Abhyankar 1365a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_N_inplace(Mat, Vec, Vec); 1375a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_N(Mat, Vec, Vec); 1385a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolve_SeqBAIJ_N_NaturalOrdering(Mat, Vec, Vec); 13906e38f1dSHong Zhang 1405a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1_inplace(Mat, Vec, Vec); 1415a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1(Mat, Vec, Vec); 1425a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1_NaturalOrdering_inplace(Mat, Vec, Vec); 1435a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1_NaturalOrdering(Mat, Vec, Vec); 1445a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2_inplace(Mat, Vec, Vec); 1455a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2(Mat, Vec, Vec); 1465a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2_NaturalOrdering_inplace(Mat, Vec, Vec); 1475a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2_NaturalOrdering(Mat, Vec, Vec); 14806e38f1dSHong Zhang 1495a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3_inplace(Mat, Vec, Vec); 1505a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3(Mat, Vec, Vec); 1515a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3_NaturalOrdering_inplace(Mat, Vec, Vec); 1525a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3_NaturalOrdering(Mat, Vec, Vec); 15306e38f1dSHong Zhang 1545a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4_inplace(Mat, Vec, Vec); 1555a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4(Mat, Vec, Vec); 1565a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4_NaturalOrdering_inplace(Mat, Vec, Vec); 1575a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4_NaturalOrdering(Mat, Vec, Vec); 15806e38f1dSHong Zhang 1595a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5_inplace(Mat, Vec, Vec); 1605a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5(Mat, Vec, Vec); 1615a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5_NaturalOrdering_inplace(Mat, Vec, Vec); 1625a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5_NaturalOrdering(Mat, Vec, Vec); 16306e38f1dSHong Zhang 1645a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6_inplace(Mat, Vec, Vec); 1655a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6(Mat, Vec, Vec); 1665a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6_NaturalOrdering_inplace(Mat, Vec, Vec); 1675a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6_NaturalOrdering(Mat, Vec, Vec); 16806e38f1dSHong Zhang 1695a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7_inplace(Mat, Vec, Vec); 1705a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7(Mat, Vec, Vec); 1715a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7_NaturalOrdering_inplace(Mat, Vec, Vec); 1725a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7_NaturalOrdering(Mat, Vec, Vec); 17306e38f1dSHong Zhang 1745a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_N_inplace(Mat, Vec, Vec); 1755a576424SJed Brown PETSC_INTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_N(Mat, Vec, Vec); 17654138f6bSKris Buschelman 1775a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_N(Mat, Mat, const MatFactorInfo *); 1785a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_1_inplace(Mat, Mat, const MatFactorInfo *); 1795a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_1(Mat, Mat, const MatFactorInfo *); 1805a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2_inplace(Mat, Mat, const MatFactorInfo *); 1815a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2(Mat, Mat, const MatFactorInfo *); 1825a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2_NaturalOrdering_inplace(Mat, Mat, const MatFactorInfo *); 1835a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 18406e38f1dSHong Zhang 1855a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3_inplace(Mat, Mat, const MatFactorInfo *); 1865a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3(Mat, Mat, const MatFactorInfo *); 1875a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace(Mat, Mat, const MatFactorInfo *); 1885a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 18906e38f1dSHong Zhang 1905a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_inplace(Mat, Mat, const MatFactorInfo *); 1915a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4(Mat, Mat, const MatFactorInfo *); 1925a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_inplace(Mat, Mat, const MatFactorInfo *); 1935a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 19454138f6bSKris Buschelman #if defined(PETSC_HAVE_SSE) 1955a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_SSE(Mat, Mat, const MatFactorInfo *); 1965a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_SSE_usj(Mat, Mat, const MatFactorInfo *); 19766976f2fSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatSetUnfactored_SeqBAIJ_4_NaturalOrdering_SSE(Mat); 19866976f2fSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatSetUnfactored_SeqBAIJ_4_NaturalOrdering_SSE_usj(Mat); 19954138f6bSKris Buschelman #endif 2005a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5_inplace(Mat, Mat, const MatFactorInfo *); 2015a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5(Mat, Mat, const MatFactorInfo *); 2025a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5_NaturalOrdering_inplace(Mat, Mat, const MatFactorInfo *); 2035a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 20406e38f1dSHong Zhang 2055a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6_inplace(Mat, Mat, const MatFactorInfo *); 2065a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6(Mat, Mat, const MatFactorInfo *); 2075a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6_NaturalOrdering_inplace(Mat, Mat, const MatFactorInfo *); 2085a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 20906e38f1dSHong Zhang 2105a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7_inplace(Mat, Mat, const MatFactorInfo *); 2115a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7(Mat, Mat, const MatFactorInfo *); 2125a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7_NaturalOrdering_inplace(Mat, Mat, const MatFactorInfo *); 2135a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 21406e38f1dSHong Zhang 21596e086a2SDaniel Kokron PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_9_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 2165a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_15_NaturalOrdering(Mat, Mat, const MatFactorInfo *); 2175a576424SJed Brown PETSC_INTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_N_inplace(Mat, Mat, const MatFactorInfo *); 21854138f6bSKris Buschelman 2195a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_1(Mat, Vec, Vec); 2205a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_2(Mat, Vec, Vec); 2215a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_3(Mat, Vec, Vec); 2225a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_4(Mat, Vec, Vec); 2235a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_5(Mat, Vec, Vec); 2245a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_6(Mat, Vec, Vec); 2255a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_7(Mat, Vec, Vec); 22696e086a2SDaniel Kokron PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_9_AVX2(Mat, Vec, Vec); 227ebada01fSBarry Smith PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_11(Mat, Vec, Vec); 2288ab949d8SShri Abhyankar 2296679dcc1SBarry Smith PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_12_ver1(Mat, Vec, Vec); 2306679dcc1SBarry Smith PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_12_ver2(Mat, Vec, Vec); 2316679dcc1SBarry Smith PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_12_AVX2(Mat, Vec, Vec); 2326679dcc1SBarry Smith PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_12_ver1(Mat, Vec, Vec, Vec); 2336679dcc1SBarry Smith PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_12_ver2(Mat, Vec, Vec, Vec); 2346679dcc1SBarry Smith 2355a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_15_ver1(Mat, Vec, Vec); 2365a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_15_ver2(Mat, Vec, Vec); 2375a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_15_ver3(Mat, Vec, Vec); 2385a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_15_ver4(Mat, Vec, Vec); 2398ab949d8SShri Abhyankar 2405a576424SJed Brown PETSC_INTERN PetscErrorCode MatMult_SeqBAIJ_N(Mat, Vec, Vec); 24154138f6bSKris Buschelman 2425a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_1(Mat, Vec, Vec, Vec); 2435a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_2(Mat, Vec, Vec, Vec); 2445a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_3(Mat, Vec, Vec, Vec); 2455a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_4(Mat, Vec, Vec, Vec); 2465a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_5(Mat, Vec, Vec, Vec); 2475a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_6(Mat, Vec, Vec, Vec); 2485a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_7(Mat, Vec, Vec, Vec); 24996e086a2SDaniel Kokron PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_9_AVX2(Mat, Vec, Vec, Vec); 250ebada01fSBarry Smith PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_11(Mat, Vec, Vec, Vec); 2515a576424SJed Brown PETSC_INTERN PetscErrorCode MatMultAdd_SeqBAIJ_N(Mat, Vec, Vec, Vec); 2525a576424SJed Brown PETSC_INTERN PetscErrorCode MatSeqBAIJSetNumericFactorization_inplace(Mat, PetscBool); 2535a576424SJed Brown PETSC_INTERN PetscErrorCode MatSeqBAIJSetNumericFactorization(Mat, PetscBool); 2548b1456e3SHong Zhang 25552768537SHong Zhang PETSC_INTERN PetscErrorCode MatGetRow_SeqBAIJ_private(Mat, PetscInt, PetscInt *, PetscInt **, PetscScalar **, PetscInt *, PetscInt *, PetscScalar *); 2564de5dceeSHong Zhang PETSC_INTERN PetscErrorCode MatAXPYGetPreallocation_SeqBAIJ(Mat, Mat, PetscInt *); 25752768537SHong Zhang 258bdf6f3fcSHong Zhang PETSC_INTERN PetscErrorCode MatCreateMPIMatConcatenateSeqMat_SeqBAIJ(MPI_Comm, Mat, PetscInt, MatReuse, Mat *); 259bdf6f3fcSHong Zhang PETSC_INTERN PetscErrorCode MatCreateMPIMatConcatenateSeqMat_MPIBAIJ(MPI_Comm, Mat, PetscInt, MatReuse, Mat *); 260bdf6f3fcSHong Zhang 261b51a4376SLisandro Dalcin PETSC_INTERN PetscErrorCode MatView_SeqBAIJ(Mat, PetscViewer); 262b51a4376SLisandro Dalcin PETSC_INTERN PetscErrorCode MatLoad_SeqBAIJ(Mat, PetscViewer); 263b51a4376SLisandro Dalcin PETSC_INTERN PetscErrorCode MatView_SeqBAIJ_Binary(Mat, PetscViewer); 264b51a4376SLisandro Dalcin PETSC_INTERN PetscErrorCode MatLoad_SeqBAIJ_Binary(Mat, PetscViewer); 265b51a4376SLisandro Dalcin 266c5d9258eSSatish Balay /* used by mpibaij.c */ 267c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatSetUpMultiply_MPIBAIJ(Mat); 268c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatDisAssemble_MPIBAIJ(Mat); 269c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatGetValues_SeqBAIJ(Mat, PetscInt, const PetscInt[], PetscInt, const PetscInt[], PetscScalar[]); 270c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatSetValues_SeqBAIJ(Mat, PetscInt, const PetscInt[], PetscInt, const PetscInt[], const PetscScalar[], InsertMode); 271c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatSetValuesBlocked_SeqBAIJ(Mat, PetscInt, const PetscInt[], PetscInt, const PetscInt[], const PetscScalar[], InsertMode); 272c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatGetRow_SeqBAIJ(Mat, PetscInt, PetscInt *, PetscInt *[], PetscScalar *[]); 273c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatRestoreRow_SeqBAIJ(Mat, PetscInt, PetscInt *, PetscInt *[], PetscScalar *[]); 274c5d9258eSSatish Balay PETSC_INTERN PetscErrorCode MatZeroRows_SeqBAIJ(Mat, PetscInt, const PetscInt[], PetscScalar, Vec, Vec); 275c5d9258eSSatish Balay 276f68bb481SHong Zhang PETSC_INTERN PetscErrorCode MatDestroySubMatrix_SeqBAIJ(Mat); 27786e85357SHong Zhang PETSC_INTERN PetscErrorCode MatDestroySubMatrices_SeqBAIJ(PetscInt, Mat *[]); 27816b64355SHong Zhang 27917ea310bSPierre Jolivet PETSC_INTERN PetscErrorCode MatEliminateZeros_SeqBAIJ(Mat, PetscBool); 28017ea310bSPierre Jolivet 2814c000e2eSHong Zhang /* 28296b95a6bSBarry Smith PetscKernel_A_gets_A_times_B_2: A = A * B with size bs=2 2834c000e2eSHong Zhang 2844c000e2eSHong Zhang Input Parameters: 2854c000e2eSHong Zhang + A,B - square bs by bs arrays stored in column major order 286a5b23f4aSJose E. Roman - W - bs*bs work array 2874c000e2eSHong Zhang 2884c000e2eSHong Zhang Output Parameter: 2894c000e2eSHong Zhang . A = A * B 2904c000e2eSHong Zhang */ 2914c000e2eSHong Zhang 292d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_2(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 293d71ae5a4SJacob Faibussowitsch { 2949566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 4)); 295f30536b4SBarry Smith A[0] = W[0] * B[0] + W[2] * B[1]; 296f30536b4SBarry Smith A[1] = W[1] * B[0] + W[3] * B[1]; 297f30536b4SBarry Smith A[2] = W[0] * B[2] + W[2] * B[3]; 298f30536b4SBarry Smith A[3] = W[1] * B[2] + W[3] * B[3]; 2993ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 3004c000e2eSHong Zhang } 3014c000e2eSHong Zhang 3024c000e2eSHong Zhang /* 30396b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_2: A = A - B * C with size bs=2 3044c000e2eSHong Zhang 3054c000e2eSHong Zhang Input Parameters: 3064c000e2eSHong Zhang + A,B,C - square bs by bs arrays stored in column major order 3074c000e2eSHong Zhang 3084c000e2eSHong Zhang Output Parameter: 3094c000e2eSHong Zhang . A = A - B*C 3104c000e2eSHong Zhang */ 3114c000e2eSHong Zhang 312d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_2(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 313d71ae5a4SJacob Faibussowitsch { 314f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[2] * C[1]; 315f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[3] * C[1]; 316f30536b4SBarry Smith A[2] -= B[0] * C[2] + B[2] * C[3]; 317f30536b4SBarry Smith A[3] -= B[1] * C[2] + B[3] * C[3]; 3183ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 3194c000e2eSHong Zhang } 3204c000e2eSHong Zhang 32117542729SShri Abhyankar /* 32296b95a6bSBarry Smith PetscKernel_A_gets_A_times_B_3: A = A * B with size bs=3 32317542729SShri Abhyankar 32417542729SShri Abhyankar Input Parameters: 32517542729SShri Abhyankar + A,B - square bs by bs arrays stored in column major order 326a5b23f4aSJose E. Roman - W - bs*bs work array 32717542729SShri Abhyankar 32817542729SShri Abhyankar Output Parameter: 32917542729SShri Abhyankar . A = A * B 33017542729SShri Abhyankar */ 33117542729SShri Abhyankar 332d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_3(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 333d71ae5a4SJacob Faibussowitsch { 3349566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 9)); 335f30536b4SBarry Smith A[0] = W[0] * B[0] + W[3] * B[1] + W[6] * B[2]; 336f30536b4SBarry Smith A[1] = W[1] * B[0] + W[4] * B[1] + W[7] * B[2]; 337f30536b4SBarry Smith A[2] = W[2] * B[0] + W[5] * B[1] + W[8] * B[2]; 338f30536b4SBarry Smith A[3] = W[0] * B[3] + W[3] * B[4] + W[6] * B[5]; 339f30536b4SBarry Smith A[4] = W[1] * B[3] + W[4] * B[4] + W[7] * B[5]; 340f30536b4SBarry Smith A[5] = W[2] * B[3] + W[5] * B[4] + W[8] * B[5]; 341f30536b4SBarry Smith A[6] = W[0] * B[6] + W[3] * B[7] + W[6] * B[8]; 342f30536b4SBarry Smith A[7] = W[1] * B[6] + W[4] * B[7] + W[7] * B[8]; 343f30536b4SBarry Smith A[8] = W[2] * B[6] + W[5] * B[7] + W[8] * B[8]; 3443ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 34517542729SShri Abhyankar } 34617542729SShri Abhyankar 34717542729SShri Abhyankar /* 34896b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_3: A = A - B * C with size bs=3 34917542729SShri Abhyankar 35017542729SShri Abhyankar Input Parameters: 35117542729SShri Abhyankar + A,B,C - square bs by bs arrays stored in column major order 35217542729SShri Abhyankar 35317542729SShri Abhyankar Output Parameter: 35417542729SShri Abhyankar . A = A - B*C 35517542729SShri Abhyankar */ 35617542729SShri Abhyankar 357d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_3(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 358d71ae5a4SJacob Faibussowitsch { 359f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[3] * C[1] + B[6] * C[2]; 360f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[4] * C[1] + B[7] * C[2]; 361f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[5] * C[1] + B[8] * C[2]; 362f30536b4SBarry Smith A[3] -= B[0] * C[3] + B[3] * C[4] + B[6] * C[5]; 363f30536b4SBarry Smith A[4] -= B[1] * C[3] + B[4] * C[4] + B[7] * C[5]; 364f30536b4SBarry Smith A[5] -= B[2] * C[3] + B[5] * C[4] + B[8] * C[5]; 365f30536b4SBarry Smith A[6] -= B[0] * C[6] + B[3] * C[7] + B[6] * C[8]; 366f30536b4SBarry Smith A[7] -= B[1] * C[6] + B[4] * C[7] + B[7] * C[8]; 367f30536b4SBarry Smith A[8] -= B[2] * C[6] + B[5] * C[7] + B[8] * C[8]; 3683ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 36917542729SShri Abhyankar } 37017542729SShri Abhyankar 371209027a4SShri Abhyankar /* 37296b95a6bSBarry Smith PetscKernel_A_gets_A_times_B_4: A = A * B with size bs=4 373209027a4SShri Abhyankar 374209027a4SShri Abhyankar Input Parameters: 375209027a4SShri Abhyankar + A,B - square bs by bs arrays stored in column major order 376a5b23f4aSJose E. Roman - W - bs*bs work array 377209027a4SShri Abhyankar 378209027a4SShri Abhyankar Output Parameter: 379209027a4SShri Abhyankar . A = A * B 380209027a4SShri Abhyankar */ 381209027a4SShri Abhyankar 382d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_4(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 383d71ae5a4SJacob Faibussowitsch { 3849566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 16)); 385f30536b4SBarry Smith A[0] = W[0] * B[0] + W[4] * B[1] + W[8] * B[2] + W[12] * B[3]; 386f30536b4SBarry Smith A[1] = W[1] * B[0] + W[5] * B[1] + W[9] * B[2] + W[13] * B[3]; 387f30536b4SBarry Smith A[2] = W[2] * B[0] + W[6] * B[1] + W[10] * B[2] + W[14] * B[3]; 388f30536b4SBarry Smith A[3] = W[3] * B[0] + W[7] * B[1] + W[11] * B[2] + W[15] * B[3]; 389f30536b4SBarry Smith A[4] = W[0] * B[4] + W[4] * B[5] + W[8] * B[6] + W[12] * B[7]; 390f30536b4SBarry Smith A[5] = W[1] * B[4] + W[5] * B[5] + W[9] * B[6] + W[13] * B[7]; 391f30536b4SBarry Smith A[6] = W[2] * B[4] + W[6] * B[5] + W[10] * B[6] + W[14] * B[7]; 392f30536b4SBarry Smith A[7] = W[3] * B[4] + W[7] * B[5] + W[11] * B[6] + W[15] * B[7]; 393f30536b4SBarry Smith A[8] = W[0] * B[8] + W[4] * B[9] + W[8] * B[10] + W[12] * B[11]; 394f30536b4SBarry Smith A[9] = W[1] * B[8] + W[5] * B[9] + W[9] * B[10] + W[13] * B[11]; 395f30536b4SBarry Smith A[10] = W[2] * B[8] + W[6] * B[9] + W[10] * B[10] + W[14] * B[11]; 396f30536b4SBarry Smith A[11] = W[3] * B[8] + W[7] * B[9] + W[11] * B[10] + W[15] * B[11]; 397f30536b4SBarry Smith A[12] = W[0] * B[12] + W[4] * B[13] + W[8] * B[14] + W[12] * B[15]; 398f30536b4SBarry Smith A[13] = W[1] * B[12] + W[5] * B[13] + W[9] * B[14] + W[13] * B[15]; 399f30536b4SBarry Smith A[14] = W[2] * B[12] + W[6] * B[13] + W[10] * B[14] + W[14] * B[15]; 400f30536b4SBarry Smith A[15] = W[3] * B[12] + W[7] * B[13] + W[11] * B[14] + W[15] * B[15]; 4013ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 402209027a4SShri Abhyankar } 403209027a4SShri Abhyankar 404209027a4SShri Abhyankar /* 40596b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_4: A = A - B * C with size bs=4 406209027a4SShri Abhyankar 407209027a4SShri Abhyankar Input Parameters: 408209027a4SShri Abhyankar + A,B,C - square bs by bs arrays stored in column major order 409209027a4SShri Abhyankar 410209027a4SShri Abhyankar Output Parameter: 411209027a4SShri Abhyankar . A = A - B*C 412209027a4SShri Abhyankar */ 413209027a4SShri Abhyankar 414d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_4(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 415d71ae5a4SJacob Faibussowitsch { 416f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[4] * C[1] + B[8] * C[2] + B[12] * C[3]; 417f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[5] * C[1] + B[9] * C[2] + B[13] * C[3]; 418f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[6] * C[1] + B[10] * C[2] + B[14] * C[3]; 419f30536b4SBarry Smith A[3] -= B[3] * C[0] + B[7] * C[1] + B[11] * C[2] + B[15] * C[3]; 420f30536b4SBarry Smith A[4] -= B[0] * C[4] + B[4] * C[5] + B[8] * C[6] + B[12] * C[7]; 421f30536b4SBarry Smith A[5] -= B[1] * C[4] + B[5] * C[5] + B[9] * C[6] + B[13] * C[7]; 422f30536b4SBarry Smith A[6] -= B[2] * C[4] + B[6] * C[5] + B[10] * C[6] + B[14] * C[7]; 423f30536b4SBarry Smith A[7] -= B[3] * C[4] + B[7] * C[5] + B[11] * C[6] + B[15] * C[7]; 424f30536b4SBarry Smith A[8] -= B[0] * C[8] + B[4] * C[9] + B[8] * C[10] + B[12] * C[11]; 425f30536b4SBarry Smith A[9] -= B[1] * C[8] + B[5] * C[9] + B[9] * C[10] + B[13] * C[11]; 426f30536b4SBarry Smith A[10] -= B[2] * C[8] + B[6] * C[9] + B[10] * C[10] + B[14] * C[11]; 427f30536b4SBarry Smith A[11] -= B[3] * C[8] + B[7] * C[9] + B[11] * C[10] + B[15] * C[11]; 428f30536b4SBarry Smith A[12] -= B[0] * C[12] + B[4] * C[13] + B[8] * C[14] + B[12] * C[15]; 429f30536b4SBarry Smith A[13] -= B[1] * C[12] + B[5] * C[13] + B[9] * C[14] + B[13] * C[15]; 430f30536b4SBarry Smith A[14] -= B[2] * C[12] + B[6] * C[13] + B[10] * C[14] + B[14] * C[15]; 431f30536b4SBarry Smith A[15] -= B[3] * C[12] + B[7] * C[13] + B[11] * C[14] + B[15] * C[15]; 4323ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 433209027a4SShri Abhyankar } 434209027a4SShri Abhyankar 435d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_5(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 436d71ae5a4SJacob Faibussowitsch { 4379566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 25)); 438f30536b4SBarry Smith A[0] = W[0] * B[0] + W[5] * B[1] + W[10] * B[2] + W[15] * B[3] + W[20] * B[4]; 439f30536b4SBarry Smith A[1] = W[1] * B[0] + W[6] * B[1] + W[11] * B[2] + W[16] * B[3] + W[21] * B[4]; 440f30536b4SBarry Smith A[2] = W[2] * B[0] + W[7] * B[1] + W[12] * B[2] + W[17] * B[3] + W[22] * B[4]; 441f30536b4SBarry Smith A[3] = W[3] * B[0] + W[8] * B[1] + W[13] * B[2] + W[18] * B[3] + W[23] * B[4]; 442f30536b4SBarry Smith A[4] = W[4] * B[0] + W[9] * B[1] + W[14] * B[2] + W[19] * B[3] + W[24] * B[4]; 443f30536b4SBarry Smith A[5] = W[0] * B[5] + W[5] * B[6] + W[10] * B[7] + W[15] * B[8] + W[20] * B[9]; 444f30536b4SBarry Smith A[6] = W[1] * B[5] + W[6] * B[6] + W[11] * B[7] + W[16] * B[8] + W[21] * B[9]; 445f30536b4SBarry Smith A[7] = W[2] * B[5] + W[7] * B[6] + W[12] * B[7] + W[17] * B[8] + W[22] * B[9]; 446f30536b4SBarry Smith A[8] = W[3] * B[5] + W[8] * B[6] + W[13] * B[7] + W[18] * B[8] + W[23] * B[9]; 447f30536b4SBarry Smith A[9] = W[4] * B[5] + W[9] * B[6] + W[14] * B[7] + W[19] * B[8] + W[24] * B[9]; 448f30536b4SBarry Smith A[10] = W[0] * B[10] + W[5] * B[11] + W[10] * B[12] + W[15] * B[13] + W[20] * B[14]; 449f30536b4SBarry Smith A[11] = W[1] * B[10] + W[6] * B[11] + W[11] * B[12] + W[16] * B[13] + W[21] * B[14]; 450f30536b4SBarry Smith A[12] = W[2] * B[10] + W[7] * B[11] + W[12] * B[12] + W[17] * B[13] + W[22] * B[14]; 451f30536b4SBarry Smith A[13] = W[3] * B[10] + W[8] * B[11] + W[13] * B[12] + W[18] * B[13] + W[23] * B[14]; 452f30536b4SBarry Smith A[14] = W[4] * B[10] + W[9] * B[11] + W[14] * B[12] + W[19] * B[13] + W[24] * B[14]; 453f30536b4SBarry Smith A[15] = W[0] * B[15] + W[5] * B[16] + W[10] * B[17] + W[15] * B[18] + W[20] * B[19]; 454f30536b4SBarry Smith A[16] = W[1] * B[15] + W[6] * B[16] + W[11] * B[17] + W[16] * B[18] + W[21] * B[19]; 455f30536b4SBarry Smith A[17] = W[2] * B[15] + W[7] * B[16] + W[12] * B[17] + W[17] * B[18] + W[22] * B[19]; 456f30536b4SBarry Smith A[18] = W[3] * B[15] + W[8] * B[16] + W[13] * B[17] + W[18] * B[18] + W[23] * B[19]; 457f30536b4SBarry Smith A[19] = W[4] * B[15] + W[9] * B[16] + W[14] * B[17] + W[19] * B[18] + W[24] * B[19]; 458f30536b4SBarry Smith A[20] = W[0] * B[20] + W[5] * B[21] + W[10] * B[22] + W[15] * B[23] + W[20] * B[24]; 459f30536b4SBarry Smith A[21] = W[1] * B[20] + W[6] * B[21] + W[11] * B[22] + W[16] * B[23] + W[21] * B[24]; 460f30536b4SBarry Smith A[22] = W[2] * B[20] + W[7] * B[21] + W[12] * B[22] + W[17] * B[23] + W[22] * B[24]; 461f30536b4SBarry Smith A[23] = W[3] * B[20] + W[8] * B[21] + W[13] * B[22] + W[18] * B[23] + W[23] * B[24]; 462f30536b4SBarry Smith A[24] = W[4] * B[20] + W[9] * B[21] + W[14] * B[22] + W[19] * B[23] + W[24] * B[24]; 4633ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 4640deeaf61SShri Abhyankar } 4650deeaf61SShri Abhyankar 4660deeaf61SShri Abhyankar /* 46796b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_5: A = A - B * C with size bs=5 4680deeaf61SShri Abhyankar 4690deeaf61SShri Abhyankar Input Parameters: 4700deeaf61SShri Abhyankar + A,B,C - square bs by bs arrays stored in column major order 4710deeaf61SShri Abhyankar 4720deeaf61SShri Abhyankar Output Parameter: 4730deeaf61SShri Abhyankar . A = A - B*C 4740deeaf61SShri Abhyankar */ 4750deeaf61SShri Abhyankar 476d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_5(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 477d71ae5a4SJacob Faibussowitsch { 478f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[5] * C[1] + B[10] * C[2] + B[15] * C[3] + B[20] * C[4]; 479f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[6] * C[1] + B[11] * C[2] + B[16] * C[3] + B[21] * C[4]; 480f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[7] * C[1] + B[12] * C[2] + B[17] * C[3] + B[22] * C[4]; 481f30536b4SBarry Smith A[3] -= B[3] * C[0] + B[8] * C[1] + B[13] * C[2] + B[18] * C[3] + B[23] * C[4]; 482f30536b4SBarry Smith A[4] -= B[4] * C[0] + B[9] * C[1] + B[14] * C[2] + B[19] * C[3] + B[24] * C[4]; 483f30536b4SBarry Smith A[5] -= B[0] * C[5] + B[5] * C[6] + B[10] * C[7] + B[15] * C[8] + B[20] * C[9]; 484f30536b4SBarry Smith A[6] -= B[1] * C[5] + B[6] * C[6] + B[11] * C[7] + B[16] * C[8] + B[21] * C[9]; 485f30536b4SBarry Smith A[7] -= B[2] * C[5] + B[7] * C[6] + B[12] * C[7] + B[17] * C[8] + B[22] * C[9]; 486f30536b4SBarry Smith A[8] -= B[3] * C[5] + B[8] * C[6] + B[13] * C[7] + B[18] * C[8] + B[23] * C[9]; 487f30536b4SBarry Smith A[9] -= B[4] * C[5] + B[9] * C[6] + B[14] * C[7] + B[19] * C[8] + B[24] * C[9]; 488f30536b4SBarry Smith A[10] -= B[0] * C[10] + B[5] * C[11] + B[10] * C[12] + B[15] * C[13] + B[20] * C[14]; 489f30536b4SBarry Smith A[11] -= B[1] * C[10] + B[6] * C[11] + B[11] * C[12] + B[16] * C[13] + B[21] * C[14]; 490f30536b4SBarry Smith A[12] -= B[2] * C[10] + B[7] * C[11] + B[12] * C[12] + B[17] * C[13] + B[22] * C[14]; 491f30536b4SBarry Smith A[13] -= B[3] * C[10] + B[8] * C[11] + B[13] * C[12] + B[18] * C[13] + B[23] * C[14]; 492f30536b4SBarry Smith A[14] -= B[4] * C[10] + B[9] * C[11] + B[14] * C[12] + B[19] * C[13] + B[24] * C[14]; 493f30536b4SBarry Smith A[15] -= B[0] * C[15] + B[5] * C[16] + B[10] * C[17] + B[15] * C[18] + B[20] * C[19]; 494f30536b4SBarry Smith A[16] -= B[1] * C[15] + B[6] * C[16] + B[11] * C[17] + B[16] * C[18] + B[21] * C[19]; 495f30536b4SBarry Smith A[17] -= B[2] * C[15] + B[7] * C[16] + B[12] * C[17] + B[17] * C[18] + B[22] * C[19]; 496f30536b4SBarry Smith A[18] -= B[3] * C[15] + B[8] * C[16] + B[13] * C[17] + B[18] * C[18] + B[23] * C[19]; 497f30536b4SBarry Smith A[19] -= B[4] * C[15] + B[9] * C[16] + B[14] * C[17] + B[19] * C[18] + B[24] * C[19]; 498f30536b4SBarry Smith A[20] -= B[0] * C[20] + B[5] * C[21] + B[10] * C[22] + B[15] * C[23] + B[20] * C[24]; 499f30536b4SBarry Smith A[21] -= B[1] * C[20] + B[6] * C[21] + B[11] * C[22] + B[16] * C[23] + B[21] * C[24]; 500f30536b4SBarry Smith A[22] -= B[2] * C[20] + B[7] * C[21] + B[12] * C[22] + B[17] * C[23] + B[22] * C[24]; 501f30536b4SBarry Smith A[23] -= B[3] * C[20] + B[8] * C[21] + B[13] * C[22] + B[18] * C[23] + B[23] * C[24]; 502f30536b4SBarry Smith A[24] -= B[4] * C[20] + B[9] * C[21] + B[14] * C[22] + B[19] * C[23] + B[24] * C[24]; 5033ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 5040deeaf61SShri Abhyankar } 5050deeaf61SShri Abhyankar 506d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_6(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 507d71ae5a4SJacob Faibussowitsch { 5089566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 36)); 509f30536b4SBarry Smith A[0] = W[0] * B[0] + W[6] * B[1] + W[12] * B[2] + W[18] * B[3] + W[24] * B[4] + W[30] * B[5]; 510f30536b4SBarry Smith A[1] = W[1] * B[0] + W[7] * B[1] + W[13] * B[2] + W[19] * B[3] + W[25] * B[4] + W[31] * B[5]; 511f30536b4SBarry Smith A[2] = W[2] * B[0] + W[8] * B[1] + W[14] * B[2] + W[20] * B[3] + W[26] * B[4] + W[32] * B[5]; 512f30536b4SBarry Smith A[3] = W[3] * B[0] + W[9] * B[1] + W[15] * B[2] + W[21] * B[3] + W[27] * B[4] + W[33] * B[5]; 513f30536b4SBarry Smith A[4] = W[4] * B[0] + W[10] * B[1] + W[16] * B[2] + W[22] * B[3] + W[28] * B[4] + W[34] * B[5]; 514f30536b4SBarry Smith A[5] = W[5] * B[0] + W[11] * B[1] + W[17] * B[2] + W[23] * B[3] + W[29] * B[4] + W[35] * B[5]; 515f30536b4SBarry Smith A[6] = W[0] * B[6] + W[6] * B[7] + W[12] * B[8] + W[18] * B[9] + W[24] * B[10] + W[30] * B[11]; 516f30536b4SBarry Smith A[7] = W[1] * B[6] + W[7] * B[7] + W[13] * B[8] + W[19] * B[9] + W[25] * B[10] + W[31] * B[11]; 517f30536b4SBarry Smith A[8] = W[2] * B[6] + W[8] * B[7] + W[14] * B[8] + W[20] * B[9] + W[26] * B[10] + W[32] * B[11]; 518f30536b4SBarry Smith A[9] = W[3] * B[6] + W[9] * B[7] + W[15] * B[8] + W[21] * B[9] + W[27] * B[10] + W[33] * B[11]; 519f30536b4SBarry Smith A[10] = W[4] * B[6] + W[10] * B[7] + W[16] * B[8] + W[22] * B[9] + W[28] * B[10] + W[34] * B[11]; 520f30536b4SBarry Smith A[11] = W[5] * B[6] + W[11] * B[7] + W[17] * B[8] + W[23] * B[9] + W[29] * B[10] + W[35] * B[11]; 521f30536b4SBarry Smith A[12] = W[0] * B[12] + W[6] * B[13] + W[12] * B[14] + W[18] * B[15] + W[24] * B[16] + W[30] * B[17]; 522f30536b4SBarry Smith A[13] = W[1] * B[12] + W[7] * B[13] + W[13] * B[14] + W[19] * B[15] + W[25] * B[16] + W[31] * B[17]; 523f30536b4SBarry Smith A[14] = W[2] * B[12] + W[8] * B[13] + W[14] * B[14] + W[20] * B[15] + W[26] * B[16] + W[32] * B[17]; 524f30536b4SBarry Smith A[15] = W[3] * B[12] + W[9] * B[13] + W[15] * B[14] + W[21] * B[15] + W[27] * B[16] + W[33] * B[17]; 525f30536b4SBarry Smith A[16] = W[4] * B[12] + W[10] * B[13] + W[16] * B[14] + W[22] * B[15] + W[28] * B[16] + W[34] * B[17]; 526f30536b4SBarry Smith A[17] = W[5] * B[12] + W[11] * B[13] + W[17] * B[14] + W[23] * B[15] + W[29] * B[16] + W[35] * B[17]; 527f30536b4SBarry Smith A[18] = W[0] * B[18] + W[6] * B[19] + W[12] * B[20] + W[18] * B[21] + W[24] * B[22] + W[30] * B[23]; 528f30536b4SBarry Smith A[19] = W[1] * B[18] + W[7] * B[19] + W[13] * B[20] + W[19] * B[21] + W[25] * B[22] + W[31] * B[23]; 529f30536b4SBarry Smith A[20] = W[2] * B[18] + W[8] * B[19] + W[14] * B[20] + W[20] * B[21] + W[26] * B[22] + W[32] * B[23]; 530f30536b4SBarry Smith A[21] = W[3] * B[18] + W[9] * B[19] + W[15] * B[20] + W[21] * B[21] + W[27] * B[22] + W[33] * B[23]; 531f30536b4SBarry Smith A[22] = W[4] * B[18] + W[10] * B[19] + W[16] * B[20] + W[22] * B[21] + W[28] * B[22] + W[34] * B[23]; 532f30536b4SBarry Smith A[23] = W[5] * B[18] + W[11] * B[19] + W[17] * B[20] + W[23] * B[21] + W[29] * B[22] + W[35] * B[23]; 533f30536b4SBarry Smith A[24] = W[0] * B[24] + W[6] * B[25] + W[12] * B[26] + W[18] * B[27] + W[24] * B[28] + W[30] * B[29]; 534f30536b4SBarry Smith A[25] = W[1] * B[24] + W[7] * B[25] + W[13] * B[26] + W[19] * B[27] + W[25] * B[28] + W[31] * B[29]; 535f30536b4SBarry Smith A[26] = W[2] * B[24] + W[8] * B[25] + W[14] * B[26] + W[20] * B[27] + W[26] * B[28] + W[32] * B[29]; 536f30536b4SBarry Smith A[27] = W[3] * B[24] + W[9] * B[25] + W[15] * B[26] + W[21] * B[27] + W[27] * B[28] + W[33] * B[29]; 537f30536b4SBarry Smith A[28] = W[4] * B[24] + W[10] * B[25] + W[16] * B[26] + W[22] * B[27] + W[28] * B[28] + W[34] * B[29]; 538f30536b4SBarry Smith A[29] = W[5] * B[24] + W[11] * B[25] + W[17] * B[26] + W[23] * B[27] + W[29] * B[28] + W[35] * B[29]; 539f30536b4SBarry Smith A[30] = W[0] * B[30] + W[6] * B[31] + W[12] * B[32] + W[18] * B[33] + W[24] * B[34] + W[30] * B[35]; 540f30536b4SBarry Smith A[31] = W[1] * B[30] + W[7] * B[31] + W[13] * B[32] + W[19] * B[33] + W[25] * B[34] + W[31] * B[35]; 541f30536b4SBarry Smith A[32] = W[2] * B[30] + W[8] * B[31] + W[14] * B[32] + W[20] * B[33] + W[26] * B[34] + W[32] * B[35]; 542f30536b4SBarry Smith A[33] = W[3] * B[30] + W[9] * B[31] + W[15] * B[32] + W[21] * B[33] + W[27] * B[34] + W[33] * B[35]; 543f30536b4SBarry Smith A[34] = W[4] * B[30] + W[10] * B[31] + W[16] * B[32] + W[22] * B[33] + W[28] * B[34] + W[34] * B[35]; 544f30536b4SBarry Smith A[35] = W[5] * B[30] + W[11] * B[31] + W[17] * B[32] + W[23] * B[33] + W[29] * B[34] + W[35] * B[35]; 5453ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 546bef36659SShri Abhyankar } 547bef36659SShri Abhyankar 548bef36659SShri Abhyankar /* 54996b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_6: A = A - B * C with size bs=6 550bef36659SShri Abhyankar 551bef36659SShri Abhyankar Input Parameters: 552bef36659SShri Abhyankar + A,B,C - square bs by bs arrays stored in column major order 553bef36659SShri Abhyankar 554bef36659SShri Abhyankar Output Parameter: 555bef36659SShri Abhyankar . A = A - B*C 556bef36659SShri Abhyankar */ 557bef36659SShri Abhyankar 558d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_6(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 559d71ae5a4SJacob Faibussowitsch { 560f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[6] * C[1] + B[12] * C[2] + B[18] * C[3] + B[24] * C[4] + B[30] * C[5]; 561f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[7] * C[1] + B[13] * C[2] + B[19] * C[3] + B[25] * C[4] + B[31] * C[5]; 562f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[8] * C[1] + B[14] * C[2] + B[20] * C[3] + B[26] * C[4] + B[32] * C[5]; 563f30536b4SBarry Smith A[3] -= B[3] * C[0] + B[9] * C[1] + B[15] * C[2] + B[21] * C[3] + B[27] * C[4] + B[33] * C[5]; 564f30536b4SBarry Smith A[4] -= B[4] * C[0] + B[10] * C[1] + B[16] * C[2] + B[22] * C[3] + B[28] * C[4] + B[34] * C[5]; 565f30536b4SBarry Smith A[5] -= B[5] * C[0] + B[11] * C[1] + B[17] * C[2] + B[23] * C[3] + B[29] * C[4] + B[35] * C[5]; 566f30536b4SBarry Smith A[6] -= B[0] * C[6] + B[6] * C[7] + B[12] * C[8] + B[18] * C[9] + B[24] * C[10] + B[30] * C[11]; 567f30536b4SBarry Smith A[7] -= B[1] * C[6] + B[7] * C[7] + B[13] * C[8] + B[19] * C[9] + B[25] * C[10] + B[31] * C[11]; 568f30536b4SBarry Smith A[8] -= B[2] * C[6] + B[8] * C[7] + B[14] * C[8] + B[20] * C[9] + B[26] * C[10] + B[32] * C[11]; 569f30536b4SBarry Smith A[9] -= B[3] * C[6] + B[9] * C[7] + B[15] * C[8] + B[21] * C[9] + B[27] * C[10] + B[33] * C[11]; 570f30536b4SBarry Smith A[10] -= B[4] * C[6] + B[10] * C[7] + B[16] * C[8] + B[22] * C[9] + B[28] * C[10] + B[34] * C[11]; 571f30536b4SBarry Smith A[11] -= B[5] * C[6] + B[11] * C[7] + B[17] * C[8] + B[23] * C[9] + B[29] * C[10] + B[35] * C[11]; 572f30536b4SBarry Smith A[12] -= B[0] * C[12] + B[6] * C[13] + B[12] * C[14] + B[18] * C[15] + B[24] * C[16] + B[30] * C[17]; 573f30536b4SBarry Smith A[13] -= B[1] * C[12] + B[7] * C[13] + B[13] * C[14] + B[19] * C[15] + B[25] * C[16] + B[31] * C[17]; 574f30536b4SBarry Smith A[14] -= B[2] * C[12] + B[8] * C[13] + B[14] * C[14] + B[20] * C[15] + B[26] * C[16] + B[32] * C[17]; 575f30536b4SBarry Smith A[15] -= B[3] * C[12] + B[9] * C[13] + B[15] * C[14] + B[21] * C[15] + B[27] * C[16] + B[33] * C[17]; 576f30536b4SBarry Smith A[16] -= B[4] * C[12] + B[10] * C[13] + B[16] * C[14] + B[22] * C[15] + B[28] * C[16] + B[34] * C[17]; 577f30536b4SBarry Smith A[17] -= B[5] * C[12] + B[11] * C[13] + B[17] * C[14] + B[23] * C[15] + B[29] * C[16] + B[35] * C[17]; 578f30536b4SBarry Smith A[18] -= B[0] * C[18] + B[6] * C[19] + B[12] * C[20] + B[18] * C[21] + B[24] * C[22] + B[30] * C[23]; 579f30536b4SBarry Smith A[19] -= B[1] * C[18] + B[7] * C[19] + B[13] * C[20] + B[19] * C[21] + B[25] * C[22] + B[31] * C[23]; 580f30536b4SBarry Smith A[20] -= B[2] * C[18] + B[8] * C[19] + B[14] * C[20] + B[20] * C[21] + B[26] * C[22] + B[32] * C[23]; 581f30536b4SBarry Smith A[21] -= B[3] * C[18] + B[9] * C[19] + B[15] * C[20] + B[21] * C[21] + B[27] * C[22] + B[33] * C[23]; 582f30536b4SBarry Smith A[22] -= B[4] * C[18] + B[10] * C[19] + B[16] * C[20] + B[22] * C[21] + B[28] * C[22] + B[34] * C[23]; 583f30536b4SBarry Smith A[23] -= B[5] * C[18] + B[11] * C[19] + B[17] * C[20] + B[23] * C[21] + B[29] * C[22] + B[35] * C[23]; 584f30536b4SBarry Smith A[24] -= B[0] * C[24] + B[6] * C[25] + B[12] * C[26] + B[18] * C[27] + B[24] * C[28] + B[30] * C[29]; 585f30536b4SBarry Smith A[25] -= B[1] * C[24] + B[7] * C[25] + B[13] * C[26] + B[19] * C[27] + B[25] * C[28] + B[31] * C[29]; 586f30536b4SBarry Smith A[26] -= B[2] * C[24] + B[8] * C[25] + B[14] * C[26] + B[20] * C[27] + B[26] * C[28] + B[32] * C[29]; 587f30536b4SBarry Smith A[27] -= B[3] * C[24] + B[9] * C[25] + B[15] * C[26] + B[21] * C[27] + B[27] * C[28] + B[33] * C[29]; 588f30536b4SBarry Smith A[28] -= B[4] * C[24] + B[10] * C[25] + B[16] * C[26] + B[22] * C[27] + B[28] * C[28] + B[34] * C[29]; 589f30536b4SBarry Smith A[29] -= B[5] * C[24] + B[11] * C[25] + B[17] * C[26] + B[23] * C[27] + B[29] * C[28] + B[35] * C[29]; 590f30536b4SBarry Smith A[30] -= B[0] * C[30] + B[6] * C[31] + B[12] * C[32] + B[18] * C[33] + B[24] * C[34] + B[30] * C[35]; 591f30536b4SBarry Smith A[31] -= B[1] * C[30] + B[7] * C[31] + B[13] * C[32] + B[19] * C[33] + B[25] * C[34] + B[31] * C[35]; 592f30536b4SBarry Smith A[32] -= B[2] * C[30] + B[8] * C[31] + B[14] * C[32] + B[20] * C[33] + B[26] * C[34] + B[32] * C[35]; 593f30536b4SBarry Smith A[33] -= B[3] * C[30] + B[9] * C[31] + B[15] * C[32] + B[21] * C[33] + B[27] * C[34] + B[33] * C[35]; 594f30536b4SBarry Smith A[34] -= B[4] * C[30] + B[10] * C[31] + B[16] * C[32] + B[22] * C[33] + B[28] * C[34] + B[34] * C[35]; 595f30536b4SBarry Smith A[35] -= B[5] * C[30] + B[11] * C[31] + B[17] * C[32] + B[23] * C[33] + B[29] * C[34] + B[35] * C[35]; 5963ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 597bef36659SShri Abhyankar } 598bef36659SShri Abhyankar 599d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_7(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 600d71ae5a4SJacob Faibussowitsch { 6019566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 49)); 602f30536b4SBarry Smith A[0] = W[0] * B[0] + W[7] * B[1] + W[14] * B[2] + W[21] * B[3] + W[28] * B[4] + W[35] * B[5] + W[42] * B[6]; 603f30536b4SBarry Smith A[1] = W[1] * B[0] + W[8] * B[1] + W[15] * B[2] + W[22] * B[3] + W[29] * B[4] + W[36] * B[5] + W[43] * B[6]; 604f30536b4SBarry Smith A[2] = W[2] * B[0] + W[9] * B[1] + W[16] * B[2] + W[23] * B[3] + W[30] * B[4] + W[37] * B[5] + W[44] * B[6]; 605f30536b4SBarry Smith A[3] = W[3] * B[0] + W[10] * B[1] + W[17] * B[2] + W[24] * B[3] + W[31] * B[4] + W[38] * B[5] + W[45] * B[6]; 606f30536b4SBarry Smith A[4] = W[4] * B[0] + W[11] * B[1] + W[18] * B[2] + W[25] * B[3] + W[32] * B[4] + W[39] * B[5] + W[46] * B[6]; 607f30536b4SBarry Smith A[5] = W[5] * B[0] + W[12] * B[1] + W[19] * B[2] + W[26] * B[3] + W[33] * B[4] + W[40] * B[5] + W[47] * B[6]; 608f30536b4SBarry Smith A[6] = W[6] * B[0] + W[13] * B[1] + W[20] * B[2] + W[27] * B[3] + W[34] * B[4] + W[41] * B[5] + W[48] * B[6]; 609f30536b4SBarry Smith A[7] = W[0] * B[7] + W[7] * B[8] + W[14] * B[9] + W[21] * B[10] + W[28] * B[11] + W[35] * B[12] + W[42] * B[13]; 610f30536b4SBarry Smith A[8] = W[1] * B[7] + W[8] * B[8] + W[15] * B[9] + W[22] * B[10] + W[29] * B[11] + W[36] * B[12] + W[43] * B[13]; 611f30536b4SBarry Smith A[9] = W[2] * B[7] + W[9] * B[8] + W[16] * B[9] + W[23] * B[10] + W[30] * B[11] + W[37] * B[12] + W[44] * B[13]; 612f30536b4SBarry Smith A[10] = W[3] * B[7] + W[10] * B[8] + W[17] * B[9] + W[24] * B[10] + W[31] * B[11] + W[38] * B[12] + W[45] * B[13]; 613f30536b4SBarry Smith A[11] = W[4] * B[7] + W[11] * B[8] + W[18] * B[9] + W[25] * B[10] + W[32] * B[11] + W[39] * B[12] + W[46] * B[13]; 614f30536b4SBarry Smith A[12] = W[5] * B[7] + W[12] * B[8] + W[19] * B[9] + W[26] * B[10] + W[33] * B[11] + W[40] * B[12] + W[47] * B[13]; 615f30536b4SBarry Smith A[13] = W[6] * B[7] + W[13] * B[8] + W[20] * B[9] + W[27] * B[10] + W[34] * B[11] + W[41] * B[12] + W[48] * B[13]; 616f30536b4SBarry Smith A[14] = W[0] * B[14] + W[7] * B[15] + W[14] * B[16] + W[21] * B[17] + W[28] * B[18] + W[35] * B[19] + W[42] * B[20]; 617f30536b4SBarry Smith A[15] = W[1] * B[14] + W[8] * B[15] + W[15] * B[16] + W[22] * B[17] + W[29] * B[18] + W[36] * B[19] + W[43] * B[20]; 618f30536b4SBarry Smith A[16] = W[2] * B[14] + W[9] * B[15] + W[16] * B[16] + W[23] * B[17] + W[30] * B[18] + W[37] * B[19] + W[44] * B[20]; 619f30536b4SBarry Smith A[17] = W[3] * B[14] + W[10] * B[15] + W[17] * B[16] + W[24] * B[17] + W[31] * B[18] + W[38] * B[19] + W[45] * B[20]; 620f30536b4SBarry Smith A[18] = W[4] * B[14] + W[11] * B[15] + W[18] * B[16] + W[25] * B[17] + W[32] * B[18] + W[39] * B[19] + W[46] * B[20]; 621f30536b4SBarry Smith A[19] = W[5] * B[14] + W[12] * B[15] + W[19] * B[16] + W[26] * B[17] + W[33] * B[18] + W[40] * B[19] + W[47] * B[20]; 622f30536b4SBarry Smith A[20] = W[6] * B[14] + W[13] * B[15] + W[20] * B[16] + W[27] * B[17] + W[34] * B[18] + W[41] * B[19] + W[48] * B[20]; 623f30536b4SBarry Smith A[21] = W[0] * B[21] + W[7] * B[22] + W[14] * B[23] + W[21] * B[24] + W[28] * B[25] + W[35] * B[26] + W[42] * B[27]; 624f30536b4SBarry Smith A[22] = W[1] * B[21] + W[8] * B[22] + W[15] * B[23] + W[22] * B[24] + W[29] * B[25] + W[36] * B[26] + W[43] * B[27]; 625f30536b4SBarry Smith A[23] = W[2] * B[21] + W[9] * B[22] + W[16] * B[23] + W[23] * B[24] + W[30] * B[25] + W[37] * B[26] + W[44] * B[27]; 626f30536b4SBarry Smith A[24] = W[3] * B[21] + W[10] * B[22] + W[17] * B[23] + W[24] * B[24] + W[31] * B[25] + W[38] * B[26] + W[45] * B[27]; 627f30536b4SBarry Smith A[25] = W[4] * B[21] + W[11] * B[22] + W[18] * B[23] + W[25] * B[24] + W[32] * B[25] + W[39] * B[26] + W[46] * B[27]; 628f30536b4SBarry Smith A[26] = W[5] * B[21] + W[12] * B[22] + W[19] * B[23] + W[26] * B[24] + W[33] * B[25] + W[40] * B[26] + W[47] * B[27]; 629f30536b4SBarry Smith A[27] = W[6] * B[21] + W[13] * B[22] + W[20] * B[23] + W[27] * B[24] + W[34] * B[25] + W[41] * B[26] + W[48] * B[27]; 630f30536b4SBarry Smith A[28] = W[0] * B[28] + W[7] * B[29] + W[14] * B[30] + W[21] * B[31] + W[28] * B[32] + W[35] * B[33] + W[42] * B[34]; 631f30536b4SBarry Smith A[29] = W[1] * B[28] + W[8] * B[29] + W[15] * B[30] + W[22] * B[31] + W[29] * B[32] + W[36] * B[33] + W[43] * B[34]; 632f30536b4SBarry Smith A[30] = W[2] * B[28] + W[9] * B[29] + W[16] * B[30] + W[23] * B[31] + W[30] * B[32] + W[37] * B[33] + W[44] * B[34]; 633f30536b4SBarry Smith A[31] = W[3] * B[28] + W[10] * B[29] + W[17] * B[30] + W[24] * B[31] + W[31] * B[32] + W[38] * B[33] + W[45] * B[34]; 634f30536b4SBarry Smith A[32] = W[4] * B[28] + W[11] * B[29] + W[18] * B[30] + W[25] * B[31] + W[32] * B[32] + W[39] * B[33] + W[46] * B[34]; 635f30536b4SBarry Smith A[33] = W[5] * B[28] + W[12] * B[29] + W[19] * B[30] + W[26] * B[31] + W[33] * B[32] + W[40] * B[33] + W[47] * B[34]; 636f30536b4SBarry Smith A[34] = W[6] * B[28] + W[13] * B[29] + W[20] * B[30] + W[27] * B[31] + W[34] * B[32] + W[41] * B[33] + W[48] * B[34]; 637f30536b4SBarry Smith A[35] = W[0] * B[35] + W[7] * B[36] + W[14] * B[37] + W[21] * B[38] + W[28] * B[39] + W[35] * B[40] + W[42] * B[41]; 638f30536b4SBarry Smith A[36] = W[1] * B[35] + W[8] * B[36] + W[15] * B[37] + W[22] * B[38] + W[29] * B[39] + W[36] * B[40] + W[43] * B[41]; 639f30536b4SBarry Smith A[37] = W[2] * B[35] + W[9] * B[36] + W[16] * B[37] + W[23] * B[38] + W[30] * B[39] + W[37] * B[40] + W[44] * B[41]; 640f30536b4SBarry Smith A[38] = W[3] * B[35] + W[10] * B[36] + W[17] * B[37] + W[24] * B[38] + W[31] * B[39] + W[38] * B[40] + W[45] * B[41]; 641f30536b4SBarry Smith A[39] = W[4] * B[35] + W[11] * B[36] + W[18] * B[37] + W[25] * B[38] + W[32] * B[39] + W[39] * B[40] + W[46] * B[41]; 642f30536b4SBarry Smith A[40] = W[5] * B[35] + W[12] * B[36] + W[19] * B[37] + W[26] * B[38] + W[33] * B[39] + W[40] * B[40] + W[47] * B[41]; 643f30536b4SBarry Smith A[41] = W[6] * B[35] + W[13] * B[36] + W[20] * B[37] + W[27] * B[38] + W[34] * B[39] + W[41] * B[40] + W[48] * B[41]; 644f30536b4SBarry Smith A[42] = W[0] * B[42] + W[7] * B[43] + W[14] * B[44] + W[21] * B[45] + W[28] * B[46] + W[35] * B[47] + W[42] * B[48]; 645f30536b4SBarry Smith A[43] = W[1] * B[42] + W[8] * B[43] + W[15] * B[44] + W[22] * B[45] + W[29] * B[46] + W[36] * B[47] + W[43] * B[48]; 646f30536b4SBarry Smith A[44] = W[2] * B[42] + W[9] * B[43] + W[16] * B[44] + W[23] * B[45] + W[30] * B[46] + W[37] * B[47] + W[44] * B[48]; 647f30536b4SBarry Smith A[45] = W[3] * B[42] + W[10] * B[43] + W[17] * B[44] + W[24] * B[45] + W[31] * B[46] + W[38] * B[47] + W[45] * B[48]; 648f30536b4SBarry Smith A[46] = W[4] * B[42] + W[11] * B[43] + W[18] * B[44] + W[25] * B[45] + W[32] * B[46] + W[39] * B[47] + W[46] * B[48]; 649f30536b4SBarry Smith A[47] = W[5] * B[42] + W[12] * B[43] + W[19] * B[44] + W[26] * B[45] + W[33] * B[46] + W[40] * B[47] + W[47] * B[48]; 650f30536b4SBarry Smith A[48] = W[6] * B[42] + W[13] * B[43] + W[20] * B[44] + W[27] * B[45] + W[34] * B[46] + W[41] * B[47] + W[48] * B[48]; 6513ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 652bef36659SShri Abhyankar } 653bef36659SShri Abhyankar 654bef36659SShri Abhyankar /* 65596b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_7: A = A - B * C with size bs=7 656bef36659SShri Abhyankar 657bef36659SShri Abhyankar Input Parameters: 658bef36659SShri Abhyankar + A,B,C - square bs by bs arrays stored in column major order 659bef36659SShri Abhyankar 660bef36659SShri Abhyankar Output Parameter: 661bef36659SShri Abhyankar . A = A - B*C 662bef36659SShri Abhyankar */ 663bef36659SShri Abhyankar 664d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_7(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 665d71ae5a4SJacob Faibussowitsch { 666f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[7] * C[1] + B[14] * C[2] + B[21] * C[3] + B[28] * C[4] + B[35] * C[5] + B[42] * C[6]; 667f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[8] * C[1] + B[15] * C[2] + B[22] * C[3] + B[29] * C[4] + B[36] * C[5] + B[43] * C[6]; 668f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[9] * C[1] + B[16] * C[2] + B[23] * C[3] + B[30] * C[4] + B[37] * C[5] + B[44] * C[6]; 669f30536b4SBarry Smith A[3] -= B[3] * C[0] + B[10] * C[1] + B[17] * C[2] + B[24] * C[3] + B[31] * C[4] + B[38] * C[5] + B[45] * C[6]; 670f30536b4SBarry Smith A[4] -= B[4] * C[0] + B[11] * C[1] + B[18] * C[2] + B[25] * C[3] + B[32] * C[4] + B[39] * C[5] + B[46] * C[6]; 671f30536b4SBarry Smith A[5] -= B[5] * C[0] + B[12] * C[1] + B[19] * C[2] + B[26] * C[3] + B[33] * C[4] + B[40] * C[5] + B[47] * C[6]; 672f30536b4SBarry Smith A[6] -= B[6] * C[0] + B[13] * C[1] + B[20] * C[2] + B[27] * C[3] + B[34] * C[4] + B[41] * C[5] + B[48] * C[6]; 673f30536b4SBarry Smith A[7] -= B[0] * C[7] + B[7] * C[8] + B[14] * C[9] + B[21] * C[10] + B[28] * C[11] + B[35] * C[12] + B[42] * C[13]; 674f30536b4SBarry Smith A[8] -= B[1] * C[7] + B[8] * C[8] + B[15] * C[9] + B[22] * C[10] + B[29] * C[11] + B[36] * C[12] + B[43] * C[13]; 675f30536b4SBarry Smith A[9] -= B[2] * C[7] + B[9] * C[8] + B[16] * C[9] + B[23] * C[10] + B[30] * C[11] + B[37] * C[12] + B[44] * C[13]; 676f30536b4SBarry Smith A[10] -= B[3] * C[7] + B[10] * C[8] + B[17] * C[9] + B[24] * C[10] + B[31] * C[11] + B[38] * C[12] + B[45] * C[13]; 677f30536b4SBarry Smith A[11] -= B[4] * C[7] + B[11] * C[8] + B[18] * C[9] + B[25] * C[10] + B[32] * C[11] + B[39] * C[12] + B[46] * C[13]; 678f30536b4SBarry Smith A[12] -= B[5] * C[7] + B[12] * C[8] + B[19] * C[9] + B[26] * C[10] + B[33] * C[11] + B[40] * C[12] + B[47] * C[13]; 679f30536b4SBarry Smith A[13] -= B[6] * C[7] + B[13] * C[8] + B[20] * C[9] + B[27] * C[10] + B[34] * C[11] + B[41] * C[12] + B[48] * C[13]; 680f30536b4SBarry Smith A[14] -= B[0] * C[14] + B[7] * C[15] + B[14] * C[16] + B[21] * C[17] + B[28] * C[18] + B[35] * C[19] + B[42] * C[20]; 681f30536b4SBarry Smith A[15] -= B[1] * C[14] + B[8] * C[15] + B[15] * C[16] + B[22] * C[17] + B[29] * C[18] + B[36] * C[19] + B[43] * C[20]; 682f30536b4SBarry Smith A[16] -= B[2] * C[14] + B[9] * C[15] + B[16] * C[16] + B[23] * C[17] + B[30] * C[18] + B[37] * C[19] + B[44] * C[20]; 683f30536b4SBarry Smith A[17] -= B[3] * C[14] + B[10] * C[15] + B[17] * C[16] + B[24] * C[17] + B[31] * C[18] + B[38] * C[19] + B[45] * C[20]; 684f30536b4SBarry Smith A[18] -= B[4] * C[14] + B[11] * C[15] + B[18] * C[16] + B[25] * C[17] + B[32] * C[18] + B[39] * C[19] + B[46] * C[20]; 685f30536b4SBarry Smith A[19] -= B[5] * C[14] + B[12] * C[15] + B[19] * C[16] + B[26] * C[17] + B[33] * C[18] + B[40] * C[19] + B[47] * C[20]; 686f30536b4SBarry Smith A[20] -= B[6] * C[14] + B[13] * C[15] + B[20] * C[16] + B[27] * C[17] + B[34] * C[18] + B[41] * C[19] + B[48] * C[20]; 687f30536b4SBarry Smith A[21] -= B[0] * C[21] + B[7] * C[22] + B[14] * C[23] + B[21] * C[24] + B[28] * C[25] + B[35] * C[26] + B[42] * C[27]; 688f30536b4SBarry Smith A[22] -= B[1] * C[21] + B[8] * C[22] + B[15] * C[23] + B[22] * C[24] + B[29] * C[25] + B[36] * C[26] + B[43] * C[27]; 689f30536b4SBarry Smith A[23] -= B[2] * C[21] + B[9] * C[22] + B[16] * C[23] + B[23] * C[24] + B[30] * C[25] + B[37] * C[26] + B[44] * C[27]; 690f30536b4SBarry Smith A[24] -= B[3] * C[21] + B[10] * C[22] + B[17] * C[23] + B[24] * C[24] + B[31] * C[25] + B[38] * C[26] + B[45] * C[27]; 691f30536b4SBarry Smith A[25] -= B[4] * C[21] + B[11] * C[22] + B[18] * C[23] + B[25] * C[24] + B[32] * C[25] + B[39] * C[26] + B[46] * C[27]; 692f30536b4SBarry Smith A[26] -= B[5] * C[21] + B[12] * C[22] + B[19] * C[23] + B[26] * C[24] + B[33] * C[25] + B[40] * C[26] + B[47] * C[27]; 693f30536b4SBarry Smith A[27] -= B[6] * C[21] + B[13] * C[22] + B[20] * C[23] + B[27] * C[24] + B[34] * C[25] + B[41] * C[26] + B[48] * C[27]; 694f30536b4SBarry Smith A[28] -= B[0] * C[28] + B[7] * C[29] + B[14] * C[30] + B[21] * C[31] + B[28] * C[32] + B[35] * C[33] + B[42] * C[34]; 695f30536b4SBarry Smith A[29] -= B[1] * C[28] + B[8] * C[29] + B[15] * C[30] + B[22] * C[31] + B[29] * C[32] + B[36] * C[33] + B[43] * C[34]; 696f30536b4SBarry Smith A[30] -= B[2] * C[28] + B[9] * C[29] + B[16] * C[30] + B[23] * C[31] + B[30] * C[32] + B[37] * C[33] + B[44] * C[34]; 697f30536b4SBarry Smith A[31] -= B[3] * C[28] + B[10] * C[29] + B[17] * C[30] + B[24] * C[31] + B[31] * C[32] + B[38] * C[33] + B[45] * C[34]; 698f30536b4SBarry Smith A[32] -= B[4] * C[28] + B[11] * C[29] + B[18] * C[30] + B[25] * C[31] + B[32] * C[32] + B[39] * C[33] + B[46] * C[34]; 699f30536b4SBarry Smith A[33] -= B[5] * C[28] + B[12] * C[29] + B[19] * C[30] + B[26] * C[31] + B[33] * C[32] + B[40] * C[33] + B[47] * C[34]; 700f30536b4SBarry Smith A[34] -= B[6] * C[28] + B[13] * C[29] + B[20] * C[30] + B[27] * C[31] + B[34] * C[32] + B[41] * C[33] + B[48] * C[34]; 701f30536b4SBarry Smith A[35] -= B[0] * C[35] + B[7] * C[36] + B[14] * C[37] + B[21] * C[38] + B[28] * C[39] + B[35] * C[40] + B[42] * C[41]; 702f30536b4SBarry Smith A[36] -= B[1] * C[35] + B[8] * C[36] + B[15] * C[37] + B[22] * C[38] + B[29] * C[39] + B[36] * C[40] + B[43] * C[41]; 703f30536b4SBarry Smith A[37] -= B[2] * C[35] + B[9] * C[36] + B[16] * C[37] + B[23] * C[38] + B[30] * C[39] + B[37] * C[40] + B[44] * C[41]; 704f30536b4SBarry Smith A[38] -= B[3] * C[35] + B[10] * C[36] + B[17] * C[37] + B[24] * C[38] + B[31] * C[39] + B[38] * C[40] + B[45] * C[41]; 705f30536b4SBarry Smith A[39] -= B[4] * C[35] + B[11] * C[36] + B[18] * C[37] + B[25] * C[38] + B[32] * C[39] + B[39] * C[40] + B[46] * C[41]; 706f30536b4SBarry Smith A[40] -= B[5] * C[35] + B[12] * C[36] + B[19] * C[37] + B[26] * C[38] + B[33] * C[39] + B[40] * C[40] + B[47] * C[41]; 707f30536b4SBarry Smith A[41] -= B[6] * C[35] + B[13] * C[36] + B[20] * C[37] + B[27] * C[38] + B[34] * C[39] + B[41] * C[40] + B[48] * C[41]; 708f30536b4SBarry Smith A[42] -= B[0] * C[42] + B[7] * C[43] + B[14] * C[44] + B[21] * C[45] + B[28] * C[46] + B[35] * C[47] + B[42] * C[48]; 709f30536b4SBarry Smith A[43] -= B[1] * C[42] + B[8] * C[43] + B[15] * C[44] + B[22] * C[45] + B[29] * C[46] + B[36] * C[47] + B[43] * C[48]; 710f30536b4SBarry Smith A[44] -= B[2] * C[42] + B[9] * C[43] + B[16] * C[44] + B[23] * C[45] + B[30] * C[46] + B[37] * C[47] + B[44] * C[48]; 711f30536b4SBarry Smith A[45] -= B[3] * C[42] + B[10] * C[43] + B[17] * C[44] + B[24] * C[45] + B[31] * C[46] + B[38] * C[47] + B[45] * C[48]; 712f30536b4SBarry Smith A[46] -= B[4] * C[42] + B[11] * C[43] + B[18] * C[44] + B[25] * C[45] + B[32] * C[46] + B[39] * C[47] + B[46] * C[48]; 713f30536b4SBarry Smith A[47] -= B[5] * C[42] + B[12] * C[43] + B[19] * C[44] + B[26] * C[45] + B[33] * C[46] + B[40] * C[47] + B[47] * C[48]; 714f30536b4SBarry Smith A[48] -= B[6] * C[42] + B[13] * C[43] + B[20] * C[44] + B[27] * C[45] + B[34] * C[46] + B[41] * C[47] + B[48] * C[48]; 7153ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 716bef36659SShri Abhyankar } 717bef36659SShri Abhyankar 718f4f4c0e7SSatish Balay #if defined(PETSC_HAVE_IMMINTRIN_H) && defined(__AVX2__) && defined(__FMA__) && defined(PETSC_USE_REAL_DOUBLE) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_64BIT_INDICES) && !defined(PETSC_SKIP_IMMINTRIN_H_CUDAWORKAROUND) 719cb667353SBarry Smith #include <immintrin.h> 720d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_9(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 721d71ae5a4SJacob Faibussowitsch { 722f30536b4SBarry Smith PetscInt i; 723f30536b4SBarry Smith __m256d S0, S1, S2, S3, S4, S5, S6, S7, S8, B0, B1, B2, B6, B7, B8, A0, A1, A2, A3, A4, A5, A6, A7, A8; 724f30536b4SBarry Smith 7259566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 81)); 726f30536b4SBarry Smith for (i = 0; i < 3; i++) { 7279371c9d4SSatish Balay S0 = _mm256_setzero_pd(); 7289371c9d4SSatish Balay S1 = _mm256_setzero_pd(); 7299371c9d4SSatish Balay S2 = _mm256_setzero_pd(); 7309371c9d4SSatish Balay S3 = _mm256_setzero_pd(); 7319371c9d4SSatish Balay S4 = _mm256_setzero_pd(); 7329371c9d4SSatish Balay S5 = _mm256_setzero_pd(); 7339371c9d4SSatish Balay S6 = _mm256_setzero_pd(); 7349371c9d4SSatish Balay S7 = _mm256_setzero_pd(); 7359371c9d4SSatish Balay S8 = _mm256_setzero_pd(); 736f30536b4SBarry Smith 7379371c9d4SSatish Balay A0 = _mm256_loadu_pd(W + 0); 7389371c9d4SSatish Balay A1 = _mm256_loadu_pd(W + 4); 7399371c9d4SSatish Balay A2 = _mm256_loadu_pd(W + 8); 7409371c9d4SSatish Balay B0 = _mm256_broadcast_sd(B + 0); 7419371c9d4SSatish Balay B1 = _mm256_broadcast_sd(B + 9); 7429371c9d4SSatish Balay B2 = _mm256_broadcast_sd(B + 18); 7439371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A0, B0, S0); 7449371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A1, B0, S1); 7459371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A2, B0, S2); 7469371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A0, B1, S3); 7479371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A1, B1, S4); 7489371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A2, B1, S5); 7499371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A0, B2, S6); 7509371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A1, B2, S7); 7519371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A2, B2, S8); 752f30536b4SBarry Smith 7539371c9d4SSatish Balay A3 = _mm256_loadu_pd(W + 9); 7549371c9d4SSatish Balay A4 = _mm256_loadu_pd(W + 13); 7559371c9d4SSatish Balay A5 = _mm256_loadu_pd(W + 17); 7569371c9d4SSatish Balay B6 = _mm256_broadcast_sd(B + 1); 7579371c9d4SSatish Balay B7 = _mm256_broadcast_sd(B + 10); 7589371c9d4SSatish Balay B8 = _mm256_broadcast_sd(B + 19); 7599371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A3, B6, S0); 7609371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A4, B6, S1); 7619371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A5, B6, S2); 7629371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A3, B7, S3); 7639371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A4, B7, S4); 7649371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A5, B7, S5); 7659371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A3, B8, S6); 7669371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A4, B8, S7); 7679371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A5, B8, S8); 768f30536b4SBarry Smith 7699371c9d4SSatish Balay A6 = _mm256_loadu_pd(W + 18); 7709371c9d4SSatish Balay A7 = _mm256_loadu_pd(W + 22); 7719371c9d4SSatish Balay A8 = _mm256_loadu_pd(W + 26); 7729371c9d4SSatish Balay B0 = _mm256_broadcast_sd(B + 2); 7739371c9d4SSatish Balay B1 = _mm256_broadcast_sd(B + 11); 7749371c9d4SSatish Balay B2 = _mm256_broadcast_sd(B + 20); 7759371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A6, B0, S0); 7769371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A7, B0, S1); 7779371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A8, B0, S2); 7789371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A6, B1, S3); 7799371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A7, B1, S4); 7809371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A8, B1, S5); 7819371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A6, B2, S6); 7829371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A7, B2, S7); 7839371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A8, B2, S8); 784f30536b4SBarry Smith 7859371c9d4SSatish Balay A0 = _mm256_loadu_pd(W + 27); 7869371c9d4SSatish Balay A1 = _mm256_loadu_pd(W + 31); 7879371c9d4SSatish Balay A2 = _mm256_loadu_pd(W + 35); 7889371c9d4SSatish Balay B6 = _mm256_broadcast_sd(B + 3); 7899371c9d4SSatish Balay B7 = _mm256_broadcast_sd(B + 12); 7909371c9d4SSatish Balay B8 = _mm256_broadcast_sd(B + 21); 7919371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A0, B6, S0); 7929371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A1, B6, S1); 7939371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A2, B6, S2); 7949371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A0, B7, S3); 7959371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A1, B7, S4); 7969371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A2, B7, S5); 7979371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A0, B8, S6); 7989371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A1, B8, S7); 7999371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A2, B8, S8); 800f30536b4SBarry Smith 8019371c9d4SSatish Balay A3 = _mm256_loadu_pd(W + 36); 8029371c9d4SSatish Balay A4 = _mm256_loadu_pd(W + 40); 8039371c9d4SSatish Balay A5 = _mm256_loadu_pd(W + 44); 8049371c9d4SSatish Balay B0 = _mm256_broadcast_sd(B + 4); 8059371c9d4SSatish Balay B1 = _mm256_broadcast_sd(B + 13); 8069371c9d4SSatish Balay B2 = _mm256_broadcast_sd(B + 22); 8079371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A3, B0, S0); 8089371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A4, B0, S1); 8099371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A5, B0, S2); 8109371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A3, B1, S3); 8119371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A4, B1, S4); 8129371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A5, B1, S5); 8139371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A3, B2, S6); 8149371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A4, B2, S7); 8159371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A5, B2, S8); 816f30536b4SBarry Smith 8179371c9d4SSatish Balay A0 = _mm256_loadu_pd(W + 45); 8189371c9d4SSatish Balay A1 = _mm256_loadu_pd(W + 49); 8199371c9d4SSatish Balay A2 = _mm256_loadu_pd(W + 53); 8209371c9d4SSatish Balay B6 = _mm256_broadcast_sd(B + 5); 8219371c9d4SSatish Balay B7 = _mm256_broadcast_sd(B + 14); 8229371c9d4SSatish Balay B8 = _mm256_broadcast_sd(B + 23); 8239371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A0, B6, S0); 8249371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A1, B6, S1); 8259371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A2, B6, S2); 8269371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A0, B7, S3); 8279371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A1, B7, S4); 8289371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A2, B7, S5); 8299371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A0, B8, S6); 8309371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A1, B8, S7); 8319371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A2, B8, S8); 832f30536b4SBarry Smith 8339371c9d4SSatish Balay A3 = _mm256_loadu_pd(W + 54); 8349371c9d4SSatish Balay A4 = _mm256_loadu_pd(W + 58); 8359371c9d4SSatish Balay A5 = _mm256_loadu_pd(W + 62); 8369371c9d4SSatish Balay B0 = _mm256_broadcast_sd(B + 6); 8379371c9d4SSatish Balay B1 = _mm256_broadcast_sd(B + 15); 8389371c9d4SSatish Balay B2 = _mm256_broadcast_sd(B + 24); 8399371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A3, B0, S0); 8409371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A4, B0, S1); 8419371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A5, B0, S2); 8429371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A3, B1, S3); 8439371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A4, B1, S4); 8449371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A5, B1, S5); 8459371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A3, B2, S6); 8469371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A4, B2, S7); 8479371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A5, B2, S8); 848f30536b4SBarry Smith 8499371c9d4SSatish Balay A6 = _mm256_loadu_pd(W + 63); 8509371c9d4SSatish Balay A7 = _mm256_loadu_pd(W + 67); 8519371c9d4SSatish Balay A8 = _mm256_loadu_pd(W + 71); 8529371c9d4SSatish Balay B6 = _mm256_broadcast_sd(B + 7); 8539371c9d4SSatish Balay B7 = _mm256_broadcast_sd(B + 16); 8549371c9d4SSatish Balay B8 = _mm256_broadcast_sd(B + 25); 8559371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A6, B6, S0); 8569371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A7, B6, S1); 8579371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A8, B6, S2); 8589371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A6, B7, S3); 8599371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A7, B7, S4); 8609371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A8, B7, S5); 8619371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A6, B8, S6); 8629371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A7, B8, S7); 8639371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A8, B8, S8); 864f30536b4SBarry Smith 8659371c9d4SSatish Balay A0 = _mm256_loadu_pd(W + 72); 8669371c9d4SSatish Balay A1 = _mm256_loadu_pd(W + 76); 8679371c9d4SSatish Balay A2 = _mm256_broadcast_sd(W + 80); 8689371c9d4SSatish Balay B0 = _mm256_broadcast_sd(B + 8); 8699371c9d4SSatish Balay B1 = _mm256_broadcast_sd(B + 17); 8709371c9d4SSatish Balay B2 = _mm256_broadcast_sd(B + 26); 8719371c9d4SSatish Balay S0 = _mm256_fmadd_pd(A0, B0, S0); 8729371c9d4SSatish Balay S1 = _mm256_fmadd_pd(A1, B0, S1); 8739371c9d4SSatish Balay S2 = _mm256_fmadd_pd(A2, B0, S2); 8749371c9d4SSatish Balay S3 = _mm256_fmadd_pd(A0, B1, S3); 8759371c9d4SSatish Balay S4 = _mm256_fmadd_pd(A1, B1, S4); 8769371c9d4SSatish Balay S5 = _mm256_fmadd_pd(A2, B1, S5); 8779371c9d4SSatish Balay S6 = _mm256_fmadd_pd(A0, B2, S6); 8789371c9d4SSatish Balay S7 = _mm256_fmadd_pd(A1, B2, S7); 8799371c9d4SSatish Balay S8 = _mm256_fmadd_pd(A2, B2, S8); 880f30536b4SBarry Smith 8819371c9d4SSatish Balay _mm256_storeu_pd(&A[0 + i * 27], S0); 8829371c9d4SSatish Balay _mm256_storeu_pd(&A[4 + i * 27], S1); 8839371c9d4SSatish Balay _mm256_maskstore_pd(&A[8 + i * 27], _mm256_set_epi64x(0LL, 0LL, 0LL, 1LL << 63), S2); 8849371c9d4SSatish Balay _mm256_storeu_pd(&A[9 + i * 27], S3); 8859371c9d4SSatish Balay _mm256_storeu_pd(&A[13 + i * 27], S4); 8869371c9d4SSatish Balay _mm256_maskstore_pd(&A[17 + i * 27], _mm256_set_epi64x(0LL, 0LL, 0LL, 1LL << 63), S5); 8879371c9d4SSatish Balay _mm256_storeu_pd(&A[18 + i * 27], S6); 8889371c9d4SSatish Balay _mm256_storeu_pd(&A[22 + i * 27], S7); 8899371c9d4SSatish Balay _mm256_maskstore_pd(&A[26 + i * 27], _mm256_set_epi64x(0LL, 0LL, 0LL, 1LL << 63), S8); 890f30536b4SBarry Smith 891f30536b4SBarry Smith B += 27; 892f30536b4SBarry Smith } 8933ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 89496e086a2SDaniel Kokron } 89596e086a2SDaniel Kokron #else 896d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_9(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 897d71ae5a4SJacob Faibussowitsch { 8989566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 81)); 899f30536b4SBarry Smith A[0] = W[0] * B[0] + W[9] * B[1] + W[18] * B[2] + W[27] * B[3] + W[36] * B[4] + W[45] * B[5] + W[54] * B[6] + W[63] * B[7] + W[72] * B[8]; 900f30536b4SBarry Smith A[1] = W[1] * B[0] + W[10] * B[1] + W[19] * B[2] + W[28] * B[3] + W[37] * B[4] + W[46] * B[5] + W[55] * B[6] + W[64] * B[7] + W[73] * B[8]; 901f30536b4SBarry Smith A[2] = W[2] * B[0] + W[11] * B[1] + W[20] * B[2] + W[29] * B[3] + W[38] * B[4] + W[47] * B[5] + W[56] * B[6] + W[65] * B[7] + W[74] * B[8]; 902f30536b4SBarry Smith A[3] = W[3] * B[0] + W[12] * B[1] + W[21] * B[2] + W[30] * B[3] + W[39] * B[4] + W[48] * B[5] + W[57] * B[6] + W[66] * B[7] + W[75] * B[8]; 903f30536b4SBarry Smith A[4] = W[4] * B[0] + W[13] * B[1] + W[22] * B[2] + W[31] * B[3] + W[40] * B[4] + W[49] * B[5] + W[58] * B[6] + W[67] * B[7] + W[76] * B[8]; 904f30536b4SBarry Smith A[5] = W[5] * B[0] + W[14] * B[1] + W[23] * B[2] + W[32] * B[3] + W[41] * B[4] + W[50] * B[5] + W[59] * B[6] + W[68] * B[7] + W[77] * B[8]; 905f30536b4SBarry Smith A[6] = W[6] * B[0] + W[15] * B[1] + W[24] * B[2] + W[33] * B[3] + W[42] * B[4] + W[51] * B[5] + W[60] * B[6] + W[69] * B[7] + W[78] * B[8]; 906f30536b4SBarry Smith A[7] = W[7] * B[0] + W[16] * B[1] + W[25] * B[2] + W[34] * B[3] + W[43] * B[4] + W[52] * B[5] + W[61] * B[6] + W[70] * B[7] + W[79] * B[8]; 907f30536b4SBarry Smith A[8] = W[8] * B[0] + W[17] * B[1] + W[26] * B[2] + W[35] * B[3] + W[44] * B[4] + W[53] * B[5] + W[62] * B[6] + W[71] * B[7] + W[80] * B[8]; 908f30536b4SBarry Smith 909f30536b4SBarry Smith A[9] = W[0] * B[9] + W[9] * B[10] + W[18] * B[11] + W[27] * B[12] + W[36] * B[13] + W[45] * B[14] + W[54] * B[15] + W[63] * B[16] + W[72] * B[17]; 910f30536b4SBarry Smith A[10] = W[1] * B[9] + W[10] * B[10] + W[19] * B[11] + W[28] * B[12] + W[37] * B[13] + W[46] * B[14] + W[55] * B[15] + W[64] * B[16] + W[73] * B[17]; 911f30536b4SBarry Smith A[11] = W[2] * B[9] + W[11] * B[10] + W[20] * B[11] + W[29] * B[12] + W[38] * B[13] + W[47] * B[14] + W[56] * B[15] + W[65] * B[16] + W[74] * B[17]; 912f30536b4SBarry Smith A[12] = W[3] * B[9] + W[12] * B[10] + W[21] * B[11] + W[30] * B[12] + W[39] * B[13] + W[48] * B[14] + W[57] * B[15] + W[66] * B[16] + W[75] * B[17]; 913f30536b4SBarry Smith A[13] = W[4] * B[9] + W[13] * B[10] + W[22] * B[11] + W[31] * B[12] + W[40] * B[13] + W[49] * B[14] + W[58] * B[15] + W[67] * B[16] + W[76] * B[17]; 914f30536b4SBarry Smith A[14] = W[5] * B[9] + W[14] * B[10] + W[23] * B[11] + W[32] * B[12] + W[41] * B[13] + W[50] * B[14] + W[59] * B[15] + W[68] * B[16] + W[77] * B[17]; 915f30536b4SBarry Smith A[15] = W[6] * B[9] + W[15] * B[10] + W[24] * B[11] + W[33] * B[12] + W[42] * B[13] + W[51] * B[14] + W[60] * B[15] + W[69] * B[16] + W[78] * B[17]; 916f30536b4SBarry Smith A[16] = W[7] * B[9] + W[16] * B[10] + W[25] * B[11] + W[34] * B[12] + W[43] * B[13] + W[52] * B[14] + W[61] * B[15] + W[70] * B[16] + W[79] * B[17]; 917f30536b4SBarry Smith A[17] = W[8] * B[9] + W[17] * B[10] + W[26] * B[11] + W[35] * B[12] + W[44] * B[13] + W[53] * B[14] + W[62] * B[15] + W[71] * B[16] + W[80] * B[17]; 918f30536b4SBarry Smith 919f30536b4SBarry Smith A[18] = W[0] * B[18] + W[9] * B[19] + W[18] * B[20] + W[27] * B[21] + W[36] * B[22] + W[45] * B[23] + W[54] * B[24] + W[63] * B[25] + W[72] * B[26]; 920f30536b4SBarry Smith A[19] = W[1] * B[18] + W[10] * B[19] + W[19] * B[20] + W[28] * B[21] + W[37] * B[22] + W[46] * B[23] + W[55] * B[24] + W[64] * B[25] + W[73] * B[26]; 921f30536b4SBarry Smith A[20] = W[2] * B[18] + W[11] * B[19] + W[20] * B[20] + W[29] * B[21] + W[38] * B[22] + W[47] * B[23] + W[56] * B[24] + W[65] * B[25] + W[74] * B[26]; 922f30536b4SBarry Smith A[21] = W[3] * B[18] + W[12] * B[19] + W[21] * B[20] + W[30] * B[21] + W[39] * B[22] + W[48] * B[23] + W[57] * B[24] + W[66] * B[25] + W[75] * B[26]; 923f30536b4SBarry Smith A[22] = W[4] * B[18] + W[13] * B[19] + W[22] * B[20] + W[31] * B[21] + W[40] * B[22] + W[49] * B[23] + W[58] * B[24] + W[67] * B[25] + W[76] * B[26]; 924f30536b4SBarry Smith A[23] = W[5] * B[18] + W[14] * B[19] + W[23] * B[20] + W[32] * B[21] + W[41] * B[22] + W[50] * B[23] + W[59] * B[24] + W[68] * B[25] + W[77] * B[26]; 925f30536b4SBarry Smith A[24] = W[6] * B[18] + W[15] * B[19] + W[24] * B[20] + W[33] * B[21] + W[42] * B[22] + W[51] * B[23] + W[60] * B[24] + W[69] * B[25] + W[78] * B[26]; 926f30536b4SBarry Smith A[25] = W[7] * B[18] + W[16] * B[19] + W[25] * B[20] + W[34] * B[21] + W[43] * B[22] + W[52] * B[23] + W[61] * B[24] + W[70] * B[25] + W[79] * B[26]; 927f30536b4SBarry Smith A[26] = W[8] * B[18] + W[17] * B[19] + W[26] * B[20] + W[35] * B[21] + W[44] * B[22] + W[53] * B[23] + W[62] * B[24] + W[71] * B[25] + W[80] * B[26]; 928f30536b4SBarry Smith 929f30536b4SBarry Smith A[27] = W[0] * B[27] + W[9] * B[28] + W[18] * B[29] + W[27] * B[30] + W[36] * B[31] + W[45] * B[32] + W[54] * B[33] + W[63] * B[34] + W[72] * B[35]; 930f30536b4SBarry Smith A[28] = W[1] * B[27] + W[10] * B[28] + W[19] * B[29] + W[28] * B[30] + W[37] * B[31] + W[46] * B[32] + W[55] * B[33] + W[64] * B[34] + W[73] * B[35]; 931f30536b4SBarry Smith A[29] = W[2] * B[27] + W[11] * B[28] + W[20] * B[29] + W[29] * B[30] + W[38] * B[31] + W[47] * B[32] + W[56] * B[33] + W[65] * B[34] + W[74] * B[35]; 932f30536b4SBarry Smith A[30] = W[3] * B[27] + W[12] * B[28] + W[21] * B[29] + W[30] * B[30] + W[39] * B[31] + W[48] * B[32] + W[57] * B[33] + W[66] * B[34] + W[75] * B[35]; 933f30536b4SBarry Smith A[31] = W[4] * B[27] + W[13] * B[28] + W[22] * B[29] + W[31] * B[30] + W[40] * B[31] + W[49] * B[32] + W[58] * B[33] + W[67] * B[34] + W[76] * B[35]; 934f30536b4SBarry Smith A[32] = W[5] * B[27] + W[14] * B[28] + W[23] * B[29] + W[32] * B[30] + W[41] * B[31] + W[50] * B[32] + W[59] * B[33] + W[68] * B[34] + W[77] * B[35]; 935f30536b4SBarry Smith A[33] = W[6] * B[27] + W[15] * B[28] + W[24] * B[29] + W[33] * B[30] + W[42] * B[31] + W[51] * B[32] + W[60] * B[33] + W[69] * B[34] + W[78] * B[35]; 936f30536b4SBarry Smith A[34] = W[7] * B[27] + W[16] * B[28] + W[25] * B[29] + W[34] * B[30] + W[43] * B[31] + W[52] * B[32] + W[61] * B[33] + W[70] * B[34] + W[79] * B[35]; 937f30536b4SBarry Smith A[35] = W[8] * B[27] + W[17] * B[28] + W[26] * B[29] + W[35] * B[30] + W[44] * B[31] + W[53] * B[32] + W[62] * B[33] + W[71] * B[34] + W[80] * B[35]; 938f30536b4SBarry Smith 939f30536b4SBarry Smith A[36] = W[0] * B[36] + W[9] * B[37] + W[18] * B[38] + W[27] * B[39] + W[36] * B[40] + W[45] * B[41] + W[54] * B[42] + W[63] * B[43] + W[72] * B[44]; 940f30536b4SBarry Smith A[37] = W[1] * B[36] + W[10] * B[37] + W[19] * B[38] + W[28] * B[39] + W[37] * B[40] + W[46] * B[41] + W[55] * B[42] + W[64] * B[43] + W[73] * B[44]; 941f30536b4SBarry Smith A[38] = W[2] * B[36] + W[11] * B[37] + W[20] * B[38] + W[29] * B[39] + W[38] * B[40] + W[47] * B[41] + W[56] * B[42] + W[65] * B[43] + W[74] * B[44]; 942f30536b4SBarry Smith A[39] = W[3] * B[36] + W[12] * B[37] + W[21] * B[38] + W[30] * B[39] + W[39] * B[40] + W[48] * B[41] + W[57] * B[42] + W[66] * B[43] + W[75] * B[44]; 943f30536b4SBarry Smith A[40] = W[4] * B[36] + W[13] * B[37] + W[22] * B[38] + W[31] * B[39] + W[40] * B[40] + W[49] * B[41] + W[58] * B[42] + W[67] * B[43] + W[76] * B[44]; 944f30536b4SBarry Smith A[41] = W[5] * B[36] + W[14] * B[37] + W[23] * B[38] + W[32] * B[39] + W[41] * B[40] + W[50] * B[41] + W[59] * B[42] + W[68] * B[43] + W[77] * B[44]; 945f30536b4SBarry Smith A[42] = W[6] * B[36] + W[15] * B[37] + W[24] * B[38] + W[33] * B[39] + W[42] * B[40] + W[51] * B[41] + W[60] * B[42] + W[69] * B[43] + W[78] * B[44]; 946f30536b4SBarry Smith A[43] = W[7] * B[36] + W[16] * B[37] + W[25] * B[38] + W[34] * B[39] + W[43] * B[40] + W[52] * B[41] + W[61] * B[42] + W[70] * B[43] + W[79] * B[44]; 947f30536b4SBarry Smith A[44] = W[8] * B[36] + W[17] * B[37] + W[26] * B[38] + W[35] * B[39] + W[44] * B[40] + W[53] * B[41] + W[62] * B[42] + W[71] * B[43] + W[80] * B[44]; 948f30536b4SBarry Smith 949f30536b4SBarry Smith A[45] = W[0] * B[45] + W[9] * B[46] + W[18] * B[47] + W[27] * B[48] + W[36] * B[49] + W[45] * B[50] + W[54] * B[51] + W[63] * B[52] + W[72] * B[53]; 950f30536b4SBarry Smith A[46] = W[1] * B[45] + W[10] * B[46] + W[19] * B[47] + W[28] * B[48] + W[37] * B[49] + W[46] * B[50] + W[55] * B[51] + W[64] * B[52] + W[73] * B[53]; 951f30536b4SBarry Smith A[47] = W[2] * B[45] + W[11] * B[46] + W[20] * B[47] + W[29] * B[48] + W[38] * B[49] + W[47] * B[50] + W[56] * B[51] + W[65] * B[52] + W[74] * B[53]; 952f30536b4SBarry Smith A[48] = W[3] * B[45] + W[12] * B[46] + W[21] * B[47] + W[30] * B[48] + W[39] * B[49] + W[48] * B[50] + W[57] * B[51] + W[66] * B[52] + W[75] * B[53]; 953f30536b4SBarry Smith A[49] = W[4] * B[45] + W[13] * B[46] + W[22] * B[47] + W[31] * B[48] + W[40] * B[49] + W[49] * B[50] + W[58] * B[51] + W[67] * B[52] + W[76] * B[53]; 954f30536b4SBarry Smith A[50] = W[5] * B[45] + W[14] * B[46] + W[23] * B[47] + W[32] * B[48] + W[41] * B[49] + W[50] * B[50] + W[59] * B[51] + W[68] * B[52] + W[77] * B[53]; 955f30536b4SBarry Smith A[51] = W[6] * B[45] + W[15] * B[46] + W[24] * B[47] + W[33] * B[48] + W[42] * B[49] + W[51] * B[50] + W[60] * B[51] + W[69] * B[52] + W[78] * B[53]; 956f30536b4SBarry Smith A[52] = W[7] * B[45] + W[16] * B[46] + W[25] * B[47] + W[34] * B[48] + W[43] * B[49] + W[52] * B[50] + W[61] * B[51] + W[70] * B[52] + W[79] * B[53]; 957f30536b4SBarry Smith A[53] = W[8] * B[45] + W[17] * B[46] + W[26] * B[47] + W[35] * B[48] + W[44] * B[49] + W[53] * B[50] + W[62] * B[51] + W[71] * B[52] + W[80] * B[53]; 958f30536b4SBarry Smith 959f30536b4SBarry Smith A[54] = W[0] * B[54] + W[9] * B[55] + W[18] * B[56] + W[27] * B[57] + W[36] * B[58] + W[45] * B[59] + W[54] * B[60] + W[63] * B[61] + W[72] * B[62]; 960f30536b4SBarry Smith A[55] = W[1] * B[54] + W[10] * B[55] + W[19] * B[56] + W[28] * B[57] + W[37] * B[58] + W[46] * B[59] + W[55] * B[60] + W[64] * B[61] + W[73] * B[62]; 961f30536b4SBarry Smith A[56] = W[2] * B[54] + W[11] * B[55] + W[20] * B[56] + W[29] * B[57] + W[38] * B[58] + W[47] * B[59] + W[56] * B[60] + W[65] * B[61] + W[74] * B[62]; 962f30536b4SBarry Smith A[57] = W[3] * B[54] + W[12] * B[55] + W[21] * B[56] + W[30] * B[57] + W[39] * B[58] + W[48] * B[59] + W[57] * B[60] + W[66] * B[61] + W[75] * B[62]; 963f30536b4SBarry Smith A[58] = W[4] * B[54] + W[13] * B[55] + W[22] * B[56] + W[31] * B[57] + W[40] * B[58] + W[49] * B[59] + W[58] * B[60] + W[67] * B[61] + W[76] * B[62]; 964f30536b4SBarry Smith A[59] = W[5] * B[54] + W[14] * B[55] + W[23] * B[56] + W[32] * B[57] + W[41] * B[58] + W[50] * B[59] + W[59] * B[60] + W[68] * B[61] + W[77] * B[62]; 965f30536b4SBarry Smith A[60] = W[6] * B[54] + W[15] * B[55] + W[24] * B[56] + W[33] * B[57] + W[42] * B[58] + W[51] * B[59] + W[60] * B[60] + W[69] * B[61] + W[78] * B[62]; 966f30536b4SBarry Smith A[61] = W[7] * B[54] + W[16] * B[55] + W[25] * B[56] + W[34] * B[57] + W[43] * B[58] + W[52] * B[59] + W[61] * B[60] + W[70] * B[61] + W[79] * B[62]; 967f30536b4SBarry Smith A[62] = W[8] * B[54] + W[17] * B[55] + W[26] * B[56] + W[35] * B[57] + W[44] * B[58] + W[53] * B[59] + W[62] * B[60] + W[71] * B[61] + W[80] * B[62]; 968f30536b4SBarry Smith 969f30536b4SBarry Smith A[63] = W[0] * B[63] + W[9] * B[64] + W[18] * B[65] + W[27] * B[66] + W[36] * B[67] + W[45] * B[68] + W[54] * B[69] + W[63] * B[70] + W[72] * B[71]; 970f30536b4SBarry Smith A[64] = W[1] * B[63] + W[10] * B[64] + W[19] * B[65] + W[28] * B[66] + W[37] * B[67] + W[46] * B[68] + W[55] * B[69] + W[64] * B[70] + W[73] * B[71]; 971f30536b4SBarry Smith A[65] = W[2] * B[63] + W[11] * B[64] + W[20] * B[65] + W[29] * B[66] + W[38] * B[67] + W[47] * B[68] + W[56] * B[69] + W[65] * B[70] + W[74] * B[71]; 972f30536b4SBarry Smith A[66] = W[3] * B[63] + W[12] * B[64] + W[21] * B[65] + W[30] * B[66] + W[39] * B[67] + W[48] * B[68] + W[57] * B[69] + W[66] * B[70] + W[75] * B[71]; 973f30536b4SBarry Smith A[67] = W[4] * B[63] + W[13] * B[64] + W[22] * B[65] + W[31] * B[66] + W[40] * B[67] + W[49] * B[68] + W[58] * B[69] + W[67] * B[70] + W[76] * B[71]; 974f30536b4SBarry Smith A[68] = W[5] * B[63] + W[14] * B[64] + W[23] * B[65] + W[32] * B[66] + W[41] * B[67] + W[50] * B[68] + W[59] * B[69] + W[68] * B[70] + W[77] * B[71]; 975f30536b4SBarry Smith A[69] = W[6] * B[63] + W[15] * B[64] + W[24] * B[65] + W[33] * B[66] + W[42] * B[67] + W[51] * B[68] + W[60] * B[69] + W[69] * B[70] + W[78] * B[71]; 976f30536b4SBarry Smith A[70] = W[7] * B[63] + W[16] * B[64] + W[25] * B[65] + W[34] * B[66] + W[43] * B[67] + W[52] * B[68] + W[61] * B[69] + W[70] * B[70] + W[79] * B[71]; 977f30536b4SBarry Smith A[71] = W[8] * B[63] + W[17] * B[64] + W[26] * B[65] + W[35] * B[66] + W[44] * B[67] + W[53] * B[68] + W[62] * B[69] + W[71] * B[70] + W[80] * B[71]; 978f30536b4SBarry Smith 979f30536b4SBarry Smith A[72] = W[0] * B[72] + W[9] * B[73] + W[18] * B[74] + W[27] * B[75] + W[36] * B[76] + W[45] * B[77] + W[54] * B[78] + W[63] * B[79] + W[72] * B[80]; 980f30536b4SBarry Smith A[73] = W[1] * B[72] + W[10] * B[73] + W[19] * B[74] + W[28] * B[75] + W[37] * B[76] + W[46] * B[77] + W[55] * B[78] + W[64] * B[79] + W[73] * B[80]; 981f30536b4SBarry Smith A[74] = W[2] * B[72] + W[11] * B[73] + W[20] * B[74] + W[29] * B[75] + W[38] * B[76] + W[47] * B[77] + W[56] * B[78] + W[65] * B[79] + W[74] * B[80]; 982f30536b4SBarry Smith A[75] = W[3] * B[72] + W[12] * B[73] + W[21] * B[74] + W[30] * B[75] + W[39] * B[76] + W[48] * B[77] + W[57] * B[78] + W[66] * B[79] + W[75] * B[80]; 983f30536b4SBarry Smith A[76] = W[4] * B[72] + W[13] * B[73] + W[22] * B[74] + W[31] * B[75] + W[40] * B[76] + W[49] * B[77] + W[58] * B[78] + W[67] * B[79] + W[76] * B[80]; 984f30536b4SBarry Smith A[77] = W[5] * B[72] + W[14] * B[73] + W[23] * B[74] + W[32] * B[75] + W[41] * B[76] + W[50] * B[77] + W[59] * B[78] + W[68] * B[79] + W[77] * B[80]; 985f30536b4SBarry Smith A[78] = W[6] * B[72] + W[15] * B[73] + W[24] * B[74] + W[33] * B[75] + W[42] * B[76] + W[51] * B[77] + W[60] * B[78] + W[69] * B[79] + W[78] * B[80]; 986f30536b4SBarry Smith A[79] = W[7] * B[72] + W[16] * B[73] + W[25] * B[74] + W[34] * B[75] + W[43] * B[76] + W[52] * B[77] + W[61] * B[78] + W[70] * B[79] + W[79] * B[80]; 987f30536b4SBarry Smith A[80] = W[8] * B[72] + W[17] * B[73] + W[26] * B[74] + W[35] * B[75] + W[44] * B[76] + W[53] * B[77] + W[62] * B[78] + W[71] * B[79] + W[80] * B[80]; 9883ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 98996e086a2SDaniel Kokron } 99096e086a2SDaniel Kokron #endif 99196e086a2SDaniel Kokron 992f4f4c0e7SSatish Balay #if defined(PETSC_HAVE_IMMINTRIN_H) && defined(__AVX2__) && defined(__FMA__) && defined(PETSC_USE_REAL_DOUBLE) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_64BIT_INDICES) && !defined(PETSC_SKIP_IMMINTRIN_H_CUDAWORKAROUND) 993d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_9(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 994d71ae5a4SJacob Faibussowitsch { 995f30536b4SBarry Smith PetscInt i; 996f30536b4SBarry Smith __m256d A0, A1, A2, A3, A4, A5, A6, A7, A8, B0, B1, B2, B3, B4, B5, B6, B7, B8, C0, C1, C2, C3, C4, C5, C6, C7, C8; 997f30536b4SBarry Smith 998f30536b4SBarry Smith for (i = 0; i < 3; i++) { 9999371c9d4SSatish Balay A0 = _mm256_loadu_pd(A + 0); 10009371c9d4SSatish Balay A1 = _mm256_loadu_pd(A + 4); 10019371c9d4SSatish Balay A2 = _mm256_loadu_pd(A + 8); 10029371c9d4SSatish Balay A3 = _mm256_loadu_pd(A + 9); 10039371c9d4SSatish Balay A4 = _mm256_loadu_pd(A + 13); 10049371c9d4SSatish Balay A5 = _mm256_loadu_pd(A + 17); 10059371c9d4SSatish Balay A6 = _mm256_loadu_pd(A + 18); 10069371c9d4SSatish Balay A7 = _mm256_loadu_pd(A + 22); 10079371c9d4SSatish Balay A8 = _mm256_loadu_pd(A + 26); 1008f30536b4SBarry Smith 10099371c9d4SSatish Balay B0 = _mm256_loadu_pd(B + 0); 10109371c9d4SSatish Balay B1 = _mm256_loadu_pd(B + 4); 10119371c9d4SSatish Balay B2 = _mm256_loadu_pd(B + 8); 10129371c9d4SSatish Balay C0 = _mm256_broadcast_sd(C + 0); 10139371c9d4SSatish Balay C1 = _mm256_broadcast_sd(C + 9); 10149371c9d4SSatish Balay C2 = _mm256_broadcast_sd(C + 18); 10159371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B0, C0, A0); 10169371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B1, C0, A1); 10179371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B2, C0, A2); 10189371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B0, C1, A3); 10199371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B1, C1, A4); 10209371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B2, C1, A5); 10219371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B0, C2, A6); 10229371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B1, C2, A7); 10239371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B2, C2, A8); 1024f30536b4SBarry Smith 10259371c9d4SSatish Balay B3 = _mm256_loadu_pd(B + 9); 10269371c9d4SSatish Balay B4 = _mm256_loadu_pd(B + 13); 10279371c9d4SSatish Balay B5 = _mm256_loadu_pd(B + 17); 10289371c9d4SSatish Balay C3 = _mm256_broadcast_sd(C + 1); 10299371c9d4SSatish Balay C4 = _mm256_broadcast_sd(C + 10); 10309371c9d4SSatish Balay C5 = _mm256_broadcast_sd(C + 19); 10319371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B3, C3, A0); 10329371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B4, C3, A1); 10339371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B5, C3, A2); 10349371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B3, C4, A3); 10359371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B4, C4, A4); 10369371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B5, C4, A5); 10379371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B3, C5, A6); 10389371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B4, C5, A7); 10399371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B5, C5, A8); 1040f30536b4SBarry Smith 10419371c9d4SSatish Balay B6 = _mm256_loadu_pd(B + 18); 10429371c9d4SSatish Balay B7 = _mm256_loadu_pd(B + 22); 10439371c9d4SSatish Balay B8 = _mm256_loadu_pd(B + 26); 10449371c9d4SSatish Balay C6 = _mm256_broadcast_sd(C + 2); 10459371c9d4SSatish Balay C7 = _mm256_broadcast_sd(C + 11); 10469371c9d4SSatish Balay C8 = _mm256_broadcast_sd(C + 20); 10479371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B6, C6, A0); 10489371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B7, C6, A1); 10499371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B8, C6, A2); 10509371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B6, C7, A3); 10519371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B7, C7, A4); 10529371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B8, C7, A5); 10539371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B6, C8, A6); 10549371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B7, C8, A7); 10559371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B8, C8, A8); 1056f30536b4SBarry Smith 10579371c9d4SSatish Balay B0 = _mm256_loadu_pd(B + 27); 10589371c9d4SSatish Balay B1 = _mm256_loadu_pd(B + 31); 10599371c9d4SSatish Balay B2 = _mm256_loadu_pd(B + 35); 10609371c9d4SSatish Balay C0 = _mm256_broadcast_sd(C + 3); 10619371c9d4SSatish Balay C1 = _mm256_broadcast_sd(C + 12); 10629371c9d4SSatish Balay C2 = _mm256_broadcast_sd(C + 21); 10639371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B0, C0, A0); 10649371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B1, C0, A1); 10659371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B2, C0, A2); 10669371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B0, C1, A3); 10679371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B1, C1, A4); 10689371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B2, C1, A5); 10699371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B0, C2, A6); 10709371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B1, C2, A7); 10719371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B2, C2, A8); 1072f30536b4SBarry Smith 10739371c9d4SSatish Balay B3 = _mm256_loadu_pd(B + 36); 10749371c9d4SSatish Balay B4 = _mm256_loadu_pd(B + 40); 10759371c9d4SSatish Balay B5 = _mm256_loadu_pd(B + 44); 10769371c9d4SSatish Balay C3 = _mm256_broadcast_sd(C + 4); 10779371c9d4SSatish Balay C4 = _mm256_broadcast_sd(C + 13); 10789371c9d4SSatish Balay C5 = _mm256_broadcast_sd(C + 22); 10799371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B3, C3, A0); 10809371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B4, C3, A1); 10819371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B5, C3, A2); 10829371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B3, C4, A3); 10839371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B4, C4, A4); 10849371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B5, C4, A5); 10859371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B3, C5, A6); 10869371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B4, C5, A7); 10879371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B5, C5, A8); 1088f30536b4SBarry Smith 10899371c9d4SSatish Balay B6 = _mm256_loadu_pd(B + 45); 10909371c9d4SSatish Balay B7 = _mm256_loadu_pd(B + 49); 10919371c9d4SSatish Balay B8 = _mm256_loadu_pd(B + 53); 10929371c9d4SSatish Balay C6 = _mm256_broadcast_sd(C + 5); 10939371c9d4SSatish Balay C7 = _mm256_broadcast_sd(C + 14); 10949371c9d4SSatish Balay C8 = _mm256_broadcast_sd(C + 23); 10959371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B6, C6, A0); 10969371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B7, C6, A1); 10979371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B8, C6, A2); 10989371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B6, C7, A3); 10999371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B7, C7, A4); 11009371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B8, C7, A5); 11019371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B6, C8, A6); 11029371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B7, C8, A7); 11039371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B8, C8, A8); 1104f30536b4SBarry Smith 11059371c9d4SSatish Balay B0 = _mm256_loadu_pd(B + 54); 11069371c9d4SSatish Balay B1 = _mm256_loadu_pd(B + 58); 11079371c9d4SSatish Balay B2 = _mm256_loadu_pd(B + 62); 11089371c9d4SSatish Balay C0 = _mm256_broadcast_sd(C + 6); 11099371c9d4SSatish Balay C1 = _mm256_broadcast_sd(C + 15); 11109371c9d4SSatish Balay C2 = _mm256_broadcast_sd(C + 24); 11119371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B0, C0, A0); 11129371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B1, C0, A1); 11139371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B2, C0, A2); 11149371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B0, C1, A3); 11159371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B1, C1, A4); 11169371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B2, C1, A5); 11179371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B0, C2, A6); 11189371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B1, C2, A7); 11199371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B2, C2, A8); 1120f30536b4SBarry Smith 11219371c9d4SSatish Balay B3 = _mm256_loadu_pd(B + 63); 11229371c9d4SSatish Balay B4 = _mm256_loadu_pd(B + 67); 11239371c9d4SSatish Balay B5 = _mm256_loadu_pd(B + 71); 11249371c9d4SSatish Balay C3 = _mm256_broadcast_sd(C + 7); 11259371c9d4SSatish Balay C4 = _mm256_broadcast_sd(C + 16); 11269371c9d4SSatish Balay C5 = _mm256_broadcast_sd(C + 25); 11279371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B3, C3, A0); 11289371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B4, C3, A1); 11299371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B5, C3, A2); 11309371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B3, C4, A3); 11319371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B4, C4, A4); 11329371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B5, C4, A5); 11339371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B3, C5, A6); 11349371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B4, C5, A7); 11359371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B5, C5, A8); 1136f30536b4SBarry Smith 11379371c9d4SSatish Balay B6 = _mm256_loadu_pd(B + 72); 11389371c9d4SSatish Balay B7 = _mm256_loadu_pd(B + 76); 11399371c9d4SSatish Balay B8 = _mm256_broadcast_sd(B + 80); 11409371c9d4SSatish Balay C6 = _mm256_broadcast_sd(C + 8); 11419371c9d4SSatish Balay C7 = _mm256_broadcast_sd(C + 17); 11429371c9d4SSatish Balay C8 = _mm256_broadcast_sd(C + 26); 11439371c9d4SSatish Balay A0 = _mm256_fnmadd_pd(B6, C6, A0); 11449371c9d4SSatish Balay A1 = _mm256_fnmadd_pd(B7, C6, A1); 11459371c9d4SSatish Balay A2 = _mm256_fnmadd_pd(B8, C6, A2); 11469371c9d4SSatish Balay A3 = _mm256_fnmadd_pd(B6, C7, A3); 11479371c9d4SSatish Balay A4 = _mm256_fnmadd_pd(B7, C7, A4); 11489371c9d4SSatish Balay A5 = _mm256_fnmadd_pd(B8, C7, A5); 11499371c9d4SSatish Balay A6 = _mm256_fnmadd_pd(B6, C8, A6); 11509371c9d4SSatish Balay A7 = _mm256_fnmadd_pd(B7, C8, A7); 11519371c9d4SSatish Balay A8 = _mm256_fnmadd_pd(B8, C8, A8); 1152f30536b4SBarry Smith 11539371c9d4SSatish Balay _mm256_storeu_pd(&A[0], A0); 11549371c9d4SSatish Balay _mm256_storeu_pd(&A[4], A1); 11559371c9d4SSatish Balay _mm256_maskstore_pd(&A[8], _mm256_set_epi64x(0LL, 0LL, 0LL, 1LL << 63), A2); 11569371c9d4SSatish Balay _mm256_storeu_pd(&A[9], A3); 11579371c9d4SSatish Balay _mm256_storeu_pd(&A[13], A4); 11589371c9d4SSatish Balay _mm256_maskstore_pd(&A[17], _mm256_set_epi64x(0LL, 0LL, 0LL, 1LL << 63), A5); 11599371c9d4SSatish Balay _mm256_storeu_pd(&A[18], A6); 11609371c9d4SSatish Balay _mm256_storeu_pd(&A[22], A7); 11619371c9d4SSatish Balay _mm256_maskstore_pd(&A[26], _mm256_set_epi64x(0LL, 0LL, 0LL, 1LL << 63), A8); 1162f30536b4SBarry Smith 11639371c9d4SSatish Balay A += 27; 11649371c9d4SSatish Balay C += 27; 1165f30536b4SBarry Smith } 11663ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 116796e086a2SDaniel Kokron } 116896e086a2SDaniel Kokron #else 1169d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_9(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 1170d71ae5a4SJacob Faibussowitsch { 1171f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[9] * C[1] + B[18] * C[2] + B[27] * C[3] + B[36] * C[4] + B[45] * C[5] + B[54] * C[6] + B[63] * C[7] + B[72] * C[8]; 1172f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[10] * C[1] + B[19] * C[2] + B[28] * C[3] + B[37] * C[4] + B[46] * C[5] + B[55] * C[6] + B[64] * C[7] + B[73] * C[8]; 1173f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[11] * C[1] + B[20] * C[2] + B[29] * C[3] + B[38] * C[4] + B[47] * C[5] + B[56] * C[6] + B[65] * C[7] + B[74] * C[8]; 1174f30536b4SBarry Smith A[3] -= B[3] * C[0] + B[12] * C[1] + B[21] * C[2] + B[30] * C[3] + B[39] * C[4] + B[48] * C[5] + B[57] * C[6] + B[66] * C[7] + B[75] * C[8]; 1175f30536b4SBarry Smith A[4] -= B[4] * C[0] + B[13] * C[1] + B[22] * C[2] + B[31] * C[3] + B[40] * C[4] + B[49] * C[5] + B[58] * C[6] + B[67] * C[7] + B[76] * C[8]; 1176f30536b4SBarry Smith A[5] -= B[5] * C[0] + B[14] * C[1] + B[23] * C[2] + B[32] * C[3] + B[41] * C[4] + B[50] * C[5] + B[59] * C[6] + B[68] * C[7] + B[77] * C[8]; 1177f30536b4SBarry Smith A[6] -= B[6] * C[0] + B[15] * C[1] + B[24] * C[2] + B[33] * C[3] + B[42] * C[4] + B[51] * C[5] + B[60] * C[6] + B[69] * C[7] + B[78] * C[8]; 1178f30536b4SBarry Smith A[7] -= B[7] * C[0] + B[16] * C[1] + B[25] * C[2] + B[34] * C[3] + B[43] * C[4] + B[52] * C[5] + B[61] * C[6] + B[70] * C[7] + B[79] * C[8]; 1179f30536b4SBarry Smith A[8] -= B[8] * C[0] + B[17] * C[1] + B[26] * C[2] + B[35] * C[3] + B[44] * C[4] + B[53] * C[5] + B[62] * C[6] + B[71] * C[7] + B[80] * C[8]; 1180f30536b4SBarry Smith 1181f30536b4SBarry Smith A[9] -= B[0] * C[9] + B[9] * C[10] + B[18] * C[11] + B[27] * C[12] + B[36] * C[13] + B[45] * C[14] + B[54] * C[15] + B[63] * C[16] + B[72] * C[17]; 1182f30536b4SBarry Smith A[10] -= B[1] * C[9] + B[10] * C[10] + B[19] * C[11] + B[28] * C[12] + B[37] * C[13] + B[46] * C[14] + B[55] * C[15] + B[64] * C[16] + B[73] * C[17]; 1183f30536b4SBarry Smith A[11] -= B[2] * C[9] + B[11] * C[10] + B[20] * C[11] + B[29] * C[12] + B[38] * C[13] + B[47] * C[14] + B[56] * C[15] + B[65] * C[16] + B[74] * C[17]; 1184f30536b4SBarry Smith A[12] -= B[3] * C[9] + B[12] * C[10] + B[21] * C[11] + B[30] * C[12] + B[39] * C[13] + B[48] * C[14] + B[57] * C[15] + B[66] * C[16] + B[75] * C[17]; 1185f30536b4SBarry Smith A[13] -= B[4] * C[9] + B[13] * C[10] + B[22] * C[11] + B[31] * C[12] + B[40] * C[13] + B[49] * C[14] + B[58] * C[15] + B[67] * C[16] + B[76] * C[17]; 1186f30536b4SBarry Smith A[14] -= B[5] * C[9] + B[14] * C[10] + B[23] * C[11] + B[32] * C[12] + B[41] * C[13] + B[50] * C[14] + B[59] * C[15] + B[68] * C[16] + B[77] * C[17]; 1187f30536b4SBarry Smith A[15] -= B[6] * C[9] + B[15] * C[10] + B[24] * C[11] + B[33] * C[12] + B[42] * C[13] + B[51] * C[14] + B[60] * C[15] + B[69] * C[16] + B[78] * C[17]; 1188f30536b4SBarry Smith A[16] -= B[7] * C[9] + B[16] * C[10] + B[25] * C[11] + B[34] * C[12] + B[43] * C[13] + B[52] * C[14] + B[61] * C[15] + B[70] * C[16] + B[79] * C[17]; 1189f30536b4SBarry Smith A[17] -= B[8] * C[9] + B[17] * C[10] + B[26] * C[11] + B[35] * C[12] + B[44] * C[13] + B[53] * C[14] + B[62] * C[15] + B[71] * C[16] + B[80] * C[17]; 1190f30536b4SBarry Smith 1191f30536b4SBarry Smith A[18] -= B[0] * C[18] + B[9] * C[19] + B[18] * C[20] + B[27] * C[21] + B[36] * C[22] + B[45] * C[23] + B[54] * C[24] + B[63] * C[25] + B[72] * C[26]; 1192f30536b4SBarry Smith A[19] -= B[1] * C[18] + B[10] * C[19] + B[19] * C[20] + B[28] * C[21] + B[37] * C[22] + B[46] * C[23] + B[55] * C[24] + B[64] * C[25] + B[73] * C[26]; 1193f30536b4SBarry Smith A[20] -= B[2] * C[18] + B[11] * C[19] + B[20] * C[20] + B[29] * C[21] + B[38] * C[22] + B[47] * C[23] + B[56] * C[24] + B[65] * C[25] + B[74] * C[26]; 1194f30536b4SBarry Smith A[21] -= B[3] * C[18] + B[12] * C[19] + B[21] * C[20] + B[30] * C[21] + B[39] * C[22] + B[48] * C[23] + B[57] * C[24] + B[66] * C[25] + B[75] * C[26]; 1195f30536b4SBarry Smith A[22] -= B[4] * C[18] + B[13] * C[19] + B[22] * C[20] + B[31] * C[21] + B[40] * C[22] + B[49] * C[23] + B[58] * C[24] + B[67] * C[25] + B[76] * C[26]; 1196f30536b4SBarry Smith A[23] -= B[5] * C[18] + B[14] * C[19] + B[23] * C[20] + B[32] * C[21] + B[41] * C[22] + B[50] * C[23] + B[59] * C[24] + B[68] * C[25] + B[77] * C[26]; 1197f30536b4SBarry Smith A[24] -= B[6] * C[18] + B[15] * C[19] + B[24] * C[20] + B[33] * C[21] + B[42] * C[22] + B[51] * C[23] + B[60] * C[24] + B[69] * C[25] + B[78] * C[26]; 1198f30536b4SBarry Smith A[25] -= B[7] * C[18] + B[16] * C[19] + B[25] * C[20] + B[34] * C[21] + B[43] * C[22] + B[52] * C[23] + B[61] * C[24] + B[70] * C[25] + B[79] * C[26]; 1199f30536b4SBarry Smith A[26] -= B[8] * C[18] + B[17] * C[19] + B[26] * C[20] + B[35] * C[21] + B[44] * C[22] + B[53] * C[23] + B[62] * C[24] + B[71] * C[25] + B[80] * C[26]; 1200f30536b4SBarry Smith 1201f30536b4SBarry Smith A[27] -= B[0] * C[27] + B[9] * C[28] + B[18] * C[29] + B[27] * C[30] + B[36] * C[31] + B[45] * C[32] + B[54] * C[33] + B[63] * C[34] + B[72] * C[35]; 1202f30536b4SBarry Smith A[28] -= B[1] * C[27] + B[10] * C[28] + B[19] * C[29] + B[28] * C[30] + B[37] * C[31] + B[46] * C[32] + B[55] * C[33] + B[64] * C[34] + B[73] * C[35]; 1203f30536b4SBarry Smith A[29] -= B[2] * C[27] + B[11] * C[28] + B[20] * C[29] + B[29] * C[30] + B[38] * C[31] + B[47] * C[32] + B[56] * C[33] + B[65] * C[34] + B[74] * C[35]; 1204f30536b4SBarry Smith A[30] -= B[3] * C[27] + B[12] * C[28] + B[21] * C[29] + B[30] * C[30] + B[39] * C[31] + B[48] * C[32] + B[57] * C[33] + B[66] * C[34] + B[75] * C[35]; 1205f30536b4SBarry Smith A[31] -= B[4] * C[27] + B[13] * C[28] + B[22] * C[29] + B[31] * C[30] + B[40] * C[31] + B[49] * C[32] + B[58] * C[33] + B[67] * C[34] + B[76] * C[35]; 1206f30536b4SBarry Smith A[32] -= B[5] * C[27] + B[14] * C[28] + B[23] * C[29] + B[32] * C[30] + B[41] * C[31] + B[50] * C[32] + B[59] * C[33] + B[68] * C[34] + B[77] * C[35]; 1207f30536b4SBarry Smith A[33] -= B[6] * C[27] + B[15] * C[28] + B[24] * C[29] + B[33] * C[30] + B[42] * C[31] + B[51] * C[32] + B[60] * C[33] + B[69] * C[34] + B[78] * C[35]; 1208f30536b4SBarry Smith A[34] -= B[7] * C[27] + B[16] * C[28] + B[25] * C[29] + B[34] * C[30] + B[43] * C[31] + B[52] * C[32] + B[61] * C[33] + B[70] * C[34] + B[79] * C[35]; 1209f30536b4SBarry Smith A[35] -= B[8] * C[27] + B[17] * C[28] + B[26] * C[29] + B[35] * C[30] + B[44] * C[31] + B[53] * C[32] + B[62] * C[33] + B[71] * C[34] + B[80] * C[35]; 1210f30536b4SBarry Smith 1211f30536b4SBarry Smith A[36] -= B[0] * C[36] + B[9] * C[37] + B[18] * C[38] + B[27] * C[39] + B[36] * C[40] + B[45] * C[41] + B[54] * C[42] + B[63] * C[43] + B[72] * C[44]; 1212f30536b4SBarry Smith A[37] -= B[1] * C[36] + B[10] * C[37] + B[19] * C[38] + B[28] * C[39] + B[37] * C[40] + B[46] * C[41] + B[55] * C[42] + B[64] * C[43] + B[73] * C[44]; 1213f30536b4SBarry Smith A[38] -= B[2] * C[36] + B[11] * C[37] + B[20] * C[38] + B[29] * C[39] + B[38] * C[40] + B[47] * C[41] + B[56] * C[42] + B[65] * C[43] + B[74] * C[44]; 1214f30536b4SBarry Smith A[39] -= B[3] * C[36] + B[12] * C[37] + B[21] * C[38] + B[30] * C[39] + B[39] * C[40] + B[48] * C[41] + B[57] * C[42] + B[66] * C[43] + B[75] * C[44]; 1215f30536b4SBarry Smith A[40] -= B[4] * C[36] + B[13] * C[37] + B[22] * C[38] + B[31] * C[39] + B[40] * C[40] + B[49] * C[41] + B[58] * C[42] + B[67] * C[43] + B[76] * C[44]; 1216f30536b4SBarry Smith A[41] -= B[5] * C[36] + B[14] * C[37] + B[23] * C[38] + B[32] * C[39] + B[41] * C[40] + B[50] * C[41] + B[59] * C[42] + B[68] * C[43] + B[77] * C[44]; 1217f30536b4SBarry Smith A[42] -= B[6] * C[36] + B[15] * C[37] + B[24] * C[38] + B[33] * C[39] + B[42] * C[40] + B[51] * C[41] + B[60] * C[42] + B[69] * C[43] + B[78] * C[44]; 1218f30536b4SBarry Smith A[43] -= B[7] * C[36] + B[16] * C[37] + B[25] * C[38] + B[34] * C[39] + B[43] * C[40] + B[52] * C[41] + B[61] * C[42] + B[70] * C[43] + B[79] * C[44]; 1219f30536b4SBarry Smith A[44] -= B[8] * C[36] + B[17] * C[37] + B[26] * C[38] + B[35] * C[39] + B[44] * C[40] + B[53] * C[41] + B[62] * C[42] + B[71] * C[43] + B[80] * C[44]; 1220f30536b4SBarry Smith 1221f30536b4SBarry Smith A[45] -= B[0] * C[45] + B[9] * C[46] + B[18] * C[47] + B[27] * C[48] + B[36] * C[49] + B[45] * C[50] + B[54] * C[51] + B[63] * C[52] + B[72] * C[53]; 1222f30536b4SBarry Smith A[46] -= B[1] * C[45] + B[10] * C[46] + B[19] * C[47] + B[28] * C[48] + B[37] * C[49] + B[46] * C[50] + B[55] * C[51] + B[64] * C[52] + B[73] * C[53]; 1223f30536b4SBarry Smith A[47] -= B[2] * C[45] + B[11] * C[46] + B[20] * C[47] + B[29] * C[48] + B[38] * C[49] + B[47] * C[50] + B[56] * C[51] + B[65] * C[52] + B[74] * C[53]; 1224f30536b4SBarry Smith A[48] -= B[3] * C[45] + B[12] * C[46] + B[21] * C[47] + B[30] * C[48] + B[39] * C[49] + B[48] * C[50] + B[57] * C[51] + B[66] * C[52] + B[75] * C[53]; 1225f30536b4SBarry Smith A[49] -= B[4] * C[45] + B[13] * C[46] + B[22] * C[47] + B[31] * C[48] + B[40] * C[49] + B[49] * C[50] + B[58] * C[51] + B[67] * C[52] + B[76] * C[53]; 1226f30536b4SBarry Smith A[50] -= B[5] * C[45] + B[14] * C[46] + B[23] * C[47] + B[32] * C[48] + B[41] * C[49] + B[50] * C[50] + B[59] * C[51] + B[68] * C[52] + B[77] * C[53]; 1227f30536b4SBarry Smith A[51] -= B[6] * C[45] + B[15] * C[46] + B[24] * C[47] + B[33] * C[48] + B[42] * C[49] + B[51] * C[50] + B[60] * C[51] + B[69] * C[52] + B[78] * C[53]; 1228f30536b4SBarry Smith A[52] -= B[7] * C[45] + B[16] * C[46] + B[25] * C[47] + B[34] * C[48] + B[43] * C[49] + B[52] * C[50] + B[61] * C[51] + B[70] * C[52] + B[79] * C[53]; 1229f30536b4SBarry Smith A[53] -= B[8] * C[45] + B[17] * C[46] + B[26] * C[47] + B[35] * C[48] + B[44] * C[49] + B[53] * C[50] + B[62] * C[51] + B[71] * C[52] + B[80] * C[53]; 1230f30536b4SBarry Smith 1231f30536b4SBarry Smith A[54] -= B[0] * C[54] + B[9] * C[55] + B[18] * C[56] + B[27] * C[57] + B[36] * C[58] + B[45] * C[59] + B[54] * C[60] + B[63] * C[61] + B[72] * C[62]; 1232f30536b4SBarry Smith A[55] -= B[1] * C[54] + B[10] * C[55] + B[19] * C[56] + B[28] * C[57] + B[37] * C[58] + B[46] * C[59] + B[55] * C[60] + B[64] * C[61] + B[73] * C[62]; 1233f30536b4SBarry Smith A[56] -= B[2] * C[54] + B[11] * C[55] + B[20] * C[56] + B[29] * C[57] + B[38] * C[58] + B[47] * C[59] + B[56] * C[60] + B[65] * C[61] + B[74] * C[62]; 1234f30536b4SBarry Smith A[57] -= B[3] * C[54] + B[12] * C[55] + B[21] * C[56] + B[30] * C[57] + B[39] * C[58] + B[48] * C[59] + B[57] * C[60] + B[66] * C[61] + B[75] * C[62]; 1235f30536b4SBarry Smith A[58] -= B[4] * C[54] + B[13] * C[55] + B[22] * C[56] + B[31] * C[57] + B[40] * C[58] + B[49] * C[59] + B[58] * C[60] + B[67] * C[61] + B[76] * C[62]; 1236f30536b4SBarry Smith A[59] -= B[5] * C[54] + B[14] * C[55] + B[23] * C[56] + B[32] * C[57] + B[41] * C[58] + B[50] * C[59] + B[59] * C[60] + B[68] * C[61] + B[77] * C[62]; 1237f30536b4SBarry Smith A[60] -= B[6] * C[54] + B[15] * C[55] + B[24] * C[56] + B[33] * C[57] + B[42] * C[58] + B[51] * C[59] + B[60] * C[60] + B[69] * C[61] + B[78] * C[62]; 1238f30536b4SBarry Smith A[61] -= B[7] * C[54] + B[16] * C[55] + B[25] * C[56] + B[34] * C[57] + B[43] * C[58] + B[52] * C[59] + B[61] * C[60] + B[70] * C[61] + B[79] * C[62]; 1239f30536b4SBarry Smith A[62] -= B[8] * C[54] + B[17] * C[55] + B[26] * C[56] + B[35] * C[57] + B[44] * C[58] + B[53] * C[59] + B[62] * C[60] + B[71] * C[61] + B[80] * C[62]; 1240f30536b4SBarry Smith 1241f30536b4SBarry Smith A[63] -= B[0] * C[63] + B[9] * C[64] + B[18] * C[65] + B[27] * C[66] + B[36] * C[67] + B[45] * C[68] + B[54] * C[69] + B[63] * C[70] + B[72] * C[71]; 1242f30536b4SBarry Smith A[64] -= B[1] * C[63] + B[10] * C[64] + B[19] * C[65] + B[28] * C[66] + B[37] * C[67] + B[46] * C[68] + B[55] * C[69] + B[64] * C[70] + B[73] * C[71]; 1243f30536b4SBarry Smith A[65] -= B[2] * C[63] + B[11] * C[64] + B[20] * C[65] + B[29] * C[66] + B[38] * C[67] + B[47] * C[68] + B[56] * C[69] + B[65] * C[70] + B[74] * C[71]; 1244f30536b4SBarry Smith A[66] -= B[3] * C[63] + B[12] * C[64] + B[21] * C[65] + B[30] * C[66] + B[39] * C[67] + B[48] * C[68] + B[57] * C[69] + B[66] * C[70] + B[75] * C[71]; 1245f30536b4SBarry Smith A[67] -= B[4] * C[63] + B[13] * C[64] + B[22] * C[65] + B[31] * C[66] + B[40] * C[67] + B[49] * C[68] + B[58] * C[69] + B[67] * C[70] + B[76] * C[71]; 1246f30536b4SBarry Smith A[68] -= B[5] * C[63] + B[14] * C[64] + B[23] * C[65] + B[32] * C[66] + B[41] * C[67] + B[50] * C[68] + B[59] * C[69] + B[68] * C[70] + B[77] * C[71]; 1247f30536b4SBarry Smith A[69] -= B[6] * C[63] + B[15] * C[64] + B[24] * C[65] + B[33] * C[66] + B[42] * C[67] + B[51] * C[68] + B[60] * C[69] + B[69] * C[70] + B[78] * C[71]; 1248f30536b4SBarry Smith A[70] -= B[7] * C[63] + B[16] * C[64] + B[25] * C[65] + B[34] * C[66] + B[43] * C[67] + B[52] * C[68] + B[61] * C[69] + B[70] * C[70] + B[79] * C[71]; 1249f30536b4SBarry Smith A[71] -= B[8] * C[63] + B[17] * C[64] + B[26] * C[65] + B[35] * C[66] + B[44] * C[67] + B[53] * C[68] + B[62] * C[69] + B[71] * C[70] + B[80] * C[71]; 1250f30536b4SBarry Smith 1251f30536b4SBarry Smith A[72] -= B[0] * C[72] + B[9] * C[73] + B[18] * C[74] + B[27] * C[75] + B[36] * C[76] + B[45] * C[77] + B[54] * C[78] + B[63] * C[79] + B[72] * C[80]; 1252f30536b4SBarry Smith A[73] -= B[1] * C[72] + B[10] * C[73] + B[19] * C[74] + B[28] * C[75] + B[37] * C[76] + B[46] * C[77] + B[55] * C[78] + B[64] * C[79] + B[73] * C[80]; 1253f30536b4SBarry Smith A[74] -= B[2] * C[72] + B[11] * C[73] + B[20] * C[74] + B[29] * C[75] + B[38] * C[76] + B[47] * C[77] + B[56] * C[78] + B[65] * C[79] + B[74] * C[80]; 1254f30536b4SBarry Smith A[75] -= B[3] * C[72] + B[12] * C[73] + B[21] * C[74] + B[30] * C[75] + B[39] * C[76] + B[48] * C[77] + B[57] * C[78] + B[66] * C[79] + B[75] * C[80]; 1255f30536b4SBarry Smith A[76] -= B[4] * C[72] + B[13] * C[73] + B[22] * C[74] + B[31] * C[75] + B[40] * C[76] + B[49] * C[77] + B[58] * C[78] + B[67] * C[79] + B[76] * C[80]; 1256f30536b4SBarry Smith A[77] -= B[5] * C[72] + B[14] * C[73] + B[23] * C[74] + B[32] * C[75] + B[41] * C[76] + B[50] * C[77] + B[59] * C[78] + B[68] * C[79] + B[77] * C[80]; 1257f30536b4SBarry Smith A[78] -= B[6] * C[72] + B[15] * C[73] + B[24] * C[74] + B[33] * C[75] + B[42] * C[76] + B[51] * C[77] + B[60] * C[78] + B[69] * C[79] + B[78] * C[80]; 1258f30536b4SBarry Smith A[79] -= B[7] * C[72] + B[16] * C[73] + B[25] * C[74] + B[34] * C[75] + B[43] * C[76] + B[52] * C[77] + B[61] * C[78] + B[70] * C[79] + B[79] * C[80]; 1259f30536b4SBarry Smith A[80] -= B[8] * C[72] + B[17] * C[73] + B[26] * C[74] + B[35] * C[75] + B[44] * C[76] + B[53] * C[77] + B[62] * C[78] + B[71] * C[79] + B[80] * C[80]; 12603ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 126196e086a2SDaniel Kokron } 126296e086a2SDaniel Kokron #endif 126396e086a2SDaniel Kokron 1264b59fa7b7SHong Zhang /* 1265b59fa7b7SHong Zhang PetscKernel_A_gets_A_times_B_11: A = A * B with size bs=11 1266b59fa7b7SHong Zhang 1267b59fa7b7SHong Zhang Input Parameters: 1268b59fa7b7SHong Zhang + A,B - square bs by bs arrays stored in column major order 1269a5b23f4aSJose E. Roman - W - bs*bs work array 1270b59fa7b7SHong Zhang 1271b59fa7b7SHong Zhang Output Parameter: 1272b59fa7b7SHong Zhang . A = A * B 1273b59fa7b7SHong Zhang */ 1274d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_11(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 1275d71ae5a4SJacob Faibussowitsch { 12769566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 121)); 1277f30536b4SBarry Smith A[0] = W[0] * B[0] + W[11] * B[1] + W[22] * B[2] + W[33] * B[3] + W[44] * B[4] + W[55] * B[5] + W[66] * B[6] + W[77] * B[7] + W[88] * B[8] + W[99] * B[9] + W[110] * B[10]; 1278f30536b4SBarry Smith A[1] = W[1] * B[0] + W[12] * B[1] + W[23] * B[2] + W[34] * B[3] + W[45] * B[4] + W[56] * B[5] + W[67] * B[6] + W[78] * B[7] + W[89] * B[8] + W[100] * B[9] + W[111] * B[10]; 1279f30536b4SBarry Smith A[2] = W[2] * B[0] + W[13] * B[1] + W[24] * B[2] + W[35] * B[3] + W[46] * B[4] + W[57] * B[5] + W[68] * B[6] + W[79] * B[7] + W[90] * B[8] + W[101] * B[9] + W[112] * B[10]; 1280f30536b4SBarry Smith A[3] = W[3] * B[0] + W[14] * B[1] + W[25] * B[2] + W[36] * B[3] + W[47] * B[4] + W[58] * B[5] + W[69] * B[6] + W[80] * B[7] + W[91] * B[8] + W[102] * B[9] + W[113] * B[10]; 1281f30536b4SBarry Smith A[4] = W[4] * B[0] + W[15] * B[1] + W[26] * B[2] + W[37] * B[3] + W[48] * B[4] + W[59] * B[5] + W[70] * B[6] + W[81] * B[7] + W[92] * B[8] + W[103] * B[9] + W[114] * B[10]; 1282f30536b4SBarry Smith A[5] = W[5] * B[0] + W[16] * B[1] + W[27] * B[2] + W[38] * B[3] + W[49] * B[4] + W[60] * B[5] + W[71] * B[6] + W[82] * B[7] + W[93] * B[8] + W[104] * B[9] + W[115] * B[10]; 1283f30536b4SBarry Smith A[6] = W[6] * B[0] + W[17] * B[1] + W[28] * B[2] + W[39] * B[3] + W[50] * B[4] + W[61] * B[5] + W[72] * B[6] + W[83] * B[7] + W[94] * B[8] + W[105] * B[9] + W[116] * B[10]; 1284f30536b4SBarry Smith A[7] = W[7] * B[0] + W[18] * B[1] + W[29] * B[2] + W[40] * B[3] + W[51] * B[4] + W[62] * B[5] + W[73] * B[6] + W[84] * B[7] + W[95] * B[8] + W[106] * B[9] + W[117] * B[10]; 1285f30536b4SBarry Smith A[8] = W[8] * B[0] + W[19] * B[1] + W[30] * B[2] + W[41] * B[3] + W[52] * B[4] + W[63] * B[5] + W[74] * B[6] + W[85] * B[7] + W[96] * B[8] + W[107] * B[9] + W[118] * B[10]; 1286f30536b4SBarry Smith A[9] = W[9] * B[0] + W[20] * B[1] + W[31] * B[2] + W[42] * B[3] + W[53] * B[4] + W[64] * B[5] + W[75] * B[6] + W[86] * B[7] + W[97] * B[8] + W[108] * B[9] + W[119] * B[10]; 1287f30536b4SBarry Smith A[10] = W[10] * B[0] + W[21] * B[1] + W[32] * B[2] + W[43] * B[3] + W[54] * B[4] + W[65] * B[5] + W[76] * B[6] + W[87] * B[7] + W[98] * B[8] + W[109] * B[9] + W[120] * B[10]; 1288f30536b4SBarry Smith 1289f30536b4SBarry Smith A[11] = W[0] * B[11] + W[11] * B[12] + W[22] * B[13] + W[33] * B[14] + W[44] * B[15] + W[55] * B[16] + W[66] * B[17] + W[77] * B[18] + W[88] * B[19] + W[99] * B[20] + W[110] * B[21]; 1290f30536b4SBarry Smith A[12] = W[1] * B[11] + W[12] * B[12] + W[23] * B[13] + W[34] * B[14] + W[45] * B[15] + W[56] * B[16] + W[67] * B[17] + W[78] * B[18] + W[89] * B[19] + W[100] * B[20] + W[111] * B[21]; 1291f30536b4SBarry Smith A[13] = W[2] * B[11] + W[13] * B[12] + W[24] * B[13] + W[35] * B[14] + W[46] * B[15] + W[57] * B[16] + W[68] * B[17] + W[79] * B[18] + W[90] * B[19] + W[101] * B[20] + W[112] * B[21]; 1292f30536b4SBarry Smith A[14] = W[3] * B[11] + W[14] * B[12] + W[25] * B[13] + W[36] * B[14] + W[47] * B[15] + W[58] * B[16] + W[69] * B[17] + W[80] * B[18] + W[91] * B[19] + W[102] * B[20] + W[113] * B[21]; 1293f30536b4SBarry Smith A[15] = W[4] * B[11] + W[15] * B[12] + W[26] * B[13] + W[37] * B[14] + W[48] * B[15] + W[59] * B[16] + W[70] * B[17] + W[81] * B[18] + W[92] * B[19] + W[103] * B[20] + W[114] * B[21]; 1294f30536b4SBarry Smith A[16] = W[5] * B[11] + W[16] * B[12] + W[27] * B[13] + W[38] * B[14] + W[49] * B[15] + W[60] * B[16] + W[71] * B[17] + W[82] * B[18] + W[93] * B[19] + W[104] * B[20] + W[115] * B[21]; 1295f30536b4SBarry Smith A[17] = W[6] * B[11] + W[17] * B[12] + W[28] * B[13] + W[39] * B[14] + W[50] * B[15] + W[61] * B[16] + W[72] * B[17] + W[83] * B[18] + W[94] * B[19] + W[105] * B[20] + W[116] * B[21]; 1296f30536b4SBarry Smith A[18] = W[7] * B[11] + W[18] * B[12] + W[29] * B[13] + W[40] * B[14] + W[51] * B[15] + W[62] * B[16] + W[73] * B[17] + W[84] * B[18] + W[95] * B[19] + W[106] * B[20] + W[117] * B[21]; 1297f30536b4SBarry Smith A[19] = W[8] * B[11] + W[19] * B[12] + W[30] * B[13] + W[41] * B[14] + W[52] * B[15] + W[63] * B[16] + W[74] * B[17] + W[85] * B[18] + W[96] * B[19] + W[107] * B[20] + W[118] * B[21]; 1298f30536b4SBarry Smith A[20] = W[9] * B[11] + W[20] * B[12] + W[31] * B[13] + W[42] * B[14] + W[53] * B[15] + W[64] * B[16] + W[75] * B[17] + W[86] * B[18] + W[97] * B[19] + W[108] * B[20] + W[119] * B[21]; 1299f30536b4SBarry Smith A[21] = W[10] * B[11] + W[21] * B[12] + W[32] * B[13] + W[43] * B[14] + W[54] * B[15] + W[65] * B[16] + W[76] * B[17] + W[87] * B[18] + W[98] * B[19] + W[109] * B[20] + W[120] * B[21]; 1300f30536b4SBarry Smith 1301f30536b4SBarry Smith A[22] = W[0] * B[22] + W[11] * B[23] + W[22] * B[24] + W[33] * B[25] + W[44] * B[26] + W[55] * B[27] + W[66] * B[28] + W[77] * B[29] + W[88] * B[30] + W[99] * B[31] + W[110] * B[32]; 1302f30536b4SBarry Smith A[23] = W[1] * B[22] + W[12] * B[23] + W[23] * B[24] + W[34] * B[25] + W[45] * B[26] + W[56] * B[27] + W[67] * B[28] + W[78] * B[29] + W[89] * B[30] + W[100] * B[31] + W[111] * B[32]; 1303f30536b4SBarry Smith A[24] = W[2] * B[22] + W[13] * B[23] + W[24] * B[24] + W[35] * B[25] + W[46] * B[26] + W[57] * B[27] + W[68] * B[28] + W[79] * B[29] + W[90] * B[30] + W[101] * B[31] + W[112] * B[32]; 1304f30536b4SBarry Smith A[25] = W[3] * B[22] + W[14] * B[23] + W[25] * B[24] + W[36] * B[25] + W[47] * B[26] + W[58] * B[27] + W[69] * B[28] + W[80] * B[29] + W[91] * B[30] + W[102] * B[31] + W[113] * B[32]; 1305f30536b4SBarry Smith A[26] = W[4] * B[22] + W[15] * B[23] + W[26] * B[24] + W[37] * B[25] + W[48] * B[26] + W[59] * B[27] + W[70] * B[28] + W[81] * B[29] + W[92] * B[30] + W[103] * B[31] + W[114] * B[32]; 1306f30536b4SBarry Smith A[27] = W[5] * B[22] + W[16] * B[23] + W[27] * B[24] + W[38] * B[25] + W[49] * B[26] + W[60] * B[27] + W[71] * B[28] + W[82] * B[29] + W[93] * B[30] + W[104] * B[31] + W[115] * B[32]; 1307f30536b4SBarry Smith A[28] = W[6] * B[22] + W[17] * B[23] + W[28] * B[24] + W[39] * B[25] + W[50] * B[26] + W[61] * B[27] + W[72] * B[28] + W[83] * B[29] + W[94] * B[30] + W[105] * B[31] + W[116] * B[32]; 1308f30536b4SBarry Smith A[29] = W[7] * B[22] + W[18] * B[23] + W[29] * B[24] + W[40] * B[25] + W[51] * B[26] + W[62] * B[27] + W[73] * B[28] + W[84] * B[29] + W[95] * B[30] + W[106] * B[31] + W[117] * B[32]; 1309f30536b4SBarry Smith A[30] = W[8] * B[22] + W[19] * B[23] + W[30] * B[24] + W[41] * B[25] + W[52] * B[26] + W[63] * B[27] + W[74] * B[28] + W[85] * B[29] + W[96] * B[30] + W[107] * B[31] + W[118] * B[32]; 1310f30536b4SBarry Smith A[31] = W[9] * B[22] + W[20] * B[23] + W[31] * B[24] + W[42] * B[25] + W[53] * B[26] + W[64] * B[27] + W[75] * B[28] + W[86] * B[29] + W[97] * B[30] + W[108] * B[31] + W[119] * B[32]; 1311f30536b4SBarry Smith A[32] = W[10] * B[22] + W[21] * B[23] + W[32] * B[24] + W[43] * B[25] + W[54] * B[26] + W[65] * B[27] + W[76] * B[28] + W[87] * B[29] + W[98] * B[30] + W[109] * B[31] + W[120] * B[32]; 1312f30536b4SBarry Smith 1313f30536b4SBarry Smith A[33] = W[0] * B[33] + W[11] * B[34] + W[22] * B[35] + W[33] * B[36] + W[44] * B[37] + W[55] * B[38] + W[66] * B[39] + W[77] * B[40] + W[88] * B[41] + W[99] * B[42] + W[110] * B[43]; 1314f30536b4SBarry Smith A[34] = W[1] * B[33] + W[12] * B[34] + W[23] * B[35] + W[34] * B[36] + W[45] * B[37] + W[56] * B[38] + W[67] * B[39] + W[78] * B[40] + W[89] * B[41] + W[100] * B[42] + W[111] * B[43]; 1315f30536b4SBarry Smith A[35] = W[2] * B[33] + W[13] * B[34] + W[24] * B[35] + W[35] * B[36] + W[46] * B[37] + W[57] * B[38] + W[68] * B[39] + W[79] * B[40] + W[90] * B[41] + W[101] * B[42] + W[112] * B[43]; 1316f30536b4SBarry Smith A[36] = W[3] * B[33] + W[14] * B[34] + W[25] * B[35] + W[36] * B[36] + W[47] * B[37] + W[58] * B[38] + W[69] * B[39] + W[80] * B[40] + W[91] * B[41] + W[102] * B[42] + W[113] * B[43]; 1317f30536b4SBarry Smith A[37] = W[4] * B[33] + W[15] * B[34] + W[26] * B[35] + W[37] * B[36] + W[48] * B[37] + W[59] * B[38] + W[70] * B[39] + W[81] * B[40] + W[92] * B[41] + W[103] * B[42] + W[114] * B[43]; 1318f30536b4SBarry Smith A[38] = W[5] * B[33] + W[16] * B[34] + W[27] * B[35] + W[38] * B[36] + W[49] * B[37] + W[60] * B[38] + W[71] * B[39] + W[82] * B[40] + W[93] * B[41] + W[104] * B[42] + W[115] * B[43]; 1319f30536b4SBarry Smith A[39] = W[6] * B[33] + W[17] * B[34] + W[28] * B[35] + W[39] * B[36] + W[50] * B[37] + W[61] * B[38] + W[72] * B[39] + W[83] * B[40] + W[94] * B[41] + W[105] * B[42] + W[116] * B[43]; 1320f30536b4SBarry Smith A[40] = W[7] * B[33] + W[18] * B[34] + W[29] * B[35] + W[40] * B[36] + W[51] * B[37] + W[62] * B[38] + W[73] * B[39] + W[84] * B[40] + W[95] * B[41] + W[106] * B[42] + W[117] * B[43]; 1321f30536b4SBarry Smith A[41] = W[8] * B[33] + W[19] * B[34] + W[30] * B[35] + W[41] * B[36] + W[52] * B[37] + W[63] * B[38] + W[74] * B[39] + W[85] * B[40] + W[96] * B[41] + W[107] * B[42] + W[118] * B[43]; 1322f30536b4SBarry Smith A[42] = W[9] * B[33] + W[20] * B[34] + W[31] * B[35] + W[42] * B[36] + W[53] * B[37] + W[64] * B[38] + W[75] * B[39] + W[86] * B[40] + W[97] * B[41] + W[108] * B[42] + W[119] * B[43]; 1323f30536b4SBarry Smith A[43] = W[10] * B[33] + W[21] * B[34] + W[32] * B[35] + W[43] * B[36] + W[54] * B[37] + W[65] * B[38] + W[76] * B[39] + W[87] * B[40] + W[98] * B[41] + W[109] * B[42] + W[120] * B[43]; 1324f30536b4SBarry Smith 1325f30536b4SBarry Smith A[44] = W[0] * B[44] + W[11] * B[45] + W[22] * B[46] + W[33] * B[47] + W[44] * B[48] + W[55] * B[49] + W[66] * B[50] + W[77] * B[51] + W[88] * B[52] + W[99] * B[53] + W[110] * B[54]; 1326f30536b4SBarry Smith A[45] = W[1] * B[44] + W[12] * B[45] + W[23] * B[46] + W[34] * B[47] + W[45] * B[48] + W[56] * B[49] + W[67] * B[50] + W[78] * B[51] + W[89] * B[52] + W[100] * B[53] + W[111] * B[54]; 1327f30536b4SBarry Smith A[46] = W[2] * B[44] + W[13] * B[45] + W[24] * B[46] + W[35] * B[47] + W[46] * B[48] + W[57] * B[49] + W[68] * B[50] + W[79] * B[51] + W[90] * B[52] + W[101] * B[53] + W[112] * B[54]; 1328f30536b4SBarry Smith A[47] = W[3] * B[44] + W[14] * B[45] + W[25] * B[46] + W[36] * B[47] + W[47] * B[48] + W[58] * B[49] + W[69] * B[50] + W[80] * B[51] + W[91] * B[52] + W[102] * B[53] + W[113] * B[54]; 1329f30536b4SBarry Smith A[48] = W[4] * B[44] + W[15] * B[45] + W[26] * B[46] + W[37] * B[47] + W[48] * B[48] + W[59] * B[49] + W[70] * B[50] + W[81] * B[51] + W[92] * B[52] + W[103] * B[53] + W[114] * B[54]; 1330f30536b4SBarry Smith A[49] = W[5] * B[44] + W[16] * B[45] + W[27] * B[46] + W[38] * B[47] + W[49] * B[48] + W[60] * B[49] + W[71] * B[50] + W[82] * B[51] + W[93] * B[52] + W[104] * B[53] + W[115] * B[54]; 1331f30536b4SBarry Smith A[50] = W[6] * B[44] + W[17] * B[45] + W[28] * B[46] + W[39] * B[47] + W[50] * B[48] + W[61] * B[49] + W[72] * B[50] + W[83] * B[51] + W[94] * B[52] + W[105] * B[53] + W[116] * B[54]; 1332f30536b4SBarry Smith A[51] = W[7] * B[44] + W[18] * B[45] + W[29] * B[46] + W[40] * B[47] + W[51] * B[48] + W[62] * B[49] + W[73] * B[50] + W[84] * B[51] + W[95] * B[52] + W[106] * B[53] + W[117] * B[54]; 1333f30536b4SBarry Smith A[52] = W[8] * B[44] + W[19] * B[45] + W[30] * B[46] + W[41] * B[47] + W[52] * B[48] + W[63] * B[49] + W[74] * B[50] + W[85] * B[51] + W[96] * B[52] + W[107] * B[53] + W[118] * B[54]; 1334f30536b4SBarry Smith A[53] = W[9] * B[44] + W[20] * B[45] + W[31] * B[46] + W[42] * B[47] + W[53] * B[48] + W[64] * B[49] + W[75] * B[50] + W[86] * B[51] + W[97] * B[52] + W[108] * B[53] + W[119] * B[54]; 1335f30536b4SBarry Smith A[54] = W[10] * B[44] + W[21] * B[45] + W[32] * B[46] + W[43] * B[47] + W[54] * B[48] + W[65] * B[49] + W[76] * B[50] + W[87] * B[51] + W[98] * B[52] + W[109] * B[53] + W[120] * B[54]; 1336f30536b4SBarry Smith 1337f30536b4SBarry Smith A[55] = W[0] * B[55] + W[11] * B[56] + W[22] * B[57] + W[33] * B[58] + W[44] * B[59] + W[55] * B[60] + W[66] * B[61] + W[77] * B[62] + W[88] * B[63] + W[99] * B[64] + W[110] * B[65]; 1338f30536b4SBarry Smith A[56] = W[1] * B[55] + W[12] * B[56] + W[23] * B[57] + W[34] * B[58] + W[45] * B[59] + W[56] * B[60] + W[67] * B[61] + W[78] * B[62] + W[89] * B[63] + W[100] * B[64] + W[111] * B[65]; 1339f30536b4SBarry Smith A[57] = W[2] * B[55] + W[13] * B[56] + W[24] * B[57] + W[35] * B[58] + W[46] * B[59] + W[57] * B[60] + W[68] * B[61] + W[79] * B[62] + W[90] * B[63] + W[101] * B[64] + W[112] * B[65]; 1340f30536b4SBarry Smith A[58] = W[3] * B[55] + W[14] * B[56] + W[25] * B[57] + W[36] * B[58] + W[47] * B[59] + W[58] * B[60] + W[69] * B[61] + W[80] * B[62] + W[91] * B[63] + W[102] * B[64] + W[113] * B[65]; 1341f30536b4SBarry Smith A[59] = W[4] * B[55] + W[15] * B[56] + W[26] * B[57] + W[37] * B[58] + W[48] * B[59] + W[59] * B[60] + W[70] * B[61] + W[81] * B[62] + W[92] * B[63] + W[103] * B[64] + W[114] * B[65]; 1342f30536b4SBarry Smith A[60] = W[5] * B[55] + W[16] * B[56] + W[27] * B[57] + W[38] * B[58] + W[49] * B[59] + W[60] * B[60] + W[71] * B[61] + W[82] * B[62] + W[93] * B[63] + W[104] * B[64] + W[115] * B[65]; 1343f30536b4SBarry Smith A[61] = W[6] * B[55] + W[17] * B[56] + W[28] * B[57] + W[39] * B[58] + W[50] * B[59] + W[61] * B[60] + W[72] * B[61] + W[83] * B[62] + W[94] * B[63] + W[105] * B[64] + W[116] * B[65]; 1344f30536b4SBarry Smith A[62] = W[7] * B[55] + W[18] * B[56] + W[29] * B[57] + W[40] * B[58] + W[51] * B[59] + W[62] * B[60] + W[73] * B[61] + W[84] * B[62] + W[95] * B[63] + W[106] * B[64] + W[117] * B[65]; 1345f30536b4SBarry Smith A[63] = W[8] * B[55] + W[19] * B[56] + W[30] * B[57] + W[41] * B[58] + W[52] * B[59] + W[63] * B[60] + W[74] * B[61] + W[85] * B[62] + W[96] * B[63] + W[107] * B[64] + W[118] * B[65]; 1346f30536b4SBarry Smith A[64] = W[9] * B[55] + W[20] * B[56] + W[31] * B[57] + W[42] * B[58] + W[53] * B[59] + W[64] * B[60] + W[75] * B[61] + W[86] * B[62] + W[97] * B[63] + W[108] * B[64] + W[119] * B[65]; 1347f30536b4SBarry Smith A[65] = W[10] * B[55] + W[21] * B[56] + W[32] * B[57] + W[43] * B[58] + W[54] * B[59] + W[65] * B[60] + W[76] * B[61] + W[87] * B[62] + W[98] * B[63] + W[109] * B[64] + W[120] * B[65]; 1348f30536b4SBarry Smith 1349f30536b4SBarry Smith A[66] = W[0] * B[66] + W[11] * B[67] + W[22] * B[68] + W[33] * B[69] + W[44] * B[70] + W[55] * B[71] + W[66] * B[72] + W[77] * B[73] + W[88] * B[74] + W[99] * B[75] + W[110] * B[76]; 1350f30536b4SBarry Smith A[67] = W[1] * B[66] + W[12] * B[67] + W[23] * B[68] + W[34] * B[69] + W[45] * B[70] + W[56] * B[71] + W[67] * B[72] + W[78] * B[73] + W[89] * B[74] + W[100] * B[75] + W[111] * B[76]; 1351f30536b4SBarry Smith A[68] = W[2] * B[66] + W[13] * B[67] + W[24] * B[68] + W[35] * B[69] + W[46] * B[70] + W[57] * B[71] + W[68] * B[72] + W[79] * B[73] + W[90] * B[74] + W[101] * B[75] + W[112] * B[76]; 1352f30536b4SBarry Smith A[69] = W[3] * B[66] + W[14] * B[67] + W[25] * B[68] + W[36] * B[69] + W[47] * B[70] + W[58] * B[71] + W[69] * B[72] + W[80] * B[73] + W[91] * B[74] + W[102] * B[75] + W[113] * B[76]; 1353f30536b4SBarry Smith A[70] = W[4] * B[66] + W[15] * B[67] + W[26] * B[68] + W[37] * B[69] + W[48] * B[70] + W[59] * B[71] + W[70] * B[72] + W[81] * B[73] + W[92] * B[74] + W[103] * B[75] + W[114] * B[76]; 1354f30536b4SBarry Smith A[71] = W[5] * B[66] + W[16] * B[67] + W[27] * B[68] + W[38] * B[69] + W[49] * B[70] + W[60] * B[71] + W[71] * B[72] + W[82] * B[73] + W[93] * B[74] + W[104] * B[75] + W[115] * B[76]; 1355f30536b4SBarry Smith A[72] = W[6] * B[66] + W[17] * B[67] + W[28] * B[68] + W[39] * B[69] + W[50] * B[70] + W[61] * B[71] + W[72] * B[72] + W[83] * B[73] + W[94] * B[74] + W[105] * B[75] + W[116] * B[76]; 1356f30536b4SBarry Smith A[73] = W[7] * B[66] + W[18] * B[67] + W[29] * B[68] + W[40] * B[69] + W[51] * B[70] + W[62] * B[71] + W[73] * B[72] + W[84] * B[73] + W[95] * B[74] + W[106] * B[75] + W[117] * B[76]; 1357f30536b4SBarry Smith A[74] = W[8] * B[66] + W[19] * B[67] + W[30] * B[68] + W[41] * B[69] + W[52] * B[70] + W[63] * B[71] + W[74] * B[72] + W[85] * B[73] + W[96] * B[74] + W[107] * B[75] + W[118] * B[76]; 1358f30536b4SBarry Smith A[75] = W[9] * B[66] + W[20] * B[67] + W[31] * B[68] + W[42] * B[69] + W[53] * B[70] + W[64] * B[71] + W[75] * B[72] + W[86] * B[73] + W[97] * B[74] + W[108] * B[75] + W[119] * B[76]; 1359f30536b4SBarry Smith A[76] = W[10] * B[66] + W[21] * B[67] + W[32] * B[68] + W[43] * B[69] + W[54] * B[70] + W[65] * B[71] + W[76] * B[72] + W[87] * B[73] + W[98] * B[74] + W[109] * B[75] + W[120] * B[76]; 1360f30536b4SBarry Smith 1361f30536b4SBarry Smith A[77] = W[0] * B[77] + W[11] * B[78] + W[22] * B[79] + W[33] * B[80] + W[44] * B[81] + W[55] * B[82] + W[66] * B[83] + W[77] * B[84] + W[88] * B[85] + W[99] * B[86] + W[110] * B[87]; 1362f30536b4SBarry Smith A[78] = W[1] * B[77] + W[12] * B[78] + W[23] * B[79] + W[34] * B[80] + W[45] * B[81] + W[56] * B[82] + W[67] * B[83] + W[78] * B[84] + W[89] * B[85] + W[100] * B[86] + W[111] * B[87]; 1363f30536b4SBarry Smith A[79] = W[2] * B[77] + W[13] * B[78] + W[24] * B[79] + W[35] * B[80] + W[46] * B[81] + W[57] * B[82] + W[68] * B[83] + W[79] * B[84] + W[90] * B[85] + W[101] * B[86] + W[112] * B[87]; 1364f30536b4SBarry Smith A[80] = W[3] * B[77] + W[14] * B[78] + W[25] * B[79] + W[36] * B[80] + W[47] * B[81] + W[58] * B[82] + W[69] * B[83] + W[80] * B[84] + W[91] * B[85] + W[102] * B[86] + W[113] * B[87]; 1365f30536b4SBarry Smith A[81] = W[4] * B[77] + W[15] * B[78] + W[26] * B[79] + W[37] * B[80] + W[48] * B[81] + W[59] * B[82] + W[70] * B[83] + W[81] * B[84] + W[92] * B[85] + W[103] * B[86] + W[114] * B[87]; 1366f30536b4SBarry Smith A[82] = W[5] * B[77] + W[16] * B[78] + W[27] * B[79] + W[38] * B[80] + W[49] * B[81] + W[60] * B[82] + W[71] * B[83] + W[82] * B[84] + W[93] * B[85] + W[104] * B[86] + W[115] * B[87]; 1367f30536b4SBarry Smith A[83] = W[6] * B[77] + W[17] * B[78] + W[28] * B[79] + W[39] * B[80] + W[50] * B[81] + W[61] * B[82] + W[72] * B[83] + W[83] * B[84] + W[94] * B[85] + W[105] * B[86] + W[116] * B[87]; 1368f30536b4SBarry Smith A[84] = W[7] * B[77] + W[18] * B[78] + W[29] * B[79] + W[40] * B[80] + W[51] * B[81] + W[62] * B[82] + W[73] * B[83] + W[84] * B[84] + W[95] * B[85] + W[106] * B[86] + W[117] * B[87]; 1369f30536b4SBarry Smith A[85] = W[8] * B[77] + W[19] * B[78] + W[30] * B[79] + W[41] * B[80] + W[52] * B[81] + W[63] * B[82] + W[74] * B[83] + W[85] * B[84] + W[96] * B[85] + W[107] * B[86] + W[118] * B[87]; 1370f30536b4SBarry Smith A[86] = W[9] * B[77] + W[20] * B[78] + W[31] * B[79] + W[42] * B[80] + W[53] * B[81] + W[64] * B[82] + W[75] * B[83] + W[86] * B[84] + W[97] * B[85] + W[108] * B[86] + W[119] * B[87]; 1371f30536b4SBarry Smith A[87] = W[10] * B[77] + W[21] * B[78] + W[32] * B[79] + W[43] * B[80] + W[54] * B[81] + W[65] * B[82] + W[76] * B[83] + W[87] * B[84] + W[98] * B[85] + W[109] * B[86] + W[120] * B[87]; 1372f30536b4SBarry Smith 1373f30536b4SBarry Smith A[88] = W[0] * B[88] + W[11] * B[89] + W[22] * B[90] + W[33] * B[91] + W[44] * B[92] + W[55] * B[93] + W[66] * B[94] + W[77] * B[95] + W[88] * B[96] + W[99] * B[97] + W[110] * B[98]; 1374f30536b4SBarry Smith A[89] = W[1] * B[88] + W[12] * B[89] + W[23] * B[90] + W[34] * B[91] + W[45] * B[92] + W[56] * B[93] + W[67] * B[94] + W[78] * B[95] + W[89] * B[96] + W[100] * B[97] + W[111] * B[98]; 1375f30536b4SBarry Smith A[90] = W[2] * B[88] + W[13] * B[89] + W[24] * B[90] + W[35] * B[91] + W[46] * B[92] + W[57] * B[93] + W[68] * B[94] + W[79] * B[95] + W[90] * B[96] + W[101] * B[97] + W[112] * B[98]; 1376f30536b4SBarry Smith A[91] = W[3] * B[88] + W[14] * B[89] + W[25] * B[90] + W[36] * B[91] + W[47] * B[92] + W[58] * B[93] + W[69] * B[94] + W[80] * B[95] + W[91] * B[96] + W[102] * B[97] + W[113] * B[98]; 1377f30536b4SBarry Smith A[92] = W[4] * B[88] + W[15] * B[89] + W[26] * B[90] + W[37] * B[91] + W[48] * B[92] + W[59] * B[93] + W[70] * B[94] + W[81] * B[95] + W[92] * B[96] + W[103] * B[97] + W[114] * B[98]; 1378f30536b4SBarry Smith A[93] = W[5] * B[88] + W[16] * B[89] + W[27] * B[90] + W[38] * B[91] + W[49] * B[92] + W[60] * B[93] + W[71] * B[94] + W[82] * B[95] + W[93] * B[96] + W[104] * B[97] + W[115] * B[98]; 1379f30536b4SBarry Smith A[94] = W[6] * B[88] + W[17] * B[89] + W[28] * B[90] + W[39] * B[91] + W[50] * B[92] + W[61] * B[93] + W[72] * B[94] + W[83] * B[95] + W[94] * B[96] + W[105] * B[97] + W[116] * B[98]; 1380f30536b4SBarry Smith A[95] = W[7] * B[88] + W[18] * B[89] + W[29] * B[90] + W[40] * B[91] + W[51] * B[92] + W[62] * B[93] + W[73] * B[94] + W[84] * B[95] + W[95] * B[96] + W[106] * B[97] + W[117] * B[98]; 1381f30536b4SBarry Smith A[96] = W[8] * B[88] + W[19] * B[89] + W[30] * B[90] + W[41] * B[91] + W[52] * B[92] + W[63] * B[93] + W[74] * B[94] + W[85] * B[95] + W[96] * B[96] + W[107] * B[97] + W[118] * B[98]; 1382f30536b4SBarry Smith A[97] = W[9] * B[88] + W[20] * B[89] + W[31] * B[90] + W[42] * B[91] + W[53] * B[92] + W[64] * B[93] + W[75] * B[94] + W[86] * B[95] + W[97] * B[96] + W[108] * B[97] + W[119] * B[98]; 1383f30536b4SBarry Smith A[98] = W[10] * B[88] + W[21] * B[89] + W[32] * B[90] + W[43] * B[91] + W[54] * B[92] + W[65] * B[93] + W[76] * B[94] + W[87] * B[95] + W[98] * B[96] + W[109] * B[97] + W[120] * B[98]; 1384f30536b4SBarry Smith 1385f30536b4SBarry Smith A[99] = W[0] * B[99] + W[11] * B[100] + W[22] * B[101] + W[33] * B[102] + W[44] * B[103] + W[55] * B[104] + W[66] * B[105] + W[77] * B[106] + W[88] * B[107] + W[99] * B[108] + W[110] * B[109]; 1386f30536b4SBarry Smith A[100] = W[1] * B[99] + W[12] * B[100] + W[23] * B[101] + W[34] * B[102] + W[45] * B[103] + W[56] * B[104] + W[67] * B[105] + W[78] * B[106] + W[89] * B[107] + W[100] * B[108] + W[111] * B[109]; 1387f30536b4SBarry Smith A[101] = W[2] * B[99] + W[13] * B[100] + W[24] * B[101] + W[35] * B[102] + W[46] * B[103] + W[57] * B[104] + W[68] * B[105] + W[79] * B[106] + W[90] * B[107] + W[101] * B[108] + W[112] * B[109]; 1388f30536b4SBarry Smith A[102] = W[3] * B[99] + W[14] * B[100] + W[25] * B[101] + W[36] * B[102] + W[47] * B[103] + W[58] * B[104] + W[69] * B[105] + W[80] * B[106] + W[91] * B[107] + W[102] * B[108] + W[113] * B[109]; 1389f30536b4SBarry Smith A[103] = W[4] * B[99] + W[15] * B[100] + W[26] * B[101] + W[37] * B[102] + W[48] * B[103] + W[59] * B[104] + W[70] * B[105] + W[81] * B[106] + W[92] * B[107] + W[103] * B[108] + W[114] * B[109]; 1390f30536b4SBarry Smith A[104] = W[5] * B[99] + W[16] * B[100] + W[27] * B[101] + W[38] * B[102] + W[49] * B[103] + W[60] * B[104] + W[71] * B[105] + W[82] * B[106] + W[93] * B[107] + W[104] * B[108] + W[115] * B[109]; 1391f30536b4SBarry Smith A[105] = W[6] * B[99] + W[17] * B[100] + W[28] * B[101] + W[39] * B[102] + W[50] * B[103] + W[61] * B[104] + W[72] * B[105] + W[83] * B[106] + W[94] * B[107] + W[105] * B[108] + W[116] * B[109]; 1392f30536b4SBarry Smith A[106] = W[7] * B[99] + W[18] * B[100] + W[29] * B[101] + W[40] * B[102] + W[51] * B[103] + W[62] * B[104] + W[73] * B[105] + W[84] * B[106] + W[95] * B[107] + W[106] * B[108] + W[117] * B[109]; 1393f30536b4SBarry Smith A[107] = W[8] * B[99] + W[19] * B[100] + W[30] * B[101] + W[41] * B[102] + W[52] * B[103] + W[63] * B[104] + W[74] * B[105] + W[85] * B[106] + W[96] * B[107] + W[107] * B[108] + W[118] * B[109]; 1394f30536b4SBarry Smith A[108] = W[9] * B[99] + W[20] * B[100] + W[31] * B[101] + W[42] * B[102] + W[53] * B[103] + W[64] * B[104] + W[75] * B[105] + W[86] * B[106] + W[97] * B[107] + W[108] * B[108] + W[119] * B[109]; 1395f30536b4SBarry Smith A[109] = W[10] * B[99] + W[21] * B[100] + W[32] * B[101] + W[43] * B[102] + W[54] * B[103] + W[65] * B[104] + W[76] * B[105] + W[87] * B[106] + W[98] * B[107] + W[109] * B[108] + W[120] * B[109]; 1396f30536b4SBarry Smith 1397f30536b4SBarry Smith A[110] = W[0] * B[110] + W[11] * B[111] + W[22] * B[112] + W[33] * B[113] + W[44] * B[114] + W[55] * B[115] + W[66] * B[116] + W[77] * B[117] + W[88] * B[118] + W[99] * B[119] + W[110] * B[120]; 1398f30536b4SBarry Smith A[111] = W[1] * B[110] + W[12] * B[111] + W[23] * B[112] + W[34] * B[113] + W[45] * B[114] + W[56] * B[115] + W[67] * B[116] + W[78] * B[117] + W[89] * B[118] + W[100] * B[119] + W[111] * B[120]; 1399f30536b4SBarry Smith A[112] = W[2] * B[110] + W[13] * B[111] + W[24] * B[112] + W[35] * B[113] + W[46] * B[114] + W[57] * B[115] + W[68] * B[116] + W[79] * B[117] + W[90] * B[118] + W[101] * B[119] + W[112] * B[120]; 1400f30536b4SBarry Smith A[113] = W[3] * B[110] + W[14] * B[111] + W[25] * B[112] + W[36] * B[113] + W[47] * B[114] + W[58] * B[115] + W[69] * B[116] + W[80] * B[117] + W[91] * B[118] + W[102] * B[119] + W[113] * B[120]; 1401f30536b4SBarry Smith A[114] = W[4] * B[110] + W[15] * B[111] + W[26] * B[112] + W[37] * B[113] + W[48] * B[114] + W[59] * B[115] + W[70] * B[116] + W[81] * B[117] + W[92] * B[118] + W[103] * B[119] + W[114] * B[120]; 1402f30536b4SBarry Smith A[115] = W[5] * B[110] + W[16] * B[111] + W[27] * B[112] + W[38] * B[113] + W[49] * B[114] + W[60] * B[115] + W[71] * B[116] + W[82] * B[117] + W[93] * B[118] + W[104] * B[119] + W[115] * B[120]; 1403f30536b4SBarry Smith A[116] = W[6] * B[110] + W[17] * B[111] + W[28] * B[112] + W[39] * B[113] + W[50] * B[114] + W[61] * B[115] + W[72] * B[116] + W[83] * B[117] + W[94] * B[118] + W[105] * B[119] + W[116] * B[120]; 1404f30536b4SBarry Smith A[117] = W[7] * B[110] + W[18] * B[111] + W[29] * B[112] + W[40] * B[113] + W[51] * B[114] + W[62] * B[115] + W[73] * B[116] + W[84] * B[117] + W[95] * B[118] + W[106] * B[119] + W[117] * B[120]; 1405f30536b4SBarry Smith A[118] = W[8] * B[110] + W[19] * B[111] + W[30] * B[112] + W[41] * B[113] + W[52] * B[114] + W[63] * B[115] + W[74] * B[116] + W[85] * B[117] + W[96] * B[118] + W[107] * B[119] + W[118] * B[120]; 1406f30536b4SBarry Smith A[119] = W[9] * B[110] + W[20] * B[111] + W[31] * B[112] + W[42] * B[113] + W[53] * B[114] + W[64] * B[115] + W[75] * B[116] + W[86] * B[117] + W[97] * B[118] + W[108] * B[119] + W[119] * B[120]; 1407f30536b4SBarry Smith A[120] = W[10] * B[110] + W[21] * B[111] + W[32] * B[112] + W[43] * B[113] + W[54] * B[114] + W[65] * B[115] + W[76] * B[116] + W[87] * B[117] + W[98] * B[118] + W[109] * B[119] + W[120] * B[120]; 14083ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1409b59fa7b7SHong Zhang } 1410b59fa7b7SHong Zhang 1411b77e8d12SHong Zhang /* 1412b77e8d12SHong Zhang PetscKernel_A_gets_A_minus_B_times_C_11: A = A - W * B with size bs=11 1413b77e8d12SHong Zhang 1414b77e8d12SHong Zhang Input Parameters: 1415b77e8d12SHong Zhang + A,W,B - square bs by bs arrays stored in column major order 1416b77e8d12SHong Zhang 1417b77e8d12SHong Zhang Output Parameter: 1418b77e8d12SHong Zhang . A = A - W * B 1419b77e8d12SHong Zhang */ 1420d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_11(PetscScalar *A, const PetscScalar *W, const PetscScalar *B) 1421d71ae5a4SJacob Faibussowitsch { 1422f30536b4SBarry Smith A[0] -= W[0] * B[0] + W[11] * B[1] + W[22] * B[2] + W[33] * B[3] + W[44] * B[4] + W[55] * B[5] + W[66] * B[6] + W[77] * B[7] + W[88] * B[8] + W[99] * B[9] + W[110] * B[10]; 1423f30536b4SBarry Smith A[1] -= W[1] * B[0] + W[12] * B[1] + W[23] * B[2] + W[34] * B[3] + W[45] * B[4] + W[56] * B[5] + W[67] * B[6] + W[78] * B[7] + W[89] * B[8] + W[100] * B[9] + W[111] * B[10]; 1424f30536b4SBarry Smith A[2] -= W[2] * B[0] + W[13] * B[1] + W[24] * B[2] + W[35] * B[3] + W[46] * B[4] + W[57] * B[5] + W[68] * B[6] + W[79] * B[7] + W[90] * B[8] + W[101] * B[9] + W[112] * B[10]; 1425f30536b4SBarry Smith A[3] -= W[3] * B[0] + W[14] * B[1] + W[25] * B[2] + W[36] * B[3] + W[47] * B[4] + W[58] * B[5] + W[69] * B[6] + W[80] * B[7] + W[91] * B[8] + W[102] * B[9] + W[113] * B[10]; 1426f30536b4SBarry Smith A[4] -= W[4] * B[0] + W[15] * B[1] + W[26] * B[2] + W[37] * B[3] + W[48] * B[4] + W[59] * B[5] + W[70] * B[6] + W[81] * B[7] + W[92] * B[8] + W[103] * B[9] + W[114] * B[10]; 1427f30536b4SBarry Smith A[5] -= W[5] * B[0] + W[16] * B[1] + W[27] * B[2] + W[38] * B[3] + W[49] * B[4] + W[60] * B[5] + W[71] * B[6] + W[82] * B[7] + W[93] * B[8] + W[104] * B[9] + W[115] * B[10]; 1428f30536b4SBarry Smith A[6] -= W[6] * B[0] + W[17] * B[1] + W[28] * B[2] + W[39] * B[3] + W[50] * B[4] + W[61] * B[5] + W[72] * B[6] + W[83] * B[7] + W[94] * B[8] + W[105] * B[9] + W[116] * B[10]; 1429f30536b4SBarry Smith A[7] -= W[7] * B[0] + W[18] * B[1] + W[29] * B[2] + W[40] * B[3] + W[51] * B[4] + W[62] * B[5] + W[73] * B[6] + W[84] * B[7] + W[95] * B[8] + W[106] * B[9] + W[117] * B[10]; 1430f30536b4SBarry Smith A[8] -= W[8] * B[0] + W[19] * B[1] + W[30] * B[2] + W[41] * B[3] + W[52] * B[4] + W[63] * B[5] + W[74] * B[6] + W[85] * B[7] + W[96] * B[8] + W[107] * B[9] + W[118] * B[10]; 1431f30536b4SBarry Smith A[9] -= W[9] * B[0] + W[20] * B[1] + W[31] * B[2] + W[42] * B[3] + W[53] * B[4] + W[64] * B[5] + W[75] * B[6] + W[86] * B[7] + W[97] * B[8] + W[108] * B[9] + W[119] * B[10]; 1432f30536b4SBarry Smith A[10] -= W[10] * B[0] + W[21] * B[1] + W[32] * B[2] + W[43] * B[3] + W[54] * B[4] + W[65] * B[5] + W[76] * B[6] + W[87] * B[7] + W[98] * B[8] + W[109] * B[9] + W[120] * B[10]; 1433f30536b4SBarry Smith 1434f30536b4SBarry Smith A[11] -= W[0] * B[11] + W[11] * B[12] + W[22] * B[13] + W[33] * B[14] + W[44] * B[15] + W[55] * B[16] + W[66] * B[17] + W[77] * B[18] + W[88] * B[19] + W[99] * B[20] + W[110] * B[21]; 1435f30536b4SBarry Smith A[12] -= W[1] * B[11] + W[12] * B[12] + W[23] * B[13] + W[34] * B[14] + W[45] * B[15] + W[56] * B[16] + W[67] * B[17] + W[78] * B[18] + W[89] * B[19] + W[100] * B[20] + W[111] * B[21]; 1436f30536b4SBarry Smith A[13] -= W[2] * B[11] + W[13] * B[12] + W[24] * B[13] + W[35] * B[14] + W[46] * B[15] + W[57] * B[16] + W[68] * B[17] + W[79] * B[18] + W[90] * B[19] + W[101] * B[20] + W[112] * B[21]; 1437f30536b4SBarry Smith A[14] -= W[3] * B[11] + W[14] * B[12] + W[25] * B[13] + W[36] * B[14] + W[47] * B[15] + W[58] * B[16] + W[69] * B[17] + W[80] * B[18] + W[91] * B[19] + W[102] * B[20] + W[113] * B[21]; 1438f30536b4SBarry Smith A[15] -= W[4] * B[11] + W[15] * B[12] + W[26] * B[13] + W[37] * B[14] + W[48] * B[15] + W[59] * B[16] + W[70] * B[17] + W[81] * B[18] + W[92] * B[19] + W[103] * B[20] + W[114] * B[21]; 1439f30536b4SBarry Smith A[16] -= W[5] * B[11] + W[16] * B[12] + W[27] * B[13] + W[38] * B[14] + W[49] * B[15] + W[60] * B[16] + W[71] * B[17] + W[82] * B[18] + W[93] * B[19] + W[104] * B[20] + W[115] * B[21]; 1440f30536b4SBarry Smith A[17] -= W[6] * B[11] + W[17] * B[12] + W[28] * B[13] + W[39] * B[14] + W[50] * B[15] + W[61] * B[16] + W[72] * B[17] + W[83] * B[18] + W[94] * B[19] + W[105] * B[20] + W[116] * B[21]; 1441f30536b4SBarry Smith A[18] -= W[7] * B[11] + W[18] * B[12] + W[29] * B[13] + W[40] * B[14] + W[51] * B[15] + W[62] * B[16] + W[73] * B[17] + W[84] * B[18] + W[95] * B[19] + W[106] * B[20] + W[117] * B[21]; 1442f30536b4SBarry Smith A[19] -= W[8] * B[11] + W[19] * B[12] + W[30] * B[13] + W[41] * B[14] + W[52] * B[15] + W[63] * B[16] + W[74] * B[17] + W[85] * B[18] + W[96] * B[19] + W[107] * B[20] + W[118] * B[21]; 1443f30536b4SBarry Smith A[20] -= W[9] * B[11] + W[20] * B[12] + W[31] * B[13] + W[42] * B[14] + W[53] * B[15] + W[64] * B[16] + W[75] * B[17] + W[86] * B[18] + W[97] * B[19] + W[108] * B[20] + W[119] * B[21]; 1444f30536b4SBarry Smith A[21] -= W[10] * B[11] + W[21] * B[12] + W[32] * B[13] + W[43] * B[14] + W[54] * B[15] + W[65] * B[16] + W[76] * B[17] + W[87] * B[18] + W[98] * B[19] + W[109] * B[20] + W[120] * B[21]; 1445f30536b4SBarry Smith 1446f30536b4SBarry Smith A[22] -= W[0] * B[22] + W[11] * B[23] + W[22] * B[24] + W[33] * B[25] + W[44] * B[26] + W[55] * B[27] + W[66] * B[28] + W[77] * B[29] + W[88] * B[30] + W[99] * B[31] + W[110] * B[32]; 1447f30536b4SBarry Smith A[23] -= W[1] * B[22] + W[12] * B[23] + W[23] * B[24] + W[34] * B[25] + W[45] * B[26] + W[56] * B[27] + W[67] * B[28] + W[78] * B[29] + W[89] * B[30] + W[100] * B[31] + W[111] * B[32]; 1448f30536b4SBarry Smith A[24] -= W[2] * B[22] + W[13] * B[23] + W[24] * B[24] + W[35] * B[25] + W[46] * B[26] + W[57] * B[27] + W[68] * B[28] + W[79] * B[29] + W[90] * B[30] + W[101] * B[31] + W[112] * B[32]; 1449f30536b4SBarry Smith A[25] -= W[3] * B[22] + W[14] * B[23] + W[25] * B[24] + W[36] * B[25] + W[47] * B[26] + W[58] * B[27] + W[69] * B[28] + W[80] * B[29] + W[91] * B[30] + W[102] * B[31] + W[113] * B[32]; 1450f30536b4SBarry Smith A[26] -= W[4] * B[22] + W[15] * B[23] + W[26] * B[24] + W[37] * B[25] + W[48] * B[26] + W[59] * B[27] + W[70] * B[28] + W[81] * B[29] + W[92] * B[30] + W[103] * B[31] + W[114] * B[32]; 1451f30536b4SBarry Smith A[27] -= W[5] * B[22] + W[16] * B[23] + W[27] * B[24] + W[38] * B[25] + W[49] * B[26] + W[60] * B[27] + W[71] * B[28] + W[82] * B[29] + W[93] * B[30] + W[104] * B[31] + W[115] * B[32]; 1452f30536b4SBarry Smith A[28] -= W[6] * B[22] + W[17] * B[23] + W[28] * B[24] + W[39] * B[25] + W[50] * B[26] + W[61] * B[27] + W[72] * B[28] + W[83] * B[29] + W[94] * B[30] + W[105] * B[31] + W[116] * B[32]; 1453f30536b4SBarry Smith A[29] -= W[7] * B[22] + W[18] * B[23] + W[29] * B[24] + W[40] * B[25] + W[51] * B[26] + W[62] * B[27] + W[73] * B[28] + W[84] * B[29] + W[95] * B[30] + W[106] * B[31] + W[117] * B[32]; 1454f30536b4SBarry Smith A[30] -= W[8] * B[22] + W[19] * B[23] + W[30] * B[24] + W[41] * B[25] + W[52] * B[26] + W[63] * B[27] + W[74] * B[28] + W[85] * B[29] + W[96] * B[30] + W[107] * B[31] + W[118] * B[32]; 1455f30536b4SBarry Smith A[31] -= W[9] * B[22] + W[20] * B[23] + W[31] * B[24] + W[42] * B[25] + W[53] * B[26] + W[64] * B[27] + W[75] * B[28] + W[86] * B[29] + W[97] * B[30] + W[108] * B[31] + W[119] * B[32]; 1456f30536b4SBarry Smith A[32] -= W[10] * B[22] + W[21] * B[23] + W[32] * B[24] + W[43] * B[25] + W[54] * B[26] + W[65] * B[27] + W[76] * B[28] + W[87] * B[29] + W[98] * B[30] + W[109] * B[31] + W[120] * B[32]; 1457f30536b4SBarry Smith 1458f30536b4SBarry Smith A[33] -= W[0] * B[33] + W[11] * B[34] + W[22] * B[35] + W[33] * B[36] + W[44] * B[37] + W[55] * B[38] + W[66] * B[39] + W[77] * B[40] + W[88] * B[41] + W[99] * B[42] + W[110] * B[43]; 1459f30536b4SBarry Smith A[34] -= W[1] * B[33] + W[12] * B[34] + W[23] * B[35] + W[34] * B[36] + W[45] * B[37] + W[56] * B[38] + W[67] * B[39] + W[78] * B[40] + W[89] * B[41] + W[100] * B[42] + W[111] * B[43]; 1460f30536b4SBarry Smith A[35] -= W[2] * B[33] + W[13] * B[34] + W[24] * B[35] + W[35] * B[36] + W[46] * B[37] + W[57] * B[38] + W[68] * B[39] + W[79] * B[40] + W[90] * B[41] + W[101] * B[42] + W[112] * B[43]; 1461f30536b4SBarry Smith A[36] -= W[3] * B[33] + W[14] * B[34] + W[25] * B[35] + W[36] * B[36] + W[47] * B[37] + W[58] * B[38] + W[69] * B[39] + W[80] * B[40] + W[91] * B[41] + W[102] * B[42] + W[113] * B[43]; 1462f30536b4SBarry Smith A[37] -= W[4] * B[33] + W[15] * B[34] + W[26] * B[35] + W[37] * B[36] + W[48] * B[37] + W[59] * B[38] + W[70] * B[39] + W[81] * B[40] + W[92] * B[41] + W[103] * B[42] + W[114] * B[43]; 1463f30536b4SBarry Smith A[38] -= W[5] * B[33] + W[16] * B[34] + W[27] * B[35] + W[38] * B[36] + W[49] * B[37] + W[60] * B[38] + W[71] * B[39] + W[82] * B[40] + W[93] * B[41] + W[104] * B[42] + W[115] * B[43]; 1464f30536b4SBarry Smith A[39] -= W[6] * B[33] + W[17] * B[34] + W[28] * B[35] + W[39] * B[36] + W[50] * B[37] + W[61] * B[38] + W[72] * B[39] + W[83] * B[40] + W[94] * B[41] + W[105] * B[42] + W[116] * B[43]; 1465f30536b4SBarry Smith A[40] -= W[7] * B[33] + W[18] * B[34] + W[29] * B[35] + W[40] * B[36] + W[51] * B[37] + W[62] * B[38] + W[73] * B[39] + W[84] * B[40] + W[95] * B[41] + W[106] * B[42] + W[117] * B[43]; 1466f30536b4SBarry Smith A[41] -= W[8] * B[33] + W[19] * B[34] + W[30] * B[35] + W[41] * B[36] + W[52] * B[37] + W[63] * B[38] + W[74] * B[39] + W[85] * B[40] + W[96] * B[41] + W[107] * B[42] + W[118] * B[43]; 1467f30536b4SBarry Smith A[42] -= W[9] * B[33] + W[20] * B[34] + W[31] * B[35] + W[42] * B[36] + W[53] * B[37] + W[64] * B[38] + W[75] * B[39] + W[86] * B[40] + W[97] * B[41] + W[108] * B[42] + W[119] * B[43]; 1468f30536b4SBarry Smith A[43] -= W[10] * B[33] + W[21] * B[34] + W[32] * B[35] + W[43] * B[36] + W[54] * B[37] + W[65] * B[38] + W[76] * B[39] + W[87] * B[40] + W[98] * B[41] + W[109] * B[42] + W[120] * B[43]; 1469f30536b4SBarry Smith 1470f30536b4SBarry Smith A[44] -= W[0] * B[44] + W[11] * B[45] + W[22] * B[46] + W[33] * B[47] + W[44] * B[48] + W[55] * B[49] + W[66] * B[50] + W[77] * B[51] + W[88] * B[52] + W[99] * B[53] + W[110] * B[54]; 1471f30536b4SBarry Smith A[45] -= W[1] * B[44] + W[12] * B[45] + W[23] * B[46] + W[34] * B[47] + W[45] * B[48] + W[56] * B[49] + W[67] * B[50] + W[78] * B[51] + W[89] * B[52] + W[100] * B[53] + W[111] * B[54]; 1472f30536b4SBarry Smith A[46] -= W[2] * B[44] + W[13] * B[45] + W[24] * B[46] + W[35] * B[47] + W[46] * B[48] + W[57] * B[49] + W[68] * B[50] + W[79] * B[51] + W[90] * B[52] + W[101] * B[53] + W[112] * B[54]; 1473f30536b4SBarry Smith A[47] -= W[3] * B[44] + W[14] * B[45] + W[25] * B[46] + W[36] * B[47] + W[47] * B[48] + W[58] * B[49] + W[69] * B[50] + W[80] * B[51] + W[91] * B[52] + W[102] * B[53] + W[113] * B[54]; 1474f30536b4SBarry Smith A[48] -= W[4] * B[44] + W[15] * B[45] + W[26] * B[46] + W[37] * B[47] + W[48] * B[48] + W[59] * B[49] + W[70] * B[50] + W[81] * B[51] + W[92] * B[52] + W[103] * B[53] + W[114] * B[54]; 1475f30536b4SBarry Smith A[49] -= W[5] * B[44] + W[16] * B[45] + W[27] * B[46] + W[38] * B[47] + W[49] * B[48] + W[60] * B[49] + W[71] * B[50] + W[82] * B[51] + W[93] * B[52] + W[104] * B[53] + W[115] * B[54]; 1476f30536b4SBarry Smith A[50] -= W[6] * B[44] + W[17] * B[45] + W[28] * B[46] + W[39] * B[47] + W[50] * B[48] + W[61] * B[49] + W[72] * B[50] + W[83] * B[51] + W[94] * B[52] + W[105] * B[53] + W[116] * B[54]; 1477f30536b4SBarry Smith A[51] -= W[7] * B[44] + W[18] * B[45] + W[29] * B[46] + W[40] * B[47] + W[51] * B[48] + W[62] * B[49] + W[73] * B[50] + W[84] * B[51] + W[95] * B[52] + W[106] * B[53] + W[117] * B[54]; 1478f30536b4SBarry Smith A[52] -= W[8] * B[44] + W[19] * B[45] + W[30] * B[46] + W[41] * B[47] + W[52] * B[48] + W[63] * B[49] + W[74] * B[50] + W[85] * B[51] + W[96] * B[52] + W[107] * B[53] + W[118] * B[54]; 1479f30536b4SBarry Smith A[53] -= W[9] * B[44] + W[20] * B[45] + W[31] * B[46] + W[42] * B[47] + W[53] * B[48] + W[64] * B[49] + W[75] * B[50] + W[86] * B[51] + W[97] * B[52] + W[108] * B[53] + W[119] * B[54]; 1480f30536b4SBarry Smith A[54] -= W[10] * B[44] + W[21] * B[45] + W[32] * B[46] + W[43] * B[47] + W[54] * B[48] + W[65] * B[49] + W[76] * B[50] + W[87] * B[51] + W[98] * B[52] + W[109] * B[53] + W[120] * B[54]; 1481f30536b4SBarry Smith 1482f30536b4SBarry Smith A[55] -= W[0] * B[55] + W[11] * B[56] + W[22] * B[57] + W[33] * B[58] + W[44] * B[59] + W[55] * B[60] + W[66] * B[61] + W[77] * B[62] + W[88] * B[63] + W[99] * B[64] + W[110] * B[65]; 1483f30536b4SBarry Smith A[56] -= W[1] * B[55] + W[12] * B[56] + W[23] * B[57] + W[34] * B[58] + W[45] * B[59] + W[56] * B[60] + W[67] * B[61] + W[78] * B[62] + W[89] * B[63] + W[100] * B[64] + W[111] * B[65]; 1484f30536b4SBarry Smith A[57] -= W[2] * B[55] + W[13] * B[56] + W[24] * B[57] + W[35] * B[58] + W[46] * B[59] + W[57] * B[60] + W[68] * B[61] + W[79] * B[62] + W[90] * B[63] + W[101] * B[64] + W[112] * B[65]; 1485f30536b4SBarry Smith A[58] -= W[3] * B[55] + W[14] * B[56] + W[25] * B[57] + W[36] * B[58] + W[47] * B[59] + W[58] * B[60] + W[69] * B[61] + W[80] * B[62] + W[91] * B[63] + W[102] * B[64] + W[113] * B[65]; 1486f30536b4SBarry Smith A[59] -= W[4] * B[55] + W[15] * B[56] + W[26] * B[57] + W[37] * B[58] + W[48] * B[59] + W[59] * B[60] + W[70] * B[61] + W[81] * B[62] + W[92] * B[63] + W[103] * B[64] + W[114] * B[65]; 1487f30536b4SBarry Smith A[60] -= W[5] * B[55] + W[16] * B[56] + W[27] * B[57] + W[38] * B[58] + W[49] * B[59] + W[60] * B[60] + W[71] * B[61] + W[82] * B[62] + W[93] * B[63] + W[104] * B[64] + W[115] * B[65]; 1488f30536b4SBarry Smith A[61] -= W[6] * B[55] + W[17] * B[56] + W[28] * B[57] + W[39] * B[58] + W[50] * B[59] + W[61] * B[60] + W[72] * B[61] + W[83] * B[62] + W[94] * B[63] + W[105] * B[64] + W[116] * B[65]; 1489f30536b4SBarry Smith A[62] -= W[7] * B[55] + W[18] * B[56] + W[29] * B[57] + W[40] * B[58] + W[51] * B[59] + W[62] * B[60] + W[73] * B[61] + W[84] * B[62] + W[95] * B[63] + W[106] * B[64] + W[117] * B[65]; 1490f30536b4SBarry Smith A[63] -= W[8] * B[55] + W[19] * B[56] + W[30] * B[57] + W[41] * B[58] + W[52] * B[59] + W[63] * B[60] + W[74] * B[61] + W[85] * B[62] + W[96] * B[63] + W[107] * B[64] + W[118] * B[65]; 1491f30536b4SBarry Smith A[64] -= W[9] * B[55] + W[20] * B[56] + W[31] * B[57] + W[42] * B[58] + W[53] * B[59] + W[64] * B[60] + W[75] * B[61] + W[86] * B[62] + W[97] * B[63] + W[108] * B[64] + W[119] * B[65]; 1492f30536b4SBarry Smith A[65] -= W[10] * B[55] + W[21] * B[56] + W[32] * B[57] + W[43] * B[58] + W[54] * B[59] + W[65] * B[60] + W[76] * B[61] + W[87] * B[62] + W[98] * B[63] + W[109] * B[64] + W[120] * B[65]; 1493f30536b4SBarry Smith 1494f30536b4SBarry Smith A[66] -= W[0] * B[66] + W[11] * B[67] + W[22] * B[68] + W[33] * B[69] + W[44] * B[70] + W[55] * B[71] + W[66] * B[72] + W[77] * B[73] + W[88] * B[74] + W[99] * B[75] + W[110] * B[76]; 1495f30536b4SBarry Smith A[67] -= W[1] * B[66] + W[12] * B[67] + W[23] * B[68] + W[34] * B[69] + W[45] * B[70] + W[56] * B[71] + W[67] * B[72] + W[78] * B[73] + W[89] * B[74] + W[100] * B[75] + W[111] * B[76]; 1496f30536b4SBarry Smith A[68] -= W[2] * B[66] + W[13] * B[67] + W[24] * B[68] + W[35] * B[69] + W[46] * B[70] + W[57] * B[71] + W[68] * B[72] + W[79] * B[73] + W[90] * B[74] + W[101] * B[75] + W[112] * B[76]; 1497f30536b4SBarry Smith A[69] -= W[3] * B[66] + W[14] * B[67] + W[25] * B[68] + W[36] * B[69] + W[47] * B[70] + W[58] * B[71] + W[69] * B[72] + W[80] * B[73] + W[91] * B[74] + W[102] * B[75] + W[113] * B[76]; 1498f30536b4SBarry Smith A[70] -= W[4] * B[66] + W[15] * B[67] + W[26] * B[68] + W[37] * B[69] + W[48] * B[70] + W[59] * B[71] + W[70] * B[72] + W[81] * B[73] + W[92] * B[74] + W[103] * B[75] + W[114] * B[76]; 1499f30536b4SBarry Smith A[71] -= W[5] * B[66] + W[16] * B[67] + W[27] * B[68] + W[38] * B[69] + W[49] * B[70] + W[60] * B[71] + W[71] * B[72] + W[82] * B[73] + W[93] * B[74] + W[104] * B[75] + W[115] * B[76]; 1500f30536b4SBarry Smith A[72] -= W[6] * B[66] + W[17] * B[67] + W[28] * B[68] + W[39] * B[69] + W[50] * B[70] + W[61] * B[71] + W[72] * B[72] + W[83] * B[73] + W[94] * B[74] + W[105] * B[75] + W[116] * B[76]; 1501f30536b4SBarry Smith A[73] -= W[7] * B[66] + W[18] * B[67] + W[29] * B[68] + W[40] * B[69] + W[51] * B[70] + W[62] * B[71] + W[73] * B[72] + W[84] * B[73] + W[95] * B[74] + W[106] * B[75] + W[117] * B[76]; 1502f30536b4SBarry Smith A[74] -= W[8] * B[66] + W[19] * B[67] + W[30] * B[68] + W[41] * B[69] + W[52] * B[70] + W[63] * B[71] + W[74] * B[72] + W[85] * B[73] + W[96] * B[74] + W[107] * B[75] + W[118] * B[76]; 1503f30536b4SBarry Smith A[75] -= W[9] * B[66] + W[20] * B[67] + W[31] * B[68] + W[42] * B[69] + W[53] * B[70] + W[64] * B[71] + W[75] * B[72] + W[86] * B[73] + W[97] * B[74] + W[108] * B[75] + W[119] * B[76]; 1504f30536b4SBarry Smith A[76] -= W[10] * B[66] + W[21] * B[67] + W[32] * B[68] + W[43] * B[69] + W[54] * B[70] + W[65] * B[71] + W[76] * B[72] + W[87] * B[73] + W[98] * B[74] + W[109] * B[75] + W[120] * B[76]; 1505f30536b4SBarry Smith 1506f30536b4SBarry Smith A[77] -= W[0] * B[77] + W[11] * B[78] + W[22] * B[79] + W[33] * B[80] + W[44] * B[81] + W[55] * B[82] + W[66] * B[83] + W[77] * B[84] + W[88] * B[85] + W[99] * B[86] + W[110] * B[87]; 1507f30536b4SBarry Smith A[78] -= W[1] * B[77] + W[12] * B[78] + W[23] * B[79] + W[34] * B[80] + W[45] * B[81] + W[56] * B[82] + W[67] * B[83] + W[78] * B[84] + W[89] * B[85] + W[100] * B[86] + W[111] * B[87]; 1508f30536b4SBarry Smith A[79] -= W[2] * B[77] + W[13] * B[78] + W[24] * B[79] + W[35] * B[80] + W[46] * B[81] + W[57] * B[82] + W[68] * B[83] + W[79] * B[84] + W[90] * B[85] + W[101] * B[86] + W[112] * B[87]; 1509f30536b4SBarry Smith A[80] -= W[3] * B[77] + W[14] * B[78] + W[25] * B[79] + W[36] * B[80] + W[47] * B[81] + W[58] * B[82] + W[69] * B[83] + W[80] * B[84] + W[91] * B[85] + W[102] * B[86] + W[113] * B[87]; 1510f30536b4SBarry Smith A[81] -= W[4] * B[77] + W[15] * B[78] + W[26] * B[79] + W[37] * B[80] + W[48] * B[81] + W[59] * B[82] + W[70] * B[83] + W[81] * B[84] + W[92] * B[85] + W[103] * B[86] + W[114] * B[87]; 1511f30536b4SBarry Smith A[82] -= W[5] * B[77] + W[16] * B[78] + W[27] * B[79] + W[38] * B[80] + W[49] * B[81] + W[60] * B[82] + W[71] * B[83] + W[82] * B[84] + W[93] * B[85] + W[104] * B[86] + W[115] * B[87]; 1512f30536b4SBarry Smith A[83] -= W[6] * B[77] + W[17] * B[78] + W[28] * B[79] + W[39] * B[80] + W[50] * B[81] + W[61] * B[82] + W[72] * B[83] + W[83] * B[84] + W[94] * B[85] + W[105] * B[86] + W[116] * B[87]; 1513f30536b4SBarry Smith A[84] -= W[7] * B[77] + W[18] * B[78] + W[29] * B[79] + W[40] * B[80] + W[51] * B[81] + W[62] * B[82] + W[73] * B[83] + W[84] * B[84] + W[95] * B[85] + W[106] * B[86] + W[117] * B[87]; 1514f30536b4SBarry Smith A[85] -= W[8] * B[77] + W[19] * B[78] + W[30] * B[79] + W[41] * B[80] + W[52] * B[81] + W[63] * B[82] + W[74] * B[83] + W[85] * B[84] + W[96] * B[85] + W[107] * B[86] + W[118] * B[87]; 1515f30536b4SBarry Smith A[86] -= W[9] * B[77] + W[20] * B[78] + W[31] * B[79] + W[42] * B[80] + W[53] * B[81] + W[64] * B[82] + W[75] * B[83] + W[86] * B[84] + W[97] * B[85] + W[108] * B[86] + W[119] * B[87]; 1516f30536b4SBarry Smith A[87] -= W[10] * B[77] + W[21] * B[78] + W[32] * B[79] + W[43] * B[80] + W[54] * B[81] + W[65] * B[82] + W[76] * B[83] + W[87] * B[84] + W[98] * B[85] + W[109] * B[86] + W[120] * B[87]; 1517f30536b4SBarry Smith 1518f30536b4SBarry Smith A[88] -= W[0] * B[88] + W[11] * B[89] + W[22] * B[90] + W[33] * B[91] + W[44] * B[92] + W[55] * B[93] + W[66] * B[94] + W[77] * B[95] + W[88] * B[96] + W[99] * B[97] + W[110] * B[98]; 1519f30536b4SBarry Smith A[89] -= W[1] * B[88] + W[12] * B[89] + W[23] * B[90] + W[34] * B[91] + W[45] * B[92] + W[56] * B[93] + W[67] * B[94] + W[78] * B[95] + W[89] * B[96] + W[100] * B[97] + W[111] * B[98]; 1520f30536b4SBarry Smith A[90] -= W[2] * B[88] + W[13] * B[89] + W[24] * B[90] + W[35] * B[91] + W[46] * B[92] + W[57] * B[93] + W[68] * B[94] + W[79] * B[95] + W[90] * B[96] + W[101] * B[97] + W[112] * B[98]; 1521f30536b4SBarry Smith A[91] -= W[3] * B[88] + W[14] * B[89] + W[25] * B[90] + W[36] * B[91] + W[47] * B[92] + W[58] * B[93] + W[69] * B[94] + W[80] * B[95] + W[91] * B[96] + W[102] * B[97] + W[113] * B[98]; 1522f30536b4SBarry Smith A[92] -= W[4] * B[88] + W[15] * B[89] + W[26] * B[90] + W[37] * B[91] + W[48] * B[92] + W[59] * B[93] + W[70] * B[94] + W[81] * B[95] + W[92] * B[96] + W[103] * B[97] + W[114] * B[98]; 1523f30536b4SBarry Smith A[93] -= W[5] * B[88] + W[16] * B[89] + W[27] * B[90] + W[38] * B[91] + W[49] * B[92] + W[60] * B[93] + W[71] * B[94] + W[82] * B[95] + W[93] * B[96] + W[104] * B[97] + W[115] * B[98]; 1524f30536b4SBarry Smith A[94] -= W[6] * B[88] + W[17] * B[89] + W[28] * B[90] + W[39] * B[91] + W[50] * B[92] + W[61] * B[93] + W[72] * B[94] + W[83] * B[95] + W[94] * B[96] + W[105] * B[97] + W[116] * B[98]; 1525f30536b4SBarry Smith A[95] -= W[7] * B[88] + W[18] * B[89] + W[29] * B[90] + W[40] * B[91] + W[51] * B[92] + W[62] * B[93] + W[73] * B[94] + W[84] * B[95] + W[95] * B[96] + W[106] * B[97] + W[117] * B[98]; 1526f30536b4SBarry Smith A[96] -= W[8] * B[88] + W[19] * B[89] + W[30] * B[90] + W[41] * B[91] + W[52] * B[92] + W[63] * B[93] + W[74] * B[94] + W[85] * B[95] + W[96] * B[96] + W[107] * B[97] + W[118] * B[98]; 1527f30536b4SBarry Smith A[97] -= W[9] * B[88] + W[20] * B[89] + W[31] * B[90] + W[42] * B[91] + W[53] * B[92] + W[64] * B[93] + W[75] * B[94] + W[86] * B[95] + W[97] * B[96] + W[108] * B[97] + W[119] * B[98]; 1528f30536b4SBarry Smith A[98] -= W[10] * B[88] + W[21] * B[89] + W[32] * B[90] + W[43] * B[91] + W[54] * B[92] + W[65] * B[93] + W[76] * B[94] + W[87] * B[95] + W[98] * B[96] + W[109] * B[97] + W[120] * B[98]; 1529f30536b4SBarry Smith 1530f30536b4SBarry Smith A[99] -= W[0] * B[99] + W[11] * B[100] + W[22] * B[101] + W[33] * B[102] + W[44] * B[103] + W[55] * B[104] + W[66] * B[105] + W[77] * B[106] + W[88] * B[107] + W[99] * B[108] + W[110] * B[109]; 1531f30536b4SBarry Smith A[100] -= W[1] * B[99] + W[12] * B[100] + W[23] * B[101] + W[34] * B[102] + W[45] * B[103] + W[56] * B[104] + W[67] * B[105] + W[78] * B[106] + W[89] * B[107] + W[100] * B[108] + W[111] * B[109]; 1532f30536b4SBarry Smith A[101] -= W[2] * B[99] + W[13] * B[100] + W[24] * B[101] + W[35] * B[102] + W[46] * B[103] + W[57] * B[104] + W[68] * B[105] + W[79] * B[106] + W[90] * B[107] + W[101] * B[108] + W[112] * B[109]; 1533f30536b4SBarry Smith A[102] -= W[3] * B[99] + W[14] * B[100] + W[25] * B[101] + W[36] * B[102] + W[47] * B[103] + W[58] * B[104] + W[69] * B[105] + W[80] * B[106] + W[91] * B[107] + W[102] * B[108] + W[113] * B[109]; 1534f30536b4SBarry Smith A[103] -= W[4] * B[99] + W[15] * B[100] + W[26] * B[101] + W[37] * B[102] + W[48] * B[103] + W[59] * B[104] + W[70] * B[105] + W[81] * B[106] + W[92] * B[107] + W[103] * B[108] + W[114] * B[109]; 1535f30536b4SBarry Smith A[104] -= W[5] * B[99] + W[16] * B[100] + W[27] * B[101] + W[38] * B[102] + W[49] * B[103] + W[60] * B[104] + W[71] * B[105] + W[82] * B[106] + W[93] * B[107] + W[104] * B[108] + W[115] * B[109]; 1536f30536b4SBarry Smith A[105] -= W[6] * B[99] + W[17] * B[100] + W[28] * B[101] + W[39] * B[102] + W[50] * B[103] + W[61] * B[104] + W[72] * B[105] + W[83] * B[106] + W[94] * B[107] + W[105] * B[108] + W[116] * B[109]; 1537f30536b4SBarry Smith A[106] -= W[7] * B[99] + W[18] * B[100] + W[29] * B[101] + W[40] * B[102] + W[51] * B[103] + W[62] * B[104] + W[73] * B[105] + W[84] * B[106] + W[95] * B[107] + W[106] * B[108] + W[117] * B[109]; 1538f30536b4SBarry Smith A[107] -= W[8] * B[99] + W[19] * B[100] + W[30] * B[101] + W[41] * B[102] + W[52] * B[103] + W[63] * B[104] + W[74] * B[105] + W[85] * B[106] + W[96] * B[107] + W[107] * B[108] + W[118] * B[109]; 1539f30536b4SBarry Smith A[108] -= W[9] * B[99] + W[20] * B[100] + W[31] * B[101] + W[42] * B[102] + W[53] * B[103] + W[64] * B[104] + W[75] * B[105] + W[86] * B[106] + W[97] * B[107] + W[108] * B[108] + W[119] * B[109]; 1540f30536b4SBarry Smith A[109] -= W[10] * B[99] + W[21] * B[100] + W[32] * B[101] + W[43] * B[102] + W[54] * B[103] + W[65] * B[104] + W[76] * B[105] + W[87] * B[106] + W[98] * B[107] + W[109] * B[108] + W[120] * B[109]; 1541f30536b4SBarry Smith 1542f30536b4SBarry Smith A[110] -= W[0] * B[110] + W[11] * B[111] + W[22] * B[112] + W[33] * B[113] + W[44] * B[114] + W[55] * B[115] + W[66] * B[116] + W[77] * B[117] + W[88] * B[118] + W[99] * B[119] + W[110] * B[120]; 1543f30536b4SBarry Smith A[111] -= W[1] * B[110] + W[12] * B[111] + W[23] * B[112] + W[34] * B[113] + W[45] * B[114] + W[56] * B[115] + W[67] * B[116] + W[78] * B[117] + W[89] * B[118] + W[100] * B[119] + W[111] * B[120]; 1544f30536b4SBarry Smith A[112] -= W[2] * B[110] + W[13] * B[111] + W[24] * B[112] + W[35] * B[113] + W[46] * B[114] + W[57] * B[115] + W[68] * B[116] + W[79] * B[117] + W[90] * B[118] + W[101] * B[119] + W[112] * B[120]; 1545f30536b4SBarry Smith A[113] -= W[3] * B[110] + W[14] * B[111] + W[25] * B[112] + W[36] * B[113] + W[47] * B[114] + W[58] * B[115] + W[69] * B[116] + W[80] * B[117] + W[91] * B[118] + W[102] * B[119] + W[113] * B[120]; 1546f30536b4SBarry Smith A[114] -= W[4] * B[110] + W[15] * B[111] + W[26] * B[112] + W[37] * B[113] + W[48] * B[114] + W[59] * B[115] + W[70] * B[116] + W[81] * B[117] + W[92] * B[118] + W[103] * B[119] + W[114] * B[120]; 1547f30536b4SBarry Smith A[115] -= W[5] * B[110] + W[16] * B[111] + W[27] * B[112] + W[38] * B[113] + W[49] * B[114] + W[60] * B[115] + W[71] * B[116] + W[82] * B[117] + W[93] * B[118] + W[104] * B[119] + W[115] * B[120]; 1548f30536b4SBarry Smith A[116] -= W[6] * B[110] + W[17] * B[111] + W[28] * B[112] + W[39] * B[113] + W[50] * B[114] + W[61] * B[115] + W[72] * B[116] + W[83] * B[117] + W[94] * B[118] + W[105] * B[119] + W[116] * B[120]; 1549f30536b4SBarry Smith A[117] -= W[7] * B[110] + W[18] * B[111] + W[29] * B[112] + W[40] * B[113] + W[51] * B[114] + W[62] * B[115] + W[73] * B[116] + W[84] * B[117] + W[95] * B[118] + W[106] * B[119] + W[117] * B[120]; 1550f30536b4SBarry Smith A[118] -= W[8] * B[110] + W[19] * B[111] + W[30] * B[112] + W[41] * B[113] + W[52] * B[114] + W[63] * B[115] + W[74] * B[116] + W[85] * B[117] + W[96] * B[118] + W[107] * B[119] + W[118] * B[120]; 1551f30536b4SBarry Smith A[119] -= W[9] * B[110] + W[20] * B[111] + W[31] * B[112] + W[42] * B[113] + W[53] * B[114] + W[64] * B[115] + W[75] * B[116] + W[86] * B[117] + W[97] * B[118] + W[108] * B[119] + W[119] * B[120]; 1552f30536b4SBarry Smith A[120] -= W[10] * B[110] + W[21] * B[111] + W[32] * B[112] + W[43] * B[113] + W[54] * B[114] + W[65] * B[115] + W[76] * B[116] + W[87] * B[117] + W[98] * B[118] + W[109] * B[119] + W[120] * B[120]; 15533ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1554b77e8d12SHong Zhang } 1555b77e8d12SHong Zhang 1556d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_times_B_15(PetscScalar *A, const PetscScalar *B, PetscScalar *W) 1557d71ae5a4SJacob Faibussowitsch { 15589566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(W, A, 225)); 1559f30536b4SBarry Smith A[0] = W[0] * B[0] + W[15] * B[1] + W[30] * B[2] + W[45] * B[3] + W[60] * B[4] + W[75] * B[5] + W[90] * B[6] + W[105] * B[7] + W[120] * B[8] + W[135] * B[9] + W[150] * B[10] + W[165] * B[11] + W[180] * B[12] + W[195] * B[13] + W[210] * B[14]; 1560f30536b4SBarry Smith A[1] = W[1] * B[0] + W[16] * B[1] + W[31] * B[2] + W[46] * B[3] + W[61] * B[4] + W[76] * B[5] + W[91] * B[6] + W[106] * B[7] + W[121] * B[8] + W[136] * B[9] + W[151] * B[10] + W[166] * B[11] + W[181] * B[12] + W[196] * B[13] + W[211] * B[14]; 1561f30536b4SBarry Smith A[2] = W[2] * B[0] + W[17] * B[1] + W[32] * B[2] + W[47] * B[3] + W[62] * B[4] + W[77] * B[5] + W[92] * B[6] + W[107] * B[7] + W[122] * B[8] + W[137] * B[9] + W[152] * B[10] + W[167] * B[11] + W[182] * B[12] + W[197] * B[13] + W[212] * B[14]; 1562f30536b4SBarry Smith A[3] = W[3] * B[0] + W[18] * B[1] + W[33] * B[2] + W[48] * B[3] + W[63] * B[4] + W[78] * B[5] + W[93] * B[6] + W[108] * B[7] + W[123] * B[8] + W[138] * B[9] + W[153] * B[10] + W[168] * B[11] + W[183] * B[12] + W[198] * B[13] + W[213] * B[14]; 1563f30536b4SBarry Smith A[4] = W[4] * B[0] + W[19] * B[1] + W[34] * B[2] + W[49] * B[3] + W[64] * B[4] + W[79] * B[5] + W[94] * B[6] + W[109] * B[7] + W[124] * B[8] + W[139] * B[9] + W[154] * B[10] + W[169] * B[11] + W[184] * B[12] + W[199] * B[13] + W[214] * B[14]; 1564f30536b4SBarry Smith A[5] = W[5] * B[0] + W[20] * B[1] + W[35] * B[2] + W[50] * B[3] + W[65] * B[4] + W[80] * B[5] + W[95] * B[6] + W[110] * B[7] + W[125] * B[8] + W[140] * B[9] + W[155] * B[10] + W[170] * B[11] + W[185] * B[12] + W[200] * B[13] + W[215] * B[14]; 1565f30536b4SBarry Smith A[6] = W[6] * B[0] + W[21] * B[1] + W[36] * B[2] + W[51] * B[3] + W[66] * B[4] + W[81] * B[5] + W[96] * B[6] + W[111] * B[7] + W[126] * B[8] + W[141] * B[9] + W[156] * B[10] + W[171] * B[11] + W[186] * B[12] + W[201] * B[13] + W[216] * B[14]; 1566f30536b4SBarry Smith A[7] = W[7] * B[0] + W[22] * B[1] + W[37] * B[2] + W[52] * B[3] + W[67] * B[4] + W[82] * B[5] + W[97] * B[6] + W[112] * B[7] + W[127] * B[8] + W[142] * B[9] + W[157] * B[10] + W[172] * B[11] + W[187] * B[12] + W[202] * B[13] + W[217] * B[14]; 1567f30536b4SBarry Smith A[8] = W[8] * B[0] + W[23] * B[1] + W[38] * B[2] + W[53] * B[3] + W[68] * B[4] + W[83] * B[5] + W[98] * B[6] + W[113] * B[7] + W[128] * B[8] + W[143] * B[9] + W[158] * B[10] + W[173] * B[11] + W[188] * B[12] + W[203] * B[13] + W[218] * B[14]; 1568f30536b4SBarry Smith A[9] = W[9] * B[0] + W[24] * B[1] + W[39] * B[2] + W[54] * B[3] + W[69] * B[4] + W[84] * B[5] + W[99] * B[6] + W[114] * B[7] + W[129] * B[8] + W[144] * B[9] + W[159] * B[10] + W[174] * B[11] + W[189] * B[12] + W[204] * B[13] + W[219] * B[14]; 1569f30536b4SBarry Smith A[10] = W[10] * B[0] + W[25] * B[1] + W[40] * B[2] + W[55] * B[3] + W[70] * B[4] + W[85] * B[5] + W[100] * B[6] + W[115] * B[7] + W[130] * B[8] + W[145] * B[9] + W[160] * B[10] + W[175] * B[11] + W[190] * B[12] + W[205] * B[13] + W[220] * B[14]; 1570f30536b4SBarry Smith A[11] = W[11] * B[0] + W[26] * B[1] + W[41] * B[2] + W[56] * B[3] + W[71] * B[4] + W[86] * B[5] + W[101] * B[6] + W[116] * B[7] + W[131] * B[8] + W[146] * B[9] + W[161] * B[10] + W[176] * B[11] + W[191] * B[12] + W[206] * B[13] + W[221] * B[14]; 1571f30536b4SBarry Smith A[12] = W[12] * B[0] + W[27] * B[1] + W[42] * B[2] + W[57] * B[3] + W[72] * B[4] + W[87] * B[5] + W[102] * B[6] + W[117] * B[7] + W[132] * B[8] + W[147] * B[9] + W[162] * B[10] + W[177] * B[11] + W[192] * B[12] + W[207] * B[13] + W[222] * B[14]; 1572f30536b4SBarry Smith A[13] = W[13] * B[0] + W[28] * B[1] + W[43] * B[2] + W[58] * B[3] + W[73] * B[4] + W[88] * B[5] + W[103] * B[6] + W[118] * B[7] + W[133] * B[8] + W[148] * B[9] + W[163] * B[10] + W[178] * B[11] + W[193] * B[12] + W[208] * B[13] + W[223] * B[14]; 1573f30536b4SBarry Smith A[14] = W[14] * B[0] + W[29] * B[1] + W[44] * B[2] + W[59] * B[3] + W[74] * B[4] + W[89] * B[5] + W[104] * B[6] + W[119] * B[7] + W[134] * B[8] + W[149] * B[9] + W[164] * B[10] + W[179] * B[11] + W[194] * B[12] + W[209] * B[13] + W[224] * B[14]; 1574f30536b4SBarry Smith A[15] = W[0] * B[15] + W[15] * B[16] + W[30] * B[17] + W[45] * B[18] + W[60] * B[19] + W[75] * B[20] + W[90] * B[21] + W[105] * B[22] + W[120] * B[23] + W[135] * B[24] + W[150] * B[25] + W[165] * B[26] + W[180] * B[27] + W[195] * B[28] + W[210] * B[29]; 1575f30536b4SBarry Smith A[16] = W[1] * B[15] + W[16] * B[16] + W[31] * B[17] + W[46] * B[18] + W[61] * B[19] + W[76] * B[20] + W[91] * B[21] + W[106] * B[22] + W[121] * B[23] + W[136] * B[24] + W[151] * B[25] + W[166] * B[26] + W[181] * B[27] + W[196] * B[28] + W[211] * B[29]; 1576f30536b4SBarry Smith A[17] = W[2] * B[15] + W[17] * B[16] + W[32] * B[17] + W[47] * B[18] + W[62] * B[19] + W[77] * B[20] + W[92] * B[21] + W[107] * B[22] + W[122] * B[23] + W[137] * B[24] + W[152] * B[25] + W[167] * B[26] + W[182] * B[27] + W[197] * B[28] + W[212] * B[29]; 1577f30536b4SBarry Smith A[18] = W[3] * B[15] + W[18] * B[16] + W[33] * B[17] + W[48] * B[18] + W[63] * B[19] + W[78] * B[20] + W[93] * B[21] + W[108] * B[22] + W[123] * B[23] + W[138] * B[24] + W[153] * B[25] + W[168] * B[26] + W[183] * B[27] + W[198] * B[28] + W[213] * B[29]; 1578f30536b4SBarry Smith A[19] = W[4] * B[15] + W[19] * B[16] + W[34] * B[17] + W[49] * B[18] + W[64] * B[19] + W[79] * B[20] + W[94] * B[21] + W[109] * B[22] + W[124] * B[23] + W[139] * B[24] + W[154] * B[25] + W[169] * B[26] + W[184] * B[27] + W[199] * B[28] + W[214] * B[29]; 1579f30536b4SBarry Smith A[20] = W[5] * B[15] + W[20] * B[16] + W[35] * B[17] + W[50] * B[18] + W[65] * B[19] + W[80] * B[20] + W[95] * B[21] + W[110] * B[22] + W[125] * B[23] + W[140] * B[24] + W[155] * B[25] + W[170] * B[26] + W[185] * B[27] + W[200] * B[28] + W[215] * B[29]; 1580f30536b4SBarry Smith A[21] = W[6] * B[15] + W[21] * B[16] + W[36] * B[17] + W[51] * B[18] + W[66] * B[19] + W[81] * B[20] + W[96] * B[21] + W[111] * B[22] + W[126] * B[23] + W[141] * B[24] + W[156] * B[25] + W[171] * B[26] + W[186] * B[27] + W[201] * B[28] + W[216] * B[29]; 1581f30536b4SBarry Smith A[22] = W[7] * B[15] + W[22] * B[16] + W[37] * B[17] + W[52] * B[18] + W[67] * B[19] + W[82] * B[20] + W[97] * B[21] + W[112] * B[22] + W[127] * B[23] + W[142] * B[24] + W[157] * B[25] + W[172] * B[26] + W[187] * B[27] + W[202] * B[28] + W[217] * B[29]; 1582f30536b4SBarry Smith A[23] = W[8] * B[15] + W[23] * B[16] + W[38] * B[17] + W[53] * B[18] + W[68] * B[19] + W[83] * B[20] + W[98] * B[21] + W[113] * B[22] + W[128] * B[23] + W[143] * B[24] + W[158] * B[25] + W[173] * B[26] + W[188] * B[27] + W[203] * B[28] + W[218] * B[29]; 1583f30536b4SBarry Smith A[24] = W[9] * B[15] + W[24] * B[16] + W[39] * B[17] + W[54] * B[18] + W[69] * B[19] + W[84] * B[20] + W[99] * B[21] + W[114] * B[22] + W[129] * B[23] + W[144] * B[24] + W[159] * B[25] + W[174] * B[26] + W[189] * B[27] + W[204] * B[28] + W[219] * B[29]; 1584f30536b4SBarry Smith A[25] = W[10] * B[15] + W[25] * B[16] + W[40] * B[17] + W[55] * B[18] + W[70] * B[19] + W[85] * B[20] + W[100] * B[21] + W[115] * B[22] + W[130] * B[23] + W[145] * B[24] + W[160] * B[25] + W[175] * B[26] + W[190] * B[27] + W[205] * B[28] + W[220] * B[29]; 1585f30536b4SBarry Smith A[26] = W[11] * B[15] + W[26] * B[16] + W[41] * B[17] + W[56] * B[18] + W[71] * B[19] + W[86] * B[20] + W[101] * B[21] + W[116] * B[22] + W[131] * B[23] + W[146] * B[24] + W[161] * B[25] + W[176] * B[26] + W[191] * B[27] + W[206] * B[28] + W[221] * B[29]; 1586f30536b4SBarry Smith A[27] = W[12] * B[15] + W[27] * B[16] + W[42] * B[17] + W[57] * B[18] + W[72] * B[19] + W[87] * B[20] + W[102] * B[21] + W[117] * B[22] + W[132] * B[23] + W[147] * B[24] + W[162] * B[25] + W[177] * B[26] + W[192] * B[27] + W[207] * B[28] + W[222] * B[29]; 1587f30536b4SBarry Smith A[28] = W[13] * B[15] + W[28] * B[16] + W[43] * B[17] + W[58] * B[18] + W[73] * B[19] + W[88] * B[20] + W[103] * B[21] + W[118] * B[22] + W[133] * B[23] + W[148] * B[24] + W[163] * B[25] + W[178] * B[26] + W[193] * B[27] + W[208] * B[28] + W[223] * B[29]; 1588f30536b4SBarry Smith A[29] = W[14] * B[15] + W[29] * B[16] + W[44] * B[17] + W[59] * B[18] + W[74] * B[19] + W[89] * B[20] + W[104] * B[21] + W[119] * B[22] + W[134] * B[23] + W[149] * B[24] + W[164] * B[25] + W[179] * B[26] + W[194] * B[27] + W[209] * B[28] + W[224] * B[29]; 1589f30536b4SBarry Smith A[30] = W[0] * B[30] + W[15] * B[31] + W[30] * B[32] + W[45] * B[33] + W[60] * B[34] + W[75] * B[35] + W[90] * B[36] + W[105] * B[37] + W[120] * B[38] + W[135] * B[39] + W[150] * B[40] + W[165] * B[41] + W[180] * B[42] + W[195] * B[43] + W[210] * B[44]; 1590f30536b4SBarry Smith A[31] = W[1] * B[30] + W[16] * B[31] + W[31] * B[32] + W[46] * B[33] + W[61] * B[34] + W[76] * B[35] + W[91] * B[36] + W[106] * B[37] + W[121] * B[38] + W[136] * B[39] + W[151] * B[40] + W[166] * B[41] + W[181] * B[42] + W[196] * B[43] + W[211] * B[44]; 1591f30536b4SBarry Smith A[32] = W[2] * B[30] + W[17] * B[31] + W[32] * B[32] + W[47] * B[33] + W[62] * B[34] + W[77] * B[35] + W[92] * B[36] + W[107] * B[37] + W[122] * B[38] + W[137] * B[39] + W[152] * B[40] + W[167] * B[41] + W[182] * B[42] + W[197] * B[43] + W[212] * B[44]; 1592f30536b4SBarry Smith A[33] = W[3] * B[30] + W[18] * B[31] + W[33] * B[32] + W[48] * B[33] + W[63] * B[34] + W[78] * B[35] + W[93] * B[36] + W[108] * B[37] + W[123] * B[38] + W[138] * B[39] + W[153] * B[40] + W[168] * B[41] + W[183] * B[42] + W[198] * B[43] + W[213] * B[44]; 1593f30536b4SBarry Smith A[34] = W[4] * B[30] + W[19] * B[31] + W[34] * B[32] + W[49] * B[33] + W[64] * B[34] + W[79] * B[35] + W[94] * B[36] + W[109] * B[37] + W[124] * B[38] + W[139] * B[39] + W[154] * B[40] + W[169] * B[41] + W[184] * B[42] + W[199] * B[43] + W[214] * B[44]; 1594f30536b4SBarry Smith A[35] = W[5] * B[30] + W[20] * B[31] + W[35] * B[32] + W[50] * B[33] + W[65] * B[34] + W[80] * B[35] + W[95] * B[36] + W[110] * B[37] + W[125] * B[38] + W[140] * B[39] + W[155] * B[40] + W[170] * B[41] + W[185] * B[42] + W[200] * B[43] + W[215] * B[44]; 1595f30536b4SBarry Smith A[36] = W[6] * B[30] + W[21] * B[31] + W[36] * B[32] + W[51] * B[33] + W[66] * B[34] + W[81] * B[35] + W[96] * B[36] + W[111] * B[37] + W[126] * B[38] + W[141] * B[39] + W[156] * B[40] + W[171] * B[41] + W[186] * B[42] + W[201] * B[43] + W[216] * B[44]; 1596f30536b4SBarry Smith A[37] = W[7] * B[30] + W[22] * B[31] + W[37] * B[32] + W[52] * B[33] + W[67] * B[34] + W[82] * B[35] + W[97] * B[36] + W[112] * B[37] + W[127] * B[38] + W[142] * B[39] + W[157] * B[40] + W[172] * B[41] + W[187] * B[42] + W[202] * B[43] + W[217] * B[44]; 1597f30536b4SBarry Smith A[38] = W[8] * B[30] + W[23] * B[31] + W[38] * B[32] + W[53] * B[33] + W[68] * B[34] + W[83] * B[35] + W[98] * B[36] + W[113] * B[37] + W[128] * B[38] + W[143] * B[39] + W[158] * B[40] + W[173] * B[41] + W[188] * B[42] + W[203] * B[43] + W[218] * B[44]; 1598f30536b4SBarry Smith A[39] = W[9] * B[30] + W[24] * B[31] + W[39] * B[32] + W[54] * B[33] + W[69] * B[34] + W[84] * B[35] + W[99] * B[36] + W[114] * B[37] + W[129] * B[38] + W[144] * B[39] + W[159] * B[40] + W[174] * B[41] + W[189] * B[42] + W[204] * B[43] + W[219] * B[44]; 1599f30536b4SBarry Smith A[40] = W[10] * B[30] + W[25] * B[31] + W[40] * B[32] + W[55] * B[33] + W[70] * B[34] + W[85] * B[35] + W[100] * B[36] + W[115] * B[37] + W[130] * B[38] + W[145] * B[39] + W[160] * B[40] + W[175] * B[41] + W[190] * B[42] + W[205] * B[43] + W[220] * B[44]; 1600f30536b4SBarry Smith A[41] = W[11] * B[30] + W[26] * B[31] + W[41] * B[32] + W[56] * B[33] + W[71] * B[34] + W[86] * B[35] + W[101] * B[36] + W[116] * B[37] + W[131] * B[38] + W[146] * B[39] + W[161] * B[40] + W[176] * B[41] + W[191] * B[42] + W[206] * B[43] + W[221] * B[44]; 1601f30536b4SBarry Smith A[42] = W[12] * B[30] + W[27] * B[31] + W[42] * B[32] + W[57] * B[33] + W[72] * B[34] + W[87] * B[35] + W[102] * B[36] + W[117] * B[37] + W[132] * B[38] + W[147] * B[39] + W[162] * B[40] + W[177] * B[41] + W[192] * B[42] + W[207] * B[43] + W[222] * B[44]; 1602f30536b4SBarry Smith A[43] = W[13] * B[30] + W[28] * B[31] + W[43] * B[32] + W[58] * B[33] + W[73] * B[34] + W[88] * B[35] + W[103] * B[36] + W[118] * B[37] + W[133] * B[38] + W[148] * B[39] + W[163] * B[40] + W[178] * B[41] + W[193] * B[42] + W[208] * B[43] + W[223] * B[44]; 1603f30536b4SBarry Smith A[44] = W[14] * B[30] + W[29] * B[31] + W[44] * B[32] + W[59] * B[33] + W[74] * B[34] + W[89] * B[35] + W[104] * B[36] + W[119] * B[37] + W[134] * B[38] + W[149] * B[39] + W[164] * B[40] + W[179] * B[41] + W[194] * B[42] + W[209] * B[43] + W[224] * B[44]; 1604f30536b4SBarry Smith A[45] = W[0] * B[45] + W[15] * B[46] + W[30] * B[47] + W[45] * B[48] + W[60] * B[49] + W[75] * B[50] + W[90] * B[51] + W[105] * B[52] + W[120] * B[53] + W[135] * B[54] + W[150] * B[55] + W[165] * B[56] + W[180] * B[57] + W[195] * B[58] + W[210] * B[59]; 1605f30536b4SBarry Smith A[46] = W[1] * B[45] + W[16] * B[46] + W[31] * B[47] + W[46] * B[48] + W[61] * B[49] + W[76] * B[50] + W[91] * B[51] + W[106] * B[52] + W[121] * B[53] + W[136] * B[54] + W[151] * B[55] + W[166] * B[56] + W[181] * B[57] + W[196] * B[58] + W[211] * B[59]; 1606f30536b4SBarry Smith A[47] = W[2] * B[45] + W[17] * B[46] + W[32] * B[47] + W[47] * B[48] + W[62] * B[49] + W[77] * B[50] + W[92] * B[51] + W[107] * B[52] + W[122] * B[53] + W[137] * B[54] + W[152] * B[55] + W[167] * B[56] + W[182] * B[57] + W[197] * B[58] + W[212] * B[59]; 1607f30536b4SBarry Smith A[48] = W[3] * B[45] + W[18] * B[46] + W[33] * B[47] + W[48] * B[48] + W[63] * B[49] + W[78] * B[50] + W[93] * B[51] + W[108] * B[52] + W[123] * B[53] + W[138] * B[54] + W[153] * B[55] + W[168] * B[56] + W[183] * B[57] + W[198] * B[58] + W[213] * B[59]; 1608f30536b4SBarry Smith A[49] = W[4] * B[45] + W[19] * B[46] + W[34] * B[47] + W[49] * B[48] + W[64] * B[49] + W[79] * B[50] + W[94] * B[51] + W[109] * B[52] + W[124] * B[53] + W[139] * B[54] + W[154] * B[55] + W[169] * B[56] + W[184] * B[57] + W[199] * B[58] + W[214] * B[59]; 1609f30536b4SBarry Smith A[50] = W[5] * B[45] + W[20] * B[46] + W[35] * B[47] + W[50] * B[48] + W[65] * B[49] + W[80] * B[50] + W[95] * B[51] + W[110] * B[52] + W[125] * B[53] + W[140] * B[54] + W[155] * B[55] + W[170] * B[56] + W[185] * B[57] + W[200] * B[58] + W[215] * B[59]; 1610f30536b4SBarry Smith A[51] = W[6] * B[45] + W[21] * B[46] + W[36] * B[47] + W[51] * B[48] + W[66] * B[49] + W[81] * B[50] + W[96] * B[51] + W[111] * B[52] + W[126] * B[53] + W[141] * B[54] + W[156] * B[55] + W[171] * B[56] + W[186] * B[57] + W[201] * B[58] + W[216] * B[59]; 1611f30536b4SBarry Smith A[52] = W[7] * B[45] + W[22] * B[46] + W[37] * B[47] + W[52] * B[48] + W[67] * B[49] + W[82] * B[50] + W[97] * B[51] + W[112] * B[52] + W[127] * B[53] + W[142] * B[54] + W[157] * B[55] + W[172] * B[56] + W[187] * B[57] + W[202] * B[58] + W[217] * B[59]; 1612f30536b4SBarry Smith A[53] = W[8] * B[45] + W[23] * B[46] + W[38] * B[47] + W[53] * B[48] + W[68] * B[49] + W[83] * B[50] + W[98] * B[51] + W[113] * B[52] + W[128] * B[53] + W[143] * B[54] + W[158] * B[55] + W[173] * B[56] + W[188] * B[57] + W[203] * B[58] + W[218] * B[59]; 1613f30536b4SBarry Smith A[54] = W[9] * B[45] + W[24] * B[46] + W[39] * B[47] + W[54] * B[48] + W[69] * B[49] + W[84] * B[50] + W[99] * B[51] + W[114] * B[52] + W[129] * B[53] + W[144] * B[54] + W[159] * B[55] + W[174] * B[56] + W[189] * B[57] + W[204] * B[58] + W[219] * B[59]; 1614f30536b4SBarry Smith A[55] = W[10] * B[45] + W[25] * B[46] + W[40] * B[47] + W[55] * B[48] + W[70] * B[49] + W[85] * B[50] + W[100] * B[51] + W[115] * B[52] + W[130] * B[53] + W[145] * B[54] + W[160] * B[55] + W[175] * B[56] + W[190] * B[57] + W[205] * B[58] + W[220] * B[59]; 1615f30536b4SBarry Smith A[56] = W[11] * B[45] + W[26] * B[46] + W[41] * B[47] + W[56] * B[48] + W[71] * B[49] + W[86] * B[50] + W[101] * B[51] + W[116] * B[52] + W[131] * B[53] + W[146] * B[54] + W[161] * B[55] + W[176] * B[56] + W[191] * B[57] + W[206] * B[58] + W[221] * B[59]; 1616f30536b4SBarry Smith A[57] = W[12] * B[45] + W[27] * B[46] + W[42] * B[47] + W[57] * B[48] + W[72] * B[49] + W[87] * B[50] + W[102] * B[51] + W[117] * B[52] + W[132] * B[53] + W[147] * B[54] + W[162] * B[55] + W[177] * B[56] + W[192] * B[57] + W[207] * B[58] + W[222] * B[59]; 1617f30536b4SBarry Smith A[58] = W[13] * B[45] + W[28] * B[46] + W[43] * B[47] + W[58] * B[48] + W[73] * B[49] + W[88] * B[50] + W[103] * B[51] + W[118] * B[52] + W[133] * B[53] + W[148] * B[54] + W[163] * B[55] + W[178] * B[56] + W[193] * B[57] + W[208] * B[58] + W[223] * B[59]; 1618f30536b4SBarry Smith A[59] = W[14] * B[45] + W[29] * B[46] + W[44] * B[47] + W[59] * B[48] + W[74] * B[49] + W[89] * B[50] + W[104] * B[51] + W[119] * B[52] + W[134] * B[53] + W[149] * B[54] + W[164] * B[55] + W[179] * B[56] + W[194] * B[57] + W[209] * B[58] + W[224] * B[59]; 1619f30536b4SBarry Smith A[60] = W[0] * B[60] + W[15] * B[61] + W[30] * B[62] + W[45] * B[63] + W[60] * B[64] + W[75] * B[65] + W[90] * B[66] + W[105] * B[67] + W[120] * B[68] + W[135] * B[69] + W[150] * B[70] + W[165] * B[71] + W[180] * B[72] + W[195] * B[73] + W[210] * B[74]; 1620f30536b4SBarry Smith A[61] = W[1] * B[60] + W[16] * B[61] + W[31] * B[62] + W[46] * B[63] + W[61] * B[64] + W[76] * B[65] + W[91] * B[66] + W[106] * B[67] + W[121] * B[68] + W[136] * B[69] + W[151] * B[70] + W[166] * B[71] + W[181] * B[72] + W[196] * B[73] + W[211] * B[74]; 1621f30536b4SBarry Smith A[62] = W[2] * B[60] + W[17] * B[61] + W[32] * B[62] + W[47] * B[63] + W[62] * B[64] + W[77] * B[65] + W[92] * B[66] + W[107] * B[67] + W[122] * B[68] + W[137] * B[69] + W[152] * B[70] + W[167] * B[71] + W[182] * B[72] + W[197] * B[73] + W[212] * B[74]; 1622f30536b4SBarry Smith A[63] = W[3] * B[60] + W[18] * B[61] + W[33] * B[62] + W[48] * B[63] + W[63] * B[64] + W[78] * B[65] + W[93] * B[66] + W[108] * B[67] + W[123] * B[68] + W[138] * B[69] + W[153] * B[70] + W[168] * B[71] + W[183] * B[72] + W[198] * B[73] + W[213] * B[74]; 1623f30536b4SBarry Smith A[64] = W[4] * B[60] + W[19] * B[61] + W[34] * B[62] + W[49] * B[63] + W[64] * B[64] + W[79] * B[65] + W[94] * B[66] + W[109] * B[67] + W[124] * B[68] + W[139] * B[69] + W[154] * B[70] + W[169] * B[71] + W[184] * B[72] + W[199] * B[73] + W[214] * B[74]; 1624f30536b4SBarry Smith A[65] = W[5] * B[60] + W[20] * B[61] + W[35] * B[62] + W[50] * B[63] + W[65] * B[64] + W[80] * B[65] + W[95] * B[66] + W[110] * B[67] + W[125] * B[68] + W[140] * B[69] + W[155] * B[70] + W[170] * B[71] + W[185] * B[72] + W[200] * B[73] + W[215] * B[74]; 1625f30536b4SBarry Smith A[66] = W[6] * B[60] + W[21] * B[61] + W[36] * B[62] + W[51] * B[63] + W[66] * B[64] + W[81] * B[65] + W[96] * B[66] + W[111] * B[67] + W[126] * B[68] + W[141] * B[69] + W[156] * B[70] + W[171] * B[71] + W[186] * B[72] + W[201] * B[73] + W[216] * B[74]; 1626f30536b4SBarry Smith A[67] = W[7] * B[60] + W[22] * B[61] + W[37] * B[62] + W[52] * B[63] + W[67] * B[64] + W[82] * B[65] + W[97] * B[66] + W[112] * B[67] + W[127] * B[68] + W[142] * B[69] + W[157] * B[70] + W[172] * B[71] + W[187] * B[72] + W[202] * B[73] + W[217] * B[74]; 1627f30536b4SBarry Smith A[68] = W[8] * B[60] + W[23] * B[61] + W[38] * B[62] + W[53] * B[63] + W[68] * B[64] + W[83] * B[65] + W[98] * B[66] + W[113] * B[67] + W[128] * B[68] + W[143] * B[69] + W[158] * B[70] + W[173] * B[71] + W[188] * B[72] + W[203] * B[73] + W[218] * B[74]; 1628f30536b4SBarry Smith A[69] = W[9] * B[60] + W[24] * B[61] + W[39] * B[62] + W[54] * B[63] + W[69] * B[64] + W[84] * B[65] + W[99] * B[66] + W[114] * B[67] + W[129] * B[68] + W[144] * B[69] + W[159] * B[70] + W[174] * B[71] + W[189] * B[72] + W[204] * B[73] + W[219] * B[74]; 1629f30536b4SBarry Smith A[70] = W[10] * B[60] + W[25] * B[61] + W[40] * B[62] + W[55] * B[63] + W[70] * B[64] + W[85] * B[65] + W[100] * B[66] + W[115] * B[67] + W[130] * B[68] + W[145] * B[69] + W[160] * B[70] + W[175] * B[71] + W[190] * B[72] + W[205] * B[73] + W[220] * B[74]; 1630f30536b4SBarry Smith A[71] = W[11] * B[60] + W[26] * B[61] + W[41] * B[62] + W[56] * B[63] + W[71] * B[64] + W[86] * B[65] + W[101] * B[66] + W[116] * B[67] + W[131] * B[68] + W[146] * B[69] + W[161] * B[70] + W[176] * B[71] + W[191] * B[72] + W[206] * B[73] + W[221] * B[74]; 1631f30536b4SBarry Smith A[72] = W[12] * B[60] + W[27] * B[61] + W[42] * B[62] + W[57] * B[63] + W[72] * B[64] + W[87] * B[65] + W[102] * B[66] + W[117] * B[67] + W[132] * B[68] + W[147] * B[69] + W[162] * B[70] + W[177] * B[71] + W[192] * B[72] + W[207] * B[73] + W[222] * B[74]; 1632f30536b4SBarry Smith A[73] = W[13] * B[60] + W[28] * B[61] + W[43] * B[62] + W[58] * B[63] + W[73] * B[64] + W[88] * B[65] + W[103] * B[66] + W[118] * B[67] + W[133] * B[68] + W[148] * B[69] + W[163] * B[70] + W[178] * B[71] + W[193] * B[72] + W[208] * B[73] + W[223] * B[74]; 1633f30536b4SBarry Smith A[74] = W[14] * B[60] + W[29] * B[61] + W[44] * B[62] + W[59] * B[63] + W[74] * B[64] + W[89] * B[65] + W[104] * B[66] + W[119] * B[67] + W[134] * B[68] + W[149] * B[69] + W[164] * B[70] + W[179] * B[71] + W[194] * B[72] + W[209] * B[73] + W[224] * B[74]; 1634f30536b4SBarry Smith A[75] = W[0] * B[75] + W[15] * B[76] + W[30] * B[77] + W[45] * B[78] + W[60] * B[79] + W[75] * B[80] + W[90] * B[81] + W[105] * B[82] + W[120] * B[83] + W[135] * B[84] + W[150] * B[85] + W[165] * B[86] + W[180] * B[87] + W[195] * B[88] + W[210] * B[89]; 1635f30536b4SBarry Smith A[76] = W[1] * B[75] + W[16] * B[76] + W[31] * B[77] + W[46] * B[78] + W[61] * B[79] + W[76] * B[80] + W[91] * B[81] + W[106] * B[82] + W[121] * B[83] + W[136] * B[84] + W[151] * B[85] + W[166] * B[86] + W[181] * B[87] + W[196] * B[88] + W[211] * B[89]; 1636f30536b4SBarry Smith A[77] = W[2] * B[75] + W[17] * B[76] + W[32] * B[77] + W[47] * B[78] + W[62] * B[79] + W[77] * B[80] + W[92] * B[81] + W[107] * B[82] + W[122] * B[83] + W[137] * B[84] + W[152] * B[85] + W[167] * B[86] + W[182] * B[87] + W[197] * B[88] + W[212] * B[89]; 1637f30536b4SBarry Smith A[78] = W[3] * B[75] + W[18] * B[76] + W[33] * B[77] + W[48] * B[78] + W[63] * B[79] + W[78] * B[80] + W[93] * B[81] + W[108] * B[82] + W[123] * B[83] + W[138] * B[84] + W[153] * B[85] + W[168] * B[86] + W[183] * B[87] + W[198] * B[88] + W[213] * B[89]; 1638f30536b4SBarry Smith A[79] = W[4] * B[75] + W[19] * B[76] + W[34] * B[77] + W[49] * B[78] + W[64] * B[79] + W[79] * B[80] + W[94] * B[81] + W[109] * B[82] + W[124] * B[83] + W[139] * B[84] + W[154] * B[85] + W[169] * B[86] + W[184] * B[87] + W[199] * B[88] + W[214] * B[89]; 1639f30536b4SBarry Smith A[80] = W[5] * B[75] + W[20] * B[76] + W[35] * B[77] + W[50] * B[78] + W[65] * B[79] + W[80] * B[80] + W[95] * B[81] + W[110] * B[82] + W[125] * B[83] + W[140] * B[84] + W[155] * B[85] + W[170] * B[86] + W[185] * B[87] + W[200] * B[88] + W[215] * B[89]; 1640f30536b4SBarry Smith A[81] = W[6] * B[75] + W[21] * B[76] + W[36] * B[77] + W[51] * B[78] + W[66] * B[79] + W[81] * B[80] + W[96] * B[81] + W[111] * B[82] + W[126] * B[83] + W[141] * B[84] + W[156] * B[85] + W[171] * B[86] + W[186] * B[87] + W[201] * B[88] + W[216] * B[89]; 1641f30536b4SBarry Smith A[82] = W[7] * B[75] + W[22] * B[76] + W[37] * B[77] + W[52] * B[78] + W[67] * B[79] + W[82] * B[80] + W[97] * B[81] + W[112] * B[82] + W[127] * B[83] + W[142] * B[84] + W[157] * B[85] + W[172] * B[86] + W[187] * B[87] + W[202] * B[88] + W[217] * B[89]; 1642f30536b4SBarry Smith A[83] = W[8] * B[75] + W[23] * B[76] + W[38] * B[77] + W[53] * B[78] + W[68] * B[79] + W[83] * B[80] + W[98] * B[81] + W[113] * B[82] + W[128] * B[83] + W[143] * B[84] + W[158] * B[85] + W[173] * B[86] + W[188] * B[87] + W[203] * B[88] + W[218] * B[89]; 1643f30536b4SBarry Smith A[84] = W[9] * B[75] + W[24] * B[76] + W[39] * B[77] + W[54] * B[78] + W[69] * B[79] + W[84] * B[80] + W[99] * B[81] + W[114] * B[82] + W[129] * B[83] + W[144] * B[84] + W[159] * B[85] + W[174] * B[86] + W[189] * B[87] + W[204] * B[88] + W[219] * B[89]; 1644f30536b4SBarry Smith A[85] = W[10] * B[75] + W[25] * B[76] + W[40] * B[77] + W[55] * B[78] + W[70] * B[79] + W[85] * B[80] + W[100] * B[81] + W[115] * B[82] + W[130] * B[83] + W[145] * B[84] + W[160] * B[85] + W[175] * B[86] + W[190] * B[87] + W[205] * B[88] + W[220] * B[89]; 1645f30536b4SBarry Smith A[86] = W[11] * B[75] + W[26] * B[76] + W[41] * B[77] + W[56] * B[78] + W[71] * B[79] + W[86] * B[80] + W[101] * B[81] + W[116] * B[82] + W[131] * B[83] + W[146] * B[84] + W[161] * B[85] + W[176] * B[86] + W[191] * B[87] + W[206] * B[88] + W[221] * B[89]; 1646f30536b4SBarry Smith A[87] = W[12] * B[75] + W[27] * B[76] + W[42] * B[77] + W[57] * B[78] + W[72] * B[79] + W[87] * B[80] + W[102] * B[81] + W[117] * B[82] + W[132] * B[83] + W[147] * B[84] + W[162] * B[85] + W[177] * B[86] + W[192] * B[87] + W[207] * B[88] + W[222] * B[89]; 1647f30536b4SBarry Smith A[88] = W[13] * B[75] + W[28] * B[76] + W[43] * B[77] + W[58] * B[78] + W[73] * B[79] + W[88] * B[80] + W[103] * B[81] + W[118] * B[82] + W[133] * B[83] + W[148] * B[84] + W[163] * B[85] + W[178] * B[86] + W[193] * B[87] + W[208] * B[88] + W[223] * B[89]; 1648f30536b4SBarry Smith A[89] = W[14] * B[75] + W[29] * B[76] + W[44] * B[77] + W[59] * B[78] + W[74] * B[79] + W[89] * B[80] + W[104] * B[81] + W[119] * B[82] + W[134] * B[83] + W[149] * B[84] + W[164] * B[85] + W[179] * B[86] + W[194] * B[87] + W[209] * B[88] + W[224] * B[89]; 1649f30536b4SBarry Smith A[90] = W[0] * B[90] + W[15] * B[91] + W[30] * B[92] + W[45] * B[93] + W[60] * B[94] + W[75] * B[95] + W[90] * B[96] + W[105] * B[97] + W[120] * B[98] + W[135] * B[99] + W[150] * B[100] + W[165] * B[101] + W[180] * B[102] + W[195] * B[103] + W[210] * B[104]; 1650f30536b4SBarry Smith A[91] = W[1] * B[90] + W[16] * B[91] + W[31] * B[92] + W[46] * B[93] + W[61] * B[94] + W[76] * B[95] + W[91] * B[96] + W[106] * B[97] + W[121] * B[98] + W[136] * B[99] + W[151] * B[100] + W[166] * B[101] + W[181] * B[102] + W[196] * B[103] + W[211] * B[104]; 1651f30536b4SBarry Smith A[92] = W[2] * B[90] + W[17] * B[91] + W[32] * B[92] + W[47] * B[93] + W[62] * B[94] + W[77] * B[95] + W[92] * B[96] + W[107] * B[97] + W[122] * B[98] + W[137] * B[99] + W[152] * B[100] + W[167] * B[101] + W[182] * B[102] + W[197] * B[103] + W[212] * B[104]; 1652f30536b4SBarry Smith A[93] = W[3] * B[90] + W[18] * B[91] + W[33] * B[92] + W[48] * B[93] + W[63] * B[94] + W[78] * B[95] + W[93] * B[96] + W[108] * B[97] + W[123] * B[98] + W[138] * B[99] + W[153] * B[100] + W[168] * B[101] + W[183] * B[102] + W[198] * B[103] + W[213] * B[104]; 1653f30536b4SBarry Smith A[94] = W[4] * B[90] + W[19] * B[91] + W[34] * B[92] + W[49] * B[93] + W[64] * B[94] + W[79] * B[95] + W[94] * B[96] + W[109] * B[97] + W[124] * B[98] + W[139] * B[99] + W[154] * B[100] + W[169] * B[101] + W[184] * B[102] + W[199] * B[103] + W[214] * B[104]; 1654f30536b4SBarry Smith A[95] = W[5] * B[90] + W[20] * B[91] + W[35] * B[92] + W[50] * B[93] + W[65] * B[94] + W[80] * B[95] + W[95] * B[96] + W[110] * B[97] + W[125] * B[98] + W[140] * B[99] + W[155] * B[100] + W[170] * B[101] + W[185] * B[102] + W[200] * B[103] + W[215] * B[104]; 1655f30536b4SBarry Smith A[96] = W[6] * B[90] + W[21] * B[91] + W[36] * B[92] + W[51] * B[93] + W[66] * B[94] + W[81] * B[95] + W[96] * B[96] + W[111] * B[97] + W[126] * B[98] + W[141] * B[99] + W[156] * B[100] + W[171] * B[101] + W[186] * B[102] + W[201] * B[103] + W[216] * B[104]; 1656f30536b4SBarry Smith A[97] = W[7] * B[90] + W[22] * B[91] + W[37] * B[92] + W[52] * B[93] + W[67] * B[94] + W[82] * B[95] + W[97] * B[96] + W[112] * B[97] + W[127] * B[98] + W[142] * B[99] + W[157] * B[100] + W[172] * B[101] + W[187] * B[102] + W[202] * B[103] + W[217] * B[104]; 1657f30536b4SBarry Smith A[98] = W[8] * B[90] + W[23] * B[91] + W[38] * B[92] + W[53] * B[93] + W[68] * B[94] + W[83] * B[95] + W[98] * B[96] + W[113] * B[97] + W[128] * B[98] + W[143] * B[99] + W[158] * B[100] + W[173] * B[101] + W[188] * B[102] + W[203] * B[103] + W[218] * B[104]; 1658f30536b4SBarry Smith A[99] = W[9] * B[90] + W[24] * B[91] + W[39] * B[92] + W[54] * B[93] + W[69] * B[94] + W[84] * B[95] + W[99] * B[96] + W[114] * B[97] + W[129] * B[98] + W[144] * B[99] + W[159] * B[100] + W[174] * B[101] + W[189] * B[102] + W[204] * B[103] + W[219] * B[104]; 1659f30536b4SBarry Smith A[100] = W[10] * B[90] + W[25] * B[91] + W[40] * B[92] + W[55] * B[93] + W[70] * B[94] + W[85] * B[95] + W[100] * B[96] + W[115] * B[97] + W[130] * B[98] + W[145] * B[99] + W[160] * B[100] + W[175] * B[101] + W[190] * B[102] + W[205] * B[103] + W[220] * B[104]; 1660f30536b4SBarry Smith A[101] = W[11] * B[90] + W[26] * B[91] + W[41] * B[92] + W[56] * B[93] + W[71] * B[94] + W[86] * B[95] + W[101] * B[96] + W[116] * B[97] + W[131] * B[98] + W[146] * B[99] + W[161] * B[100] + W[176] * B[101] + W[191] * B[102] + W[206] * B[103] + W[221] * B[104]; 1661f30536b4SBarry Smith A[102] = W[12] * B[90] + W[27] * B[91] + W[42] * B[92] + W[57] * B[93] + W[72] * B[94] + W[87] * B[95] + W[102] * B[96] + W[117] * B[97] + W[132] * B[98] + W[147] * B[99] + W[162] * B[100] + W[177] * B[101] + W[192] * B[102] + W[207] * B[103] + W[222] * B[104]; 1662f30536b4SBarry Smith A[103] = W[13] * B[90] + W[28] * B[91] + W[43] * B[92] + W[58] * B[93] + W[73] * B[94] + W[88] * B[95] + W[103] * B[96] + W[118] * B[97] + W[133] * B[98] + W[148] * B[99] + W[163] * B[100] + W[178] * B[101] + W[193] * B[102] + W[208] * B[103] + W[223] * B[104]; 1663f30536b4SBarry Smith A[104] = W[14] * B[90] + W[29] * B[91] + W[44] * B[92] + W[59] * B[93] + W[74] * B[94] + W[89] * B[95] + W[104] * B[96] + W[119] * B[97] + W[134] * B[98] + W[149] * B[99] + W[164] * B[100] + W[179] * B[101] + W[194] * B[102] + W[209] * B[103] + W[224] * B[104]; 1664f30536b4SBarry Smith A[105] = W[0] * B[105] + W[15] * B[106] + W[30] * B[107] + W[45] * B[108] + W[60] * B[109] + W[75] * B[110] + W[90] * B[111] + W[105] * B[112] + W[120] * B[113] + W[135] * B[114] + W[150] * B[115] + W[165] * B[116] + W[180] * B[117] + W[195] * B[118] + W[210] * B[119]; 1665f30536b4SBarry Smith A[106] = W[1] * B[105] + W[16] * B[106] + W[31] * B[107] + W[46] * B[108] + W[61] * B[109] + W[76] * B[110] + W[91] * B[111] + W[106] * B[112] + W[121] * B[113] + W[136] * B[114] + W[151] * B[115] + W[166] * B[116] + W[181] * B[117] + W[196] * B[118] + W[211] * B[119]; 1666f30536b4SBarry Smith A[107] = W[2] * B[105] + W[17] * B[106] + W[32] * B[107] + W[47] * B[108] + W[62] * B[109] + W[77] * B[110] + W[92] * B[111] + W[107] * B[112] + W[122] * B[113] + W[137] * B[114] + W[152] * B[115] + W[167] * B[116] + W[182] * B[117] + W[197] * B[118] + W[212] * B[119]; 1667f30536b4SBarry Smith A[108] = W[3] * B[105] + W[18] * B[106] + W[33] * B[107] + W[48] * B[108] + W[63] * B[109] + W[78] * B[110] + W[93] * B[111] + W[108] * B[112] + W[123] * B[113] + W[138] * B[114] + W[153] * B[115] + W[168] * B[116] + W[183] * B[117] + W[198] * B[118] + W[213] * B[119]; 1668f30536b4SBarry Smith A[109] = W[4] * B[105] + W[19] * B[106] + W[34] * B[107] + W[49] * B[108] + W[64] * B[109] + W[79] * B[110] + W[94] * B[111] + W[109] * B[112] + W[124] * B[113] + W[139] * B[114] + W[154] * B[115] + W[169] * B[116] + W[184] * B[117] + W[199] * B[118] + W[214] * B[119]; 1669f30536b4SBarry Smith A[110] = W[5] * B[105] + W[20] * B[106] + W[35] * B[107] + W[50] * B[108] + W[65] * B[109] + W[80] * B[110] + W[95] * B[111] + W[110] * B[112] + W[125] * B[113] + W[140] * B[114] + W[155] * B[115] + W[170] * B[116] + W[185] * B[117] + W[200] * B[118] + W[215] * B[119]; 1670f30536b4SBarry Smith A[111] = W[6] * B[105] + W[21] * B[106] + W[36] * B[107] + W[51] * B[108] + W[66] * B[109] + W[81] * B[110] + W[96] * B[111] + W[111] * B[112] + W[126] * B[113] + W[141] * B[114] + W[156] * B[115] + W[171] * B[116] + W[186] * B[117] + W[201] * B[118] + W[216] * B[119]; 1671f30536b4SBarry Smith A[112] = W[7] * B[105] + W[22] * B[106] + W[37] * B[107] + W[52] * B[108] + W[67] * B[109] + W[82] * B[110] + W[97] * B[111] + W[112] * B[112] + W[127] * B[113] + W[142] * B[114] + W[157] * B[115] + W[172] * B[116] + W[187] * B[117] + W[202] * B[118] + W[217] * B[119]; 1672f30536b4SBarry Smith A[113] = W[8] * B[105] + W[23] * B[106] + W[38] * B[107] + W[53] * B[108] + W[68] * B[109] + W[83] * B[110] + W[98] * B[111] + W[113] * B[112] + W[128] * B[113] + W[143] * B[114] + W[158] * B[115] + W[173] * B[116] + W[188] * B[117] + W[203] * B[118] + W[218] * B[119]; 1673f30536b4SBarry Smith A[114] = W[9] * B[105] + W[24] * B[106] + W[39] * B[107] + W[54] * B[108] + W[69] * B[109] + W[84] * B[110] + W[99] * B[111] + W[114] * B[112] + W[129] * B[113] + W[144] * B[114] + W[159] * B[115] + W[174] * B[116] + W[189] * B[117] + W[204] * B[118] + W[219] * B[119]; 1674f30536b4SBarry Smith A[115] = W[10] * B[105] + W[25] * B[106] + W[40] * B[107] + W[55] * B[108] + W[70] * B[109] + W[85] * B[110] + W[100] * B[111] + W[115] * B[112] + W[130] * B[113] + W[145] * B[114] + W[160] * B[115] + W[175] * B[116] + W[190] * B[117] + W[205] * B[118] + W[220] * B[119]; 1675f30536b4SBarry Smith A[116] = W[11] * B[105] + W[26] * B[106] + W[41] * B[107] + W[56] * B[108] + W[71] * B[109] + W[86] * B[110] + W[101] * B[111] + W[116] * B[112] + W[131] * B[113] + W[146] * B[114] + W[161] * B[115] + W[176] * B[116] + W[191] * B[117] + W[206] * B[118] + W[221] * B[119]; 1676f30536b4SBarry Smith A[117] = W[12] * B[105] + W[27] * B[106] + W[42] * B[107] + W[57] * B[108] + W[72] * B[109] + W[87] * B[110] + W[102] * B[111] + W[117] * B[112] + W[132] * B[113] + W[147] * B[114] + W[162] * B[115] + W[177] * B[116] + W[192] * B[117] + W[207] * B[118] + W[222] * B[119]; 1677f30536b4SBarry Smith A[118] = W[13] * B[105] + W[28] * B[106] + W[43] * B[107] + W[58] * B[108] + W[73] * B[109] + W[88] * B[110] + W[103] * B[111] + W[118] * B[112] + W[133] * B[113] + W[148] * B[114] + W[163] * B[115] + W[178] * B[116] + W[193] * B[117] + W[208] * B[118] + W[223] * B[119]; 1678f30536b4SBarry Smith A[119] = W[14] * B[105] + W[29] * B[106] + W[44] * B[107] + W[59] * B[108] + W[74] * B[109] + W[89] * B[110] + W[104] * B[111] + W[119] * B[112] + W[134] * B[113] + W[149] * B[114] + W[164] * B[115] + W[179] * B[116] + W[194] * B[117] + W[209] * B[118] + W[224] * B[119]; 1679f30536b4SBarry Smith A[120] = W[0] * B[120] + W[15] * B[121] + W[30] * B[122] + W[45] * B[123] + W[60] * B[124] + W[75] * B[125] + W[90] * B[126] + W[105] * B[127] + W[120] * B[128] + W[135] * B[129] + W[150] * B[130] + W[165] * B[131] + W[180] * B[132] + W[195] * B[133] + W[210] * B[134]; 1680f30536b4SBarry Smith A[121] = W[1] * B[120] + W[16] * B[121] + W[31] * B[122] + W[46] * B[123] + W[61] * B[124] + W[76] * B[125] + W[91] * B[126] + W[106] * B[127] + W[121] * B[128] + W[136] * B[129] + W[151] * B[130] + W[166] * B[131] + W[181] * B[132] + W[196] * B[133] + W[211] * B[134]; 1681f30536b4SBarry Smith A[122] = W[2] * B[120] + W[17] * B[121] + W[32] * B[122] + W[47] * B[123] + W[62] * B[124] + W[77] * B[125] + W[92] * B[126] + W[107] * B[127] + W[122] * B[128] + W[137] * B[129] + W[152] * B[130] + W[167] * B[131] + W[182] * B[132] + W[197] * B[133] + W[212] * B[134]; 1682f30536b4SBarry Smith A[123] = W[3] * B[120] + W[18] * B[121] + W[33] * B[122] + W[48] * B[123] + W[63] * B[124] + W[78] * B[125] + W[93] * B[126] + W[108] * B[127] + W[123] * B[128] + W[138] * B[129] + W[153] * B[130] + W[168] * B[131] + W[183] * B[132] + W[198] * B[133] + W[213] * B[134]; 1683f30536b4SBarry Smith A[124] = W[4] * B[120] + W[19] * B[121] + W[34] * B[122] + W[49] * B[123] + W[64] * B[124] + W[79] * B[125] + W[94] * B[126] + W[109] * B[127] + W[124] * B[128] + W[139] * B[129] + W[154] * B[130] + W[169] * B[131] + W[184] * B[132] + W[199] * B[133] + W[214] * B[134]; 1684f30536b4SBarry Smith A[125] = W[5] * B[120] + W[20] * B[121] + W[35] * B[122] + W[50] * B[123] + W[65] * B[124] + W[80] * B[125] + W[95] * B[126] + W[110] * B[127] + W[125] * B[128] + W[140] * B[129] + W[155] * B[130] + W[170] * B[131] + W[185] * B[132] + W[200] * B[133] + W[215] * B[134]; 1685f30536b4SBarry Smith A[126] = W[6] * B[120] + W[21] * B[121] + W[36] * B[122] + W[51] * B[123] + W[66] * B[124] + W[81] * B[125] + W[96] * B[126] + W[111] * B[127] + W[126] * B[128] + W[141] * B[129] + W[156] * B[130] + W[171] * B[131] + W[186] * B[132] + W[201] * B[133] + W[216] * B[134]; 1686f30536b4SBarry Smith A[127] = W[7] * B[120] + W[22] * B[121] + W[37] * B[122] + W[52] * B[123] + W[67] * B[124] + W[82] * B[125] + W[97] * B[126] + W[112] * B[127] + W[127] * B[128] + W[142] * B[129] + W[157] * B[130] + W[172] * B[131] + W[187] * B[132] + W[202] * B[133] + W[217] * B[134]; 1687f30536b4SBarry Smith A[128] = W[8] * B[120] + W[23] * B[121] + W[38] * B[122] + W[53] * B[123] + W[68] * B[124] + W[83] * B[125] + W[98] * B[126] + W[113] * B[127] + W[128] * B[128] + W[143] * B[129] + W[158] * B[130] + W[173] * B[131] + W[188] * B[132] + W[203] * B[133] + W[218] * B[134]; 1688f30536b4SBarry Smith A[129] = W[9] * B[120] + W[24] * B[121] + W[39] * B[122] + W[54] * B[123] + W[69] * B[124] + W[84] * B[125] + W[99] * B[126] + W[114] * B[127] + W[129] * B[128] + W[144] * B[129] + W[159] * B[130] + W[174] * B[131] + W[189] * B[132] + W[204] * B[133] + W[219] * B[134]; 1689f30536b4SBarry Smith A[130] = W[10] * B[120] + W[25] * B[121] + W[40] * B[122] + W[55] * B[123] + W[70] * B[124] + W[85] * B[125] + W[100] * B[126] + W[115] * B[127] + W[130] * B[128] + W[145] * B[129] + W[160] * B[130] + W[175] * B[131] + W[190] * B[132] + W[205] * B[133] + W[220] * B[134]; 1690f30536b4SBarry Smith A[131] = W[11] * B[120] + W[26] * B[121] + W[41] * B[122] + W[56] * B[123] + W[71] * B[124] + W[86] * B[125] + W[101] * B[126] + W[116] * B[127] + W[131] * B[128] + W[146] * B[129] + W[161] * B[130] + W[176] * B[131] + W[191] * B[132] + W[206] * B[133] + W[221] * B[134]; 1691f30536b4SBarry Smith A[132] = W[12] * B[120] + W[27] * B[121] + W[42] * B[122] + W[57] * B[123] + W[72] * B[124] + W[87] * B[125] + W[102] * B[126] + W[117] * B[127] + W[132] * B[128] + W[147] * B[129] + W[162] * B[130] + W[177] * B[131] + W[192] * B[132] + W[207] * B[133] + W[222] * B[134]; 1692f30536b4SBarry Smith A[133] = W[13] * B[120] + W[28] * B[121] + W[43] * B[122] + W[58] * B[123] + W[73] * B[124] + W[88] * B[125] + W[103] * B[126] + W[118] * B[127] + W[133] * B[128] + W[148] * B[129] + W[163] * B[130] + W[178] * B[131] + W[193] * B[132] + W[208] * B[133] + W[223] * B[134]; 1693f30536b4SBarry Smith A[134] = W[14] * B[120] + W[29] * B[121] + W[44] * B[122] + W[59] * B[123] + W[74] * B[124] + W[89] * B[125] + W[104] * B[126] + W[119] * B[127] + W[134] * B[128] + W[149] * B[129] + W[164] * B[130] + W[179] * B[131] + W[194] * B[132] + W[209] * B[133] + W[224] * B[134]; 1694f30536b4SBarry Smith A[135] = W[0] * B[135] + W[15] * B[136] + W[30] * B[137] + W[45] * B[138] + W[60] * B[139] + W[75] * B[140] + W[90] * B[141] + W[105] * B[142] + W[120] * B[143] + W[135] * B[144] + W[150] * B[145] + W[165] * B[146] + W[180] * B[147] + W[195] * B[148] + W[210] * B[149]; 1695f30536b4SBarry Smith A[136] = W[1] * B[135] + W[16] * B[136] + W[31] * B[137] + W[46] * B[138] + W[61] * B[139] + W[76] * B[140] + W[91] * B[141] + W[106] * B[142] + W[121] * B[143] + W[136] * B[144] + W[151] * B[145] + W[166] * B[146] + W[181] * B[147] + W[196] * B[148] + W[211] * B[149]; 1696f30536b4SBarry Smith A[137] = W[2] * B[135] + W[17] * B[136] + W[32] * B[137] + W[47] * B[138] + W[62] * B[139] + W[77] * B[140] + W[92] * B[141] + W[107] * B[142] + W[122] * B[143] + W[137] * B[144] + W[152] * B[145] + W[167] * B[146] + W[182] * B[147] + W[197] * B[148] + W[212] * B[149]; 1697f30536b4SBarry Smith A[138] = W[3] * B[135] + W[18] * B[136] + W[33] * B[137] + W[48] * B[138] + W[63] * B[139] + W[78] * B[140] + W[93] * B[141] + W[108] * B[142] + W[123] * B[143] + W[138] * B[144] + W[153] * B[145] + W[168] * B[146] + W[183] * B[147] + W[198] * B[148] + W[213] * B[149]; 1698f30536b4SBarry Smith A[139] = W[4] * B[135] + W[19] * B[136] + W[34] * B[137] + W[49] * B[138] + W[64] * B[139] + W[79] * B[140] + W[94] * B[141] + W[109] * B[142] + W[124] * B[143] + W[139] * B[144] + W[154] * B[145] + W[169] * B[146] + W[184] * B[147] + W[199] * B[148] + W[214] * B[149]; 1699f30536b4SBarry Smith A[140] = W[5] * B[135] + W[20] * B[136] + W[35] * B[137] + W[50] * B[138] + W[65] * B[139] + W[80] * B[140] + W[95] * B[141] + W[110] * B[142] + W[125] * B[143] + W[140] * B[144] + W[155] * B[145] + W[170] * B[146] + W[185] * B[147] + W[200] * B[148] + W[215] * B[149]; 1700f30536b4SBarry Smith A[141] = W[6] * B[135] + W[21] * B[136] + W[36] * B[137] + W[51] * B[138] + W[66] * B[139] + W[81] * B[140] + W[96] * B[141] + W[111] * B[142] + W[126] * B[143] + W[141] * B[144] + W[156] * B[145] + W[171] * B[146] + W[186] * B[147] + W[201] * B[148] + W[216] * B[149]; 1701f30536b4SBarry Smith A[142] = W[7] * B[135] + W[22] * B[136] + W[37] * B[137] + W[52] * B[138] + W[67] * B[139] + W[82] * B[140] + W[97] * B[141] + W[112] * B[142] + W[127] * B[143] + W[142] * B[144] + W[157] * B[145] + W[172] * B[146] + W[187] * B[147] + W[202] * B[148] + W[217] * B[149]; 1702f30536b4SBarry Smith A[143] = W[8] * B[135] + W[23] * B[136] + W[38] * B[137] + W[53] * B[138] + W[68] * B[139] + W[83] * B[140] + W[98] * B[141] + W[113] * B[142] + W[128] * B[143] + W[143] * B[144] + W[158] * B[145] + W[173] * B[146] + W[188] * B[147] + W[203] * B[148] + W[218] * B[149]; 1703f30536b4SBarry Smith A[144] = W[9] * B[135] + W[24] * B[136] + W[39] * B[137] + W[54] * B[138] + W[69] * B[139] + W[84] * B[140] + W[99] * B[141] + W[114] * B[142] + W[129] * B[143] + W[144] * B[144] + W[159] * B[145] + W[174] * B[146] + W[189] * B[147] + W[204] * B[148] + W[219] * B[149]; 1704f30536b4SBarry Smith A[145] = W[10] * B[135] + W[25] * B[136] + W[40] * B[137] + W[55] * B[138] + W[70] * B[139] + W[85] * B[140] + W[100] * B[141] + W[115] * B[142] + W[130] * B[143] + W[145] * B[144] + W[160] * B[145] + W[175] * B[146] + W[190] * B[147] + W[205] * B[148] + W[220] * B[149]; 1705f30536b4SBarry Smith A[146] = W[11] * B[135] + W[26] * B[136] + W[41] * B[137] + W[56] * B[138] + W[71] * B[139] + W[86] * B[140] + W[101] * B[141] + W[116] * B[142] + W[131] * B[143] + W[146] * B[144] + W[161] * B[145] + W[176] * B[146] + W[191] * B[147] + W[206] * B[148] + W[221] * B[149]; 1706f30536b4SBarry Smith A[147] = W[12] * B[135] + W[27] * B[136] + W[42] * B[137] + W[57] * B[138] + W[72] * B[139] + W[87] * B[140] + W[102] * B[141] + W[117] * B[142] + W[132] * B[143] + W[147] * B[144] + W[162] * B[145] + W[177] * B[146] + W[192] * B[147] + W[207] * B[148] + W[222] * B[149]; 1707f30536b4SBarry Smith A[148] = W[13] * B[135] + W[28] * B[136] + W[43] * B[137] + W[58] * B[138] + W[73] * B[139] + W[88] * B[140] + W[103] * B[141] + W[118] * B[142] + W[133] * B[143] + W[148] * B[144] + W[163] * B[145] + W[178] * B[146] + W[193] * B[147] + W[208] * B[148] + W[223] * B[149]; 1708f30536b4SBarry Smith A[149] = W[14] * B[135] + W[29] * B[136] + W[44] * B[137] + W[59] * B[138] + W[74] * B[139] + W[89] * B[140] + W[104] * B[141] + W[119] * B[142] + W[134] * B[143] + W[149] * B[144] + W[164] * B[145] + W[179] * B[146] + W[194] * B[147] + W[209] * B[148] + W[224] * B[149]; 1709f30536b4SBarry Smith A[150] = W[0] * B[150] + W[15] * B[151] + W[30] * B[152] + W[45] * B[153] + W[60] * B[154] + W[75] * B[155] + W[90] * B[156] + W[105] * B[157] + W[120] * B[158] + W[135] * B[159] + W[150] * B[160] + W[165] * B[161] + W[180] * B[162] + W[195] * B[163] + W[210] * B[164]; 1710f30536b4SBarry Smith A[151] = W[1] * B[150] + W[16] * B[151] + W[31] * B[152] + W[46] * B[153] + W[61] * B[154] + W[76] * B[155] + W[91] * B[156] + W[106] * B[157] + W[121] * B[158] + W[136] * B[159] + W[151] * B[160] + W[166] * B[161] + W[181] * B[162] + W[196] * B[163] + W[211] * B[164]; 1711f30536b4SBarry Smith A[152] = W[2] * B[150] + W[17] * B[151] + W[32] * B[152] + W[47] * B[153] + W[62] * B[154] + W[77] * B[155] + W[92] * B[156] + W[107] * B[157] + W[122] * B[158] + W[137] * B[159] + W[152] * B[160] + W[167] * B[161] + W[182] * B[162] + W[197] * B[163] + W[212] * B[164]; 1712f30536b4SBarry Smith A[153] = W[3] * B[150] + W[18] * B[151] + W[33] * B[152] + W[48] * B[153] + W[63] * B[154] + W[78] * B[155] + W[93] * B[156] + W[108] * B[157] + W[123] * B[158] + W[138] * B[159] + W[153] * B[160] + W[168] * B[161] + W[183] * B[162] + W[198] * B[163] + W[213] * B[164]; 1713f30536b4SBarry Smith A[154] = W[4] * B[150] + W[19] * B[151] + W[34] * B[152] + W[49] * B[153] + W[64] * B[154] + W[79] * B[155] + W[94] * B[156] + W[109] * B[157] + W[124] * B[158] + W[139] * B[159] + W[154] * B[160] + W[169] * B[161] + W[184] * B[162] + W[199] * B[163] + W[214] * B[164]; 1714f30536b4SBarry Smith A[155] = W[5] * B[150] + W[20] * B[151] + W[35] * B[152] + W[50] * B[153] + W[65] * B[154] + W[80] * B[155] + W[95] * B[156] + W[110] * B[157] + W[125] * B[158] + W[140] * B[159] + W[155] * B[160] + W[170] * B[161] + W[185] * B[162] + W[200] * B[163] + W[215] * B[164]; 1715f30536b4SBarry Smith A[156] = W[6] * B[150] + W[21] * B[151] + W[36] * B[152] + W[51] * B[153] + W[66] * B[154] + W[81] * B[155] + W[96] * B[156] + W[111] * B[157] + W[126] * B[158] + W[141] * B[159] + W[156] * B[160] + W[171] * B[161] + W[186] * B[162] + W[201] * B[163] + W[216] * B[164]; 1716f30536b4SBarry Smith A[157] = W[7] * B[150] + W[22] * B[151] + W[37] * B[152] + W[52] * B[153] + W[67] * B[154] + W[82] * B[155] + W[97] * B[156] + W[112] * B[157] + W[127] * B[158] + W[142] * B[159] + W[157] * B[160] + W[172] * B[161] + W[187] * B[162] + W[202] * B[163] + W[217] * B[164]; 1717f30536b4SBarry Smith A[158] = W[8] * B[150] + W[23] * B[151] + W[38] * B[152] + W[53] * B[153] + W[68] * B[154] + W[83] * B[155] + W[98] * B[156] + W[113] * B[157] + W[128] * B[158] + W[143] * B[159] + W[158] * B[160] + W[173] * B[161] + W[188] * B[162] + W[203] * B[163] + W[218] * B[164]; 1718f30536b4SBarry Smith A[159] = W[9] * B[150] + W[24] * B[151] + W[39] * B[152] + W[54] * B[153] + W[69] * B[154] + W[84] * B[155] + W[99] * B[156] + W[114] * B[157] + W[129] * B[158] + W[144] * B[159] + W[159] * B[160] + W[174] * B[161] + W[189] * B[162] + W[204] * B[163] + W[219] * B[164]; 1719f30536b4SBarry Smith A[160] = W[10] * B[150] + W[25] * B[151] + W[40] * B[152] + W[55] * B[153] + W[70] * B[154] + W[85] * B[155] + W[100] * B[156] + W[115] * B[157] + W[130] * B[158] + W[145] * B[159] + W[160] * B[160] + W[175] * B[161] + W[190] * B[162] + W[205] * B[163] + W[220] * B[164]; 1720f30536b4SBarry Smith A[161] = W[11] * B[150] + W[26] * B[151] + W[41] * B[152] + W[56] * B[153] + W[71] * B[154] + W[86] * B[155] + W[101] * B[156] + W[116] * B[157] + W[131] * B[158] + W[146] * B[159] + W[161] * B[160] + W[176] * B[161] + W[191] * B[162] + W[206] * B[163] + W[221] * B[164]; 1721f30536b4SBarry Smith A[162] = W[12] * B[150] + W[27] * B[151] + W[42] * B[152] + W[57] * B[153] + W[72] * B[154] + W[87] * B[155] + W[102] * B[156] + W[117] * B[157] + W[132] * B[158] + W[147] * B[159] + W[162] * B[160] + W[177] * B[161] + W[192] * B[162] + W[207] * B[163] + W[222] * B[164]; 1722f30536b4SBarry Smith A[163] = W[13] * B[150] + W[28] * B[151] + W[43] * B[152] + W[58] * B[153] + W[73] * B[154] + W[88] * B[155] + W[103] * B[156] + W[118] * B[157] + W[133] * B[158] + W[148] * B[159] + W[163] * B[160] + W[178] * B[161] + W[193] * B[162] + W[208] * B[163] + W[223] * B[164]; 1723f30536b4SBarry Smith A[164] = W[14] * B[150] + W[29] * B[151] + W[44] * B[152] + W[59] * B[153] + W[74] * B[154] + W[89] * B[155] + W[104] * B[156] + W[119] * B[157] + W[134] * B[158] + W[149] * B[159] + W[164] * B[160] + W[179] * B[161] + W[194] * B[162] + W[209] * B[163] + W[224] * B[164]; 1724f30536b4SBarry Smith A[165] = W[0] * B[165] + W[15] * B[166] + W[30] * B[167] + W[45] * B[168] + W[60] * B[169] + W[75] * B[170] + W[90] * B[171] + W[105] * B[172] + W[120] * B[173] + W[135] * B[174] + W[150] * B[175] + W[165] * B[176] + W[180] * B[177] + W[195] * B[178] + W[210] * B[179]; 1725f30536b4SBarry Smith A[166] = W[1] * B[165] + W[16] * B[166] + W[31] * B[167] + W[46] * B[168] + W[61] * B[169] + W[76] * B[170] + W[91] * B[171] + W[106] * B[172] + W[121] * B[173] + W[136] * B[174] + W[151] * B[175] + W[166] * B[176] + W[181] * B[177] + W[196] * B[178] + W[211] * B[179]; 1726f30536b4SBarry Smith A[167] = W[2] * B[165] + W[17] * B[166] + W[32] * B[167] + W[47] * B[168] + W[62] * B[169] + W[77] * B[170] + W[92] * B[171] + W[107] * B[172] + W[122] * B[173] + W[137] * B[174] + W[152] * B[175] + W[167] * B[176] + W[182] * B[177] + W[197] * B[178] + W[212] * B[179]; 1727f30536b4SBarry Smith A[168] = W[3] * B[165] + W[18] * B[166] + W[33] * B[167] + W[48] * B[168] + W[63] * B[169] + W[78] * B[170] + W[93] * B[171] + W[108] * B[172] + W[123] * B[173] + W[138] * B[174] + W[153] * B[175] + W[168] * B[176] + W[183] * B[177] + W[198] * B[178] + W[213] * B[179]; 1728f30536b4SBarry Smith A[169] = W[4] * B[165] + W[19] * B[166] + W[34] * B[167] + W[49] * B[168] + W[64] * B[169] + W[79] * B[170] + W[94] * B[171] + W[109] * B[172] + W[124] * B[173] + W[139] * B[174] + W[154] * B[175] + W[169] * B[176] + W[184] * B[177] + W[199] * B[178] + W[214] * B[179]; 1729f30536b4SBarry Smith A[170] = W[5] * B[165] + W[20] * B[166] + W[35] * B[167] + W[50] * B[168] + W[65] * B[169] + W[80] * B[170] + W[95] * B[171] + W[110] * B[172] + W[125] * B[173] + W[140] * B[174] + W[155] * B[175] + W[170] * B[176] + W[185] * B[177] + W[200] * B[178] + W[215] * B[179]; 1730f30536b4SBarry Smith A[171] = W[6] * B[165] + W[21] * B[166] + W[36] * B[167] + W[51] * B[168] + W[66] * B[169] + W[81] * B[170] + W[96] * B[171] + W[111] * B[172] + W[126] * B[173] + W[141] * B[174] + W[156] * B[175] + W[171] * B[176] + W[186] * B[177] + W[201] * B[178] + W[216] * B[179]; 1731f30536b4SBarry Smith A[172] = W[7] * B[165] + W[22] * B[166] + W[37] * B[167] + W[52] * B[168] + W[67] * B[169] + W[82] * B[170] + W[97] * B[171] + W[112] * B[172] + W[127] * B[173] + W[142] * B[174] + W[157] * B[175] + W[172] * B[176] + W[187] * B[177] + W[202] * B[178] + W[217] * B[179]; 173257770305SBarry Smith A[173] = W[8] * B[165] + W[23] * B[166] + W[38] * B[167] + W[53] * B[168] + W[68] * B[169] + W[83] * B[170] + W[98] * B[171] + W[113] * B[172] + W[128] * B[173] + W[143] * B[174] + W[158] * B[175] + W[173] * B[176] + W[188] * B[177] + W[203] * B[178] + W[218] * B[179]; 1733f30536b4SBarry Smith A[174] = W[9] * B[165] + W[24] * B[166] + W[39] * B[167] + W[54] * B[168] + W[69] * B[169] + W[84] * B[170] + W[99] * B[171] + W[114] * B[172] + W[129] * B[173] + W[144] * B[174] + W[159] * B[175] + W[174] * B[176] + W[189] * B[177] + W[204] * B[178] + W[219] * B[179]; 1734f30536b4SBarry Smith A[175] = W[10] * B[165] + W[25] * B[166] + W[40] * B[167] + W[55] * B[168] + W[70] * B[169] + W[85] * B[170] + W[100] * B[171] + W[115] * B[172] + W[130] * B[173] + W[145] * B[174] + W[160] * B[175] + W[175] * B[176] + W[190] * B[177] + W[205] * B[178] + W[220] * B[179]; 1735f30536b4SBarry Smith A[176] = W[11] * B[165] + W[26] * B[166] + W[41] * B[167] + W[56] * B[168] + W[71] * B[169] + W[86] * B[170] + W[101] * B[171] + W[116] * B[172] + W[131] * B[173] + W[146] * B[174] + W[161] * B[175] + W[176] * B[176] + W[191] * B[177] + W[206] * B[178] + W[221] * B[179]; 1736f30536b4SBarry Smith A[177] = W[12] * B[165] + W[27] * B[166] + W[42] * B[167] + W[57] * B[168] + W[72] * B[169] + W[87] * B[170] + W[102] * B[171] + W[117] * B[172] + W[132] * B[173] + W[147] * B[174] + W[162] * B[175] + W[177] * B[176] + W[192] * B[177] + W[207] * B[178] + W[222] * B[179]; 1737f30536b4SBarry Smith A[178] = W[13] * B[165] + W[28] * B[166] + W[43] * B[167] + W[58] * B[168] + W[73] * B[169] + W[88] * B[170] + W[103] * B[171] + W[118] * B[172] + W[133] * B[173] + W[148] * B[174] + W[163] * B[175] + W[178] * B[176] + W[193] * B[177] + W[208] * B[178] + W[223] * B[179]; 1738f30536b4SBarry Smith A[179] = W[14] * B[165] + W[29] * B[166] + W[44] * B[167] + W[59] * B[168] + W[74] * B[169] + W[89] * B[170] + W[104] * B[171] + W[119] * B[172] + W[134] * B[173] + W[149] * B[174] + W[164] * B[175] + W[179] * B[176] + W[194] * B[177] + W[209] * B[178] + W[224] * B[179]; 1739f30536b4SBarry Smith A[180] = W[0] * B[180] + W[15] * B[181] + W[30] * B[182] + W[45] * B[183] + W[60] * B[184] + W[75] * B[185] + W[90] * B[186] + W[105] * B[187] + W[120] * B[188] + W[135] * B[189] + W[150] * B[190] + W[165] * B[191] + W[180] * B[192] + W[195] * B[193] + W[210] * B[194]; 1740f30536b4SBarry Smith A[181] = W[1] * B[180] + W[16] * B[181] + W[31] * B[182] + W[46] * B[183] + W[61] * B[184] + W[76] * B[185] + W[91] * B[186] + W[106] * B[187] + W[121] * B[188] + W[136] * B[189] + W[151] * B[190] + W[166] * B[191] + W[181] * B[192] + W[196] * B[193] + W[211] * B[194]; 1741f30536b4SBarry Smith A[182] = W[2] * B[180] + W[17] * B[181] + W[32] * B[182] + W[47] * B[183] + W[62] * B[184] + W[77] * B[185] + W[92] * B[186] + W[107] * B[187] + W[122] * B[188] + W[137] * B[189] + W[152] * B[190] + W[167] * B[191] + W[182] * B[192] + W[197] * B[193] + W[212] * B[194]; 1742f30536b4SBarry Smith A[183] = W[3] * B[180] + W[18] * B[181] + W[33] * B[182] + W[48] * B[183] + W[63] * B[184] + W[78] * B[185] + W[93] * B[186] + W[108] * B[187] + W[123] * B[188] + W[138] * B[189] + W[153] * B[190] + W[168] * B[191] + W[183] * B[192] + W[198] * B[193] + W[213] * B[194]; 1743f30536b4SBarry Smith A[184] = W[4] * B[180] + W[19] * B[181] + W[34] * B[182] + W[49] * B[183] + W[64] * B[184] + W[79] * B[185] + W[94] * B[186] + W[109] * B[187] + W[124] * B[188] + W[139] * B[189] + W[154] * B[190] + W[169] * B[191] + W[184] * B[192] + W[199] * B[193] + W[214] * B[194]; 1744f30536b4SBarry Smith A[185] = W[5] * B[180] + W[20] * B[181] + W[35] * B[182] + W[50] * B[183] + W[65] * B[184] + W[80] * B[185] + W[95] * B[186] + W[110] * B[187] + W[125] * B[188] + W[140] * B[189] + W[155] * B[190] + W[170] * B[191] + W[185] * B[192] + W[200] * B[193] + W[215] * B[194]; 1745f30536b4SBarry Smith A[186] = W[6] * B[180] + W[21] * B[181] + W[36] * B[182] + W[51] * B[183] + W[66] * B[184] + W[81] * B[185] + W[96] * B[186] + W[111] * B[187] + W[126] * B[188] + W[141] * B[189] + W[156] * B[190] + W[171] * B[191] + W[186] * B[192] + W[201] * B[193] + W[216] * B[194]; 1746f30536b4SBarry Smith A[187] = W[7] * B[180] + W[22] * B[181] + W[37] * B[182] + W[52] * B[183] + W[67] * B[184] + W[82] * B[185] + W[97] * B[186] + W[112] * B[187] + W[127] * B[188] + W[142] * B[189] + W[157] * B[190] + W[172] * B[191] + W[187] * B[192] + W[202] * B[193] + W[217] * B[194]; 1747f30536b4SBarry Smith A[188] = W[8] * B[180] + W[23] * B[181] + W[38] * B[182] + W[53] * B[183] + W[68] * B[184] + W[83] * B[185] + W[98] * B[186] + W[113] * B[187] + W[128] * B[188] + W[143] * B[189] + W[158] * B[190] + W[173] * B[191] + W[188] * B[192] + W[203] * B[193] + W[218] * B[194]; 1748f30536b4SBarry Smith A[189] = W[9] * B[180] + W[24] * B[181] + W[39] * B[182] + W[54] * B[183] + W[69] * B[184] + W[84] * B[185] + W[99] * B[186] + W[114] * B[187] + W[129] * B[188] + W[144] * B[189] + W[159] * B[190] + W[174] * B[191] + W[189] * B[192] + W[204] * B[193] + W[219] * B[194]; 1749f30536b4SBarry Smith A[190] = W[10] * B[180] + W[25] * B[181] + W[40] * B[182] + W[55] * B[183] + W[70] * B[184] + W[85] * B[185] + W[100] * B[186] + W[115] * B[187] + W[130] * B[188] + W[145] * B[189] + W[160] * B[190] + W[175] * B[191] + W[190] * B[192] + W[205] * B[193] + W[220] * B[194]; 1750f30536b4SBarry Smith A[191] = W[11] * B[180] + W[26] * B[181] + W[41] * B[182] + W[56] * B[183] + W[71] * B[184] + W[86] * B[185] + W[101] * B[186] + W[116] * B[187] + W[131] * B[188] + W[146] * B[189] + W[161] * B[190] + W[176] * B[191] + W[191] * B[192] + W[206] * B[193] + W[221] * B[194]; 1751f30536b4SBarry Smith A[192] = W[12] * B[180] + W[27] * B[181] + W[42] * B[182] + W[57] * B[183] + W[72] * B[184] + W[87] * B[185] + W[102] * B[186] + W[117] * B[187] + W[132] * B[188] + W[147] * B[189] + W[162] * B[190] + W[177] * B[191] + W[192] * B[192] + W[207] * B[193] + W[222] * B[194]; 1752f30536b4SBarry Smith A[193] = W[13] * B[180] + W[28] * B[181] + W[43] * B[182] + W[58] * B[183] + W[73] * B[184] + W[88] * B[185] + W[103] * B[186] + W[118] * B[187] + W[133] * B[188] + W[148] * B[189] + W[163] * B[190] + W[178] * B[191] + W[193] * B[192] + W[208] * B[193] + W[223] * B[194]; 1753f30536b4SBarry Smith A[194] = W[14] * B[180] + W[29] * B[181] + W[44] * B[182] + W[59] * B[183] + W[74] * B[184] + W[89] * B[185] + W[104] * B[186] + W[119] * B[187] + W[134] * B[188] + W[149] * B[189] + W[164] * B[190] + W[179] * B[191] + W[194] * B[192] + W[209] * B[193] + W[224] * B[194]; 1754f30536b4SBarry Smith A[195] = W[0] * B[195] + W[15] * B[196] + W[30] * B[197] + W[45] * B[198] + W[60] * B[199] + W[75] * B[200] + W[90] * B[201] + W[105] * B[202] + W[120] * B[203] + W[135] * B[204] + W[150] * B[205] + W[165] * B[206] + W[180] * B[207] + W[195] * B[208] + W[210] * B[209]; 1755f30536b4SBarry Smith A[196] = W[1] * B[195] + W[16] * B[196] + W[31] * B[197] + W[46] * B[198] + W[61] * B[199] + W[76] * B[200] + W[91] * B[201] + W[106] * B[202] + W[121] * B[203] + W[136] * B[204] + W[151] * B[205] + W[166] * B[206] + W[181] * B[207] + W[196] * B[208] + W[211] * B[209]; 1756f30536b4SBarry Smith A[197] = W[2] * B[195] + W[17] * B[196] + W[32] * B[197] + W[47] * B[198] + W[62] * B[199] + W[77] * B[200] + W[92] * B[201] + W[107] * B[202] + W[122] * B[203] + W[137] * B[204] + W[152] * B[205] + W[167] * B[206] + W[182] * B[207] + W[197] * B[208] + W[212] * B[209]; 1757f30536b4SBarry Smith A[198] = W[3] * B[195] + W[18] * B[196] + W[33] * B[197] + W[48] * B[198] + W[63] * B[199] + W[78] * B[200] + W[93] * B[201] + W[108] * B[202] + W[123] * B[203] + W[138] * B[204] + W[153] * B[205] + W[168] * B[206] + W[183] * B[207] + W[198] * B[208] + W[213] * B[209]; 1758f30536b4SBarry Smith A[199] = W[4] * B[195] + W[19] * B[196] + W[34] * B[197] + W[49] * B[198] + W[64] * B[199] + W[79] * B[200] + W[94] * B[201] + W[109] * B[202] + W[124] * B[203] + W[139] * B[204] + W[154] * B[205] + W[169] * B[206] + W[184] * B[207] + W[199] * B[208] + W[214] * B[209]; 1759f30536b4SBarry Smith A[200] = W[5] * B[195] + W[20] * B[196] + W[35] * B[197] + W[50] * B[198] + W[65] * B[199] + W[80] * B[200] + W[95] * B[201] + W[110] * B[202] + W[125] * B[203] + W[140] * B[204] + W[155] * B[205] + W[170] * B[206] + W[185] * B[207] + W[200] * B[208] + W[215] * B[209]; 1760f30536b4SBarry Smith A[201] = W[6] * B[195] + W[21] * B[196] + W[36] * B[197] + W[51] * B[198] + W[66] * B[199] + W[81] * B[200] + W[96] * B[201] + W[111] * B[202] + W[126] * B[203] + W[141] * B[204] + W[156] * B[205] + W[171] * B[206] + W[186] * B[207] + W[201] * B[208] + W[216] * B[209]; 1761f30536b4SBarry Smith A[202] = W[7] * B[195] + W[22] * B[196] + W[37] * B[197] + W[52] * B[198] + W[67] * B[199] + W[82] * B[200] + W[97] * B[201] + W[112] * B[202] + W[127] * B[203] + W[142] * B[204] + W[157] * B[205] + W[172] * B[206] + W[187] * B[207] + W[202] * B[208] + W[217] * B[209]; 1762f30536b4SBarry Smith A[203] = W[8] * B[195] + W[23] * B[196] + W[38] * B[197] + W[53] * B[198] + W[68] * B[199] + W[83] * B[200] + W[98] * B[201] + W[113] * B[202] + W[128] * B[203] + W[143] * B[204] + W[158] * B[205] + W[173] * B[206] + W[188] * B[207] + W[203] * B[208] + W[218] * B[209]; 1763f30536b4SBarry Smith A[204] = W[9] * B[195] + W[24] * B[196] + W[39] * B[197] + W[54] * B[198] + W[69] * B[199] + W[84] * B[200] + W[99] * B[201] + W[114] * B[202] + W[129] * B[203] + W[144] * B[204] + W[159] * B[205] + W[174] * B[206] + W[189] * B[207] + W[204] * B[208] + W[219] * B[209]; 1764f30536b4SBarry Smith A[205] = W[10] * B[195] + W[25] * B[196] + W[40] * B[197] + W[55] * B[198] + W[70] * B[199] + W[85] * B[200] + W[100] * B[201] + W[115] * B[202] + W[130] * B[203] + W[145] * B[204] + W[160] * B[205] + W[175] * B[206] + W[190] * B[207] + W[205] * B[208] + W[220] * B[209]; 1765f30536b4SBarry Smith A[206] = W[11] * B[195] + W[26] * B[196] + W[41] * B[197] + W[56] * B[198] + W[71] * B[199] + W[86] * B[200] + W[101] * B[201] + W[116] * B[202] + W[131] * B[203] + W[146] * B[204] + W[161] * B[205] + W[176] * B[206] + W[191] * B[207] + W[206] * B[208] + W[221] * B[209]; 1766f30536b4SBarry Smith A[207] = W[12] * B[195] + W[27] * B[196] + W[42] * B[197] + W[57] * B[198] + W[72] * B[199] + W[87] * B[200] + W[102] * B[201] + W[117] * B[202] + W[132] * B[203] + W[147] * B[204] + W[162] * B[205] + W[177] * B[206] + W[192] * B[207] + W[207] * B[208] + W[222] * B[209]; 1767f30536b4SBarry Smith A[208] = W[13] * B[195] + W[28] * B[196] + W[43] * B[197] + W[58] * B[198] + W[73] * B[199] + W[88] * B[200] + W[103] * B[201] + W[118] * B[202] + W[133] * B[203] + W[148] * B[204] + W[163] * B[205] + W[178] * B[206] + W[193] * B[207] + W[208] * B[208] + W[223] * B[209]; 1768f30536b4SBarry Smith A[209] = W[14] * B[195] + W[29] * B[196] + W[44] * B[197] + W[59] * B[198] + W[74] * B[199] + W[89] * B[200] + W[104] * B[201] + W[119] * B[202] + W[134] * B[203] + W[149] * B[204] + W[164] * B[205] + W[179] * B[206] + W[194] * B[207] + W[209] * B[208] + W[224] * B[209]; 1769f30536b4SBarry Smith A[210] = W[0] * B[210] + W[15] * B[211] + W[30] * B[212] + W[45] * B[213] + W[60] * B[214] + W[75] * B[215] + W[90] * B[216] + W[105] * B[217] + W[120] * B[218] + W[135] * B[219] + W[150] * B[220] + W[165] * B[221] + W[180] * B[222] + W[195] * B[223] + W[210] * B[224]; 1770f30536b4SBarry Smith A[211] = W[1] * B[210] + W[16] * B[211] + W[31] * B[212] + W[46] * B[213] + W[61] * B[214] + W[76] * B[215] + W[91] * B[216] + W[106] * B[217] + W[121] * B[218] + W[136] * B[219] + W[151] * B[220] + W[166] * B[221] + W[181] * B[222] + W[196] * B[223] + W[211] * B[224]; 1771f30536b4SBarry Smith A[212] = W[2] * B[210] + W[17] * B[211] + W[32] * B[212] + W[47] * B[213] + W[62] * B[214] + W[77] * B[215] + W[92] * B[216] + W[107] * B[217] + W[122] * B[218] + W[137] * B[219] + W[152] * B[220] + W[167] * B[221] + W[182] * B[222] + W[197] * B[223] + W[212] * B[224]; 1772f30536b4SBarry Smith A[213] = W[3] * B[210] + W[18] * B[211] + W[33] * B[212] + W[48] * B[213] + W[63] * B[214] + W[78] * B[215] + W[93] * B[216] + W[108] * B[217] + W[123] * B[218] + W[138] * B[219] + W[153] * B[220] + W[168] * B[221] + W[183] * B[222] + W[198] * B[223] + W[213] * B[224]; 1773f30536b4SBarry Smith A[214] = W[4] * B[210] + W[19] * B[211] + W[34] * B[212] + W[49] * B[213] + W[64] * B[214] + W[79] * B[215] + W[94] * B[216] + W[109] * B[217] + W[124] * B[218] + W[139] * B[219] + W[154] * B[220] + W[169] * B[221] + W[184] * B[222] + W[199] * B[223] + W[214] * B[224]; 1774f30536b4SBarry Smith A[215] = W[5] * B[210] + W[20] * B[211] + W[35] * B[212] + W[50] * B[213] + W[65] * B[214] + W[80] * B[215] + W[95] * B[216] + W[110] * B[217] + W[125] * B[218] + W[140] * B[219] + W[155] * B[220] + W[170] * B[221] + W[185] * B[222] + W[200] * B[223] + W[215] * B[224]; 1775f30536b4SBarry Smith A[216] = W[6] * B[210] + W[21] * B[211] + W[36] * B[212] + W[51] * B[213] + W[66] * B[214] + W[81] * B[215] + W[96] * B[216] + W[111] * B[217] + W[126] * B[218] + W[141] * B[219] + W[156] * B[220] + W[171] * B[221] + W[186] * B[222] + W[201] * B[223] + W[216] * B[224]; 1776f30536b4SBarry Smith A[217] = W[7] * B[210] + W[22] * B[211] + W[37] * B[212] + W[52] * B[213] + W[67] * B[214] + W[82] * B[215] + W[97] * B[216] + W[112] * B[217] + W[127] * B[218] + W[142] * B[219] + W[157] * B[220] + W[172] * B[221] + W[187] * B[222] + W[202] * B[223] + W[217] * B[224]; 1777f30536b4SBarry Smith A[218] = W[8] * B[210] + W[23] * B[211] + W[38] * B[212] + W[53] * B[213] + W[68] * B[214] + W[83] * B[215] + W[98] * B[216] + W[113] * B[217] + W[128] * B[218] + W[143] * B[219] + W[158] * B[220] + W[173] * B[221] + W[188] * B[222] + W[203] * B[223] + W[218] * B[224]; 1778f30536b4SBarry Smith A[219] = W[9] * B[210] + W[24] * B[211] + W[39] * B[212] + W[54] * B[213] + W[69] * B[214] + W[84] * B[215] + W[99] * B[216] + W[114] * B[217] + W[129] * B[218] + W[144] * B[219] + W[159] * B[220] + W[174] * B[221] + W[189] * B[222] + W[204] * B[223] + W[219] * B[224]; 1779f30536b4SBarry Smith A[220] = W[10] * B[210] + W[25] * B[211] + W[40] * B[212] + W[55] * B[213] + W[70] * B[214] + W[85] * B[215] + W[100] * B[216] + W[115] * B[217] + W[130] * B[218] + W[145] * B[219] + W[160] * B[220] + W[175] * B[221] + W[190] * B[222] + W[205] * B[223] + W[220] * B[224]; 1780f30536b4SBarry Smith A[221] = W[11] * B[210] + W[26] * B[211] + W[41] * B[212] + W[56] * B[213] + W[71] * B[214] + W[86] * B[215] + W[101] * B[216] + W[116] * B[217] + W[131] * B[218] + W[146] * B[219] + W[161] * B[220] + W[176] * B[221] + W[191] * B[222] + W[206] * B[223] + W[221] * B[224]; 1781f30536b4SBarry Smith A[222] = W[12] * B[210] + W[27] * B[211] + W[42] * B[212] + W[57] * B[213] + W[72] * B[214] + W[87] * B[215] + W[102] * B[216] + W[117] * B[217] + W[132] * B[218] + W[147] * B[219] + W[162] * B[220] + W[177] * B[221] + W[192] * B[222] + W[207] * B[223] + W[222] * B[224]; 1782f30536b4SBarry Smith A[223] = W[13] * B[210] + W[28] * B[211] + W[43] * B[212] + W[58] * B[213] + W[73] * B[214] + W[88] * B[215] + W[103] * B[216] + W[118] * B[217] + W[133] * B[218] + W[148] * B[219] + W[163] * B[220] + W[178] * B[221] + W[193] * B[222] + W[208] * B[223] + W[223] * B[224]; 1783f30536b4SBarry Smith A[224] = W[14] * B[210] + W[29] * B[211] + W[44] * B[212] + W[59] * B[213] + W[74] * B[214] + W[89] * B[215] + W[104] * B[216] + W[119] * B[217] + W[134] * B[218] + W[149] * B[219] + W[164] * B[220] + W[179] * B[221] + W[194] * B[222] + W[209] * B[223] + W[224] * B[224]; 17843ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 17852b0b2ea7SShri Abhyankar } 17862b0b2ea7SShri Abhyankar 17872b0b2ea7SShri Abhyankar /* 178896b95a6bSBarry Smith PetscKernel_A_gets_A_minus_B_times_C_15: A = A - B * C with size bs=15 17892b0b2ea7SShri Abhyankar 17902b0b2ea7SShri Abhyankar Input Parameters: 17912b0b2ea7SShri Abhyankar + A,B,C - square bs by bs arrays stored in column major order 17922b0b2ea7SShri Abhyankar 17932b0b2ea7SShri Abhyankar Output Parameter: 17942b0b2ea7SShri Abhyankar . A = A - B*C 17952b0b2ea7SShri Abhyankar */ 17962b0b2ea7SShri Abhyankar 1797d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscKernel_A_gets_A_minus_B_times_C_15(PetscScalar *A, const PetscScalar *B, const PetscScalar *C) 1798d71ae5a4SJacob Faibussowitsch { 1799f30536b4SBarry Smith A[0] -= B[0] * C[0] + B[15] * C[1] + B[30] * C[2] + B[45] * C[3] + B[60] * C[4] + B[75] * C[5] + B[90] * C[6] + B[105] * C[7] + B[120] * C[8] + B[135] * C[9] + B[150] * C[10] + B[165] * C[11] + B[180] * C[12] + B[195] * C[13] + B[210] * C[14]; 1800f30536b4SBarry Smith A[1] -= B[1] * C[0] + B[16] * C[1] + B[31] * C[2] + B[46] * C[3] + B[61] * C[4] + B[76] * C[5] + B[91] * C[6] + B[106] * C[7] + B[121] * C[8] + B[136] * C[9] + B[151] * C[10] + B[166] * C[11] + B[181] * C[12] + B[196] * C[13] + B[211] * C[14]; 1801f30536b4SBarry Smith A[2] -= B[2] * C[0] + B[17] * C[1] + B[32] * C[2] + B[47] * C[3] + B[62] * C[4] + B[77] * C[5] + B[92] * C[6] + B[107] * C[7] + B[122] * C[8] + B[137] * C[9] + B[152] * C[10] + B[167] * C[11] + B[182] * C[12] + B[197] * C[13] + B[212] * C[14]; 1802f30536b4SBarry Smith A[3] -= B[3] * C[0] + B[18] * C[1] + B[33] * C[2] + B[48] * C[3] + B[63] * C[4] + B[78] * C[5] + B[93] * C[6] + B[108] * C[7] + B[123] * C[8] + B[138] * C[9] + B[153] * C[10] + B[168] * C[11] + B[183] * C[12] + B[198] * C[13] + B[213] * C[14]; 1803f30536b4SBarry Smith A[4] -= B[4] * C[0] + B[19] * C[1] + B[34] * C[2] + B[49] * C[3] + B[64] * C[4] + B[79] * C[5] + B[94] * C[6] + B[109] * C[7] + B[124] * C[8] + B[139] * C[9] + B[154] * C[10] + B[169] * C[11] + B[184] * C[12] + B[199] * C[13] + B[214] * C[14]; 1804f30536b4SBarry Smith A[5] -= B[5] * C[0] + B[20] * C[1] + B[35] * C[2] + B[50] * C[3] + B[65] * C[4] + B[80] * C[5] + B[95] * C[6] + B[110] * C[7] + B[125] * C[8] + B[140] * C[9] + B[155] * C[10] + B[170] * C[11] + B[185] * C[12] + B[200] * C[13] + B[215] * C[14]; 1805f30536b4SBarry Smith A[6] -= B[6] * C[0] + B[21] * C[1] + B[36] * C[2] + B[51] * C[3] + B[66] * C[4] + B[81] * C[5] + B[96] * C[6] + B[111] * C[7] + B[126] * C[8] + B[141] * C[9] + B[156] * C[10] + B[171] * C[11] + B[186] * C[12] + B[201] * C[13] + B[216] * C[14]; 1806f30536b4SBarry Smith A[7] -= B[7] * C[0] + B[22] * C[1] + B[37] * C[2] + B[52] * C[3] + B[67] * C[4] + B[82] * C[5] + B[97] * C[6] + B[112] * C[7] + B[127] * C[8] + B[142] * C[9] + B[157] * C[10] + B[172] * C[11] + B[187] * C[12] + B[202] * C[13] + B[217] * C[14]; 1807f30536b4SBarry Smith A[8] -= B[8] * C[0] + B[23] * C[1] + B[38] * C[2] + B[53] * C[3] + B[68] * C[4] + B[83] * C[5] + B[98] * C[6] + B[113] * C[7] + B[128] * C[8] + B[143] * C[9] + B[158] * C[10] + B[173] * C[11] + B[188] * C[12] + B[203] * C[13] + B[218] * C[14]; 1808f30536b4SBarry Smith A[9] -= B[9] * C[0] + B[24] * C[1] + B[39] * C[2] + B[54] * C[3] + B[69] * C[4] + B[84] * C[5] + B[99] * C[6] + B[114] * C[7] + B[129] * C[8] + B[144] * C[9] + B[159] * C[10] + B[174] * C[11] + B[189] * C[12] + B[204] * C[13] + B[219] * C[14]; 1809f30536b4SBarry Smith A[10] -= B[10] * C[0] + B[25] * C[1] + B[40] * C[2] + B[55] * C[3] + B[70] * C[4] + B[85] * C[5] + B[100] * C[6] + B[115] * C[7] + B[130] * C[8] + B[145] * C[9] + B[160] * C[10] + B[175] * C[11] + B[190] * C[12] + B[205] * C[13] + B[220] * C[14]; 1810f30536b4SBarry Smith A[11] -= B[11] * C[0] + B[26] * C[1] + B[41] * C[2] + B[56] * C[3] + B[71] * C[4] + B[86] * C[5] + B[101] * C[6] + B[116] * C[7] + B[131] * C[8] + B[146] * C[9] + B[161] * C[10] + B[176] * C[11] + B[191] * C[12] + B[206] * C[13] + B[221] * C[14]; 1811f30536b4SBarry Smith A[12] -= B[12] * C[0] + B[27] * C[1] + B[42] * C[2] + B[57] * C[3] + B[72] * C[4] + B[87] * C[5] + B[102] * C[6] + B[117] * C[7] + B[132] * C[8] + B[147] * C[9] + B[162] * C[10] + B[177] * C[11] + B[192] * C[12] + B[207] * C[13] + B[222] * C[14]; 1812f30536b4SBarry Smith A[13] -= B[13] * C[0] + B[28] * C[1] + B[43] * C[2] + B[58] * C[3] + B[73] * C[4] + B[88] * C[5] + B[103] * C[6] + B[118] * C[7] + B[133] * C[8] + B[148] * C[9] + B[163] * C[10] + B[178] * C[11] + B[193] * C[12] + B[208] * C[13] + B[223] * C[14]; 1813f30536b4SBarry Smith A[14] -= B[14] * C[0] + B[29] * C[1] + B[44] * C[2] + B[59] * C[3] + B[74] * C[4] + B[89] * C[5] + B[104] * C[6] + B[119] * C[7] + B[134] * C[8] + B[149] * C[9] + B[164] * C[10] + B[179] * C[11] + B[194] * C[12] + B[209] * C[13] + B[224] * C[14]; 1814f30536b4SBarry Smith A[15] -= B[0] * C[15] + B[15] * C[16] + B[30] * C[17] + B[45] * C[18] + B[60] * C[19] + B[75] * C[20] + B[90] * C[21] + B[105] * C[22] + B[120] * C[23] + B[135] * C[24] + B[150] * C[25] + B[165] * C[26] + B[180] * C[27] + B[195] * C[28] + B[210] * C[29]; 1815f30536b4SBarry Smith A[16] -= B[1] * C[15] + B[16] * C[16] + B[31] * C[17] + B[46] * C[18] + B[61] * C[19] + B[76] * C[20] + B[91] * C[21] + B[106] * C[22] + B[121] * C[23] + B[136] * C[24] + B[151] * C[25] + B[166] * C[26] + B[181] * C[27] + B[196] * C[28] + B[211] * C[29]; 1816f30536b4SBarry Smith A[17] -= B[2] * C[15] + B[17] * C[16] + B[32] * C[17] + B[47] * C[18] + B[62] * C[19] + B[77] * C[20] + B[92] * C[21] + B[107] * C[22] + B[122] * C[23] + B[137] * C[24] + B[152] * C[25] + B[167] * C[26] + B[182] * C[27] + B[197] * C[28] + B[212] * C[29]; 1817f30536b4SBarry Smith A[18] -= B[3] * C[15] + B[18] * C[16] + B[33] * C[17] + B[48] * C[18] + B[63] * C[19] + B[78] * C[20] + B[93] * C[21] + B[108] * C[22] + B[123] * C[23] + B[138] * C[24] + B[153] * C[25] + B[168] * C[26] + B[183] * C[27] + B[198] * C[28] + B[213] * C[29]; 1818f30536b4SBarry Smith A[19] -= B[4] * C[15] + B[19] * C[16] + B[34] * C[17] + B[49] * C[18] + B[64] * C[19] + B[79] * C[20] + B[94] * C[21] + B[109] * C[22] + B[124] * C[23] + B[139] * C[24] + B[154] * C[25] + B[169] * C[26] + B[184] * C[27] + B[199] * C[28] + B[214] * C[29]; 1819f30536b4SBarry Smith A[20] -= B[5] * C[15] + B[20] * C[16] + B[35] * C[17] + B[50] * C[18] + B[65] * C[19] + B[80] * C[20] + B[95] * C[21] + B[110] * C[22] + B[125] * C[23] + B[140] * C[24] + B[155] * C[25] + B[170] * C[26] + B[185] * C[27] + B[200] * C[28] + B[215] * C[29]; 1820f30536b4SBarry Smith A[21] -= B[6] * C[15] + B[21] * C[16] + B[36] * C[17] + B[51] * C[18] + B[66] * C[19] + B[81] * C[20] + B[96] * C[21] + B[111] * C[22] + B[126] * C[23] + B[141] * C[24] + B[156] * C[25] + B[171] * C[26] + B[186] * C[27] + B[201] * C[28] + B[216] * C[29]; 1821f30536b4SBarry Smith A[22] -= B[7] * C[15] + B[22] * C[16] + B[37] * C[17] + B[52] * C[18] + B[67] * C[19] + B[82] * C[20] + B[97] * C[21] + B[112] * C[22] + B[127] * C[23] + B[142] * C[24] + B[157] * C[25] + B[172] * C[26] + B[187] * C[27] + B[202] * C[28] + B[217] * C[29]; 1822f30536b4SBarry Smith A[23] -= B[8] * C[15] + B[23] * C[16] + B[38] * C[17] + B[53] * C[18] + B[68] * C[19] + B[83] * C[20] + B[98] * C[21] + B[113] * C[22] + B[128] * C[23] + B[143] * C[24] + B[158] * C[25] + B[173] * C[26] + B[188] * C[27] + B[203] * C[28] + B[218] * C[29]; 1823f30536b4SBarry Smith A[24] -= B[9] * C[15] + B[24] * C[16] + B[39] * C[17] + B[54] * C[18] + B[69] * C[19] + B[84] * C[20] + B[99] * C[21] + B[114] * C[22] + B[129] * C[23] + B[144] * C[24] + B[159] * C[25] + B[174] * C[26] + B[189] * C[27] + B[204] * C[28] + B[219] * C[29]; 1824f30536b4SBarry Smith A[25] -= B[10] * C[15] + B[25] * C[16] + B[40] * C[17] + B[55] * C[18] + B[70] * C[19] + B[85] * C[20] + B[100] * C[21] + B[115] * C[22] + B[130] * C[23] + B[145] * C[24] + B[160] * C[25] + B[175] * C[26] + B[190] * C[27] + B[205] * C[28] + B[220] * C[29]; 1825f30536b4SBarry Smith A[26] -= B[11] * C[15] + B[26] * C[16] + B[41] * C[17] + B[56] * C[18] + B[71] * C[19] + B[86] * C[20] + B[101] * C[21] + B[116] * C[22] + B[131] * C[23] + B[146] * C[24] + B[161] * C[25] + B[176] * C[26] + B[191] * C[27] + B[206] * C[28] + B[221] * C[29]; 1826f30536b4SBarry Smith A[27] -= B[12] * C[15] + B[27] * C[16] + B[42] * C[17] + B[57] * C[18] + B[72] * C[19] + B[87] * C[20] + B[102] * C[21] + B[117] * C[22] + B[132] * C[23] + B[147] * C[24] + B[162] * C[25] + B[177] * C[26] + B[192] * C[27] + B[207] * C[28] + B[222] * C[29]; 1827f30536b4SBarry Smith A[28] -= B[13] * C[15] + B[28] * C[16] + B[43] * C[17] + B[58] * C[18] + B[73] * C[19] + B[88] * C[20] + B[103] * C[21] + B[118] * C[22] + B[133] * C[23] + B[148] * C[24] + B[163] * C[25] + B[178] * C[26] + B[193] * C[27] + B[208] * C[28] + B[223] * C[29]; 1828f30536b4SBarry Smith A[29] -= B[14] * C[15] + B[29] * C[16] + B[44] * C[17] + B[59] * C[18] + B[74] * C[19] + B[89] * C[20] + B[104] * C[21] + B[119] * C[22] + B[134] * C[23] + B[149] * C[24] + B[164] * C[25] + B[179] * C[26] + B[194] * C[27] + B[209] * C[28] + B[224] * C[29]; 1829f30536b4SBarry Smith A[30] -= B[0] * C[30] + B[15] * C[31] + B[30] * C[32] + B[45] * C[33] + B[60] * C[34] + B[75] * C[35] + B[90] * C[36] + B[105] * C[37] + B[120] * C[38] + B[135] * C[39] + B[150] * C[40] + B[165] * C[41] + B[180] * C[42] + B[195] * C[43] + B[210] * C[44]; 1830f30536b4SBarry Smith A[31] -= B[1] * C[30] + B[16] * C[31] + B[31] * C[32] + B[46] * C[33] + B[61] * C[34] + B[76] * C[35] + B[91] * C[36] + B[106] * C[37] + B[121] * C[38] + B[136] * C[39] + B[151] * C[40] + B[166] * C[41] + B[181] * C[42] + B[196] * C[43] + B[211] * C[44]; 1831f30536b4SBarry Smith A[32] -= B[2] * C[30] + B[17] * C[31] + B[32] * C[32] + B[47] * C[33] + B[62] * C[34] + B[77] * C[35] + B[92] * C[36] + B[107] * C[37] + B[122] * C[38] + B[137] * C[39] + B[152] * C[40] + B[167] * C[41] + B[182] * C[42] + B[197] * C[43] + B[212] * C[44]; 1832f30536b4SBarry Smith A[33] -= B[3] * C[30] + B[18] * C[31] + B[33] * C[32] + B[48] * C[33] + B[63] * C[34] + B[78] * C[35] + B[93] * C[36] + B[108] * C[37] + B[123] * C[38] + B[138] * C[39] + B[153] * C[40] + B[168] * C[41] + B[183] * C[42] + B[198] * C[43] + B[213] * C[44]; 1833f30536b4SBarry Smith A[34] -= B[4] * C[30] + B[19] * C[31] + B[34] * C[32] + B[49] * C[33] + B[64] * C[34] + B[79] * C[35] + B[94] * C[36] + B[109] * C[37] + B[124] * C[38] + B[139] * C[39] + B[154] * C[40] + B[169] * C[41] + B[184] * C[42] + B[199] * C[43] + B[214] * C[44]; 1834f30536b4SBarry Smith A[35] -= B[5] * C[30] + B[20] * C[31] + B[35] * C[32] + B[50] * C[33] + B[65] * C[34] + B[80] * C[35] + B[95] * C[36] + B[110] * C[37] + B[125] * C[38] + B[140] * C[39] + B[155] * C[40] + B[170] * C[41] + B[185] * C[42] + B[200] * C[43] + B[215] * C[44]; 1835f30536b4SBarry Smith A[36] -= B[6] * C[30] + B[21] * C[31] + B[36] * C[32] + B[51] * C[33] + B[66] * C[34] + B[81] * C[35] + B[96] * C[36] + B[111] * C[37] + B[126] * C[38] + B[141] * C[39] + B[156] * C[40] + B[171] * C[41] + B[186] * C[42] + B[201] * C[43] + B[216] * C[44]; 1836f30536b4SBarry Smith A[37] -= B[7] * C[30] + B[22] * C[31] + B[37] * C[32] + B[52] * C[33] + B[67] * C[34] + B[82] * C[35] + B[97] * C[36] + B[112] * C[37] + B[127] * C[38] + B[142] * C[39] + B[157] * C[40] + B[172] * C[41] + B[187] * C[42] + B[202] * C[43] + B[217] * C[44]; 1837f30536b4SBarry Smith A[38] -= B[8] * C[30] + B[23] * C[31] + B[38] * C[32] + B[53] * C[33] + B[68] * C[34] + B[83] * C[35] + B[98] * C[36] + B[113] * C[37] + B[128] * C[38] + B[143] * C[39] + B[158] * C[40] + B[173] * C[41] + B[188] * C[42] + B[203] * C[43] + B[218] * C[44]; 1838f30536b4SBarry Smith A[39] -= B[9] * C[30] + B[24] * C[31] + B[39] * C[32] + B[54] * C[33] + B[69] * C[34] + B[84] * C[35] + B[99] * C[36] + B[114] * C[37] + B[129] * C[38] + B[144] * C[39] + B[159] * C[40] + B[174] * C[41] + B[189] * C[42] + B[204] * C[43] + B[219] * C[44]; 1839f30536b4SBarry Smith A[40] -= B[10] * C[30] + B[25] * C[31] + B[40] * C[32] + B[55] * C[33] + B[70] * C[34] + B[85] * C[35] + B[100] * C[36] + B[115] * C[37] + B[130] * C[38] + B[145] * C[39] + B[160] * C[40] + B[175] * C[41] + B[190] * C[42] + B[205] * C[43] + B[220] * C[44]; 1840f30536b4SBarry Smith A[41] -= B[11] * C[30] + B[26] * C[31] + B[41] * C[32] + B[56] * C[33] + B[71] * C[34] + B[86] * C[35] + B[101] * C[36] + B[116] * C[37] + B[131] * C[38] + B[146] * C[39] + B[161] * C[40] + B[176] * C[41] + B[191] * C[42] + B[206] * C[43] + B[221] * C[44]; 1841f30536b4SBarry Smith A[42] -= B[12] * C[30] + B[27] * C[31] + B[42] * C[32] + B[57] * C[33] + B[72] * C[34] + B[87] * C[35] + B[102] * C[36] + B[117] * C[37] + B[132] * C[38] + B[147] * C[39] + B[162] * C[40] + B[177] * C[41] + B[192] * C[42] + B[207] * C[43] + B[222] * C[44]; 1842f30536b4SBarry Smith A[43] -= B[13] * C[30] + B[28] * C[31] + B[43] * C[32] + B[58] * C[33] + B[73] * C[34] + B[88] * C[35] + B[103] * C[36] + B[118] * C[37] + B[133] * C[38] + B[148] * C[39] + B[163] * C[40] + B[178] * C[41] + B[193] * C[42] + B[208] * C[43] + B[223] * C[44]; 1843f30536b4SBarry Smith A[44] -= B[14] * C[30] + B[29] * C[31] + B[44] * C[32] + B[59] * C[33] + B[74] * C[34] + B[89] * C[35] + B[104] * C[36] + B[119] * C[37] + B[134] * C[38] + B[149] * C[39] + B[164] * C[40] + B[179] * C[41] + B[194] * C[42] + B[209] * C[43] + B[224] * C[44]; 1844f30536b4SBarry Smith A[45] -= B[0] * C[45] + B[15] * C[46] + B[30] * C[47] + B[45] * C[48] + B[60] * C[49] + B[75] * C[50] + B[90] * C[51] + B[105] * C[52] + B[120] * C[53] + B[135] * C[54] + B[150] * C[55] + B[165] * C[56] + B[180] * C[57] + B[195] * C[58] + B[210] * C[59]; 1845f30536b4SBarry Smith A[46] -= B[1] * C[45] + B[16] * C[46] + B[31] * C[47] + B[46] * C[48] + B[61] * C[49] + B[76] * C[50] + B[91] * C[51] + B[106] * C[52] + B[121] * C[53] + B[136] * C[54] + B[151] * C[55] + B[166] * C[56] + B[181] * C[57] + B[196] * C[58] + B[211] * C[59]; 1846f30536b4SBarry Smith A[47] -= B[2] * C[45] + B[17] * C[46] + B[32] * C[47] + B[47] * C[48] + B[62] * C[49] + B[77] * C[50] + B[92] * C[51] + B[107] * C[52] + B[122] * C[53] + B[137] * C[54] + B[152] * C[55] + B[167] * C[56] + B[182] * C[57] + B[197] * C[58] + B[212] * C[59]; 1847f30536b4SBarry Smith A[48] -= B[3] * C[45] + B[18] * C[46] + B[33] * C[47] + B[48] * C[48] + B[63] * C[49] + B[78] * C[50] + B[93] * C[51] + B[108] * C[52] + B[123] * C[53] + B[138] * C[54] + B[153] * C[55] + B[168] * C[56] + B[183] * C[57] + B[198] * C[58] + B[213] * C[59]; 1848f30536b4SBarry Smith A[49] -= B[4] * C[45] + B[19] * C[46] + B[34] * C[47] + B[49] * C[48] + B[64] * C[49] + B[79] * C[50] + B[94] * C[51] + B[109] * C[52] + B[124] * C[53] + B[139] * C[54] + B[154] * C[55] + B[169] * C[56] + B[184] * C[57] + B[199] * C[58] + B[214] * C[59]; 1849f30536b4SBarry Smith A[50] -= B[5] * C[45] + B[20] * C[46] + B[35] * C[47] + B[50] * C[48] + B[65] * C[49] + B[80] * C[50] + B[95] * C[51] + B[110] * C[52] + B[125] * C[53] + B[140] * C[54] + B[155] * C[55] + B[170] * C[56] + B[185] * C[57] + B[200] * C[58] + B[215] * C[59]; 1850f30536b4SBarry Smith A[51] -= B[6] * C[45] + B[21] * C[46] + B[36] * C[47] + B[51] * C[48] + B[66] * C[49] + B[81] * C[50] + B[96] * C[51] + B[111] * C[52] + B[126] * C[53] + B[141] * C[54] + B[156] * C[55] + B[171] * C[56] + B[186] * C[57] + B[201] * C[58] + B[216] * C[59]; 1851f30536b4SBarry Smith A[52] -= B[7] * C[45] + B[22] * C[46] + B[37] * C[47] + B[52] * C[48] + B[67] * C[49] + B[82] * C[50] + B[97] * C[51] + B[112] * C[52] + B[127] * C[53] + B[142] * C[54] + B[157] * C[55] + B[172] * C[56] + B[187] * C[57] + B[202] * C[58] + B[217] * C[59]; 1852f30536b4SBarry Smith A[53] -= B[8] * C[45] + B[23] * C[46] + B[38] * C[47] + B[53] * C[48] + B[68] * C[49] + B[83] * C[50] + B[98] * C[51] + B[113] * C[52] + B[128] * C[53] + B[143] * C[54] + B[158] * C[55] + B[173] * C[56] + B[188] * C[57] + B[203] * C[58] + B[218] * C[59]; 1853f30536b4SBarry Smith A[54] -= B[9] * C[45] + B[24] * C[46] + B[39] * C[47] + B[54] * C[48] + B[69] * C[49] + B[84] * C[50] + B[99] * C[51] + B[114] * C[52] + B[129] * C[53] + B[144] * C[54] + B[159] * C[55] + B[174] * C[56] + B[189] * C[57] + B[204] * C[58] + B[219] * C[59]; 1854f30536b4SBarry Smith A[55] -= B[10] * C[45] + B[25] * C[46] + B[40] * C[47] + B[55] * C[48] + B[70] * C[49] + B[85] * C[50] + B[100] * C[51] + B[115] * C[52] + B[130] * C[53] + B[145] * C[54] + B[160] * C[55] + B[175] * C[56] + B[190] * C[57] + B[205] * C[58] + B[220] * C[59]; 1855f30536b4SBarry Smith A[56] -= B[11] * C[45] + B[26] * C[46] + B[41] * C[47] + B[56] * C[48] + B[71] * C[49] + B[86] * C[50] + B[101] * C[51] + B[116] * C[52] + B[131] * C[53] + B[146] * C[54] + B[161] * C[55] + B[176] * C[56] + B[191] * C[57] + B[206] * C[58] + B[221] * C[59]; 1856f30536b4SBarry Smith A[57] -= B[12] * C[45] + B[27] * C[46] + B[42] * C[47] + B[57] * C[48] + B[72] * C[49] + B[87] * C[50] + B[102] * C[51] + B[117] * C[52] + B[132] * C[53] + B[147] * C[54] + B[162] * C[55] + B[177] * C[56] + B[192] * C[57] + B[207] * C[58] + B[222] * C[59]; 1857f30536b4SBarry Smith A[58] -= B[13] * C[45] + B[28] * C[46] + B[43] * C[47] + B[58] * C[48] + B[73] * C[49] + B[88] * C[50] + B[103] * C[51] + B[118] * C[52] + B[133] * C[53] + B[148] * C[54] + B[163] * C[55] + B[178] * C[56] + B[193] * C[57] + B[208] * C[58] + B[223] * C[59]; 1858f30536b4SBarry Smith A[59] -= B[14] * C[45] + B[29] * C[46] + B[44] * C[47] + B[59] * C[48] + B[74] * C[49] + B[89] * C[50] + B[104] * C[51] + B[119] * C[52] + B[134] * C[53] + B[149] * C[54] + B[164] * C[55] + B[179] * C[56] + B[194] * C[57] + B[209] * C[58] + B[224] * C[59]; 1859f30536b4SBarry Smith A[60] -= B[0] * C[60] + B[15] * C[61] + B[30] * C[62] + B[45] * C[63] + B[60] * C[64] + B[75] * C[65] + B[90] * C[66] + B[105] * C[67] + B[120] * C[68] + B[135] * C[69] + B[150] * C[70] + B[165] * C[71] + B[180] * C[72] + B[195] * C[73] + B[210] * C[74]; 1860f30536b4SBarry Smith A[61] -= B[1] * C[60] + B[16] * C[61] + B[31] * C[62] + B[46] * C[63] + B[61] * C[64] + B[76] * C[65] + B[91] * C[66] + B[106] * C[67] + B[121] * C[68] + B[136] * C[69] + B[151] * C[70] + B[166] * C[71] + B[181] * C[72] + B[196] * C[73] + B[211] * C[74]; 1861f30536b4SBarry Smith A[62] -= B[2] * C[60] + B[17] * C[61] + B[32] * C[62] + B[47] * C[63] + B[62] * C[64] + B[77] * C[65] + B[92] * C[66] + B[107] * C[67] + B[122] * C[68] + B[137] * C[69] + B[152] * C[70] + B[167] * C[71] + B[182] * C[72] + B[197] * C[73] + B[212] * C[74]; 1862f30536b4SBarry Smith A[63] -= B[3] * C[60] + B[18] * C[61] + B[33] * C[62] + B[48] * C[63] + B[63] * C[64] + B[78] * C[65] + B[93] * C[66] + B[108] * C[67] + B[123] * C[68] + B[138] * C[69] + B[153] * C[70] + B[168] * C[71] + B[183] * C[72] + B[198] * C[73] + B[213] * C[74]; 1863f30536b4SBarry Smith A[64] -= B[4] * C[60] + B[19] * C[61] + B[34] * C[62] + B[49] * C[63] + B[64] * C[64] + B[79] * C[65] + B[94] * C[66] + B[109] * C[67] + B[124] * C[68] + B[139] * C[69] + B[154] * C[70] + B[169] * C[71] + B[184] * C[72] + B[199] * C[73] + B[214] * C[74]; 1864f30536b4SBarry Smith A[65] -= B[5] * C[60] + B[20] * C[61] + B[35] * C[62] + B[50] * C[63] + B[65] * C[64] + B[80] * C[65] + B[95] * C[66] + B[110] * C[67] + B[125] * C[68] + B[140] * C[69] + B[155] * C[70] + B[170] * C[71] + B[185] * C[72] + B[200] * C[73] + B[215] * C[74]; 1865f30536b4SBarry Smith A[66] -= B[6] * C[60] + B[21] * C[61] + B[36] * C[62] + B[51] * C[63] + B[66] * C[64] + B[81] * C[65] + B[96] * C[66] + B[111] * C[67] + B[126] * C[68] + B[141] * C[69] + B[156] * C[70] + B[171] * C[71] + B[186] * C[72] + B[201] * C[73] + B[216] * C[74]; 1866f30536b4SBarry Smith A[67] -= B[7] * C[60] + B[22] * C[61] + B[37] * C[62] + B[52] * C[63] + B[67] * C[64] + B[82] * C[65] + B[97] * C[66] + B[112] * C[67] + B[127] * C[68] + B[142] * C[69] + B[157] * C[70] + B[172] * C[71] + B[187] * C[72] + B[202] * C[73] + B[217] * C[74]; 1867f30536b4SBarry Smith A[68] -= B[8] * C[60] + B[23] * C[61] + B[38] * C[62] + B[53] * C[63] + B[68] * C[64] + B[83] * C[65] + B[98] * C[66] + B[113] * C[67] + B[128] * C[68] + B[143] * C[69] + B[158] * C[70] + B[173] * C[71] + B[188] * C[72] + B[203] * C[73] + B[218] * C[74]; 1868f30536b4SBarry Smith A[69] -= B[9] * C[60] + B[24] * C[61] + B[39] * C[62] + B[54] * C[63] + B[69] * C[64] + B[84] * C[65] + B[99] * C[66] + B[114] * C[67] + B[129] * C[68] + B[144] * C[69] + B[159] * C[70] + B[174] * C[71] + B[189] * C[72] + B[204] * C[73] + B[219] * C[74]; 1869f30536b4SBarry Smith A[70] -= B[10] * C[60] + B[25] * C[61] + B[40] * C[62] + B[55] * C[63] + B[70] * C[64] + B[85] * C[65] + B[100] * C[66] + B[115] * C[67] + B[130] * C[68] + B[145] * C[69] + B[160] * C[70] + B[175] * C[71] + B[190] * C[72] + B[205] * C[73] + B[220] * C[74]; 1870f30536b4SBarry Smith A[71] -= B[11] * C[60] + B[26] * C[61] + B[41] * C[62] + B[56] * C[63] + B[71] * C[64] + B[86] * C[65] + B[101] * C[66] + B[116] * C[67] + B[131] * C[68] + B[146] * C[69] + B[161] * C[70] + B[176] * C[71] + B[191] * C[72] + B[206] * C[73] + B[221] * C[74]; 1871f30536b4SBarry Smith A[72] -= B[12] * C[60] + B[27] * C[61] + B[42] * C[62] + B[57] * C[63] + B[72] * C[64] + B[87] * C[65] + B[102] * C[66] + B[117] * C[67] + B[132] * C[68] + B[147] * C[69] + B[162] * C[70] + B[177] * C[71] + B[192] * C[72] + B[207] * C[73] + B[222] * C[74]; 1872f30536b4SBarry Smith A[73] -= B[13] * C[60] + B[28] * C[61] + B[43] * C[62] + B[58] * C[63] + B[73] * C[64] + B[88] * C[65] + B[103] * C[66] + B[118] * C[67] + B[133] * C[68] + B[148] * C[69] + B[163] * C[70] + B[178] * C[71] + B[193] * C[72] + B[208] * C[73] + B[223] * C[74]; 1873f30536b4SBarry Smith A[74] -= B[14] * C[60] + B[29] * C[61] + B[44] * C[62] + B[59] * C[63] + B[74] * C[64] + B[89] * C[65] + B[104] * C[66] + B[119] * C[67] + B[134] * C[68] + B[149] * C[69] + B[164] * C[70] + B[179] * C[71] + B[194] * C[72] + B[209] * C[73] + B[224] * C[74]; 1874f30536b4SBarry Smith A[75] -= B[0] * C[75] + B[15] * C[76] + B[30] * C[77] + B[45] * C[78] + B[60] * C[79] + B[75] * C[80] + B[90] * C[81] + B[105] * C[82] + B[120] * C[83] + B[135] * C[84] + B[150] * C[85] + B[165] * C[86] + B[180] * C[87] + B[195] * C[88] + B[210] * C[89]; 1875f30536b4SBarry Smith A[76] -= B[1] * C[75] + B[16] * C[76] + B[31] * C[77] + B[46] * C[78] + B[61] * C[79] + B[76] * C[80] + B[91] * C[81] + B[106] * C[82] + B[121] * C[83] + B[136] * C[84] + B[151] * C[85] + B[166] * C[86] + B[181] * C[87] + B[196] * C[88] + B[211] * C[89]; 1876f30536b4SBarry Smith A[77] -= B[2] * C[75] + B[17] * C[76] + B[32] * C[77] + B[47] * C[78] + B[62] * C[79] + B[77] * C[80] + B[92] * C[81] + B[107] * C[82] + B[122] * C[83] + B[137] * C[84] + B[152] * C[85] + B[167] * C[86] + B[182] * C[87] + B[197] * C[88] + B[212] * C[89]; 1877f30536b4SBarry Smith A[78] -= B[3] * C[75] + B[18] * C[76] + B[33] * C[77] + B[48] * C[78] + B[63] * C[79] + B[78] * C[80] + B[93] * C[81] + B[108] * C[82] + B[123] * C[83] + B[138] * C[84] + B[153] * C[85] + B[168] * C[86] + B[183] * C[87] + B[198] * C[88] + B[213] * C[89]; 1878f30536b4SBarry Smith A[79] -= B[4] * C[75] + B[19] * C[76] + B[34] * C[77] + B[49] * C[78] + B[64] * C[79] + B[79] * C[80] + B[94] * C[81] + B[109] * C[82] + B[124] * C[83] + B[139] * C[84] + B[154] * C[85] + B[169] * C[86] + B[184] * C[87] + B[199] * C[88] + B[214] * C[89]; 1879f30536b4SBarry Smith A[80] -= B[5] * C[75] + B[20] * C[76] + B[35] * C[77] + B[50] * C[78] + B[65] * C[79] + B[80] * C[80] + B[95] * C[81] + B[110] * C[82] + B[125] * C[83] + B[140] * C[84] + B[155] * C[85] + B[170] * C[86] + B[185] * C[87] + B[200] * C[88] + B[215] * C[89]; 1880f30536b4SBarry Smith A[81] -= B[6] * C[75] + B[21] * C[76] + B[36] * C[77] + B[51] * C[78] + B[66] * C[79] + B[81] * C[80] + B[96] * C[81] + B[111] * C[82] + B[126] * C[83] + B[141] * C[84] + B[156] * C[85] + B[171] * C[86] + B[186] * C[87] + B[201] * C[88] + B[216] * C[89]; 1881f30536b4SBarry Smith A[82] -= B[7] * C[75] + B[22] * C[76] + B[37] * C[77] + B[52] * C[78] + B[67] * C[79] + B[82] * C[80] + B[97] * C[81] + B[112] * C[82] + B[127] * C[83] + B[142] * C[84] + B[157] * C[85] + B[172] * C[86] + B[187] * C[87] + B[202] * C[88] + B[217] * C[89]; 1882f30536b4SBarry Smith A[83] -= B[8] * C[75] + B[23] * C[76] + B[38] * C[77] + B[53] * C[78] + B[68] * C[79] + B[83] * C[80] + B[98] * C[81] + B[113] * C[82] + B[128] * C[83] + B[143] * C[84] + B[158] * C[85] + B[173] * C[86] + B[188] * C[87] + B[203] * C[88] + B[218] * C[89]; 1883f30536b4SBarry Smith A[84] -= B[9] * C[75] + B[24] * C[76] + B[39] * C[77] + B[54] * C[78] + B[69] * C[79] + B[84] * C[80] + B[99] * C[81] + B[114] * C[82] + B[129] * C[83] + B[144] * C[84] + B[159] * C[85] + B[174] * C[86] + B[189] * C[87] + B[204] * C[88] + B[219] * C[89]; 1884f30536b4SBarry Smith A[85] -= B[10] * C[75] + B[25] * C[76] + B[40] * C[77] + B[55] * C[78] + B[70] * C[79] + B[85] * C[80] + B[100] * C[81] + B[115] * C[82] + B[130] * C[83] + B[145] * C[84] + B[160] * C[85] + B[175] * C[86] + B[190] * C[87] + B[205] * C[88] + B[220] * C[89]; 1885f30536b4SBarry Smith A[86] -= B[11] * C[75] + B[26] * C[76] + B[41] * C[77] + B[56] * C[78] + B[71] * C[79] + B[86] * C[80] + B[101] * C[81] + B[116] * C[82] + B[131] * C[83] + B[146] * C[84] + B[161] * C[85] + B[176] * C[86] + B[191] * C[87] + B[206] * C[88] + B[221] * C[89]; 1886f30536b4SBarry Smith A[87] -= B[12] * C[75] + B[27] * C[76] + B[42] * C[77] + B[57] * C[78] + B[72] * C[79] + B[87] * C[80] + B[102] * C[81] + B[117] * C[82] + B[132] * C[83] + B[147] * C[84] + B[162] * C[85] + B[177] * C[86] + B[192] * C[87] + B[207] * C[88] + B[222] * C[89]; 1887f30536b4SBarry Smith A[88] -= B[13] * C[75] + B[28] * C[76] + B[43] * C[77] + B[58] * C[78] + B[73] * C[79] + B[88] * C[80] + B[103] * C[81] + B[118] * C[82] + B[133] * C[83] + B[148] * C[84] + B[163] * C[85] + B[178] * C[86] + B[193] * C[87] + B[208] * C[88] + B[223] * C[89]; 1888f30536b4SBarry Smith A[89] -= B[14] * C[75] + B[29] * C[76] + B[44] * C[77] + B[59] * C[78] + B[74] * C[79] + B[89] * C[80] + B[104] * C[81] + B[119] * C[82] + B[134] * C[83] + B[149] * C[84] + B[164] * C[85] + B[179] * C[86] + B[194] * C[87] + B[209] * C[88] + B[224] * C[89]; 1889f30536b4SBarry Smith A[90] -= B[0] * C[90] + B[15] * C[91] + B[30] * C[92] + B[45] * C[93] + B[60] * C[94] + B[75] * C[95] + B[90] * C[96] + B[105] * C[97] + B[120] * C[98] + B[135] * C[99] + B[150] * C[100] + B[165] * C[101] + B[180] * C[102] + B[195] * C[103] + B[210] * C[104]; 1890f30536b4SBarry Smith A[91] -= B[1] * C[90] + B[16] * C[91] + B[31] * C[92] + B[46] * C[93] + B[61] * C[94] + B[76] * C[95] + B[91] * C[96] + B[106] * C[97] + B[121] * C[98] + B[136] * C[99] + B[151] * C[100] + B[166] * C[101] + B[181] * C[102] + B[196] * C[103] + B[211] * C[104]; 1891f30536b4SBarry Smith A[92] -= B[2] * C[90] + B[17] * C[91] + B[32] * C[92] + B[47] * C[93] + B[62] * C[94] + B[77] * C[95] + B[92] * C[96] + B[107] * C[97] + B[122] * C[98] + B[137] * C[99] + B[152] * C[100] + B[167] * C[101] + B[182] * C[102] + B[197] * C[103] + B[212] * C[104]; 1892f30536b4SBarry Smith A[93] -= B[3] * C[90] + B[18] * C[91] + B[33] * C[92] + B[48] * C[93] + B[63] * C[94] + B[78] * C[95] + B[93] * C[96] + B[108] * C[97] + B[123] * C[98] + B[138] * C[99] + B[153] * C[100] + B[168] * C[101] + B[183] * C[102] + B[198] * C[103] + B[213] * C[104]; 1893f30536b4SBarry Smith A[94] -= B[4] * C[90] + B[19] * C[91] + B[34] * C[92] + B[49] * C[93] + B[64] * C[94] + B[79] * C[95] + B[94] * C[96] + B[109] * C[97] + B[124] * C[98] + B[139] * C[99] + B[154] * C[100] + B[169] * C[101] + B[184] * C[102] + B[199] * C[103] + B[214] * C[104]; 1894f30536b4SBarry Smith A[95] -= B[5] * C[90] + B[20] * C[91] + B[35] * C[92] + B[50] * C[93] + B[65] * C[94] + B[80] * C[95] + B[95] * C[96] + B[110] * C[97] + B[125] * C[98] + B[140] * C[99] + B[155] * C[100] + B[170] * C[101] + B[185] * C[102] + B[200] * C[103] + B[215] * C[104]; 1895f30536b4SBarry Smith A[96] -= B[6] * C[90] + B[21] * C[91] + B[36] * C[92] + B[51] * C[93] + B[66] * C[94] + B[81] * C[95] + B[96] * C[96] + B[111] * C[97] + B[126] * C[98] + B[141] * C[99] + B[156] * C[100] + B[171] * C[101] + B[186] * C[102] + B[201] * C[103] + B[216] * C[104]; 1896f30536b4SBarry Smith A[97] -= B[7] * C[90] + B[22] * C[91] + B[37] * C[92] + B[52] * C[93] + B[67] * C[94] + B[82] * C[95] + B[97] * C[96] + B[112] * C[97] + B[127] * C[98] + B[142] * C[99] + B[157] * C[100] + B[172] * C[101] + B[187] * C[102] + B[202] * C[103] + B[217] * C[104]; 1897f30536b4SBarry Smith A[98] -= B[8] * C[90] + B[23] * C[91] + B[38] * C[92] + B[53] * C[93] + B[68] * C[94] + B[83] * C[95] + B[98] * C[96] + B[113] * C[97] + B[128] * C[98] + B[143] * C[99] + B[158] * C[100] + B[173] * C[101] + B[188] * C[102] + B[203] * C[103] + B[218] * C[104]; 1898f30536b4SBarry Smith A[99] -= B[9] * C[90] + B[24] * C[91] + B[39] * C[92] + B[54] * C[93] + B[69] * C[94] + B[84] * C[95] + B[99] * C[96] + B[114] * C[97] + B[129] * C[98] + B[144] * C[99] + B[159] * C[100] + B[174] * C[101] + B[189] * C[102] + B[204] * C[103] + B[219] * C[104]; 1899f30536b4SBarry Smith A[100] -= B[10] * C[90] + B[25] * C[91] + B[40] * C[92] + B[55] * C[93] + B[70] * C[94] + B[85] * C[95] + B[100] * C[96] + B[115] * C[97] + B[130] * C[98] + B[145] * C[99] + B[160] * C[100] + B[175] * C[101] + B[190] * C[102] + B[205] * C[103] + B[220] * C[104]; 1900f30536b4SBarry Smith A[101] -= B[11] * C[90] + B[26] * C[91] + B[41] * C[92] + B[56] * C[93] + B[71] * C[94] + B[86] * C[95] + B[101] * C[96] + B[116] * C[97] + B[131] * C[98] + B[146] * C[99] + B[161] * C[100] + B[176] * C[101] + B[191] * C[102] + B[206] * C[103] + B[221] * C[104]; 1901f30536b4SBarry Smith A[102] -= B[12] * C[90] + B[27] * C[91] + B[42] * C[92] + B[57] * C[93] + B[72] * C[94] + B[87] * C[95] + B[102] * C[96] + B[117] * C[97] + B[132] * C[98] + B[147] * C[99] + B[162] * C[100] + B[177] * C[101] + B[192] * C[102] + B[207] * C[103] + B[222] * C[104]; 1902f30536b4SBarry Smith A[103] -= B[13] * C[90] + B[28] * C[91] + B[43] * C[92] + B[58] * C[93] + B[73] * C[94] + B[88] * C[95] + B[103] * C[96] + B[118] * C[97] + B[133] * C[98] + B[148] * C[99] + B[163] * C[100] + B[178] * C[101] + B[193] * C[102] + B[208] * C[103] + B[223] * C[104]; 1903f30536b4SBarry Smith A[104] -= B[14] * C[90] + B[29] * C[91] + B[44] * C[92] + B[59] * C[93] + B[74] * C[94] + B[89] * C[95] + B[104] * C[96] + B[119] * C[97] + B[134] * C[98] + B[149] * C[99] + B[164] * C[100] + B[179] * C[101] + B[194] * C[102] + B[209] * C[103] + B[224] * C[104]; 1904f30536b4SBarry Smith A[105] -= B[0] * C[105] + B[15] * C[106] + B[30] * C[107] + B[45] * C[108] + B[60] * C[109] + B[75] * C[110] + B[90] * C[111] + B[105] * C[112] + B[120] * C[113] + B[135] * C[114] + B[150] * C[115] + B[165] * C[116] + B[180] * C[117] + B[195] * C[118] + B[210] * C[119]; 1905f30536b4SBarry Smith A[106] -= B[1] * C[105] + B[16] * C[106] + B[31] * C[107] + B[46] * C[108] + B[61] * C[109] + B[76] * C[110] + B[91] * C[111] + B[106] * C[112] + B[121] * C[113] + B[136] * C[114] + B[151] * C[115] + B[166] * C[116] + B[181] * C[117] + B[196] * C[118] + B[211] * C[119]; 1906f30536b4SBarry Smith A[107] -= B[2] * C[105] + B[17] * C[106] + B[32] * C[107] + B[47] * C[108] + B[62] * C[109] + B[77] * C[110] + B[92] * C[111] + B[107] * C[112] + B[122] * C[113] + B[137] * C[114] + B[152] * C[115] + B[167] * C[116] + B[182] * C[117] + B[197] * C[118] + B[212] * C[119]; 1907f30536b4SBarry Smith A[108] -= B[3] * C[105] + B[18] * C[106] + B[33] * C[107] + B[48] * C[108] + B[63] * C[109] + B[78] * C[110] + B[93] * C[111] + B[108] * C[112] + B[123] * C[113] + B[138] * C[114] + B[153] * C[115] + B[168] * C[116] + B[183] * C[117] + B[198] * C[118] + B[213] * C[119]; 1908f30536b4SBarry Smith A[109] -= B[4] * C[105] + B[19] * C[106] + B[34] * C[107] + B[49] * C[108] + B[64] * C[109] + B[79] * C[110] + B[94] * C[111] + B[109] * C[112] + B[124] * C[113] + B[139] * C[114] + B[154] * C[115] + B[169] * C[116] + B[184] * C[117] + B[199] * C[118] + B[214] * C[119]; 1909f30536b4SBarry Smith A[110] -= B[5] * C[105] + B[20] * C[106] + B[35] * C[107] + B[50] * C[108] + B[65] * C[109] + B[80] * C[110] + B[95] * C[111] + B[110] * C[112] + B[125] * C[113] + B[140] * C[114] + B[155] * C[115] + B[170] * C[116] + B[185] * C[117] + B[200] * C[118] + B[215] * C[119]; 1910f30536b4SBarry Smith A[111] -= B[6] * C[105] + B[21] * C[106] + B[36] * C[107] + B[51] * C[108] + B[66] * C[109] + B[81] * C[110] + B[96] * C[111] + B[111] * C[112] + B[126] * C[113] + B[141] * C[114] + B[156] * C[115] + B[171] * C[116] + B[186] * C[117] + B[201] * C[118] + B[216] * C[119]; 1911f30536b4SBarry Smith A[112] -= B[7] * C[105] + B[22] * C[106] + B[37] * C[107] + B[52] * C[108] + B[67] * C[109] + B[82] * C[110] + B[97] * C[111] + B[112] * C[112] + B[127] * C[113] + B[142] * C[114] + B[157] * C[115] + B[172] * C[116] + B[187] * C[117] + B[202] * C[118] + B[217] * C[119]; 1912f30536b4SBarry Smith A[113] -= B[8] * C[105] + B[23] * C[106] + B[38] * C[107] + B[53] * C[108] + B[68] * C[109] + B[83] * C[110] + B[98] * C[111] + B[113] * C[112] + B[128] * C[113] + B[143] * C[114] + B[158] * C[115] + B[173] * C[116] + B[188] * C[117] + B[203] * C[118] + B[218] * C[119]; 1913f30536b4SBarry Smith A[114] -= B[9] * C[105] + B[24] * C[106] + B[39] * C[107] + B[54] * C[108] + B[69] * C[109] + B[84] * C[110] + B[99] * C[111] + B[114] * C[112] + B[129] * C[113] + B[144] * C[114] + B[159] * C[115] + B[174] * C[116] + B[189] * C[117] + B[204] * C[118] + B[219] * C[119]; 1914f30536b4SBarry Smith A[115] -= B[10] * C[105] + B[25] * C[106] + B[40] * C[107] + B[55] * C[108] + B[70] * C[109] + B[85] * C[110] + B[100] * C[111] + B[115] * C[112] + B[130] * C[113] + B[145] * C[114] + B[160] * C[115] + B[175] * C[116] + B[190] * C[117] + B[205] * C[118] + B[220] * C[119]; 1915f30536b4SBarry Smith A[116] -= B[11] * C[105] + B[26] * C[106] + B[41] * C[107] + B[56] * C[108] + B[71] * C[109] + B[86] * C[110] + B[101] * C[111] + B[116] * C[112] + B[131] * C[113] + B[146] * C[114] + B[161] * C[115] + B[176] * C[116] + B[191] * C[117] + B[206] * C[118] + B[221] * C[119]; 1916f30536b4SBarry Smith A[117] -= B[12] * C[105] + B[27] * C[106] + B[42] * C[107] + B[57] * C[108] + B[72] * C[109] + B[87] * C[110] + B[102] * C[111] + B[117] * C[112] + B[132] * C[113] + B[147] * C[114] + B[162] * C[115] + B[177] * C[116] + B[192] * C[117] + B[207] * C[118] + B[222] * C[119]; 1917f30536b4SBarry Smith A[118] -= B[13] * C[105] + B[28] * C[106] + B[43] * C[107] + B[58] * C[108] + B[73] * C[109] + B[88] * C[110] + B[103] * C[111] + B[118] * C[112] + B[133] * C[113] + B[148] * C[114] + B[163] * C[115] + B[178] * C[116] + B[193] * C[117] + B[208] * C[118] + B[223] * C[119]; 1918f30536b4SBarry Smith A[119] -= B[14] * C[105] + B[29] * C[106] + B[44] * C[107] + B[59] * C[108] + B[74] * C[109] + B[89] * C[110] + B[104] * C[111] + B[119] * C[112] + B[134] * C[113] + B[149] * C[114] + B[164] * C[115] + B[179] * C[116] + B[194] * C[117] + B[209] * C[118] + B[224] * C[119]; 1919f30536b4SBarry Smith A[120] -= B[0] * C[120] + B[15] * C[121] + B[30] * C[122] + B[45] * C[123] + B[60] * C[124] + B[75] * C[125] + B[90] * C[126] + B[105] * C[127] + B[120] * C[128] + B[135] * C[129] + B[150] * C[130] + B[165] * C[131] + B[180] * C[132] + B[195] * C[133] + B[210] * C[134]; 1920f30536b4SBarry Smith A[121] -= B[1] * C[120] + B[16] * C[121] + B[31] * C[122] + B[46] * C[123] + B[61] * C[124] + B[76] * C[125] + B[91] * C[126] + B[106] * C[127] + B[121] * C[128] + B[136] * C[129] + B[151] * C[130] + B[166] * C[131] + B[181] * C[132] + B[196] * C[133] + B[211] * C[134]; 1921f30536b4SBarry Smith A[122] -= B[2] * C[120] + B[17] * C[121] + B[32] * C[122] + B[47] * C[123] + B[62] * C[124] + B[77] * C[125] + B[92] * C[126] + B[107] * C[127] + B[122] * C[128] + B[137] * C[129] + B[152] * C[130] + B[167] * C[131] + B[182] * C[132] + B[197] * C[133] + B[212] * C[134]; 1922f30536b4SBarry Smith A[123] -= B[3] * C[120] + B[18] * C[121] + B[33] * C[122] + B[48] * C[123] + B[63] * C[124] + B[78] * C[125] + B[93] * C[126] + B[108] * C[127] + B[123] * C[128] + B[138] * C[129] + B[153] * C[130] + B[168] * C[131] + B[183] * C[132] + B[198] * C[133] + B[213] * C[134]; 1923f30536b4SBarry Smith A[124] -= B[4] * C[120] + B[19] * C[121] + B[34] * C[122] + B[49] * C[123] + B[64] * C[124] + B[79] * C[125] + B[94] * C[126] + B[109] * C[127] + B[124] * C[128] + B[139] * C[129] + B[154] * C[130] + B[169] * C[131] + B[184] * C[132] + B[199] * C[133] + B[214] * C[134]; 1924f30536b4SBarry Smith A[125] -= B[5] * C[120] + B[20] * C[121] + B[35] * C[122] + B[50] * C[123] + B[65] * C[124] + B[80] * C[125] + B[95] * C[126] + B[110] * C[127] + B[125] * C[128] + B[140] * C[129] + B[155] * C[130] + B[170] * C[131] + B[185] * C[132] + B[200] * C[133] + B[215] * C[134]; 1925f30536b4SBarry Smith A[126] -= B[6] * C[120] + B[21] * C[121] + B[36] * C[122] + B[51] * C[123] + B[66] * C[124] + B[81] * C[125] + B[96] * C[126] + B[111] * C[127] + B[126] * C[128] + B[141] * C[129] + B[156] * C[130] + B[171] * C[131] + B[186] * C[132] + B[201] * C[133] + B[216] * C[134]; 1926f30536b4SBarry Smith A[127] -= B[7] * C[120] + B[22] * C[121] + B[37] * C[122] + B[52] * C[123] + B[67] * C[124] + B[82] * C[125] + B[97] * C[126] + B[112] * C[127] + B[127] * C[128] + B[142] * C[129] + B[157] * C[130] + B[172] * C[131] + B[187] * C[132] + B[202] * C[133] + B[217] * C[134]; 1927f30536b4SBarry Smith A[128] -= B[8] * C[120] + B[23] * C[121] + B[38] * C[122] + B[53] * C[123] + B[68] * C[124] + B[83] * C[125] + B[98] * C[126] + B[113] * C[127] + B[128] * C[128] + B[143] * C[129] + B[158] * C[130] + B[173] * C[131] + B[188] * C[132] + B[203] * C[133] + B[218] * C[134]; 1928f30536b4SBarry Smith A[129] -= B[9] * C[120] + B[24] * C[121] + B[39] * C[122] + B[54] * C[123] + B[69] * C[124] + B[84] * C[125] + B[99] * C[126] + B[114] * C[127] + B[129] * C[128] + B[144] * C[129] + B[159] * C[130] + B[174] * C[131] + B[189] * C[132] + B[204] * C[133] + B[219] * C[134]; 1929f30536b4SBarry Smith A[130] -= B[10] * C[120] + B[25] * C[121] + B[40] * C[122] + B[55] * C[123] + B[70] * C[124] + B[85] * C[125] + B[100] * C[126] + B[115] * C[127] + B[130] * C[128] + B[145] * C[129] + B[160] * C[130] + B[175] * C[131] + B[190] * C[132] + B[205] * C[133] + B[220] * C[134]; 1930f30536b4SBarry Smith A[131] -= B[11] * C[120] + B[26] * C[121] + B[41] * C[122] + B[56] * C[123] + B[71] * C[124] + B[86] * C[125] + B[101] * C[126] + B[116] * C[127] + B[131] * C[128] + B[146] * C[129] + B[161] * C[130] + B[176] * C[131] + B[191] * C[132] + B[206] * C[133] + B[221] * C[134]; 1931f30536b4SBarry Smith A[132] -= B[12] * C[120] + B[27] * C[121] + B[42] * C[122] + B[57] * C[123] + B[72] * C[124] + B[87] * C[125] + B[102] * C[126] + B[117] * C[127] + B[132] * C[128] + B[147] * C[129] + B[162] * C[130] + B[177] * C[131] + B[192] * C[132] + B[207] * C[133] + B[222] * C[134]; 1932f30536b4SBarry Smith A[133] -= B[13] * C[120] + B[28] * C[121] + B[43] * C[122] + B[58] * C[123] + B[73] * C[124] + B[88] * C[125] + B[103] * C[126] + B[118] * C[127] + B[133] * C[128] + B[148] * C[129] + B[163] * C[130] + B[178] * C[131] + B[193] * C[132] + B[208] * C[133] + B[223] * C[134]; 1933f30536b4SBarry Smith A[134] -= B[14] * C[120] + B[29] * C[121] + B[44] * C[122] + B[59] * C[123] + B[74] * C[124] + B[89] * C[125] + B[104] * C[126] + B[119] * C[127] + B[134] * C[128] + B[149] * C[129] + B[164] * C[130] + B[179] * C[131] + B[194] * C[132] + B[209] * C[133] + B[224] * C[134]; 1934f30536b4SBarry Smith A[135] -= B[0] * C[135] + B[15] * C[136] + B[30] * C[137] + B[45] * C[138] + B[60] * C[139] + B[75] * C[140] + B[90] * C[141] + B[105] * C[142] + B[120] * C[143] + B[135] * C[144] + B[150] * C[145] + B[165] * C[146] + B[180] * C[147] + B[195] * C[148] + B[210] * C[149]; 1935f30536b4SBarry Smith A[136] -= B[1] * C[135] + B[16] * C[136] + B[31] * C[137] + B[46] * C[138] + B[61] * C[139] + B[76] * C[140] + B[91] * C[141] + B[106] * C[142] + B[121] * C[143] + B[136] * C[144] + B[151] * C[145] + B[166] * C[146] + B[181] * C[147] + B[196] * C[148] + B[211] * C[149]; 1936f30536b4SBarry Smith A[137] -= B[2] * C[135] + B[17] * C[136] + B[32] * C[137] + B[47] * C[138] + B[62] * C[139] + B[77] * C[140] + B[92] * C[141] + B[107] * C[142] + B[122] * C[143] + B[137] * C[144] + B[152] * C[145] + B[167] * C[146] + B[182] * C[147] + B[197] * C[148] + B[212] * C[149]; 1937f30536b4SBarry Smith A[138] -= B[3] * C[135] + B[18] * C[136] + B[33] * C[137] + B[48] * C[138] + B[63] * C[139] + B[78] * C[140] + B[93] * C[141] + B[108] * C[142] + B[123] * C[143] + B[138] * C[144] + B[153] * C[145] + B[168] * C[146] + B[183] * C[147] + B[198] * C[148] + B[213] * C[149]; 1938f30536b4SBarry Smith A[139] -= B[4] * C[135] + B[19] * C[136] + B[34] * C[137] + B[49] * C[138] + B[64] * C[139] + B[79] * C[140] + B[94] * C[141] + B[109] * C[142] + B[124] * C[143] + B[139] * C[144] + B[154] * C[145] + B[169] * C[146] + B[184] * C[147] + B[199] * C[148] + B[214] * C[149]; 1939f30536b4SBarry Smith A[140] -= B[5] * C[135] + B[20] * C[136] + B[35] * C[137] + B[50] * C[138] + B[65] * C[139] + B[80] * C[140] + B[95] * C[141] + B[110] * C[142] + B[125] * C[143] + B[140] * C[144] + B[155] * C[145] + B[170] * C[146] + B[185] * C[147] + B[200] * C[148] + B[215] * C[149]; 1940f30536b4SBarry Smith A[141] -= B[6] * C[135] + B[21] * C[136] + B[36] * C[137] + B[51] * C[138] + B[66] * C[139] + B[81] * C[140] + B[96] * C[141] + B[111] * C[142] + B[126] * C[143] + B[141] * C[144] + B[156] * C[145] + B[171] * C[146] + B[186] * C[147] + B[201] * C[148] + B[216] * C[149]; 1941f30536b4SBarry Smith A[142] -= B[7] * C[135] + B[22] * C[136] + B[37] * C[137] + B[52] * C[138] + B[67] * C[139] + B[82] * C[140] + B[97] * C[141] + B[112] * C[142] + B[127] * C[143] + B[142] * C[144] + B[157] * C[145] + B[172] * C[146] + B[187] * C[147] + B[202] * C[148] + B[217] * C[149]; 1942f30536b4SBarry Smith A[143] -= B[8] * C[135] + B[23] * C[136] + B[38] * C[137] + B[53] * C[138] + B[68] * C[139] + B[83] * C[140] + B[98] * C[141] + B[113] * C[142] + B[128] * C[143] + B[143] * C[144] + B[158] * C[145] + B[173] * C[146] + B[188] * C[147] + B[203] * C[148] + B[218] * C[149]; 1943f30536b4SBarry Smith A[144] -= B[9] * C[135] + B[24] * C[136] + B[39] * C[137] + B[54] * C[138] + B[69] * C[139] + B[84] * C[140] + B[99] * C[141] + B[114] * C[142] + B[129] * C[143] + B[144] * C[144] + B[159] * C[145] + B[174] * C[146] + B[189] * C[147] + B[204] * C[148] + B[219] * C[149]; 1944f30536b4SBarry Smith A[145] -= B[10] * C[135] + B[25] * C[136] + B[40] * C[137] + B[55] * C[138] + B[70] * C[139] + B[85] * C[140] + B[100] * C[141] + B[115] * C[142] + B[130] * C[143] + B[145] * C[144] + B[160] * C[145] + B[175] * C[146] + B[190] * C[147] + B[205] * C[148] + B[220] * C[149]; 1945f30536b4SBarry Smith A[146] -= B[11] * C[135] + B[26] * C[136] + B[41] * C[137] + B[56] * C[138] + B[71] * C[139] + B[86] * C[140] + B[101] * C[141] + B[116] * C[142] + B[131] * C[143] + B[146] * C[144] + B[161] * C[145] + B[176] * C[146] + B[191] * C[147] + B[206] * C[148] + B[221] * C[149]; 1946f30536b4SBarry Smith A[147] -= B[12] * C[135] + B[27] * C[136] + B[42] * C[137] + B[57] * C[138] + B[72] * C[139] + B[87] * C[140] + B[102] * C[141] + B[117] * C[142] + B[132] * C[143] + B[147] * C[144] + B[162] * C[145] + B[177] * C[146] + B[192] * C[147] + B[207] * C[148] + B[222] * C[149]; 1947f30536b4SBarry Smith A[148] -= B[13] * C[135] + B[28] * C[136] + B[43] * C[137] + B[58] * C[138] + B[73] * C[139] + B[88] * C[140] + B[103] * C[141] + B[118] * C[142] + B[133] * C[143] + B[148] * C[144] + B[163] * C[145] + B[178] * C[146] + B[193] * C[147] + B[208] * C[148] + B[223] * C[149]; 1948f30536b4SBarry Smith A[149] -= B[14] * C[135] + B[29] * C[136] + B[44] * C[137] + B[59] * C[138] + B[74] * C[139] + B[89] * C[140] + B[104] * C[141] + B[119] * C[142] + B[134] * C[143] + B[149] * C[144] + B[164] * C[145] + B[179] * C[146] + B[194] * C[147] + B[209] * C[148] + B[224] * C[149]; 1949f30536b4SBarry Smith A[150] -= B[0] * C[150] + B[15] * C[151] + B[30] * C[152] + B[45] * C[153] + B[60] * C[154] + B[75] * C[155] + B[90] * C[156] + B[105] * C[157] + B[120] * C[158] + B[135] * C[159] + B[150] * C[160] + B[165] * C[161] + B[180] * C[162] + B[195] * C[163] + B[210] * C[164]; 1950f30536b4SBarry Smith A[151] -= B[1] * C[150] + B[16] * C[151] + B[31] * C[152] + B[46] * C[153] + B[61] * C[154] + B[76] * C[155] + B[91] * C[156] + B[106] * C[157] + B[121] * C[158] + B[136] * C[159] + B[151] * C[160] + B[166] * C[161] + B[181] * C[162] + B[196] * C[163] + B[211] * C[164]; 1951f30536b4SBarry Smith A[152] -= B[2] * C[150] + B[17] * C[151] + B[32] * C[152] + B[47] * C[153] + B[62] * C[154] + B[77] * C[155] + B[92] * C[156] + B[107] * C[157] + B[122] * C[158] + B[137] * C[159] + B[152] * C[160] + B[167] * C[161] + B[182] * C[162] + B[197] * C[163] + B[212] * C[164]; 1952f30536b4SBarry Smith A[153] -= B[3] * C[150] + B[18] * C[151] + B[33] * C[152] + B[48] * C[153] + B[63] * C[154] + B[78] * C[155] + B[93] * C[156] + B[108] * C[157] + B[123] * C[158] + B[138] * C[159] + B[153] * C[160] + B[168] * C[161] + B[183] * C[162] + B[198] * C[163] + B[213] * C[164]; 1953f30536b4SBarry Smith A[154] -= B[4] * C[150] + B[19] * C[151] + B[34] * C[152] + B[49] * C[153] + B[64] * C[154] + B[79] * C[155] + B[94] * C[156] + B[109] * C[157] + B[124] * C[158] + B[139] * C[159] + B[154] * C[160] + B[169] * C[161] + B[184] * C[162] + B[199] * C[163] + B[214] * C[164]; 1954f30536b4SBarry Smith A[155] -= B[5] * C[150] + B[20] * C[151] + B[35] * C[152] + B[50] * C[153] + B[65] * C[154] + B[80] * C[155] + B[95] * C[156] + B[110] * C[157] + B[125] * C[158] + B[140] * C[159] + B[155] * C[160] + B[170] * C[161] + B[185] * C[162] + B[200] * C[163] + B[215] * C[164]; 1955f30536b4SBarry Smith A[156] -= B[6] * C[150] + B[21] * C[151] + B[36] * C[152] + B[51] * C[153] + B[66] * C[154] + B[81] * C[155] + B[96] * C[156] + B[111] * C[157] + B[126] * C[158] + B[141] * C[159] + B[156] * C[160] + B[171] * C[161] + B[186] * C[162] + B[201] * C[163] + B[216] * C[164]; 1956f30536b4SBarry Smith A[157] -= B[7] * C[150] + B[22] * C[151] + B[37] * C[152] + B[52] * C[153] + B[67] * C[154] + B[82] * C[155] + B[97] * C[156] + B[112] * C[157] + B[127] * C[158] + B[142] * C[159] + B[157] * C[160] + B[172] * C[161] + B[187] * C[162] + B[202] * C[163] + B[217] * C[164]; 1957f30536b4SBarry Smith A[158] -= B[8] * C[150] + B[23] * C[151] + B[38] * C[152] + B[53] * C[153] + B[68] * C[154] + B[83] * C[155] + B[98] * C[156] + B[113] * C[157] + B[128] * C[158] + B[143] * C[159] + B[158] * C[160] + B[173] * C[161] + B[188] * C[162] + B[203] * C[163] + B[218] * C[164]; 1958f30536b4SBarry Smith A[159] -= B[9] * C[150] + B[24] * C[151] + B[39] * C[152] + B[54] * C[153] + B[69] * C[154] + B[84] * C[155] + B[99] * C[156] + B[114] * C[157] + B[129] * C[158] + B[144] * C[159] + B[159] * C[160] + B[174] * C[161] + B[189] * C[162] + B[204] * C[163] + B[219] * C[164]; 1959f30536b4SBarry Smith A[160] -= B[10] * C[150] + B[25] * C[151] + B[40] * C[152] + B[55] * C[153] + B[70] * C[154] + B[85] * C[155] + B[100] * C[156] + B[115] * C[157] + B[130] * C[158] + B[145] * C[159] + B[160] * C[160] + B[175] * C[161] + B[190] * C[162] + B[205] * C[163] + B[220] * C[164]; 1960f30536b4SBarry Smith A[161] -= B[11] * C[150] + B[26] * C[151] + B[41] * C[152] + B[56] * C[153] + B[71] * C[154] + B[86] * C[155] + B[101] * C[156] + B[116] * C[157] + B[131] * C[158] + B[146] * C[159] + B[161] * C[160] + B[176] * C[161] + B[191] * C[162] + B[206] * C[163] + B[221] * C[164]; 1961f30536b4SBarry Smith A[162] -= B[12] * C[150] + B[27] * C[151] + B[42] * C[152] + B[57] * C[153] + B[72] * C[154] + B[87] * C[155] + B[102] * C[156] + B[117] * C[157] + B[132] * C[158] + B[147] * C[159] + B[162] * C[160] + B[177] * C[161] + B[192] * C[162] + B[207] * C[163] + B[222] * C[164]; 1962f30536b4SBarry Smith A[163] -= B[13] * C[150] + B[28] * C[151] + B[43] * C[152] + B[58] * C[153] + B[73] * C[154] + B[88] * C[155] + B[103] * C[156] + B[118] * C[157] + B[133] * C[158] + B[148] * C[159] + B[163] * C[160] + B[178] * C[161] + B[193] * C[162] + B[208] * C[163] + B[223] * C[164]; 1963f30536b4SBarry Smith A[164] -= B[14] * C[150] + B[29] * C[151] + B[44] * C[152] + B[59] * C[153] + B[74] * C[154] + B[89] * C[155] + B[104] * C[156] + B[119] * C[157] + B[134] * C[158] + B[149] * C[159] + B[164] * C[160] + B[179] * C[161] + B[194] * C[162] + B[209] * C[163] + B[224] * C[164]; 1964f30536b4SBarry Smith A[165] -= B[0] * C[165] + B[15] * C[166] + B[30] * C[167] + B[45] * C[168] + B[60] * C[169] + B[75] * C[170] + B[90] * C[171] + B[105] * C[172] + B[120] * C[173] + B[135] * C[174] + B[150] * C[175] + B[165] * C[176] + B[180] * C[177] + B[195] * C[178] + B[210] * C[179]; 1965f30536b4SBarry Smith A[166] -= B[1] * C[165] + B[16] * C[166] + B[31] * C[167] + B[46] * C[168] + B[61] * C[169] + B[76] * C[170] + B[91] * C[171] + B[106] * C[172] + B[121] * C[173] + B[136] * C[174] + B[151] * C[175] + B[166] * C[176] + B[181] * C[177] + B[196] * C[178] + B[211] * C[179]; 1966f30536b4SBarry Smith A[167] -= B[2] * C[165] + B[17] * C[166] + B[32] * C[167] + B[47] * C[168] + B[62] * C[169] + B[77] * C[170] + B[92] * C[171] + B[107] * C[172] + B[122] * C[173] + B[137] * C[174] + B[152] * C[175] + B[167] * C[176] + B[182] * C[177] + B[197] * C[178] + B[212] * C[179]; 1967f30536b4SBarry Smith A[168] -= B[3] * C[165] + B[18] * C[166] + B[33] * C[167] + B[48] * C[168] + B[63] * C[169] + B[78] * C[170] + B[93] * C[171] + B[108] * C[172] + B[123] * C[173] + B[138] * C[174] + B[153] * C[175] + B[168] * C[176] + B[183] * C[177] + B[198] * C[178] + B[213] * C[179]; 1968f30536b4SBarry Smith A[169] -= B[4] * C[165] + B[19] * C[166] + B[34] * C[167] + B[49] * C[168] + B[64] * C[169] + B[79] * C[170] + B[94] * C[171] + B[109] * C[172] + B[124] * C[173] + B[139] * C[174] + B[154] * C[175] + B[169] * C[176] + B[184] * C[177] + B[199] * C[178] + B[214] * C[179]; 1969f30536b4SBarry Smith A[170] -= B[5] * C[165] + B[20] * C[166] + B[35] * C[167] + B[50] * C[168] + B[65] * C[169] + B[80] * C[170] + B[95] * C[171] + B[110] * C[172] + B[125] * C[173] + B[140] * C[174] + B[155] * C[175] + B[170] * C[176] + B[185] * C[177] + B[200] * C[178] + B[215] * C[179]; 1970f30536b4SBarry Smith A[171] -= B[6] * C[165] + B[21] * C[166] + B[36] * C[167] + B[51] * C[168] + B[66] * C[169] + B[81] * C[170] + B[96] * C[171] + B[111] * C[172] + B[126] * C[173] + B[141] * C[174] + B[156] * C[175] + B[171] * C[176] + B[186] * C[177] + B[201] * C[178] + B[216] * C[179]; 1971f30536b4SBarry Smith A[172] -= B[7] * C[165] + B[22] * C[166] + B[37] * C[167] + B[52] * C[168] + B[67] * C[169] + B[82] * C[170] + B[97] * C[171] + B[112] * C[172] + B[127] * C[173] + B[142] * C[174] + B[157] * C[175] + B[172] * C[176] + B[187] * C[177] + B[202] * C[178] + B[217] * C[179]; 1972f30536b4SBarry Smith A[173] -= B[8] * C[165] + B[23] * C[166] + B[38] * C[167] + B[53] * C[168] + B[68] * C[169] + B[83] * C[170] + B[98] * C[171] + B[113] * C[172] + B[128] * C[173] + B[143] * C[174] + B[158] * C[175] + B[173] * C[176] + B[188] * C[177] + B[203] * C[178] + B[218] * C[179]; 1973f30536b4SBarry Smith A[174] -= B[9] * C[165] + B[24] * C[166] + B[39] * C[167] + B[54] * C[168] + B[69] * C[169] + B[84] * C[170] + B[99] * C[171] + B[114] * C[172] + B[129] * C[173] + B[144] * C[174] + B[159] * C[175] + B[174] * C[176] + B[189] * C[177] + B[204] * C[178] + B[219] * C[179]; 1974f30536b4SBarry Smith A[175] -= B[10] * C[165] + B[25] * C[166] + B[40] * C[167] + B[55] * C[168] + B[70] * C[169] + B[85] * C[170] + B[100] * C[171] + B[115] * C[172] + B[130] * C[173] + B[145] * C[174] + B[160] * C[175] + B[175] * C[176] + B[190] * C[177] + B[205] * C[178] + B[220] * C[179]; 1975f30536b4SBarry Smith A[176] -= B[11] * C[165] + B[26] * C[166] + B[41] * C[167] + B[56] * C[168] + B[71] * C[169] + B[86] * C[170] + B[101] * C[171] + B[116] * C[172] + B[131] * C[173] + B[146] * C[174] + B[161] * C[175] + B[176] * C[176] + B[191] * C[177] + B[206] * C[178] + B[221] * C[179]; 1976f30536b4SBarry Smith A[177] -= B[12] * C[165] + B[27] * C[166] + B[42] * C[167] + B[57] * C[168] + B[72] * C[169] + B[87] * C[170] + B[102] * C[171] + B[117] * C[172] + B[132] * C[173] + B[147] * C[174] + B[162] * C[175] + B[177] * C[176] + B[192] * C[177] + B[207] * C[178] + B[222] * C[179]; 1977f30536b4SBarry Smith A[178] -= B[13] * C[165] + B[28] * C[166] + B[43] * C[167] + B[58] * C[168] + B[73] * C[169] + B[88] * C[170] + B[103] * C[171] + B[118] * C[172] + B[133] * C[173] + B[148] * C[174] + B[163] * C[175] + B[178] * C[176] + B[193] * C[177] + B[208] * C[178] + B[223] * C[179]; 1978f30536b4SBarry Smith A[179] -= B[14] * C[165] + B[29] * C[166] + B[44] * C[167] + B[59] * C[168] + B[74] * C[169] + B[89] * C[170] + B[104] * C[171] + B[119] * C[172] + B[134] * C[173] + B[149] * C[174] + B[164] * C[175] + B[179] * C[176] + B[194] * C[177] + B[209] * C[178] + B[224] * C[179]; 1979f30536b4SBarry Smith A[180] -= B[0] * C[180] + B[15] * C[181] + B[30] * C[182] + B[45] * C[183] + B[60] * C[184] + B[75] * C[185] + B[90] * C[186] + B[105] * C[187] + B[120] * C[188] + B[135] * C[189] + B[150] * C[190] + B[165] * C[191] + B[180] * C[192] + B[195] * C[193] + B[210] * C[194]; 1980f30536b4SBarry Smith A[181] -= B[1] * C[180] + B[16] * C[181] + B[31] * C[182] + B[46] * C[183] + B[61] * C[184] + B[76] * C[185] + B[91] * C[186] + B[106] * C[187] + B[121] * C[188] + B[136] * C[189] + B[151] * C[190] + B[166] * C[191] + B[181] * C[192] + B[196] * C[193] + B[211] * C[194]; 1981f30536b4SBarry Smith A[182] -= B[2] * C[180] + B[17] * C[181] + B[32] * C[182] + B[47] * C[183] + B[62] * C[184] + B[77] * C[185] + B[92] * C[186] + B[107] * C[187] + B[122] * C[188] + B[137] * C[189] + B[152] * C[190] + B[167] * C[191] + B[182] * C[192] + B[197] * C[193] + B[212] * C[194]; 1982f30536b4SBarry Smith A[183] -= B[3] * C[180] + B[18] * C[181] + B[33] * C[182] + B[48] * C[183] + B[63] * C[184] + B[78] * C[185] + B[93] * C[186] + B[108] * C[187] + B[123] * C[188] + B[138] * C[189] + B[153] * C[190] + B[168] * C[191] + B[183] * C[192] + B[198] * C[193] + B[213] * C[194]; 1983f30536b4SBarry Smith A[184] -= B[4] * C[180] + B[19] * C[181] + B[34] * C[182] + B[49] * C[183] + B[64] * C[184] + B[79] * C[185] + B[94] * C[186] + B[109] * C[187] + B[124] * C[188] + B[139] * C[189] + B[154] * C[190] + B[169] * C[191] + B[184] * C[192] + B[199] * C[193] + B[214] * C[194]; 1984f30536b4SBarry Smith A[185] -= B[5] * C[180] + B[20] * C[181] + B[35] * C[182] + B[50] * C[183] + B[65] * C[184] + B[80] * C[185] + B[95] * C[186] + B[110] * C[187] + B[125] * C[188] + B[140] * C[189] + B[155] * C[190] + B[170] * C[191] + B[185] * C[192] + B[200] * C[193] + B[215] * C[194]; 1985f30536b4SBarry Smith A[186] -= B[6] * C[180] + B[21] * C[181] + B[36] * C[182] + B[51] * C[183] + B[66] * C[184] + B[81] * C[185] + B[96] * C[186] + B[111] * C[187] + B[126] * C[188] + B[141] * C[189] + B[156] * C[190] + B[171] * C[191] + B[186] * C[192] + B[201] * C[193] + B[216] * C[194]; 1986f30536b4SBarry Smith A[187] -= B[7] * C[180] + B[22] * C[181] + B[37] * C[182] + B[52] * C[183] + B[67] * C[184] + B[82] * C[185] + B[97] * C[186] + B[112] * C[187] + B[127] * C[188] + B[142] * C[189] + B[157] * C[190] + B[172] * C[191] + B[187] * C[192] + B[202] * C[193] + B[217] * C[194]; 1987f30536b4SBarry Smith A[188] -= B[8] * C[180] + B[23] * C[181] + B[38] * C[182] + B[53] * C[183] + B[68] * C[184] + B[83] * C[185] + B[98] * C[186] + B[113] * C[187] + B[128] * C[188] + B[143] * C[189] + B[158] * C[190] + B[173] * C[191] + B[188] * C[192] + B[203] * C[193] + B[218] * C[194]; 1988f30536b4SBarry Smith A[189] -= B[9] * C[180] + B[24] * C[181] + B[39] * C[182] + B[54] * C[183] + B[69] * C[184] + B[84] * C[185] + B[99] * C[186] + B[114] * C[187] + B[129] * C[188] + B[144] * C[189] + B[159] * C[190] + B[174] * C[191] + B[189] * C[192] + B[204] * C[193] + B[219] * C[194]; 1989f30536b4SBarry Smith A[190] -= B[10] * C[180] + B[25] * C[181] + B[40] * C[182] + B[55] * C[183] + B[70] * C[184] + B[85] * C[185] + B[100] * C[186] + B[115] * C[187] + B[130] * C[188] + B[145] * C[189] + B[160] * C[190] + B[175] * C[191] + B[190] * C[192] + B[205] * C[193] + B[220] * C[194]; 1990f30536b4SBarry Smith A[191] -= B[11] * C[180] + B[26] * C[181] + B[41] * C[182] + B[56] * C[183] + B[71] * C[184] + B[86] * C[185] + B[101] * C[186] + B[116] * C[187] + B[131] * C[188] + B[146] * C[189] + B[161] * C[190] + B[176] * C[191] + B[191] * C[192] + B[206] * C[193] + B[221] * C[194]; 1991f30536b4SBarry Smith A[192] -= B[12] * C[180] + B[27] * C[181] + B[42] * C[182] + B[57] * C[183] + B[72] * C[184] + B[87] * C[185] + B[102] * C[186] + B[117] * C[187] + B[132] * C[188] + B[147] * C[189] + B[162] * C[190] + B[177] * C[191] + B[192] * C[192] + B[207] * C[193] + B[222] * C[194]; 1992f30536b4SBarry Smith A[193] -= B[13] * C[180] + B[28] * C[181] + B[43] * C[182] + B[58] * C[183] + B[73] * C[184] + B[88] * C[185] + B[103] * C[186] + B[118] * C[187] + B[133] * C[188] + B[148] * C[189] + B[163] * C[190] + B[178] * C[191] + B[193] * C[192] + B[208] * C[193] + B[223] * C[194]; 1993f30536b4SBarry Smith A[194] -= B[14] * C[180] + B[29] * C[181] + B[44] * C[182] + B[59] * C[183] + B[74] * C[184] + B[89] * C[185] + B[104] * C[186] + B[119] * C[187] + B[134] * C[188] + B[149] * C[189] + B[164] * C[190] + B[179] * C[191] + B[194] * C[192] + B[209] * C[193] + B[224] * C[194]; 1994f30536b4SBarry Smith A[195] -= B[0] * C[195] + B[15] * C[196] + B[30] * C[197] + B[45] * C[198] + B[60] * C[199] + B[75] * C[200] + B[90] * C[201] + B[105] * C[202] + B[120] * C[203] + B[135] * C[204] + B[150] * C[205] + B[165] * C[206] + B[180] * C[207] + B[195] * C[208] + B[210] * C[209]; 1995f30536b4SBarry Smith A[196] -= B[1] * C[195] + B[16] * C[196] + B[31] * C[197] + B[46] * C[198] + B[61] * C[199] + B[76] * C[200] + B[91] * C[201] + B[106] * C[202] + B[121] * C[203] + B[136] * C[204] + B[151] * C[205] + B[166] * C[206] + B[181] * C[207] + B[196] * C[208] + B[211] * C[209]; 1996f30536b4SBarry Smith A[197] -= B[2] * C[195] + B[17] * C[196] + B[32] * C[197] + B[47] * C[198] + B[62] * C[199] + B[77] * C[200] + B[92] * C[201] + B[107] * C[202] + B[122] * C[203] + B[137] * C[204] + B[152] * C[205] + B[167] * C[206] + B[182] * C[207] + B[197] * C[208] + B[212] * C[209]; 1997f30536b4SBarry Smith A[198] -= B[3] * C[195] + B[18] * C[196] + B[33] * C[197] + B[48] * C[198] + B[63] * C[199] + B[78] * C[200] + B[93] * C[201] + B[108] * C[202] + B[123] * C[203] + B[138] * C[204] + B[153] * C[205] + B[168] * C[206] + B[183] * C[207] + B[198] * C[208] + B[213] * C[209]; 1998f30536b4SBarry Smith A[199] -= B[4] * C[195] + B[19] * C[196] + B[34] * C[197] + B[49] * C[198] + B[64] * C[199] + B[79] * C[200] + B[94] * C[201] + B[109] * C[202] + B[124] * C[203] + B[139] * C[204] + B[154] * C[205] + B[169] * C[206] + B[184] * C[207] + B[199] * C[208] + B[214] * C[209]; 1999f30536b4SBarry Smith A[200] -= B[5] * C[195] + B[20] * C[196] + B[35] * C[197] + B[50] * C[198] + B[65] * C[199] + B[80] * C[200] + B[95] * C[201] + B[110] * C[202] + B[125] * C[203] + B[140] * C[204] + B[155] * C[205] + B[170] * C[206] + B[185] * C[207] + B[200] * C[208] + B[215] * C[209]; 2000f30536b4SBarry Smith A[201] -= B[6] * C[195] + B[21] * C[196] + B[36] * C[197] + B[51] * C[198] + B[66] * C[199] + B[81] * C[200] + B[96] * C[201] + B[111] * C[202] + B[126] * C[203] + B[141] * C[204] + B[156] * C[205] + B[171] * C[206] + B[186] * C[207] + B[201] * C[208] + B[216] * C[209]; 2001f30536b4SBarry Smith A[202] -= B[7] * C[195] + B[22] * C[196] + B[37] * C[197] + B[52] * C[198] + B[67] * C[199] + B[82] * C[200] + B[97] * C[201] + B[112] * C[202] + B[127] * C[203] + B[142] * C[204] + B[157] * C[205] + B[172] * C[206] + B[187] * C[207] + B[202] * C[208] + B[217] * C[209]; 2002f30536b4SBarry Smith A[203] -= B[8] * C[195] + B[23] * C[196] + B[38] * C[197] + B[53] * C[198] + B[68] * C[199] + B[83] * C[200] + B[98] * C[201] + B[113] * C[202] + B[128] * C[203] + B[143] * C[204] + B[158] * C[205] + B[173] * C[206] + B[188] * C[207] + B[203] * C[208] + B[218] * C[209]; 2003f30536b4SBarry Smith A[204] -= B[9] * C[195] + B[24] * C[196] + B[39] * C[197] + B[54] * C[198] + B[69] * C[199] + B[84] * C[200] + B[99] * C[201] + B[114] * C[202] + B[129] * C[203] + B[144] * C[204] + B[159] * C[205] + B[174] * C[206] + B[189] * C[207] + B[204] * C[208] + B[219] * C[209]; 2004f30536b4SBarry Smith A[205] -= B[10] * C[195] + B[25] * C[196] + B[40] * C[197] + B[55] * C[198] + B[70] * C[199] + B[85] * C[200] + B[100] * C[201] + B[115] * C[202] + B[130] * C[203] + B[145] * C[204] + B[160] * C[205] + B[175] * C[206] + B[190] * C[207] + B[205] * C[208] + B[220] * C[209]; 2005f30536b4SBarry Smith A[206] -= B[11] * C[195] + B[26] * C[196] + B[41] * C[197] + B[56] * C[198] + B[71] * C[199] + B[86] * C[200] + B[101] * C[201] + B[116] * C[202] + B[131] * C[203] + B[146] * C[204] + B[161] * C[205] + B[176] * C[206] + B[191] * C[207] + B[206] * C[208] + B[221] * C[209]; 2006f30536b4SBarry Smith A[207] -= B[12] * C[195] + B[27] * C[196] + B[42] * C[197] + B[57] * C[198] + B[72] * C[199] + B[87] * C[200] + B[102] * C[201] + B[117] * C[202] + B[132] * C[203] + B[147] * C[204] + B[162] * C[205] + B[177] * C[206] + B[192] * C[207] + B[207] * C[208] + B[222] * C[209]; 2007f30536b4SBarry Smith A[208] -= B[13] * C[195] + B[28] * C[196] + B[43] * C[197] + B[58] * C[198] + B[73] * C[199] + B[88] * C[200] + B[103] * C[201] + B[118] * C[202] + B[133] * C[203] + B[148] * C[204] + B[163] * C[205] + B[178] * C[206] + B[193] * C[207] + B[208] * C[208] + B[223] * C[209]; 2008f30536b4SBarry Smith A[209] -= B[14] * C[195] + B[29] * C[196] + B[44] * C[197] + B[59] * C[198] + B[74] * C[199] + B[89] * C[200] + B[104] * C[201] + B[119] * C[202] + B[134] * C[203] + B[149] * C[204] + B[164] * C[205] + B[179] * C[206] + B[194] * C[207] + B[209] * C[208] + B[224] * C[209]; 2009f30536b4SBarry Smith A[210] -= B[0] * C[210] + B[15] * C[211] + B[30] * C[212] + B[45] * C[213] + B[60] * C[214] + B[75] * C[215] + B[90] * C[216] + B[105] * C[217] + B[120] * C[218] + B[135] * C[219] + B[150] * C[220] + B[165] * C[221] + B[180] * C[222] + B[195] * C[223] + B[210] * C[224]; 2010f30536b4SBarry Smith A[211] -= B[1] * C[210] + B[16] * C[211] + B[31] * C[212] + B[46] * C[213] + B[61] * C[214] + B[76] * C[215] + B[91] * C[216] + B[106] * C[217] + B[121] * C[218] + B[136] * C[219] + B[151] * C[220] + B[166] * C[221] + B[181] * C[222] + B[196] * C[223] + B[211] * C[224]; 2011f30536b4SBarry Smith A[212] -= B[2] * C[210] + B[17] * C[211] + B[32] * C[212] + B[47] * C[213] + B[62] * C[214] + B[77] * C[215] + B[92] * C[216] + B[107] * C[217] + B[122] * C[218] + B[137] * C[219] + B[152] * C[220] + B[167] * C[221] + B[182] * C[222] + B[197] * C[223] + B[212] * C[224]; 2012f30536b4SBarry Smith A[213] -= B[3] * C[210] + B[18] * C[211] + B[33] * C[212] + B[48] * C[213] + B[63] * C[214] + B[78] * C[215] + B[93] * C[216] + B[108] * C[217] + B[123] * C[218] + B[138] * C[219] + B[153] * C[220] + B[168] * C[221] + B[183] * C[222] + B[198] * C[223] + B[213] * C[224]; 2013f30536b4SBarry Smith A[214] -= B[4] * C[210] + B[19] * C[211] + B[34] * C[212] + B[49] * C[213] + B[64] * C[214] + B[79] * C[215] + B[94] * C[216] + B[109] * C[217] + B[124] * C[218] + B[139] * C[219] + B[154] * C[220] + B[169] * C[221] + B[184] * C[222] + B[199] * C[223] + B[214] * C[224]; 2014f30536b4SBarry Smith A[215] -= B[5] * C[210] + B[20] * C[211] + B[35] * C[212] + B[50] * C[213] + B[65] * C[214] + B[80] * C[215] + B[95] * C[216] + B[110] * C[217] + B[125] * C[218] + B[140] * C[219] + B[155] * C[220] + B[170] * C[221] + B[185] * C[222] + B[200] * C[223] + B[215] * C[224]; 2015f30536b4SBarry Smith A[216] -= B[6] * C[210] + B[21] * C[211] + B[36] * C[212] + B[51] * C[213] + B[66] * C[214] + B[81] * C[215] + B[96] * C[216] + B[111] * C[217] + B[126] * C[218] + B[141] * C[219] + B[156] * C[220] + B[171] * C[221] + B[186] * C[222] + B[201] * C[223] + B[216] * C[224]; 2016f30536b4SBarry Smith A[217] -= B[7] * C[210] + B[22] * C[211] + B[37] * C[212] + B[52] * C[213] + B[67] * C[214] + B[82] * C[215] + B[97] * C[216] + B[112] * C[217] + B[127] * C[218] + B[142] * C[219] + B[157] * C[220] + B[172] * C[221] + B[187] * C[222] + B[202] * C[223] + B[217] * C[224]; 2017f30536b4SBarry Smith A[218] -= B[8] * C[210] + B[23] * C[211] + B[38] * C[212] + B[53] * C[213] + B[68] * C[214] + B[83] * C[215] + B[98] * C[216] + B[113] * C[217] + B[128] * C[218] + B[143] * C[219] + B[158] * C[220] + B[173] * C[221] + B[188] * C[222] + B[203] * C[223] + B[218] * C[224]; 2018f30536b4SBarry Smith A[219] -= B[9] * C[210] + B[24] * C[211] + B[39] * C[212] + B[54] * C[213] + B[69] * C[214] + B[84] * C[215] + B[99] * C[216] + B[114] * C[217] + B[129] * C[218] + B[144] * C[219] + B[159] * C[220] + B[174] * C[221] + B[189] * C[222] + B[204] * C[223] + B[219] * C[224]; 2019f30536b4SBarry Smith A[220] -= B[10] * C[210] + B[25] * C[211] + B[40] * C[212] + B[55] * C[213] + B[70] * C[214] + B[85] * C[215] + B[100] * C[216] + B[115] * C[217] + B[130] * C[218] + B[145] * C[219] + B[160] * C[220] + B[175] * C[221] + B[190] * C[222] + B[205] * C[223] + B[220] * C[224]; 2020f30536b4SBarry Smith A[221] -= B[11] * C[210] + B[26] * C[211] + B[41] * C[212] + B[56] * C[213] + B[71] * C[214] + B[86] * C[215] + B[101] * C[216] + B[116] * C[217] + B[131] * C[218] + B[146] * C[219] + B[161] * C[220] + B[176] * C[221] + B[191] * C[222] + B[206] * C[223] + B[221] * C[224]; 2021f30536b4SBarry Smith A[222] -= B[12] * C[210] + B[27] * C[211] + B[42] * C[212] + B[57] * C[213] + B[72] * C[214] + B[87] * C[215] + B[102] * C[216] + B[117] * C[217] + B[132] * C[218] + B[147] * C[219] + B[162] * C[220] + B[177] * C[221] + B[192] * C[222] + B[207] * C[223] + B[222] * C[224]; 2022f30536b4SBarry Smith A[223] -= B[13] * C[210] + B[28] * C[211] + B[43] * C[212] + B[58] * C[213] + B[73] * C[214] + B[88] * C[215] + B[103] * C[216] + B[118] * C[217] + B[133] * C[218] + B[148] * C[219] + B[163] * C[220] + B[178] * C[221] + B[193] * C[222] + B[208] * C[223] + B[223] * C[224]; 2023f30536b4SBarry Smith A[224] -= B[14] * C[210] + B[29] * C[211] + B[44] * C[212] + B[59] * C[213] + B[74] * C[214] + B[89] * C[215] + B[104] * C[216] + B[119] * C[217] + B[134] * C[218] + B[149] * C[219] + B[164] * C[220] + B[179] * C[221] + B[194] * C[222] + B[209] * C[223] + B[224] * C[224]; 20243ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 20252b0b2ea7SShri Abhyankar } 2026bef36659SShri Abhyankar 20272593348eSBarry Smith #endif 2028