Actual source code: ex83.c

  1: static char help[] = "Ensure matching C and Fortran constants (C variant)";

  3: #include <petscsys.h>

  5: PETSC_INTERN void get_constants(PetscReal *pi, PetscReal *phi, PetscReal *sqrt2, PetscReal *e, PetscReal *max_real, PetscReal *min_real, PetscReal *machine_epsilon, PetscReal *sqrt_machine_epsilon, PetscReal *small, PetscReal *infinity, PetscReal *ninfinity);

  7: int main(int argc, char **args)
  8: {
  9:   PetscReal pi, phi, sqrt2, e, max_real, min_real, machine_epsilon, sqrt_machine_epsilon, small, infinity, ninfinity;

 11:   PetscFunctionBeginUser;
 12:   PetscCall(PetscInitialize(&argc, &args, NULL, help));
 13:   PetscCall(PetscInitializeFortran());

 15:   get_constants(&pi, &phi, &sqrt2, &e, &max_real, &min_real, &machine_epsilon, &sqrt_machine_epsilon, &small, &infinity, &ninfinity);

 17:   PetscCheck(pi == PETSC_PI, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_PI: value differs between C and Fortran");
 18:   PetscCheck(phi == PETSC_PHI, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_PHI: value differs between C and Fortran");
 19:   PetscCheck(sqrt2 == PETSC_SQRT2, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_SQRT2: value differs between C and Fortran");
 20:   PetscCheck(e == PETSC_E, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_E: value differs between C and Fortran");
 21:   PetscCheck(max_real == PETSC_MAX_REAL, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_MAX_REAL: value differs between C and Fortran");
 22:   PetscCheck(min_real == PETSC_MIN_REAL, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_MIN_REAL: value differs between C and Fortran");
 23:   PetscCheck(machine_epsilon == PETSC_MACHINE_EPSILON, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_MACHINE_EPSILON: value differs between C and Fortran");
 24:   PetscCheck(sqrt_machine_epsilon == PETSC_SQRT_MACHINE_EPSILON, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_SQRT_MACHINE_EPSILON: value differs between C and Fortran");
 25:   PetscCheck(small == PETSC_SMALL, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_SMALL: value differs between C and Fortran");
 26:   PetscCheck(infinity == PETSC_INFINITY, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_INFINITY: value differs between C and Fortran");
 27:   PetscCheck(ninfinity == PETSC_NINFINITY, MPI_COMM_WORLD, PETSC_ERR_PLIB, "PETSC_NINFINITY: value differs between C and Fortran");
 28:   PetscCall(PetscFinalize());
 29:   return 0;
 30: }

 32: /*TEST

 34:    build:
 35:      depends: ex83f.F90
 36:      requires: fortran

 38:    test:
 39:      output_file: output/empty.out

 41: TEST*/