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*/