Skip to content

Commit

Permalink
BUG: Exclude LAPACK routines with string arguments since the convention
Browse files Browse the repository at this point in the history
for passing strings to Fotran routines is highly compiler dependent.
  • Loading branch information
insertinterestingnamehere committed Mar 18, 2015
1 parent d00ea63 commit d84db5a
Show file tree
Hide file tree
Showing 7 changed files with 1 addition and 85 deletions.
2 changes: 1 addition & 1 deletion scipy/linalg/_cython_signature_generator.py
Expand Up @@ -117,6 +117,6 @@ def sigs_from_dir(directory, outfile, manual_wrappers=None, exclusions=None,
'lauum', 'lacon', 'langb', 'lange', 'langt', 'lanhb',
'lanhe', 'lanhp', 'lanhs', 'lanht', 'lansb', 'lansp',
'lanst', 'lansy', 'lantb', 'lantp', 'lantr', 'lanv2']
exclusions = ['sisnan', 'csrot', 'zdrot']
exclusions = ['sisnan', 'csrot', 'zdrot', 'ilaenv', 'iparmq', 'lsamen']
sigs_from_dir(src_dir, outfile, manual_wrappers=lapack_manual_wrappers,
exclusions=exclusions, auxiliaries=auxiliaries)
7 changes: 0 additions & 7 deletions scipy/linalg/_cython_wrapper_generators.py
Expand Up @@ -439,13 +439,6 @@ def process_fortran_name(name, funcname):
return name
if 'x' in name or 'y' in name:
return name + '(n)'
if name in ['name', 'opts']:
if funcname == 'ilaenv':
return name + '*(*)'
elif funcname == 'iparmq':
return name + '(*)'
if funcname == 'lsamen' and name in ['ca', 'cb']:
return name + '*(*)'
if name in dims:
return name + dims[name]
return name
Expand Down
38 changes: 0 additions & 38 deletions scipy/linalg/_lapack_subroutine_wrappers.f
Expand Up @@ -374,34 +374,6 @@ subroutine ieeeckwrp(ret, ispec, zero, one)
ret = ieeeck(ispec, zero, one)
end

subroutine ilaenvwrp(ret, ispec, name, opts, n1, n2, n3, n4)
external ilaenv
integer ilaenv
integer ret
integer ispec
character name*(*)
character opts*(*)
integer n1
integer n2
integer n3
integer n4
ret = ilaenv(ispec, name, opts, n1, n2, n3, n4)
end

subroutine iparmqwrp(ret, ispec, name, opts, n, ilo, ihi, lwork)
external iparmq
integer iparmq
integer ret
integer ispec
character name(*)
character opts(*)
integer n
integer ilo
integer ihi
integer lwork
ret = iparmq(ispec, name, opts, n, ilo, ihi, lwork)
end

subroutine izmax1wrp(ret, n, cx, incx)
external izmax1
integer izmax1
Expand All @@ -412,16 +384,6 @@ subroutine izmax1wrp(ret, n, cx, incx)
ret = izmax1(n, cx, incx)
end

subroutine lsamenwrp(ret, n, ca, cb)
external lsamen
logical lsamen
logical ret
integer n
character ca*(*)
character cb*(*)
ret = lsamen(n, ca, cb)
end

subroutine scsum1wrp(ret, n, cx, incx)
external wscsum1
real wscsum1
Expand Down
3 changes: 0 additions & 3 deletions scipy/linalg/_lapack_subroutines.h
Expand Up @@ -92,10 +92,7 @@ void F_FUNC(dlantrwrp, DLANTRWRP)(double *ret, char *norm, char *uplo, char *dia
void F_FUNC(dzsum1wrp, DZSUM1WRP)(double *ret, int *n, _scipy_linalg_double_complex *cx, int *incx);
void F_FUNC(icmax1wrp, ICMAX1WRP)(int *ret, int *n, _scipy_linalg_float_complex *cx, int *incx);
void F_FUNC(ieeeckwrp, IEEECKWRP)(int *ret, int *ispec, float *zero, float *one);
void F_FUNC(ilaenvwrp, ILAENVWRP)(int *ret, int *ispec, char *name, char *opts, int *n1, int *n2, int *n3, int *n4);
void F_FUNC(iparmqwrp, IPARMQWRP)(int *ret, int *ispec, char *name, char *opts, int *n, int *ilo, int *ihi, int *lwork);
void F_FUNC(izmax1wrp, IZMAX1WRP)(int *ret, int *n, _scipy_linalg_double_complex *cx, int *incx);
void F_FUNC(lsamenwrp, LSAMENWRP)(int *ret, int *n, char *ca, char *cb);
void F_FUNC(scsum1wrp, SCSUM1WRP)(float *ret, int *n, _scipy_linalg_float_complex *cx, int *incx);
void F_FUNC(slamchwrp, SLAMCHWRP)(float *ret, char *cmach);
void F_FUNC(slangbwrp, SLANGBWRP)(float *ret, char *norm, int *n, int *kl, int *ku, float *ab, int *ldab, float *work);
Expand Down
6 changes: 0 additions & 6 deletions scipy/linalg/cython_lapack.pxd
Expand Up @@ -993,14 +993,8 @@ cdef int icmax1(int *n, c *cx, int *incx) nogil

cdef int ieeeck(int *ispec, s *zero, s *one) nogil

cdef int ilaenv(int *ispec, char *name, char *opts, int *n1, int *n2, int *n3, int *n4) nogil

cdef int iparmq(int *ispec, char *name, char *opts, int *n, int *ilo, int *ihi, int *lwork) nogil

cdef int izmax1(int *n, z *cx, int *incx) nogil

cdef bint lsamen(int *n, char *ca, char *cb) nogil

cdef void sbdsdc(char *uplo, char *compq, int *n, s *d, s *e, s *u, int *ldu, s *vt, int *ldvt, s *q, int *iq, s *work, int *iwork, int *info) nogil

cdef void sbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, s *d, s *e, s *vt, int *ldvt, s *u, int *ldu, s *c, int *ldc, s *work, int *info) nogil
Expand Down
27 changes: 0 additions & 27 deletions scipy/linalg/cython_lapack.pyx
Expand Up @@ -506,10 +506,7 @@ Raw function pointers (Fortran-style pointer arguments):
- dzsum1
- icmax1
- ieeeck
- ilaenv
- iparmq
- izmax1
- lsamen
- sbdsdc
- sbdsqr
- scsum1
Expand Down Expand Up @@ -1244,22 +1241,6 @@ cdef int ieeeck(int *ispec, s *zero, s *one) nogil:
return out


cdef extern from "_lapack_subroutines.h":
void _fortran_ilaenv "F_FUNC(ilaenvwrp, ILAENVWRP)"(int *out, int *ispec, char *name, char *opts, int *n1, int *n2, int *n3, int *n4) nogil
cdef int ilaenv(int *ispec, char *name, char *opts, int *n1, int *n2, int *n3, int *n4) nogil:
cdef int out
_fortran_ilaenv(&out, ispec, name, opts, n1, n2, n3, n4)
return out


cdef extern from "_lapack_subroutines.h":
void _fortran_iparmq "F_FUNC(iparmqwrp, IPARMQWRP)"(int *out, int *ispec, char *name, char *opts, int *n, int *ilo, int *ihi, int *lwork) nogil
cdef int iparmq(int *ispec, char *name, char *opts, int *n, int *ilo, int *ihi, int *lwork) nogil:
cdef int out
_fortran_iparmq(&out, ispec, name, opts, n, ilo, ihi, lwork)
return out


cdef extern from "_lapack_subroutines.h":
void _fortran_izmax1 "F_FUNC(izmax1wrp, IZMAX1WRP)"(int *out, int *n, z *cx, int *incx) nogil
cdef int izmax1(int *n, z *cx, int *incx) nogil:
Expand All @@ -1268,14 +1249,6 @@ cdef int izmax1(int *n, z *cx, int *incx) nogil:
return out


cdef extern from "_lapack_subroutines.h":
void _fortran_lsamen "F_FUNC(lsamenwrp, LSAMENWRP)"(bint *out, int *n, char *ca, char *cb) nogil
cdef bint lsamen(int *n, char *ca, char *cb) nogil:
cdef bint out
_fortran_lsamen(&out, n, ca, cb)
return out


cdef extern from "_lapack_subroutines.h":
void _fortran_scsum1 "F_FUNC(scsum1wrp, SCSUM1WRP)"(s *out, int *n, c *cx, int *incx) nogil
cdef s scsum1(int *n, c *cx, int *incx) nogil:
Expand Down
3 changes: 0 additions & 3 deletions scipy/linalg/cython_lapack_signatures.txt
Expand Up @@ -489,10 +489,7 @@ void dtzrzf(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *in
d dzsum1(int *n, z *cx, int *incx)
int icmax1(int *n, c *cx, int *incx)
int ieeeck(int *ispec, s *zero, s *one)
int ilaenv(int *ispec, char *name, char *opts, int *n1, int *n2, int *n3, int *n4)
int iparmq(int *ispec, char *name, char *opts, int *n, int *ilo, int *ihi, int *lwork)
int izmax1(int *n, z *cx, int *incx)
bint lsamen(int *n, char *ca, char *cb)
void sbdsdc(char *uplo, char *compq, int *n, s *d, s *e, s *u, int *ldu, s *vt, int *ldvt, s *q, int *iq, s *work, int *iwork, int *info)
void sbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, s *d, s *e, s *vt, int *ldvt, s *u, int *ldu, s *c, int *ldc, s *work, int *info)
s scsum1(int *n, c *cx, int *incx)
Expand Down

0 comments on commit d84db5a

Please sign in to comment.