f2py: Quadrupel Precision - SystemError: NULL object passed to Py_BuildValue
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 32.8k
- Forks
- 12.8k
- Merge medio
- 1 d 7 h
- PR fusionados (30 d)
- 197
Descripción
Hi,
I fail to use a simple fortran routine, which makes use of quadrupel precision real values (real(kind=16) or real*16).
I am using fortran-magic with jupyter notebook to show this example:
%%fortran
subroutine f_get_pi(pi)
real(KIND=16), intent(out) :: pi
pi = 4._16*ATAN(1._16)
end subroutine
Compiling works. However, if I run f_get_pi() now in Python, I receive the following error:
SystemError: NULL object passed to Py_BuildValue
Apparently, if I use the subroutine in another function it get's even worse:
%%fortran
subroutine f_get_pi(pi)
real(KIND=16), intent(out) :: pi
pi = 4._16*ATAN(1._16)
end subroutine
subroutine f_deg2rad(deg, rad)
real*16, intent(in) :: deg
real*16, intent(out) :: rad
!
real*16 :: pi
!
CALL f_get_pi(pi)
rad = pi/180._16 * deg
end subroutine
Calling f_deg2rad(181.) in python results in no output, just a crash of the python kernel.
This is truly not the expected behavior. Using double precision (real(KIND=8)) for all real above instead, the function just run fine. I am not sure if quadruple precision is supported (although I see no reason why not), but even if not, this should not be the result.
OS:
uname -a
Linux sv31 4.1.36-41-default #1 SMP PREEMPT Fri Dec 9 08:26:33 UTC 2016 (29aafea) x86_64 x86_64 x86_64 GNU/Linux
Python version(s):
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:42:40)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Conda packages:
anaconda-client 1.4.0 py27_0
backports 1.0 py27_0
basemap 1.1.0 py27_2 conda-forge
bitstring 3.1.3 py27_0 auto
cairo 1.12.18 6
certifi 2016.2.28 py27_0 conda-forge
certifi 2017.4.17 <pip>
cffi 1.9.1 py27_0
cloog 0.18.0 0
clyent 1.2.2 py27_0
colorspacious 1.1.0 <pip>
conda 4.3.25 py27_0
conda-env 2.6.0 0
configparser 3.5.0b2 py27_0 conda-forge
cryptography 1.7.1 py27_0
curl 7.45.0 0
cycler 0.10.0 py27_0
decorator 4.0.10 py27_0
entrypoints 0.2.2 py27_0 conda-forge
enum34 1.1.6 py27_0
expat 2.2.1 0 conda-forge
fontconfig 2.11.1 6
fortran-magic 0.7 py27_1 conda-forge
freetype 2.5.5 1
freexl 1.0.2 2 conda-forge
functools32 3.2.3.2 py27_1 conda-forge
futures 3.0.5 py27_0
gcc 4.8.5 7
gdal 2.2.1 np111py27_0 conda-forge
geos 3.5.1 1 conda-forge
get_terminal_size 1.0.0 py27_0
giflib 5.1.4 0 conda-forge
gmp 6.1.0 0
h5py 2.7.1 py27_1 conda-forge
hdf4 4.2.11 4 conda-forge
hdf5 1.8.18 1 conda-forge
icu 58.1 1 conda-forge
idna 2.2 py27_0
ipaddress 1.0.18 py27_0
ipykernel 4.6.1 py27_0
ipyparallel 5.1.0 py27_0
ipython 4.2.0 py27_0
ipython_genutils 0.1.0 py27_0
ipyvolume 0.4.0 py27_1 conda-forge
ipywebrtc 0.3.0 py27_0 conda-forge
ipywidgets 7.0.1 py_2 conda-forge
isl 0.12.2 0
jinja2 2.8 py27_0 conda-forge
jpeg 9b 0 conda-forge
json-c 0.12.1 0 conda-forge
jsonschema 2.5.1 py27_0 conda-forge
jupyter_client 4.3.0 py27_0 conda-forge
jupyter_core 4.1.0 py27_0 conda-forge
kealib 1.4.7 2 conda-forge
krb5 1.14.2 0 conda-forge
libdap4 3.18.3 2 conda-forge
libffi 3.2.1 1
libgcc 5.2.0 0
libgdal 2.2.1 0 conda-forge
libgfortran 3.0.0 1
libiconv 1.14 4 conda-forge
libnetcdf 4.4.1.1 6 conda-forge
libpng 1.6.28 1 conda-forge
libpq 9.6.3 0 conda-forge
libsodium 1.0.10 0 conda-forge
libspatialite 4.3.0a 15 conda-forge
libtiff 4.0.6 5 conda-forge
libxml2 2.9.2 0
markupsafe 0.23 py27_0 conda-forge
matplotlib 1.5.1 np111py27_0
mistune 0.7.3 py27_0 conda-forge
mkl 11.3.3 0
mpc 1.0.3 0
mpfr 3.1.5 0
nbconvert 4.2.0 py27_0 conda-forge
nbformat 4.4.0 py27_0 conda-forge
netcdf4 1.2.9 py27_1 conda-forge
networkx 1.11 py27_0 conda-forge
notebook 5.0.0 py27_0
numpy 1.11.1 py27_0
openjpeg 2.1.0 5 conda-forge
openssl 1.0.2g 0
pandas 0.20.3 py27_1 conda-forge
path.py 8.2.1 py27_0
pathlib2 2.1.0 py27_0
pexpect 4.0.1 py27_0
pickleshare 0.7.2 py27_0
pillow 3.2.0 py27_1 conda-forge
pip 8.1.1 py27_1
pixman 0.32.6 0
postgresql 9.1.4 1
proj.4 4.9.2 0 conda-forge
proj4 4.9.3 4 conda-forge
ptyprocess 0.5.1 py27_0
pyart 1.6.0 py27_0 jjhelmus
pyasn1 0.1.9 py27_0
pycairo 1.10.0 py27_0
pycosat 0.6.1 py27_0
pycparser 2.17 py27_0
pycrypto 2.6.1 py27_0
pygments 1.6 py27_0 conda-forge
pyopenssl 16.2.0 py27_0
pyparsing 2.1.4 py27_0
pypdf2 1.26.0 py27_0 BjornFJohansson
pyproj 1.9.5.1 py27_0 conda-forge
pyqt 4.11.4 py27_3
pyshp 1.2.12 py_0 conda-forge
python 2.7.12 1
python-dateutil 2.5.3 py27_0
pytmatrix 0.3.0 np111py27_1 conda-forge
pytz 2016.4 py27_0
pywavelets 0.5.2 np111py27_0 conda-forge
pyyaml 3.11 py27_1
pyzmq 14.7.0 py27_0 conda-forge
qt 4.8.7 3
readline 6.2 2
requests 2.12.4 py27_0
ruamel_yaml 0.11.14 py27_0
scikit-image 0.13.0 np111py27_0
scipy 0.17.1 np111py27_1
setuptools 20.3 py27_0
simplegeneric 0.8.1 py27_1
sip 4.16.9 py27_0
six 1.10.0 py27_0
sqlite 3.13.0 0
ssl_match_hostname 3.5.0.1 py27_0 conda-forge
terminado 0.6 py27_0 conda-forge
tk 8.5.18 0
tornado 4.2.1 py27_0 conda-forge
traitlets 4.3.2 py27_0
traittypes 0.0.6 py27_0 conda-forge
util-linux 2.21 0
viscm 0.7 <pip>
wheel 0.29.0 py27_0
widgetsnbextension 3.0.2 py27_0
wradlib 0.10.1 py27_0 conda-forge
xerces-c 3.1.4 3 conda-forge
xz 5.0.5 1 conda-forge
yaml 0.1.6 0
zeromq 4.1.5 0 conda-forge
zlib 1.2.8 0
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza reproduciendo los ejemplos f_get_pi y f_deg2rad mediante fortran-magic en el entorno de Python 2.7 indicado, comparando real(KIND=16) con real(KIND=8). Determina si f2py admite esta precisión; se considera terminado cuando el error y el fallo del kernel estén corregidos, o cuando el comportamiento no compatible se informe claramente con un fallo seguro.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- fortran, jupyter-notebook, python
- Área
- tooling
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 30/100