Actual source code: ex256.c
1: static char help[] = "Test some operations of SeqDense matrices with an LDA larger than M.\n";
3: #include <petscmat.h>
5: int main(int argc,char **argv)
6: {
7: Mat A,B;
8: PetscScalar *a,*b;
9: PetscInt n=4,lda=5,i;
11: PetscInitialize(&argc,&argv,0,help);
12: PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);
13: PetscOptionsGetInt(NULL,NULL,"-lda",&lda,NULL);
16: /*
17: * Create two identical matrices (MatDuplicate does not preserve lda)
18: */
19: PetscCalloc2(lda*n,&a,lda*n,&b);
20: for (i=0; i<n; i++) {
21: a[i+i*lda] = 1.0+2.0*PETSC_i;
22: if (i>0) a[i+(i-1)*lda] = 3.0-0.5*PETSC_i;
23: b[i+i*lda] = 1.0+2.0*PETSC_i;
24: if (i>0) b[i+(i-1)*lda] = 3.0-0.5*PETSC_i;
25: }
26: MatCreate(PETSC_COMM_SELF,&A);
27: MatSetSizes(A,n,n,n,n);
28: MatSetType(A,MATSEQDENSE);
29: MatSeqDenseSetPreallocation(A,a);
30: MatDenseSetLDA(A,lda);
32: MatCreate(PETSC_COMM_SELF,&B);
33: MatSetSizes(B,n,n,n,n);
34: MatSetType(B,MATSEQDENSE);
35: MatSeqDenseSetPreallocation(B,b);
36: MatDenseSetLDA(B,lda);
38: MatView(A,NULL);
39: MatConjugate(A);
40: MatView(A,NULL);
41: MatRealPart(A);
42: MatView(A,NULL);
43: MatImaginaryPart(B);
44: MatView(B,NULL);
46: PetscFree2(a,b);
47: MatDestroy(&A);
48: MatDestroy(&B);
49: PetscFinalize();
50: return 0;
51: }
53: /*TEST
55: build:
56: requires: complex
58: test:
60: TEST*/