precision_m

precision_m #

Description #

Module containing static types for single and double precision. Note that nvfortran has the options that can be used to demote/promote the precision of real variable/parameter declarations e.g. -r4 asks the compiler to interpret real declarations as real(4), -r8 interprets real as real(8), and -M[no]r8 will promote real declarations to double precision. nvc, nvcc, and nvc++ don’t have an equivalent as far as I know.

Code (C++) #

#ifndef PRECISION
	#define PRECISION
	// Compile with -DDOUBLE to compile with double precision
	#ifdef DOUBLE
		typedef double userfp_t;
	#else
		typedef float userfp_t;
	#endif
#endif

Code (Fortran) #

module precision_m
	integer, parameter:: sf = kind(0.)
	integer, parameter:: df = kind(0.d0)

	! compile with -DDOUBLE to compile with double precision
#ifdef DOUBLE
	integer, parameter:: f = df
#else
	integer, parameter:: f = sf
#endif

end module precision_m