Странное поведение с использованием четверной точности в Фортране с использованием Mingw (версия Anaconda)
- Windows 7 64 бит
- GNU Fortran (GCC) 4.7.0 20111220 (экспериментальная версия) -> Версия MinGW с 64-разрядной версией Anaconda3/Miniconda3.
Всем привет,
Я пытаюсь скомпилировать некоторый код на Фортране для использования из Python, используя F2Py. Полный проект - Solcore, на случай, если кому-то будет интересно. В Linux и MacOS все работает нормально, проблема с Windows. После некоторых усилий я прибил проблему к четырем точным переменным моего кода на Фортране, которые не обрабатываются должным образом.
Минимальный пример, который отлично работает в Linux/MacOS, но не в Windows:
program foo
real*16 q, q2
q = 20
q2 = q+q
print*, q, q2
end program foo
В Linux/MacOS это печатает, как и ожидалось:
20.0000000000000000000000000000000000 40.0000000000000000000000000000000000
Однако в Windows я получаю:
2.00000000000000000000000000000000000E+0001 1.68105157155604675313133890866087630E-4932
Оставляя в стороне научные обозначения, очевидно, что это не то, что я ожидал. Тот же самый результат появляется всякий раз, когда я пытаюсь выполнить операцию с переменными четверной точности, и я не могу найти способ.
Это не та же ошибка, на которую уже указывали переменные с четверной точностью в Fortran и версия MinGW, включенная в Anaconda.
Любое предложение будет более чем приветствоваться. Пожалуйста, имейте в виду, что, в конечном счете, мне нужно сделать эту работу с F2Py, и MinGW, включенный в Anaconda, - единственный способ, который я нашел в конце, чтобы заставить его работать после прочтения многих инструкций и руководств. Поэтому я бы предпочел придерживаться этого, если это возможно.
Большое спасибо,
Диего