В 2013 году встал вопрос о преобразовании большого рабочего кода из двойной точности в четверную: to-quadruple-precision-how-to-r">Преобразование рабочего кода из двойной точности в четырехкратную: как читать числа с четырехкратной точностью в FORTRAN из входного файла", и консенсус состоял в том, чтобы объявить переменные с помощью регулируемого параметра «WP», который указывает «рабочую точность», вместо того, чтобы иметь отдельную версию программы с переменными, объявленными с помощью D + 01, и другую версию с использованием Q + 01. Таким образом, мы можем легко переключаться туда и обратно, определяя WP=real128 или WP=real64 вверху, а остальное менять не нужно.
Но как мы это делаем?
Я попробовал предложение в ответе на этот вопрос, сделав простой код TEST.F90:
PROGRAM TEST
use ISO_FORTRAN_ENV
WP= real128
IMPLICIT NONE
real (WP) :: X
X= 5.4857990945E-4_WP
END PROGRAM TEST
скомпилировано с:
~/gcc-4.6/bin/gfortran -o tst.x TEST.F90
Но это дает:
IMPLICIT NONE
1
Error: Unexpected IMPLICIT NONE statement at (1)
QLEVEL16.F90:5.12:
real (WP) :: MEL
1
Error: Parameter 'wp' at (1) has not been declared or is a variable, which does not reduce to a constant expression
QLEVEL16.F90:6.29:
MEL= 5.4857990945E-4_WP
1
Error: Missing kind-parameter at (1)