Eu tenho o MBpart1ep0.f
para compilar como um binário amd64 em vez de i386, então isso pode ser mais fácil.
sudo apt-get install gfortran libmathlib2-dev libcuba3-dev
Eu então compilei com:
gfortran -o out10 MBpart1ep0.f -lmathlib -lcuba
Infelizmente, o arquivo out10
segfaults imediatamente com a chamada para cuhre_
. Olhando para o código, o problema parece ser que a função cuhre
tem um argumento userdata
extra. Eu não sei o suficiente sobre fortran para descobrir como passar um argumento nulo lá, mas em vez disso eu substituí a chamada para cuhre
com:
call cuhre(ndim, ncomp, integrand, 0, epsrel, epsabs, flags,
& mineval, maxeval, key, nregions,
& neval, fail, integral, error, prob)
Então, adicionamos o argumento 0
após o argumento integrand
. Reconstruindo com esta mudança, não segfault e, na verdade, imprime um resultado:
-0.7044994994694501E-01 0.7023304936781998E-05 0.000000000000000
Eu realmente não entendo o código, então não posso dizer se isso está correto. Eu vou dizer que eu também reconstruí em um chroot i386 para ver se fez alguma diferença e nós obtivemos basicamente o mesmo valor:
-0.7044994994694533E-01 0.7023304934705608E-05 0.3745918505937418E-16