xref: /petsc/src/sys/tests/ex10.c (revision f97672e55eacc8688507b9471cd7ec2664d7f203)
1 
2 static char help[] = "Tests PetscArraymove()/PetscMemmove()\n";
3 
4 #include <petscsys.h>
5 
6 int main(int argc,char **argv)
7 {
8   PetscInt       i,*a,*b;
9 
10   PetscCall(PetscInitialize(&argc,&argv,(char*)0,help));
11 
12   PetscCall(PetscMalloc1(10,&a));
13   PetscCall(PetscMalloc1(20,&b));
14 
15   /*
16       Nonoverlapping regions
17   */
18   for (i=0; i<20; i++) b[i] = i;
19   PetscCall(PetscArraymove(a,b,10));
20   PetscCall(PetscIntView(10,a,NULL));
21 
22   PetscCall(PetscFree(a));
23 
24   /*
25      |        |                |       |
26      b        a               b+15    b+20
27                               a+10    a+15
28   */
29   a    = b + 5;
30   PetscCall(PetscArraymove(a,b,15));
31   PetscCall(PetscIntView(15,a,NULL));
32   PetscCall(PetscFree(b));
33 
34   /*
35      |       |                    |       |
36      a       b                   a+20   a+25
37                                         b+20
38   */
39   PetscCall(PetscMalloc1(25,&a));
40   b    = a + 5;
41   for (i=0; i<20; i++) b[i] = i;
42   PetscCall(PetscArraymove(a,b,20));
43   PetscCall(PetscIntView(20,a,NULL));
44   PetscCall(PetscFree(a));
45 
46   PetscCall(PetscFinalize());
47   return 0;
48 }
49 
50 /*TEST
51 
52    test:
53 
54 TEST*/
55