Open
Description
Currently, we are using double precision. Consider having the option of:
- exporting multiple precisions
- specify the precision via preprocessor flag
For 2, I usually would do something like this:
#ifdef REAL32
integer,parameter,public :: minpack_rk = real32 !! real kind used by this module [4 bytes]
#elif REAL64
integer,parameter,public :: minpack_rk = real64 !! real kind used by this module [8 bytes]
#elif REAL128
integer,parameter,public :: minpack_rk = real128 !! real kind used by this module [16 bytes]
#else
integer,parameter,public :: minpack_rk = real64 !! real kind used by this module [8 bytes]
#endif
integer,parameter,private :: wp = minpack_rk !! local copy of `minpack_rk` with a shorter name
So, if you do nothing, you get double precision. The module also doesn't export wp
, since that is too short a variable name to be exporting (if you want it, you will get minpack_rk
).
For 1: Look at what I did for quadpack. Not sure we need that for minpack though. Are there use cases for having multiple versions in the same project with different precisions?