Gromacs  2019
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Typedefs | Functions
+ This graph shows which files directly or indirectly include this file:

Description

Declares real and related constants.

Macros

#define GMX_DOUBLE_EPS   2.2204460492503131e-16
 Double precision accuracy.
 
#define GMX_DOUBLE_MAX   1.7976931348623157e+308
 Maximum double precision value - reduced 1 unit in last digit for MSVC.
 
#define GMX_DOUBLE_MIN   2.2250738585072014e-308
 Minimum double precision value.
 
#define GMX_FLOAT_EPS   1.19209290e-07F
 Single precision accuracy.
 
#define GMX_FLOAT_MAX   3.40282346E+38F
 Maximum single precision value - reduced 1 unit in last digit for MSVC.
 
#define GMX_FLOAT_MIN   1.175494351E-38F
 Minimum single precision value.
 
#define GMX_DOUBLE_NEGZERO   (-0.0)
 Negative zero in double.
 
#define GMX_FLOAT_NEGZERO   (-0.0f)
 Negative zero in float.
 
#define GMX_FLOAT_MAX_SIMD_WIDTH   16
 The maximum supported number of float elements in a SIMD register.
 
#define GMX_DOUBLE_MAX_SIMD_WIDTH   8
 The maximum supported number of double elements in a SIMD register.
 
#define HAVE_REAL
 Used to check whether real is already defined.
 
#define GMX_MPI_REAL   MPI_FLOAT
 MPI data type for real.
 
#define GMX_REAL_EPS   GMX_FLOAT_EPS
 Accuracy for real.
 
#define GMX_REAL_MIN   GMX_FLOAT_MIN
 Smallest non-zero value for real.
 
#define GMX_REAL_MAX   GMX_FLOAT_MAX
 Largest finite value for real.
 
#define GMX_REAL_NEGZERO   GMX_FLOAT_NEGZERO
 Negative zero for real.
 
#define gmx_real_fullprecision_pfmt   "%14.7e"
 Format string for full real precision.
 
#define GMX_REAL_MAX_SIMD_WIDTH   GMX_FLOAT_MAX_SIMD_WIDTH
 The maximum supported number of real elements in a SIMD register.
 

Typedefs

typedef float real
 Precision-dependent GROMACS floating-point type.
 

Functions

constexpr real operator""_real (long double x)
 User defined literal for real numbers. More...
 

Function Documentation

constexpr real operator""_real ( long double  x)

User defined literal for real numbers.

Examples: 2._real, 2.5_real, .5_real. The number is always of type real.

It is best to use a real constant whenever it is used only with operands which are real. If a constant is double than the compiler is forced to do operations directly involving the constant in double even if all variables are real. A constant shouldn't be real when used with double operands, because then the constant is less accurate with GMX_DOUBLE=no.

See https://en.cppreference.com/w/cpp/language/user_literal for details on this lanuage feature.