xref: /petsc/src/sys/tests/ex25.c (revision 732aec7a18f2199fb53bb9a2f3aef439a834ce31)
1c4762a1bSJed Brown static char help[] = "Tests wrapping of math.h functions for real, complex, and scalar types \n";
2c4762a1bSJed Brown #include <petscsys.h>
3c4762a1bSJed Brown 
main(int argc,char ** argv)4d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
5d71ae5a4SJacob Faibussowitsch {
6327415f7SBarry Smith   PetscFunctionBeginUser;
7*c8025a54SPierre Jolivet   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
89566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Real tests:\n"));
9c4762a1bSJed Brown   {
10c4762a1bSJed Brown     PetscReal a, b, c;
11c4762a1bSJed Brown     a = PetscRealConstant(0.5);
12c4762a1bSJed Brown     c = PetscRealConstant(2.0);
13c4762a1bSJed Brown 
14c4762a1bSJed Brown     b = PetscSqrtReal(a);
159566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)a, (double)b));
16c4762a1bSJed Brown     b = PetscCbrtReal(a);
179566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cbrt(%f) = %f\n", (double)a, (double)b));
18c4762a1bSJed Brown 
19c4762a1bSJed Brown     b = PetscHypotReal(a, c);
209566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "hypot(%f,%f) = %f\n", (double)a, (double)c, (double)b));
21c4762a1bSJed Brown     b = PetscAtan2Real(a, c);
229566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan2(%f,%f) = %f\n", (double)a, (double)c, (double)b));
23c4762a1bSJed Brown 
24c4762a1bSJed Brown     b = PetscPowReal(a, c);
259566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "pow(%f,%f) = %f\n", (double)a, (double)c, (double)b));
26c4762a1bSJed Brown     b = PetscExpReal(a);
279566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "exp(%f) = %f\n", (double)a, (double)b));
28c4762a1bSJed Brown     b = PetscLogReal(a);
299566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log(%f) = %f\n", (double)a, (double)b));
30c4762a1bSJed Brown     b = PetscLog10Real(a);
319566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log10(%f) = %f\n", (double)a, (double)b));
32c4762a1bSJed Brown     b = PetscLog2Real(a);
339566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log2(%f) = %f\n", (double)a, (double)b));
34c4762a1bSJed Brown 
35c4762a1bSJed Brown     b = PetscSinReal(a);
369566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sin(%f) = %f\n", (double)a, (double)b));
37c4762a1bSJed Brown     b = PetscCosReal(a);
389566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cos(%f) = %f\n", (double)a, (double)b));
39c4762a1bSJed Brown     b = PetscTanReal(a);
409566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tan(%f) = %f\n", (double)a, (double)b));
41c4762a1bSJed Brown 
42c4762a1bSJed Brown     b = PetscAsinReal(a);
439566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asin(%f) = %f\n", (double)a, (double)b));
44c4762a1bSJed Brown     b = PetscAcosReal(a);
459566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acos(%f) = %f\n", (double)a, (double)b));
46c4762a1bSJed Brown     b = PetscAtanReal(a);
479566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan(%f) = %f\n", (double)a, (double)b));
48c4762a1bSJed Brown 
49c4762a1bSJed Brown     b = PetscSinhReal(a);
509566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sinh(%f) = %f\n", (double)a, (double)b));
51c4762a1bSJed Brown     b = PetscCoshReal(a);
529566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cosh(%f) = %f\n", (double)a, (double)b));
53c4762a1bSJed Brown     b = PetscTanhReal(a);
549566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tanh(%f) = %f\n", (double)a, (double)b));
55c4762a1bSJed Brown 
56c4762a1bSJed Brown     b = PetscAsinhReal(a);
579566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asinh(%f) = %f\n", (double)a, (double)b));
58c4762a1bSJed Brown     b = PetscAcoshReal(c);
599566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acosh(%f) = %f\n", (double)c, (double)b));
60c4762a1bSJed Brown     b = PetscAtanhReal(a);
619566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atanh(%f) = %f\n", (double)a, (double)b));
62c4762a1bSJed Brown 
63c4762a1bSJed Brown     b = PetscCeilReal(a);
649566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "ceil(%f) = %f\n", (double)a, (double)b));
65c4762a1bSJed Brown     b = PetscFloorReal(a);
669566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "floor(%f) = %f\n", (double)a, (double)b));
67c4762a1bSJed Brown     b = PetscFmodReal(a, c);
689566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "fmod(%f,%f) = %f\n", (double)a, (double)c, (double)b));
69c4762a1bSJed Brown   }
709566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Scalar tests:\n"));
71c4762a1bSJed Brown   {
72c4762a1bSJed Brown     PetscScalar a, b, c;
73c4762a1bSJed Brown     a = PetscRealConstant(0.5);
74c4762a1bSJed Brown     c = PetscRealConstant(2.0);
75c4762a1bSJed Brown 
76c4762a1bSJed Brown     b = PetscAbsScalar(a);
779566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "abs(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
78c4762a1bSJed Brown     b = PetscArgScalar(a);
799566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "arg(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
80c4762a1bSJed Brown     b = PetscConj(a);
819566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "conj(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
82c4762a1bSJed Brown 
83c4762a1bSJed Brown     b = PetscSqrtScalar(a);
849566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
85c4762a1bSJed Brown 
86c4762a1bSJed Brown     b = PetscPowScalar(a, c);
879566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "pow(%f,%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(c), (double)PetscRealPart(b)));
88c4762a1bSJed Brown     b = PetscExpScalar(a);
899566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "exp(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
90c4762a1bSJed Brown     b = PetscLogScalar(a);
919566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
92c4762a1bSJed Brown 
93c4762a1bSJed Brown     b = PetscSinScalar(a);
949566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sin(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
95c4762a1bSJed Brown     b = PetscCosScalar(a);
969566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cos(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
97c4762a1bSJed Brown     b = PetscTanScalar(a);
989566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tan(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
99c4762a1bSJed Brown 
100c4762a1bSJed Brown     b = PetscAsinScalar(a);
1019566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asin(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
102c4762a1bSJed Brown     b = PetscAcosScalar(a);
1039566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acos(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
104c4762a1bSJed Brown     b = PetscAtanScalar(a);
1059566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
106c4762a1bSJed Brown 
107c4762a1bSJed Brown     b = PetscSinhScalar(a);
1089566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sinh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
109c4762a1bSJed Brown     b = PetscCoshScalar(a);
1109566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cosh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
111c4762a1bSJed Brown     b = PetscTanhScalar(a);
1129566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tanh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
113c4762a1bSJed Brown 
114c4762a1bSJed Brown     b = PetscAsinhScalar(a);
1159566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asinh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
116c4762a1bSJed Brown     b = PetscAcoshScalar(c);
1179566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acosh(%f) = %f\n", (double)PetscRealPart(c), (double)PetscRealPart(b)));
118c4762a1bSJed Brown     b = PetscAtanhScalar(a);
1199566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atanh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
120c4762a1bSJed Brown   }
1219566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
122b122ec5aSJacob Faibussowitsch   return 0;
123c4762a1bSJed Brown }
124c4762a1bSJed Brown 
125c4762a1bSJed Brown /*TEST
126c4762a1bSJed Brown 
127c4762a1bSJed Brown    test:
128c4762a1bSJed Brown 
129c4762a1bSJed Brown TEST*/
130