On Sat, May 7, 2011 at 12:00 AM, DJ Luscher <d...@lanl.gov> wrote: > Pearu Peterson <pearu.peterson <at> gmail.com> writes: > > > > On Fri, May 6, 2011 at 10:18 PM, DJ Luscher <djl <at> lanl.gov> wrote: > > > > I have encountered another minor hangup. For assumed-shape array-valued > > functions defined within a fortran module there seems to be some trouble > in > > the autogenerated subroutine wrapper interface. I think it has to do > with > > the order in which variables are declared in the interface specification. > > > > in the subroutine interface specification the size(a) and size(b) are > used to > > dimension outer above (before) the declaration of a and b themselves. > This > > halts my compiler. The wrapper seems to compile OK if a and b are > declared > > above outer in the interface. > > thanks again for your help, > > > > DJ > > > > Your example works fine here:$ f2py -m foo foo_out.f90 -c$ python -c > 'import > > foo; print foo.foo.outer([1,2],[3,4])'[[ 3. 4.] [ 6. 8.]]with outer > defined > > before a and b. I would presume that compiler would > > give a warning, at least, when this would be a problem. Anyway, try to > apply > > the following patch: > > to see if changing the order will fix the hang.Pearu > > > > > indeed - it works fine as is when I compile with gfortran, but not ifort. > I > suppose there may be some compiler option for ifort to overcome that, but I > couldn't tell from a brief scan of the doc. > > the patch works when I add in two separate loops over args: (~line 138 in > func2subr.py): > > for a in args: > if a in dumped_args: continue > if isscalar(vars[a]): > add(var2fixfortran(vars,a,f90mode=f90mode)) > dumped_args.append(a) > for a in args: > if a in dumped_args: continue > if isintent_in(vars[a]): > add(var2fixfortran(vars,a,f90mode=f90mode)) > dumped_args.append(a) > > not sure if that was your intention,
yes, that is what the patch was generated from. > but when I tried to use just "isintent_in" > or to include both conditions in same loop, that would not work as you noticed.. > the input arrays (a and b) were > declared ahead of the derived shape-array (outer), but also ahead of the > integers used to define a and b (e.g. f2py_a_d0). > > I have committed the patch: https://github.com/numpy/numpy/commit/6df2ac21 Pearu
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion