Actual source code: ex25.c

  1: static char help[] = "Tests wrapping of math.h functions for real, complex, and scalar types \n";
  2: #include <petscsys.h>

  4: int main(int argc, char **argv)
  5: {
  6:   PetscFunctionBeginUser;
  7:   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
  8:   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Real tests:\n"));
  9:   {
 10:     PetscReal a, b, c;
 11:     a = PetscRealConstant(0.5);
 12:     c = PetscRealConstant(2.0);

 14:     b = PetscSqrtReal(a);
 15:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)a, (double)b));
 16:     b = PetscCbrtReal(a);
 17:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cbrt(%f) = %f\n", (double)a, (double)b));

 19:     b = PetscHypotReal(a, c);
 20:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "hypot(%f,%f) = %f\n", (double)a, (double)c, (double)b));
 21:     b = PetscAtan2Real(a, c);
 22:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan2(%f,%f) = %f\n", (double)a, (double)c, (double)b));

 24:     b = PetscPowReal(a, c);
 25:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "pow(%f,%f) = %f\n", (double)a, (double)c, (double)b));
 26:     b = PetscExpReal(a);
 27:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "exp(%f) = %f\n", (double)a, (double)b));
 28:     b = PetscLogReal(a);
 29:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log(%f) = %f\n", (double)a, (double)b));
 30:     b = PetscLog10Real(a);
 31:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log10(%f) = %f\n", (double)a, (double)b));
 32:     b = PetscLog2Real(a);
 33:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log2(%f) = %f\n", (double)a, (double)b));

 35:     b = PetscSinReal(a);
 36:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sin(%f) = %f\n", (double)a, (double)b));
 37:     b = PetscCosReal(a);
 38:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cos(%f) = %f\n", (double)a, (double)b));
 39:     b = PetscTanReal(a);
 40:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tan(%f) = %f\n", (double)a, (double)b));

 42:     b = PetscAsinReal(a);
 43:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asin(%f) = %f\n", (double)a, (double)b));
 44:     b = PetscAcosReal(a);
 45:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acos(%f) = %f\n", (double)a, (double)b));
 46:     b = PetscAtanReal(a);
 47:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan(%f) = %f\n", (double)a, (double)b));

 49:     b = PetscSinhReal(a);
 50:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sinh(%f) = %f\n", (double)a, (double)b));
 51:     b = PetscCoshReal(a);
 52:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cosh(%f) = %f\n", (double)a, (double)b));
 53:     b = PetscTanhReal(a);
 54:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tanh(%f) = %f\n", (double)a, (double)b));

 56:     b = PetscAsinhReal(a);
 57:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asinh(%f) = %f\n", (double)a, (double)b));
 58:     b = PetscAcoshReal(c);
 59:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acosh(%f) = %f\n", (double)c, (double)b));
 60:     b = PetscAtanhReal(a);
 61:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atanh(%f) = %f\n", (double)a, (double)b));

 63:     b = PetscCeilReal(a);
 64:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "ceil(%f) = %f\n", (double)a, (double)b));
 65:     b = PetscFloorReal(a);
 66:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "floor(%f) = %f\n", (double)a, (double)b));
 67:     b = PetscFmodReal(a, c);
 68:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "fmod(%f,%f) = %f\n", (double)a, (double)c, (double)b));
 69:   }
 70:   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Scalar tests:\n"));
 71:   {
 72:     PetscScalar a, b, c;
 73:     a = PetscRealConstant(0.5);
 74:     c = PetscRealConstant(2.0);

 76:     b = PetscAbsScalar(a);
 77:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "abs(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
 78:     b = PetscArgScalar(a);
 79:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "arg(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
 80:     b = PetscConj(a);
 81:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "conj(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));

 83:     b = PetscSqrtScalar(a);
 84:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));

 86:     b = PetscPowScalar(a, c);
 87:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "pow(%f,%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(c), (double)PetscRealPart(b)));
 88:     b = PetscExpScalar(a);
 89:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "exp(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
 90:     b = PetscLogScalar(a);
 91:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "log(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));

 93:     b = PetscSinScalar(a);
 94:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sin(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
 95:     b = PetscCosScalar(a);
 96:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cos(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
 97:     b = PetscTanScalar(a);
 98:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tan(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));

100:     b = PetscAsinScalar(a);
101:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asin(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
102:     b = PetscAcosScalar(a);
103:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acos(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
104:     b = PetscAtanScalar(a);
105:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atan(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));

107:     b = PetscSinhScalar(a);
108:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "sinh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
109:     b = PetscCoshScalar(a);
110:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cosh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
111:     b = PetscTanhScalar(a);
112:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "tanh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));

114:     b = PetscAsinhScalar(a);
115:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "asinh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
116:     b = PetscAcoshScalar(c);
117:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "acosh(%f) = %f\n", (double)PetscRealPart(c), (double)PetscRealPart(b)));
118:     b = PetscAtanhScalar(a);
119:     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "atanh(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b)));
120:   }
121:   PetscCall(PetscFinalize());
122:   return 0;
123: }

125: /*TEST

127:    test:

129: TEST*/