Actual source code: ex84f.F90
1: #include <petsc/finclude/petscsys.h>
2: ! Ensure matching C and Fortran constants (Fortran variant)
3: program ex84
4: use PETScSys
5: implicit none
7: interface
8: subroutine get_constants(pi, phi, sqrt2, e, max_real, min_real, machine_epsilon, sqrt_machine_epsilon, small, infinity, ninfinity) bind(c)
9: use PETScSys
10: implicit none(type, external)
11: PetscReal, intent(out) :: pi, phi, sqrt2, e, max_real, min_real, machine_epsilon, sqrt_machine_epsilon, small, infinity, ninfinity
13: end subroutine get_constants
14: end interface
16: PetscReal :: pi, phi, sqrt2, e, max_real, min_real, machine_epsilon, sqrt_machine_epsilon, small, infinity, ninfinity
17: PetscErrorCode :: ierr
19: PetscCallA(PetscInitialize(ierr))
20: call get_constants(pi, phi, sqrt2, e, max_real, min_real, machine_epsilon, sqrt_machine_epsilon, small, infinity, ninfinity)
22: PetscCheckA(pi == PETSC_PI, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_PI: value differs between C and Fortran')
23: PetscCheckA(phi == PETSC_PHI, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_PHI: value differs between C and Fortran')
24: PetscCheckA(sqrt2 == PETSC_SQRT2, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_SQRT2: value differs between C and Fortran')
25: PetscCheckA(e == PETSC_E, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_E: value differs between C and Fortran')
26: PetscCheckA(max_real == PETSC_MAX_REAL, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_MAX_REAL: value differs between C and Fortran')
27: PetscCheckA(min_real == PETSC_MIN_REAL, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_MIN_REAL: value differs between C and Fortran')
28: PetscCheckA(machine_epsilon == PETSC_MACHINE_EPSILON, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_MACHINE_EPSILON: value differs between C and Fortran')
29: PetscCheckA(sqrt_machine_epsilon == PETSC_SQRT_MACHINE_EPSILON, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_SQRT_MACHINE_EPSILON: value differs between C and Fortran')
30: PetscCheckA(small == PETSC_SMALL, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_SMALL: value differs between C and Fortran')
31: PetscCheckA(infinity == PETSC_INFINITY, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_INFINITY: value differs between C and Fortran')
32: PetscCheckA(ninfinity == PETSC_NINFINITY, MPI_COMM_WORLD, PETSC_ERR_PLIB, 'PETSC_NINFINITY: value differs between C and Fortran')
33: PetscCallA(PetscFinalize(ierr))
34: end program ex84
36: !/*TEST
37: !
38: ! build:
39: ! depends: ex84.c
40: !
41: ! test:
42: ! output_file: output/empty.out
43: !
44: !TEST*/