1 static char help[] = "Tests wrapping of math.h functions for real, complex, and scalar types \n";
2 #include <petscsys.h>
3
main(int argc,char ** argv)4 int main(int argc, char **argv)
5 {
6 PetscFunctionBeginUser;
7 PetscCall(PetscInitialize(&argc, &argv, NULL, 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);
13
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));
18
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));
23
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));
34
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));
41
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));
48
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));
55
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));
62
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);
75
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)));
82
83 b = PetscSqrtScalar(a);
84 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
85
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)));
92
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)));
99
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)));
106
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)));
113
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 }
124
125 /*TEST
126
127 test:
128
129 TEST*/
130