Actual source code: ex25.c
1: static char help[] = "Tests wrapping of math.h functions for real, complex, and scalar types \n";
2: #include <petscsys.h>
4: int main(int argc, char **argv)
5: {
6: PetscFunctionBeginUser;
7: PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
8: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Real tests:\n"));
9: {
10: PetscReal a, b, c;
11: a = PetscRealConstant(0.5);
12: c = PetscRealConstant(2.0);
14: b = PetscSqrtReal(a);
15: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)a, (double)b));
16: b = PetscCbrtReal(a);
17: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cbrt(%f) = %f\n", (double)a, (double)b));
19: b = PetscHypotReal(a, c);
20: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "hypot(%f,%f) = %f\n", (double)a, (double)c, (double)b));
21: b = PetscAtan2Real(a, c);
22: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan2(%f,%f) = %f\n", (double)a, (double)c, (double)b));
24: b = PetscPowReal(a, c);
25: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "pow(%f,%f) = %f\n", (double)a, (double)c, (double)b));
26: b = PetscExpReal(a);
27: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "exp(%f) = %f\n", (double)a, (double)b));
28: b = PetscLogReal(a);
29: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log(%f) = %f\n", (double)a, (double)b));
30: b = PetscLog10Real(a);
31: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log10(%f) = %f\n", (double)a, (double)b));
32: b = PetscLog2Real(a);
33: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log2(%f) = %f\n", (double)a, (double)b));
35: b = PetscSinReal(a);
36: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sin(%f) = %f\n", (double)a, (double)b));
37: b = PetscCosReal(a);
38: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cos(%f) = %f\n", (double)a, (double)b));
39: b = PetscTanReal(a);
40: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tan(%f) = %f\n", (double)a, (double)b));
42: b = PetscAsinReal(a);
43: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asin(%f) = %f\n", (double)a, (double)b));
44: b = PetscAcosReal(a);
45: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acos(%f) = %f\n", (double)a, (double)b));
46: b = PetscAtanReal(a);
47: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan(%f) = %f\n", (double)a, (double)b));
49: b = PetscSinhReal(a);
50: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sinh(%f) = %f\n", (double)a, (double)b));
51: b = PetscCoshReal(a);
52: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cosh(%f) = %f\n", (double)a, (double)b));
53: b = PetscTanhReal(a);
54: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tanh(%f) = %f\n", (double)a, (double)b));
56: b = PetscAsinhReal(a);
57: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asinh(%f) = %f\n", (double)a, (double)b));
58: b = PetscAcoshReal(c);
59: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acosh(%f) = %f\n", (double)c, (double)b));
60: b = PetscAtanhReal(a);
61: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atanh(%f) = %f\n", (double)a, (double)b));
63: b = PetscCeilReal(a);
64: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "ceil(%f) = %f\n", (double)a, (double)b));
65: b = PetscFloorReal(a);
66: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "floor(%f) = %f\n", (double)a, (double)b));
67: b = PetscFmodReal(a, c);
68: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "fmod(%f,%f) = %f\n", (double)a, (double)c, (double)b));
69: }
70: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Scalar tests:\n"));
71: {
72: PetscScalar a, b, c;
73: a = PetscRealConstant(0.5);
74: c = PetscRealConstant(2.0);
76: b = PetscAbsScalar(a);
77: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "abs(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
78: b = PetscArgScalar(a);
79: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "arg(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
80: b = PetscConj(a);
81: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "conj(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
83: b = PetscSqrtScalar(a);
84: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
86: b = PetscPowScalar(a, c);
87: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "pow(%f,%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(c), (double)PetscRealPart(b)));
88: b = PetscExpScalar(a);
89: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "exp(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
90: b = PetscLogScalar(a);
91: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
93: b = PetscSinScalar(a);
94: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sin(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
95: b = PetscCosScalar(a);
96: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cos(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
97: b = PetscTanScalar(a);
98: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tan(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
100: b = PetscAsinScalar(a);
101: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asin(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
102: b = PetscAcosScalar(a);
103: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acos(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
104: b = PetscAtanScalar(a);
105: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
107: b = PetscSinhScalar(a);
108: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sinh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
109: b = PetscCoshScalar(a);
110: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cosh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
111: b = PetscTanhScalar(a);
112: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tanh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
114: b = PetscAsinhScalar(a);
115: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asinh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
116: b = PetscAcoshScalar(c);
117: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acosh(%f) = %f\n", (double)PetscRealPart(c), (double)PetscRealPart(b)));
118: b = PetscAtanhScalar(a);
119: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atanh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
120: }
121: PetscCall(PetscFinalize());
122: return 0;
123: }
125: /*TEST
127: test:
129: TEST*/