xref: /petsc/src/sys/tests/ex25.c (revision 327415f76d85372a4417cf1aaa14db707d4d6c04)
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 
4c4762a1bSJed Brown int main(int argc,char **argv)
5c4762a1bSJed Brown {
6c4762a1bSJed Brown 
7*327415f7SBarry Smith   PetscFunctionBeginUser;
89566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc,&argv,(char*)0,help));
99566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Real tests:\n"));
10c4762a1bSJed Brown   {
11c4762a1bSJed Brown     PetscReal a,b,c;
12c4762a1bSJed Brown     a = PetscRealConstant(0.5);
13c4762a1bSJed Brown     c = PetscRealConstant(2.0);
14c4762a1bSJed Brown 
15c4762a1bSJed Brown     b = PetscSqrtReal(a);
169566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"sqrt(%f) = %f\n",(double)a,(double)b));
17c4762a1bSJed Brown     b = PetscCbrtReal(a);
189566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"cbrt(%f) = %f\n",(double)a,(double)b));
19c4762a1bSJed Brown 
20c4762a1bSJed Brown     b = PetscHypotReal(a,c);
219566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"hypot(%f,%f) = %f\n",(double)a,(double)c,(double)b));
22c4762a1bSJed Brown     b = PetscAtan2Real(a,c);
239566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"atan2(%f,%f) = %f\n",(double)a,(double)c,(double)b));
24c4762a1bSJed Brown 
25c4762a1bSJed Brown     b = PetscPowReal(a,c);
269566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"pow(%f,%f) = %f\n",(double)a,(double)c,(double)b));
27c4762a1bSJed Brown     b = PetscExpReal(a);
289566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"exp(%f) = %f\n",(double)a,(double)b));
29c4762a1bSJed Brown     b = PetscLogReal(a);
309566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"log(%f) = %f\n",(double)a,(double)b));
31c4762a1bSJed Brown     b = PetscLog10Real(a);
329566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"log10(%f) = %f\n",(double)a,(double)b));
33c4762a1bSJed Brown     b = PetscLog2Real(a);
349566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"log2(%f) = %f\n",(double)a,(double)b));
35c4762a1bSJed Brown 
36c4762a1bSJed Brown     b = PetscSinReal(a);
379566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"sin(%f) = %f\n",(double)a,(double)b));
38c4762a1bSJed Brown     b = PetscCosReal(a);
399566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"cos(%f) = %f\n",(double)a,(double)b));
40c4762a1bSJed Brown     b = PetscTanReal(a);
419566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"tan(%f) = %f\n",(double)a,(double)b));
42c4762a1bSJed Brown 
43c4762a1bSJed Brown     b = PetscAsinReal(a);
449566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"asin(%f) = %f\n",(double)a,(double)b));
45c4762a1bSJed Brown     b = PetscAcosReal(a);
469566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"acos(%f) = %f\n",(double)a,(double)b));
47c4762a1bSJed Brown     b = PetscAtanReal(a);
489566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"atan(%f) = %f\n",(double)a,(double)b));
49c4762a1bSJed Brown 
50c4762a1bSJed Brown     b = PetscSinhReal(a);
519566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"sinh(%f) = %f\n",(double)a,(double)b));
52c4762a1bSJed Brown     b = PetscCoshReal(a);
539566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"cosh(%f) = %f\n",(double)a,(double)b));
54c4762a1bSJed Brown     b = PetscTanhReal(a);
559566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"tanh(%f) = %f\n",(double)a,(double)b));
56c4762a1bSJed Brown 
57c4762a1bSJed Brown     b = PetscAsinhReal(a);
589566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"asinh(%f) = %f\n",(double)a,(double)b));
59c4762a1bSJed Brown     b = PetscAcoshReal(c);
609566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"acosh(%f) = %f\n",(double)c,(double)b));
61c4762a1bSJed Brown     b = PetscAtanhReal(a);
629566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"atanh(%f) = %f\n",(double)a,(double)b));
63c4762a1bSJed Brown 
64c4762a1bSJed Brown     b = PetscCeilReal(a);
659566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"ceil(%f) = %f\n",(double)a,(double)b));
66c4762a1bSJed Brown     b = PetscFloorReal(a);
679566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"floor(%f) = %f\n",(double)a,(double)b));
68c4762a1bSJed Brown     b = PetscFmodReal(a,c);
699566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"fmod(%f,%f) = %f\n",(double)a,(double)c,(double)b));
70c4762a1bSJed Brown   }
719566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Scalar tests:\n"));
72c4762a1bSJed Brown   {
73c4762a1bSJed Brown     PetscScalar a,b,c;
74c4762a1bSJed Brown     a = PetscRealConstant(0.5);
75c4762a1bSJed Brown     c = PetscRealConstant(2.0);
76c4762a1bSJed Brown 
77c4762a1bSJed Brown     b = PetscAbsScalar(a);
789566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"abs(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
79c4762a1bSJed Brown     b = PetscArgScalar(a);
809566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"arg(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
81c4762a1bSJed Brown     b = PetscConj(a);
829566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"conj(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
83c4762a1bSJed Brown 
84c4762a1bSJed Brown     b = PetscSqrtScalar(a);
859566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"sqrt(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
86c4762a1bSJed Brown 
87c4762a1bSJed Brown     b = PetscPowScalar(a,c);
889566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"pow(%f,%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(c),(double)PetscRealPart(b)));
89c4762a1bSJed Brown     b = PetscExpScalar(a);
909566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"exp(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
91c4762a1bSJed Brown     b = PetscLogScalar(a);
929566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"log(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
93c4762a1bSJed Brown 
94c4762a1bSJed Brown     b = PetscSinScalar(a);
959566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"sin(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
96c4762a1bSJed Brown     b = PetscCosScalar(a);
979566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"cos(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
98c4762a1bSJed Brown     b = PetscTanScalar(a);
999566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"tan(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
100c4762a1bSJed Brown 
101c4762a1bSJed Brown     b = PetscAsinScalar(a);
1029566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"asin(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
103c4762a1bSJed Brown     b = PetscAcosScalar(a);
1049566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"acos(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
105c4762a1bSJed Brown     b = PetscAtanScalar(a);
1069566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"atan(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
107c4762a1bSJed Brown 
108c4762a1bSJed Brown     b = PetscSinhScalar(a);
1099566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"sinh(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
110c4762a1bSJed Brown     b = PetscCoshScalar(a);
1119566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"cosh(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
112c4762a1bSJed Brown     b = PetscTanhScalar(a);
1139566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"tanh(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
114c4762a1bSJed Brown 
115c4762a1bSJed Brown     b = PetscAsinhScalar(a);
1169566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"asinh(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
117c4762a1bSJed Brown     b = PetscAcoshScalar(c);
1189566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"acosh(%f) = %f\n",(double)PetscRealPart(c),(double)PetscRealPart(b)));
119c4762a1bSJed Brown     b = PetscAtanhScalar(a);
1209566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"atanh(%f) = %f\n",(double)PetscRealPart(a),(double)PetscRealPart(b)));
121c4762a1bSJed Brown   }
1229566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
123b122ec5aSJacob Faibussowitsch   return 0;
124c4762a1bSJed Brown }
125c4762a1bSJed Brown 
126c4762a1bSJed Brown /*TEST
127c4762a1bSJed Brown 
128c4762a1bSJed Brown    test:
129c4762a1bSJed Brown 
130c4762a1bSJed Brown TEST*/
131