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