Actual source code: blocktranspose.h
petsc-3.3-p5 2012-12-01
1: #if !defined(_BLOCKTRANSPOSE_H)
2: #define _BLOCKTRANSPOSE_H
4: #include <petscsys.h>
5: #include <petscblaslapack.h>
7: #define PetscKernel_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 PetscKernel_A_gets_transpose_A_N (MatScalar *a,PetscInt N) {
19: PetscKernel_A_gets_transpose_A_BODY(a,N);
20: }
21: #define PetscKernel_A_gets_transpose_A_DECLARE(N) \
22: PETSC_STATIC_INLINE PetscErrorCode PetscKernel_A_gets_transpose_A_ ## N (MatScalar *a) { \
23: PetscKernel_A_gets_transpose_A_BODY(a,N); \
24: }
26: PetscKernel_A_gets_transpose_A_DECLARE(2)
27: PetscKernel_A_gets_transpose_A_DECLARE(3)
28: PetscKernel_A_gets_transpose_A_DECLARE(4)
29: PetscKernel_A_gets_transpose_A_DECLARE(5)
30: PetscKernel_A_gets_transpose_A_DECLARE(6)
31: PetscKernel_A_gets_transpose_A_DECLARE(7)
32: PetscKernel_A_gets_transpose_A_DECLARE(8)
33: PetscKernel_A_gets_transpose_A_DECLARE(9)
35: #endif