xref: /petsc/src/sys/tests/ex10.c (revision 0baf8eba40dbc839082666f9f7396a225d6f663c)
1 static char help[] = "Tests PetscArraymove()/PetscMemmove()\n";
2 
3 #include <petscsys.h>
4 
5 int main(int argc, char **argv)
6 {
7   PetscInt i, *a, *b;
8 
9   PetscFunctionBeginUser;
10   PetscCall(PetscInitialize(&argc, &argv, NULL, 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