Actual source code: blocktranspose.h
1: #if !defined(_BLOCKTRANSPOSE_H)
2: #define _BLOCKTRANSPOSE_H
4: #include <petscsys.h>
5: #include <petscblaslapack.h>
7: #define Kernel_A_gets_transpose_A_BODY(a,N) \
8: int i,j; \
9: for (i=0; i<N; i++) { \
10: for (j=i+1; j<N; j++) { \
11: MatScalar t = a[i*N+j]; \
12: a[i*N+j] = a[j*N+i]; \
13: a[j*N+i] = t; \
14: } \
15: } \
16: return 0
18: PETSC_STATIC_INLINE PetscErrorCode Kernel_A_gets_transpose_A_N (MatScalar *a,PetscInt N) {
19: Kernel_A_gets_transpose_A_BODY(a,N);
20: }
21: #define Kernel_A_gets_transpose_A_DECLARE(N) \
22: PETSC_STATIC_INLINE PetscErrorCode Kernel_A_gets_transpose_A_ ## N (MatScalar *a) { \
23: Kernel_A_gets_transpose_A_BODY(a,N); \
24: }
26: Kernel_A_gets_transpose_A_DECLARE(2)
27: Kernel_A_gets_transpose_A_DECLARE(3)
28: Kernel_A_gets_transpose_A_DECLARE(4)
29: Kernel_A_gets_transpose_A_DECLARE(5)
30: Kernel_A_gets_transpose_A_DECLARE(6)
31: Kernel_A_gets_transpose_A_DECLARE(7)
32: Kernel_A_gets_transpose_A_DECLARE(8)
33: Kernel_A_gets_transpose_A_DECLARE(9)
35: #endif