f2py теряет двойную точность при переходе на python

Кажется, я не могу создать свой модуль с помощью f2py, чтобы сохранить число с двойной точностью, когда оно передается обратно в python. Минимальный пример с файлом fmodules.f90:

      subroutine example(output)
              implicit none
              double precision :: output
cf2py         intent(out) :: output
              output = 1.3
      end subroutine example

Затем я создаю модуль с помощью f2py:

$ f2py -c -m fmodules fmodules.f90

и вызовем его из python:

>>> from fmodules import example
>>> example()
1.2999999523162842

По моим подсчетам, это около 8 знаков точности. У меня сложилось впечатление, что двойная точность должна давать около 16. Я перепробовал все возможные варианты, включая игру с файлом .f2py_f2cmap. Любые идеи о том, что мне не хватает?


person Andy    schedule 06.05.2014    source источник
comment


Ответы (1)


Вы должны установить вывод в коде Fortran с использованием двойной точности,

output = 1.3d0

В Fortran 1.3 - это константа одинарной точности.

person Fortranner    schedule 06.05.2014