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: {
  7:   PetscInitialize(&argc, &argv, (char *)0, help);
  8:   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:     PetscPrintf(PETSC_COMM_WORLD, "sqrt(%f) = %f\n", (double)a, (double)b);
 16:     b = PetscCbrtReal(a);
 17:     PetscPrintf(PETSC_COMM_WORLD, "cbrt(%f) = %f\n", (double)a, (double)b);

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

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

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

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

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

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

 63:     b = PetscCeilReal(a);
 64:     PetscPrintf(PETSC_COMM_WORLD, "ceil(%f) = %f\n", (double)a, (double)b);
 65:     b = PetscFloorReal(a);
 66:     PetscPrintf(PETSC_COMM_WORLD, "floor(%f) = %f\n", (double)a, (double)b);
 67:     b = PetscFmodReal(a, c);
 68:     PetscPrintf(PETSC_COMM_WORLD, "fmod(%f,%f) = %f\n", (double)a, (double)c, (double)b);
 69:   }
 70:   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:     PetscPrintf(PETSC_COMM_WORLD, "abs(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b));
 78:     b = PetscArgScalar(a);
 79:     PetscPrintf(PETSC_COMM_WORLD, "arg(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b));
 80:     b = PetscConj(a);
 81:     PetscPrintf(PETSC_COMM_WORLD, "conj(%f) = %f\n", (double)PetscRealPart(a), (double)PetscRealPart(b));

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

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

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

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

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

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

125: /*TEST

127:    test:

129: TEST*/