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