
ʽXc        9   @   s  d  Z  d d l Z d d l m Z i d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6Z d   Z d   Z d   Z d d d  Z	 d Z
 e d k rd d l m Z e d \ Z Z Z e j   d k r e	 e e d d d g qe j   d k rd  d! d" d# d$ d% d d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW g9 Z e	 e e dX e
 d e qn  d S(Y   s  
A script that uses f2py to generate the signature files used to make
the Cython BLAS and LAPACK wrappers from the fortran source code for
LAPACK and the reference BLAS.

To generate the BLAS wrapper signatures call:
python _cython_signature_generator.py blas <blas_directory> <out_file>

To generate the LAPACK wrapper signatures call:
python _cython_signature_generator.py lapack <lapack_src_directory> <out_file>
iN(   t   crackfortrant   intt   integert   ct   complext   ds   double precisiont   st   realt   zs
   complex*16s   double complext   chart	   charactert   bintt   logicalc         C   sL   t  |  d | d } | d k rH |  d | j d  d  k	 rH d } n  | S(   Nt   varst   typespecR   t   kindselectorR   (   t	   sig_typest   gett   None(   t   infot   argt   argtype(    (    sG   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_cython_signature_generator.pyt   get_type   s    )	c         C   s   t  j  |   d } | d } | d d k r6 d } n t | |  } g  | d D]$ } d j t | |  | g  ^ qP } d j |  } | j d	 d
  } d j | | |  S(   Ni    t   namet   blockt
   subroutinet   voidt   argss    *s   , t   rank_bnt   ranks   {0} {1}({2})
(   R    R   t   joint   replacet   format(   t   filenameR   R   t   return_typeR   t   arglistR   (    (    sG   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_cython_signature_generator.pyt   make_signature!   s    
	5c         C   s   |  j  d  d j  d  d S(   Nt   (i    t    i(   t   split(   t   line(    (    sG   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_cython_signature_generator.pyt   get_sig_name/   s    c         C   s^  |  d d k r |  d  }  n  t  j  |  d  } | d  k rE g  } n  | d  k	 r | g  | j d  D] } t |  ^ qd 7} n  g  } xJ | D]B } | j d  d d  } | | k r q n  | j t |   q W| d  k	 r| g  | j d  D] } | d ^ q 7} n  | j d t  d d	 g }	 t | d
  ! }
 |
 j |	  |
 j |  Wd  QXd  S(   Nit   /s   \s   /*.f*s   
it   keys<   # This file was generated by _cython_wrapper_generators.py.
s#   # Do not edit this file directly.

t   w(   R*   s   \(	   t   globR   R'   R)   t   appendR$   t   sortt   opent
   writelines(   t	   directoryt   outfilet   manual_wrapperst
   exclusionst   filest   lt
   signaturesR!   R   t   commentt   f(    (    sG   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_cython_signature_generator.pyt   sigs_from_dir3   s*    	/-	s  void cgees(char *jobvs, char *sort, cselect1 *select, int *n, c *a, int *lda, int *sdim, c *w, c *vs, int *ldvs, c *work, int *lwork, s *rwork, bint *bwork, int *info)
void cgeesx(char *jobvs, char *sort, cselect1 *select, char *sense, int *n, c *a, int *lda, int *sdim, c *w, c *vs, int *ldvs, s *rconde, s *rcondv, c *work, int *lwork, s *rwork, bint *bwork, int *info)
void cgges(char *jobvsl, char *jobvsr, char *sort, cselect2 *selctg, int *n, c *a, int *lda, c *b, int *ldb, int *sdim, c *alpha, c *beta, c *vsl, int *ldvsl, c *vsr, int *ldvsr, c *work, int *lwork, s *rwork, bint *bwork, int *info)
void cggesx(char *jobvsl, char *jobvsr, char *sort, cselect2 *selctg, char *sense, int *n, c *a, int *lda, c *b, int *ldb, int *sdim, c *alpha, c *beta, c *vsl, int *ldvsl, c *vsr, int *ldvsr, s *rconde, s *rcondv, c *work, int *lwork, s *rwork, int *iwork, int *liwork, bint *bwork, int *info)
void dgees(char *jobvs, char *sort, dselect2 *select, int *n, d *a, int *lda, int *sdim, d *wr, d *wi, d *vs, int *ldvs, d *work, int *lwork, bint *bwork, int *info)
void dgeesx(char *jobvs, char *sort, dselect2 *select, char *sense, int *n, d *a, int *lda, int *sdim, d *wr, d *wi, d *vs, int *ldvs, d *rconde, d *rcondv, d *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info)
void dgges(char *jobvsl, char *jobvsr, char *sort, dselect3 *selctg, int *n, d *a, int *lda, d *b, int *ldb, int *sdim, d *alphar, d *alphai, d *beta, d *vsl, int *ldvsl, d *vsr, int *ldvsr, d *work, int *lwork, bint *bwork, int *info)
void dggesx(char *jobvsl, char *jobvsr, char *sort, dselect3 *selctg, char *sense, int *n, d *a, int *lda, d *b, int *ldb, int *sdim, d *alphar, d *alphai, d *beta, d *vsl, int *ldvsl, d *vsr, int *ldvsr, d *rconde, d *rcondv, d *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info)
d dlamch(char *cmach)
void ilaver(int *vers_major, int *vers_minor, int *vers_patch)
void sgees(char *jobvs, char *sort, sselect2 *select, int *n, s *a, int *lda, int *sdim, s *wr, s *wi, s *vs, int *ldvs, s *work, int *lwork, bint *bwork, int *info)
void sgeesx(char *jobvs, char *sort, sselect2 *select, char *sense, int *n, s *a, int *lda, int *sdim, s *wr, s *wi, s *vs, int *ldvs, s *rconde, s *rcondv, s *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info)
void sgges(char *jobvsl, char *jobvsr, char *sort, sselect3 *selctg, int *n, s *a, int *lda, s *b, int *ldb, int *sdim, s *alphar, s *alphai, s *beta, s *vsl, int *ldvsl, s *vsr, int *ldvsr, s *work, int *lwork, bint *bwork, int *info)
void sggesx(char *jobvsl, char *jobvsr, char *sort, sselect3 *selctg, char *sense, int *n, s *a, int *lda, s *b, int *ldb, int *sdim, s *alphar, s *alphai, s *beta, s *vsl, int *ldvsl, s *vsr, int *ldvsr, s *rconde, s *rcondv, s *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info)
s slamch(char *cmach)
void zgees(char *jobvs, char *sort, zselect1 *select, int *n, z *a, int *lda, int *sdim, z *w, z *vs, int *ldvs, z *work, int *lwork, d *rwork, bint *bwork, int *info)
void zgeesx(char *jobvs, char *sort, zselect1 *select, char *sense, int *n, z *a, int *lda, int *sdim, z *w, z *vs, int *ldvs, d *rconde, d *rcondv, z *work, int *lwork, d *rwork, bint *bwork, int *info)
void zgges(char *jobvsl, char *jobvsr, char *sort, zselect2 *selctg, int *n, z *a, int *lda, z *b, int *ldb, int *sdim, z *alpha, z *beta, z *vsl, int *ldvsl, z *vsr, int *ldvsr, z *work, int *lwork, d *rwork, bint *bwork, int *info)
void zggesx(char *jobvsl, char *jobvsr, char *sort, zselect2 *selctg, char *sense, int *n, z *a, int *lda, z *b, int *ldb, int *sdim, z *alpha, z *beta, z *vsl, int *ldvsl, z *vsr, int *ldvsr, d *rconde, d *rcondv, z *work, int *lwork, d *rwork, int *iwork, int *liwork, bint *bwork, int *info)t   __main__(   t   argvi   t   blasR5   t   scabs1t   xerblat   lapackt   sisnant   csrott   zdrott   ilaenvt   iparmqt   lsament   zcgesvt   dlaisnant   slaisnant   dlazq3t   dlazq4t   slazq3t   slazq4t   dlasq3t   dlasq4t   slasq3t   slasq4t   dlasq5t   slasq5t   slanegt   cgegst   cgegvt   cgelsxt   cgeqpft   cggsvdt   cggsvpt   clahrdt   clatzmt   ctzrqft   dgegst   dgegvt   dgelsxt   dgeqpft   dggsvdt   dggsvpt   dlahrdt   dlatzmt   dtzrqft   sgegst   sgegvt   sgelsxt   sgeqpft   sggsvdt   sggsvpt   slahrdt   slatzmt   stzrqft   zgegst   zgegvt   zgelsxt   zgeqpft   zggsvdt   zggsvpt   zlahrdt   zlatzmt   ztzrqfR4   (   t   __doc__R-   t
   numpy.f2pyR    R   R   R$   R)   R   R;   t   lapack_manual_wrapperst   __name__t   sysR=   t   libnamet   src_dirR3   t   lowerR5   (    (    (    sG   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_cython_signature_generator.pyt   <module>   sB   

			1