Actual source code: ex8.c
1: const char help[] = "Tests PetscDTBaryToIndex(), PetscDTIndexToBary(), PetscDTIndexToGradedOrder() and PetscDTGradedOrderToIndex()";
3: #include <petsc/private/petscimpl.h>
4: #include <petsc/private/dtimpl.h>
5: #include <petsc/private/petscfeimpl.h>
7: int main(int argc, char **argv)
8: {
9: PetscInt d, n, maxdim = 4;
10: PetscInt *btupprev, *btup;
11: PetscInt *gtup;
14: PetscInitialize(&argc, &argv, NULL, help);
15: PetscMalloc3(maxdim + 1, &btup, maxdim + 1, &btupprev, maxdim, >up);
16: for (d = 0; d <= maxdim; d++) {
17: for (n = 0; n <= d + 2; n++) {
18: PetscInt j, k, Nk, kchk;
20: PetscDTBinomialInt(d + n, d, &Nk);
21: for (k = 0; k < Nk; k++) {
22: PetscInt sum;
24: PetscDTIndexToBary(d + 1, n, k, btup);
25: for (j = 0, sum = 0; j < d + 1; j++) {
27: sum += btup[j];
28: }
30: PetscDTBaryToIndex(d + 1, n, btup, &kchk);
32: if (k) {
33: j = d;
34: while (j >= 0 && btup[j] == btupprev[j]) j--;
37: } else PetscArraycpy(btupprev, btup, d + 1);
38: PetscDTIndexToGradedOrder(d, Nk - 1 - k, gtup);
39: PetscDTGradedOrderToIndex(d, gtup, &kchk);
42: }
43: }
44: }
45: PetscFree3(btup, btupprev, gtup);
46: PetscFinalize();
47: return 0;
48: }
50: /*TEST
52: test:
54: TEST*/