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