§
    ƒÛg€g ã                   óæ
  — d Z ddlZddlZddlmZ ddlZddlZddlm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZ ddlmZmZ ddlmZmZmZ d	d
lmZmZmZ ddlmZ   ej!        d¦  «        Z"e" #                    ¦   «         Z$e$Z% ej!        d¦  «        Z&e& #                    ¦   «         Z'ej(        Z(e( #                    ¦   «         Z)ej*        Z+ej*        Z,ej-        dej.        dej/        dej0        diZ1dld„Z2d„ Z3d„ Z4d„ Z5 G d„ d¦  «        Z6 G d„ d¦  «        Z7ej8        d„ ¦   «         Z9d„ Z:d„ Z;d„ Z<d„ Z=d „ Z>d!„ Z?d"„ Z@d#„ ZAd$„ ZBdmd&„ZC eejD        ¦  «        d'„ ¦   «         ZE eejF        ¦  «        d(„ ¦   «         ZGd)„ ZH eejI        ¦  «        d*„ ¦   «         ZId+„ ZJd,„ ZKd-„ ZLd.„ ZM eejD        ¦  «        d/„ ¦   «         ZN ejO        d0 ejP        ¦   «         ¦  «        ZQed1„ ¦   «         ZRdnd3„ZSd4„ ZTd5„ ZU eeU¦  «        d6„ ¦   «         ZVed7„ ¦   «         ZWed8„ ¦   «         ZX eejY        jZ        ¦  «        d9„ ¦   «         Z[ed:„ ¦   «         Z\dnd;„Z] eejY        j^        ¦  «        d<„ ¦   «         Z_ eejY        j`        ¦  «        d=„ ¦   «         Za eejY        jb        ¦  «        d>„ ¦   «         Zc eejY        jd        ¦  «        d?„ ¦   «         Ze eejY        jf        ¦  «        d@„ ¦   «         Zg eejY        jh        ¦  «        dodA„¦   «         Zi eejY        jj        ¦  «        dB„ ¦   «         ZkdC„ Zl eel¦  «        dD„ ¦   «         ZmdE„ Zn een¦  «        dF„ ¦   «         ZodG„ Zp eep¦  «        dH„ ¦   «         ZqdI„ Zr eer¦  «        dJ„ ¦   «         ZsdK„ Zt eet¦  «        dL„ ¦   «         ZudM„ Zv eev¦  «        dN„ ¦   «         Zw eejY        jx        ¦  «        dpdP„¦   «         ZydQ„ Zz eez¦  «        dR„ ¦   «         Z{ eejY        j|        ¦  «        dS„ ¦   «         Z} eejY        j~        ¦  «        dqdU„¦   «         ZdV„ Z€ eejY        j�        ¦  «        dW„ ¦   «         Z‚ eejY        jƒ        ¦  «        dX„ ¦   «         Z„dY„ Z… ee…¦  «        dZ„ ¦   «         Z†d[„ Z‡ ee‡¦  «        d\„ ¦   «         Zˆd]„ Z‰ eejY        jŠ        ¦  «        drd^„¦   «         Z‹ eejY        jŒ        ¦  «        drd_„¦   «         Z�ed`„ ¦   «         ZŽ eejY        j�        ¦  «        drda„¦   «         Z� eejY        j‘        ¦  «        db„ ¦   «         Z’ eej“        ¦  «        dsdc„¦   «         Z”dndd„Z•ede„ ¦   «         Z–edf„ ¦   «         Z—dg„ Z˜ eej™        ¦  «        drdh„¦   «         Zšdi„ Z›dj„ Zœ eej�        ¦  «        dk„ ¦   «         ZždS )tz.
Implementation of linear algebra operations.
é    N)Úir)Úlower_builtinÚimpl_ret_borrowedÚimpl_ret_new_refÚimpl_ret_untracked)Ú	signature)Ú	intrinsicÚoverloadÚregister_jitable)ÚtypesÚcgutils)ÚTypingErrorÚNumbaTypeErrorÚNumbaPerformanceWarningé   )Ú
make_arrayÚ_empty_nd_implÚ
array_copy)Únumpy_supporté   é    ÚsÚdÚcÚzú<BLAS function>c                 ód   — t                                | ¦  «        }|€t          d|›d�¦  «        ‚|S )Nzunsupported dtype for z())Ú_blas_kindsÚgetÚ	TypeError)ÚdtypeÚ	func_nameÚkinds      úE/granary/edev/quantum/lib/python3.11/site-packages/numba/np/linalg.pyÚget_blas_kindr%   0   s4   € Ý�?Š?˜5Ñ!Ô!€DØ€|Ýˆi¸	¸	¸	ÐCÑDÔDÐDØ€Kó    c                  óJ   — 	 dd l } d S # t          $ r t          d¦  «        ‚w xY w©Nr   z*scipy 0.16+ is required for linear algebra)Úscipy.linalg.cython_blasÚImportError©Úscipys    r$   Úensure_blasr-   7   sH   € ðHØ'Ð'Ð'Ð'Ð'Ð'øÝð Hð Hð HÝÐFÑGÔGÐGðHøøøó   ‚ ˆ"c                  óJ   — 	 dd l } d S # t          $ r t          d¦  «        ‚w xY wr(   )Úscipy.linalg.cython_lapackr*   r+   s    r$   Úensure_lapackr1   >   sH   € ðHØ)Ð)Ð)Ð)Ð)Ð)øÝð Hð Hð HÝÐFÑGÔGÐGðHøøør.   c                 óZ   — |                       |||¦  «        }t          j        ||¦  «        S ©N)Úget_constant_genericr   Úalloca_once_value)ÚcontextÚbuilderÚtyÚvalÚconsts        r$   Úmake_constant_slotr;   E   s,   € Ø×(Ò(¨°"°cÑ:Ô:€EÝÔ$ W¨eÑ4Ô4Ð4r&   c                   óD   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú_BLASzM
    Functions to return type signatures for wrapped
    BLAS functions.
    c                 ó"   — t          ¦   «          d S r3   )r-   ©Úselfs    r$   Ú__init__z_BLAS.__init__P   s   € Ý‰Œˆˆˆr&   c           	      ó  — t          |d|¦  «        }t          j        t          j        t          j        t          j        |¦  «        t          j        t          j        |¦  «        ¦  «        }t          j        d|¦  «        S )NÚunderlying_floatÚnumba_xxnrm2©Úgetattrr   ÚintcÚcharÚintpÚCPointerÚExternalFunction©Úclsr!   ÚrtypeÚsigs       r$   rD   z_BLAS.numba_xxnrm2S   sb   € å˜Ð1°5Ñ9Ô9ˆÝŒj�œÝœÝœ¨Ñ.Ô.ÝœÝœ¨Ñ.Ô.ñ	0ô 0ˆõ Ô% n°cÑ:Ô:Ð:r&   c                 óÖ  — t          j        t           j        t           j        t           j        t           j        t           j        t           j        t          j        |¦  «        t          j        |¦  «        t           j        t          j        |¦  «        t           j        t          j        |¦  «        t          j        |¦  «        t           j        ¦  «        }t          j        d|¦  «        S )NÚnumba_xxgemm©r   rG   rH   rI   rJ   rK   ©rM   r!   rO   s      r$   rQ   z_BLAS.numba_xxgemm^   s–   € åŒjÝŒJÝŒJÝŒJÝŒJÝŒJÝŒJÝŒN˜5Ñ!Ô!ÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ÝŒN˜5Ñ!Ô!ÝŒJñ
ô 
ˆõ  Ô% n°cÑ:Ô:Ð:r&   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rA   ÚclassmethodrD   rQ   © r&   r$   r=   r=   J   sc   € € € € € ðð ð
ð ð ð ð;ð ;ñ „[ð;ð ð;ð ;ñ „[ð;ð ;ð ;r&   r=   c                   ó
  — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú_LAPACKzO
    Functions to return type signatures for wrapped
    LAPACK functions.
    c                 ó"   — t          ¦   «          d S r3   )r1   r?   s    r$   rA   z_LAPACK.__init__y   s   € Ý‰Œˆˆˆr&   c           
      ó   — t          j        t           j        t           j        t           j        t          j        |¦  «        t           j        t          j        t
          ¦  «        ¦  «        }t          j        d|¦  «        S )NÚnumba_xxgetrf©r   rG   rH   rI   rJ   ÚF_INT_nbtyperK   rS   s      r$   r^   z_LAPACK.numba_xxgetrf|   sU   € åŒj�œÝœÝœÝœ¨Ñ.Ô.ÝœÝœ­Ñ5Ô5ñô ˆõ Ô% o°sÑ;Ô;Ð;r&   c           	      óê   — t          j        t           j        t           j        t          j        |¦  «        t           j        t          j        t
          ¦  «        ¦  «        }t          j        d|¦  «        S )NÚnumba_ez_xxgetrir_   rS   s      r$   rb   z_LAPACK.numba_ez_xxgetri‡   sQ   € åŒj�œÝœÝœ¨Ñ.Ô.ÝœÝœ­Ñ5Ô5ñ	ô ˆõ Ô%Ð&8¸#Ñ>Ô>Ð>r&   c                 óª  — t          j        t           j        t           j        t           j        t           j        t          j        |¦  «        t           j        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t           j        t          j        |¦  «        t           j        ¦  «        }t          j        d|¦  «        S )NÚnumba_ez_rgeevrR   rS   s      r$   rd   z_LAPACK.numba_ez_rgeev‘   sŒ   € åŒj�œÝœÝœÝœÝœ¨Ñ.Ô.ÝœÝœ¨Ñ.Ô.Ýœ¨Ñ.Ô.Ýœ¨Ñ.Ô.ÝœÝœ¨Ñ.Ô.Ýœñô ˆõ Ô%Ð&6¸Ñ<Ô<Ð<r&   c                 ó„  — t          j        t           j        t           j        t           j        t           j        t          j        |¦  «        t           j        t          j        |¦  «        t          j        |¦  «        t           j        t          j        |¦  «        t           j        ¦  «        }t          j        d|¦  «        S )NÚnumba_ez_cgeevrR   rS   s      r$   rf   z_LAPACK.numba_ez_cgeev¢   s   € åŒj�œÝœÝœÝœÝœ¨Ñ.Ô.ÝœÝœ¨Ñ.Ô.Ýœ¨Ñ.Ô.ÝœÝœ¨Ñ.Ô.Ýœñô ˆõ Ô%Ð&6¸Ñ<Ô<Ð<r&   c                 ó.  — t          |d|¦  «        }t          j        t          j        t          j        t          j        t          j        t          j        |¦  «        t          j        t          j        |¦  «        ¦  «        }t          j        d|¦  «        S )NrC   Únumba_ez_xxxevdrE   )rM   r!   ÚwtyperO   s       r$   rh   z_LAPACK.numba_ez_xxxevd²   sm   € å˜Ð1°5Ñ9Ô9ˆÝŒj�œÝœÝœÝœÝœ¨Ñ.Ô.ÝœÝœ¨Ñ.Ô.ñô ˆõ Ô%Ð&7¸Ñ=Ô=Ð=r&   c                 óÐ   — t          j        t           j        t           j        t           j        t          j        |¦  «        t           j        ¦  «        }t          j        d|¦  «        S )NÚnumba_xxpotrfrR   rS   s      r$   rk   z_LAPACK.numba_xxpotrf¿   sH   € åŒj�œÝœÝœÝœ¨Ñ.Ô.Ýœñ	ô ˆõ Ô% o°sÑ;Ô;Ð;r&   c                 ó¦  — t          |d|¦  «        }t          j        t          j        t          j        t          j        t          j        t          j        |¦  «        t          j        t          j        |¦  «        t          j        |¦  «        t          j        t          j        |¦  «        t          j        ¦  «        }t          j        d|¦  «        S )NrC   Únumba_ez_gesddrE   )rM   r!   ÚstyperO   s       r$   rm   z_LAPACK.numba_ez_gesddÉ   s’   € å˜Ð1°5Ñ9Ô9ˆÝŒjÝŒJÝŒJÝŒJÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ÝŒJñ
ô 
ˆõ Ô%Ð&6¸Ñ<Ô<Ð<r&   c           
      óö   — t          j        t           j        t           j        t           j        t          j        |¦  «        t           j        t          j        |¦  «        ¦  «        }t          j        d|¦  «        S )NÚnumba_ez_geqrfrR   rS   s      r$   rp   z_LAPACK.numba_ez_geqrfÜ   sW   € åŒjÝŒJÝŒJÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ñ
ô 
ˆõ Ô%Ð&6¸Ñ<Ô<Ð<r&   c                 ó  — t          j        t           j        t           j        t           j        t           j        t          j        |¦  «        t           j        t          j        |¦  «        ¦  «        }t          j        d|¦  «        S )NÚnumba_ez_xxgqrrR   rS   s      r$   rr   z_LAPACK.numba_ez_xxgqrè   s\   € åŒjÝŒJÝŒJÝŒJÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ñ
ô 
ˆõ Ô%Ð&6¸Ñ<Ô<Ð<r&   c                 óº  — t          |d|¦  «        }t          j        t          j        t          j        t          j        t          j        t          j        |¦  «        t          j        t          j        |¦  «        t          j        t          j        |¦  «        t          j        t          j        t          j        ¦  «        ¦  «        }t          j        d|¦  «        S )NrC   Únumba_ez_gelsd)rF   r   rG   rH   rI   rJ   Úfloat64rK   rL   s       r$   rt   z_LAPACK.numba_ez_gelsdõ   s”   € å˜Ð1°5Ñ9Ô9ˆÝŒjÝŒJÝŒJÝŒJÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN˜5Ñ!Ô!ÝŒMÝŒN�5œ:Ñ&Ô&ñ
ô 
ˆõ Ô%Ð&6¸Ñ<Ô<Ð<r&   c                 ó<  — t          j        t           j        t           j        t           j        t          j        |¦  «        t           j        t          j        t
          ¦  «        t          j        |¦  «        t           j        ¦  «        }t          j        d|¦  «        S )NÚnumba_xgesvr_   rS   s      r$   rw   z_LAPACK.numba_xgesv  sh   € åŒjÝŒJÝŒJÝŒJÝŒN˜5Ñ!Ô!ÝŒJÝŒN�<Ñ(Ô(ÝŒN˜5Ñ!Ô!ÝŒJñ	
ô 	
ˆõ Ô% m°SÑ9Ô9Ð9r&   N)rT   rU   rV   rW   rA   rX   r^   rb   rd   rf   rh   rk   rm   rp   rr   rt   rw   rY   r&   r$   r[   r[   s   sV  € € € € € ðð ð
ð ð ð ð<ð <ñ „[ð<ð ð?ð ?ñ „[ð?ð ð=ð =ñ „[ð=ð  ð=ð =ñ „[ð=ð ð
>ð 
>ñ „[ð
>ð ð<ð <ñ „[ð<ð ð=ð =ñ „[ð=ð$ ð	=ð 	=ñ „[ð	=ð ð
=ð 
=ñ „[ð
=ð ð=ð =ñ „[ð=ð" ð:ð :ñ „[ð:ð :ð :r&   r[   c              #   ó  K  — g }g }g }t          |j        |¦  «        D ]§\  }}t          |t          j        ¦  «        r	|j        dv r||}
}	nP|                     d¬¦  «        }	t          |	|¦  «        }t          | |||f¦  «        }
| 	                    |	|
f¦  «         | 	                    |	¦  «         | 	                    |
¦  «         Œ¨t          |j
        g|¢R Ž t          |¦  «        fV — |D ]!\  }}| j                             |||¦  «         Œ"dS )zƒ
    Ensure that all array arguments are contiguous, if necessary by
    copying them.
    A new (sig, args) tuple is yielded.
    ÚCFÚC©ÚlayoutN)ÚzipÚargsÚ
isinstancer   ÚArrayr|   Úcopyr   r   ÚappendÚreturn_typeÚtupleÚnrtÚdecref)r6   r7   rO   r~   ÚnewtysÚnewargsÚcopiesr8   r9   ÚnewtyÚnewvalÚcopysigs               r$   Úmake_contiguousr�     s8  è è € ð €FØ€GØ€FÝ�s”x Ñ&Ô&ð 	ð 	‰ˆˆCÝ˜"�eœkÑ*Ô*ð 	+¨b¬i¸4Ð.?Ð.?Ø �6ˆEˆEà—G’G 3�GÑ'Ô'ˆEÝ  rÑ*Ô*ˆGÝ ¨°'¸C¸6ÑBÔBˆFØ�MŠM˜5 &˜/Ñ*Ô*Ð*Ø�Š�eÑÔÐØ�Š�vÑÔÐÐÝ
�C”OÐ
- fÐ
-Ð
-Ð
-­u°W©~¬~Ð
=Ð=Ð=Ð=Øð -ð -‰ˆˆCØŒ×Ò˜7 B¨Ñ,Ô,Ð,Ð,ð-ð -r&   c                 óŒ   ‡— dŠˆfd„}|                       ||t          t          j        t          j        ¦  «        |f¦  «         dS )z.
    Check whether *n* fits in a C `int`.
    iÿÿÿc                 ó2   •— | ‰k    rt          d¦  «        ‚d S )Nz$array size too large to fit in C int)ÚOverflowError)ÚnÚ_maxints    €r$   Úimplzcheck_c_int.<locals>.impl5  s"   ø€ ØˆwŠ;ˆ;ÝÐ FÑGÔGÐGð ˆ;r&   N)Úcompile_internalr   r   ÚnonerI   )r6   r7   r‘   r“   r’   s       @r$   Úcheck_c_intr–   /  sj   ø€ ð €GðHð Hð Hð Hð Hð ×Ò˜W dÝ&¥u¤zµ5´:Ñ>Ô>ÀÀñFô Fð Fð Fð Fr&   c                 ó  — |                      t          j        ||¦  «        d¬¦  «        5  |                      |¦  «        }|                     ¦   «          |                     d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z[
    Check the integer error return from one of the BLAS wrappers in
    _helperlib.c.
    F©Úlikelyz#BLAS wrapper returned with an errorN©Úif_thenr   Úis_not_nullÚget_python_apiÚ
gil_ensureÚfatal_error©r6   r7   ÚresÚpyapis       r$   Úcheck_blas_returnr£   =  sÙ   € ð
 
�Š�Ô,¨W°cÑ:Ô:À5ˆÑ	IÔ	Ið Að Aà×&Ò& wÑ/Ô/ˆØ×ÒÑÔÐØ×ÒÐ?Ñ@Ô@Ð@ð	Að Að Añ Aô Að Að Að Að Að Að Að Aøøøð Að Að Að Að Að Aó   «?A7Á7A;Á>A;c                 ó  — |                      t          j        ||¦  «        d¬¦  «        5  |                      |¦  «        }|                     ¦   «          |                     d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z]
    Check the integer error return from one of the LAPACK wrappers in
    _helperlib.c.
    Fr˜   z%LAPACK wrapper returned with an errorNrš   r    s       r$   Úcheck_lapack_returnr¦   I  sÙ   € ð
 
�Š�Ô,¨W°cÑ:Ô:À5ˆÑ	IÔ	Ið Cð Cà×&Ò& wÑ/Ô/ˆØ×ÒÑÔÐØ×ÒÐAÑBÔBÐBð	Cð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cr¤   c                 ó|  — t          j        t          j        d¦  «        t          t          t          t
          t
          t
          g¦  «        }t          j        |j        |d¦  «        }	t          |¦  «        }
t          j
        t          t          |
¦  «        ¦  «        }t          j
        t          t          |¦  «        ¦  «        }|                     |	||||                     |t
          ¦  «        |                     |t
          ¦  «        |                     |t
          ¦  «        f¦  «        }t          | ||¦  «         dS )zQ
    Call the BLAS vector * vector product function for the given arguments.
    r   Únumba_xxdotN)r   ÚFunctionTypeÚIntTypeÚll_charÚintp_tÚ	ll_void_pr   Úget_or_insert_functionÚmoduler%   ÚConstantÚordÚintÚcallÚbitcastr£   )r6   r7   Ú	conjugater!   r‘   Úa_dataÚb_dataÚout_dataÚfntyÚfnr#   Úkind_valr¡   s                r$   Ú
call_xxdotr¼   U  sõ   € õ
 Œ?�2œ: b™>œ>Ý#¥W­fÝ%¥yµ)ðñô €Dõ 
Ô	'¨¬¸¸mÑ	LÔ	L€Bå˜ÑÔ€DÝŒ{�7¥C¨¡I¤IÑ.Ô.€HÝ”�G¥S¨¡^¤^Ñ4Ô4€Ià
�,Š,�r˜H i°Ø#ŸOšO¨FµIÑ>Ô>Ø#ŸOšO¨FµIÑ>Ô>Ø#ŸOšO¨HµiÑ@Ô@ðBñ Cô C€Cõ �g˜w¨Ñ,Ô,Ð,Ð,Ð,r&   c                 óÜ  — t          j        t          j        d¦  «        t          t          t          t          t
          t
          t          t
          t
          t
          g
¦  «        }t          j        |j        |d¦  «        }	|j	        }
t          | ||
d¦  «        }t          | ||
d¦  «        }|j        dk    r|\  }}|d         }n|\  }}|d         }t          |
¦  «        }t          j        t          t          |¦  «        ¦  «        }t          j        t          |rt          d¦  «        nt          d	¦  «        ¦  «        }|                     |	|||||                     |t
          ¦  «        |                     |t
          ¦  «        ||                     |t
          ¦  «        |                     |t
          ¦  «        |                     |t
          ¦  «        f
¦  «        }t#          | ||¦  «         d
S )zQ
    Call the BLAS matrix * vector product function for the given arguments.
    r   Únumba_xxgemvç      ð?ç        ÚFr   r   Útr‘   N)r   r©   rª   r«   r¬   r­   r   r®   r¯   r!   r;   r|   r%   r°   r±   r³   r´   r£   )r6   r7   Údo_transÚm_typeÚm_shapesÚm_dataÚv_datar¸   r¹   rº   r!   ÚalphaÚbetaÚmr‘   Úldar#   r»   Útransr¡   s                       r$   Úcall_xxgemvrÍ   k  s”  € õ
 Œ?�2œ: b™>œ>Ý#¥WÝ"¥FÝ%¥yµ&Ý%¥yµ)ðñô €Dõ 
Ô	'¨¬¸¸nÑ	MÔ	M€BàŒL€EÝ˜w¨°¸Ñ<Ô<€EÝ˜g w°°sÑ;Ô;€Dà„}˜ÒÐØ‰ˆˆ1Ø�qŒkˆˆà‰ˆˆ1Ø�qŒkˆå˜ÑÔ€DÝŒ{�7¥C¨¡I¤IÑ.Ô.€HÝŒK�¨XÐ!C¥ S¡¤ ½3¸s¹8¼8ÑDÔD€Eà
�,Š,�r˜H e¨Q°Ø#ŸOšO¨Eµ9Ñ=Ô=Ø#ŸOšO¨FµIÑ>Ô>ÀØ#ŸOšO¨FµIÑ>Ô>Ø#ŸOšO¨Dµ)Ñ<Ô<Ø#ŸOšO¨HµiÑ@Ô@ðBñ Cô C€Cõ �g˜w¨Ñ,Ô,Ð,Ð,Ð,r&   c                 óð  ‡‡‡!‡"— t          j        t          j        d¦  «        t          t          t          t          t          t          t
          t
          t          t
          t          t
          t
          t          g¦  «        }t          j        ‰j        |d¦  «        }|\  }}|\  }}|j	        }t          | ‰|d¦  «        }t          | ‰|d¦  «        }t          j        t          t          d¦  «        ¦  «        Š"t          j        t          t          d¦  «        ¦  «        Š!ˆˆ!ˆˆ"fd„} ||||¦  «        \  }}} ||||¦  «        \  }}} |‰|	|
¦  «        \  }}}t          |¦  «        }t          j        t          t          |¦  «        ¦  «        }‰                     |||||||‰                     |t
          ¦  «        ||||‰                     |t
          ¦  «        ||f¦  «        } t!          | ‰| ¦  «         dS )	zQ
    Call the BLAS matrix * matrix product function for the given arguments.
    r   rQ   r¿   rÀ   rÂ   r‘   c                 ó–   •— | j         ‰j         k    r‰n‰| j         dk    r|d         n|d         ‰                     |t          ¦  «        fS )Nrz   r   r   )r|   r´   r­   )r8   ÚshapesÚdatar7   ÚnotransÚout_typerÌ   s      €€€€r$   Úget_array_paramz$call_xxgemm.<locals>.get_array_paramª  sP   ø€ ð ”y H¤OÒ3Ð3ˆGˆG¸àœ cÒ)Ð)ˆF�1ŒIˆI¨v°a¬yà�OŠO˜D¥)Ñ,Ô,ð
ð 	
r&   N)r   r©   rª   r«   r¬   r­   r   r®   r¯   r!   r;   r°   r±   r%   r³   r´   r£   )#r6   r7   Úx_typeÚx_shapesÚx_dataÚy_typeÚy_shapesÚy_datarÓ   Ú
out_shapesr¸   r¹   rº   rÊ   ÚkÚ_kr‘   r!   rÈ   rÉ   rÔ   ÚtransarË   Údata_aÚtransbÚldbÚdata_bÚ_ÚldcÚdata_cr#   r»   r¡   rÒ   rÌ   s#    `      `                        @@r$   Úcall_xxgemmræ   �  sÙ  øøøø€ õ Œ?�2œ: b™>œ>Ý#Ý#¥WÝ"¥F­FÝ%¥yµ&Ý%¥v­yÝ%¥vðñô €Dõ 
Ô	'¨¬¸¸nÑ	MÔ	M€Bà�D€A€qØ�E€BˆØŒL€EÝ˜w¨°¸Ñ<Ô<€EÝ˜g w°°sÑ;Ô;€DåŒK�¥ S¡¤Ñ*Ô*€EÝŒk�'¥3 s¡8¤8Ñ,Ô,€Gð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð *˜/¨&°(¸FÑCÔCÑ€FˆC�Ø)˜/¨&°(¸FÑCÔCÑ€FˆC�Ø$�_ X¨z¸8ÑDÔD�N€A€sˆFå˜ÑÔ€DÝŒ{�7¥C¨¡I¤IÑ.Ô.€Hà
�,Š,�r˜H f¨f°a¸¸AØ#ŸOšO¨Eµ9Ñ=Ô=¸vÀsØ" C¨¯ª¸½yÑ)IÔ)IØ" Cð)ñ *ô *€Cõ �g˜w¨Ñ,Ô,Ð,Ð,Ð,r&   c                 óf   — d„ }|                       ||||¦  «        }t          | ||j        |¦  «        S )z 
    np.dot(matrix, matrix)
    c                 óÒ   — | j         \  }}|j         \  }}|dk    rt          j        ||f| j        ¦  «        S t          j        ||f| j        ¦  «        }t          j        | ||¦  «        S ©Nr   ©ÚshapeÚnpÚzerosr!   ÚemptyÚdot)ÚaÚbrÊ   rÜ   rÝ   r‘   Úouts          r$   Údot_implzdot_2_mm.<locals>.dot_implÆ  sd   € ØŒw‰ˆˆ1Ø”‰ˆˆAØ�Š6ˆ6Ý”8˜Q ˜F A¤GÑ,Ô,Ð,ÝŒh˜˜1�v˜qœwÑ'Ô'ˆÝŒv�a˜˜CÑ Ô Ð r&   ©r”   r   rƒ   ©r6   r7   rO   r~   ró   r¡   s         r$   Údot_2_mmrö   Â  óB   € ð!ð !ð !ð ×
"Ò
" 7¨H°c¸4Ñ
@Ô
@€CÝ˜G W¨c¬o¸sÑCÔCÐCr&   c                 óf   — d„ }|                       ||||¦  «        }t          | ||j        |¦  «        S )z 
    np.dot(vector, matrix)
    c                 óÌ   — | j         \  }|j         \  }}|dk    rt          j        |f| j        ¦  «        S t          j        |f| j        ¦  «        }t          j        | ||¦  «        S ré   rê   )rð   rñ   rÊ   Ú_mr‘   rò   s         r$   ró   zdot_2_vm.<locals>.dot_implÖ  s^   € ØŒW‰ˆØ”‰ˆˆAØ�Š6ˆ6Ý”8˜Q˜E 1¤7Ñ+Ô+Ð+ÝŒh˜�u˜aœgÑ&Ô&ˆÝŒv�a˜˜CÑ Ô Ð r&   rô   rõ   s         r$   Údot_2_vmrû   Ò  r÷   r&   c                 óf   — d„ }|                       ||||¦  «        }t          | ||j        |¦  «        S )z 
    np.dot(matrix, vector)
    c                 óÌ   — | j         \  }}|j         \  }|dk    rt          j        |f| j        ¦  «        S t          j        |f| j        ¦  «        }t          j        | ||¦  «        S ré   rê   )rð   rñ   rÊ   r‘   Ú_nrò   s         r$   ró   zdot_2_mv.<locals>.dot_implæ  s^   € ØŒw‰ˆˆ1ØŒg‰ˆØ�Š6ˆ6Ý”8˜Q˜E 1¤7Ñ+Ô+Ð+ÝŒh˜�u˜aœgÑ&Ô&ˆÝŒv�a˜˜CÑ Ô Ð r&   rô   rõ   s         r$   Údot_2_mvrÿ   â  r÷   r&   Fc           
      ó"  — |j         \  }}|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | ||d         ¦  «        }	t          j        ||j        ¦  «        \  }
d„ }|                      ||t          t          j	        g|j         ¢R Ž |¦  «         t          | ||
¦  «         t          j        ||                      |¦  «        ¦  «        }t          | ||||
|j        |	j        |¦  «         |                     |¦  «        S )z<
    np.dot(vector, vector)
    np.vdot(vector, vector)
    r   r   c                 óT   — | j         \  }|j         \  }||k    rt          d¦  «        ‚d S )Nz;incompatible array sizes for np.dot(a, b) (vector * vector)©rë   Ú
ValueError)rð   rñ   rÊ   r‘   s       r$   Ú
check_argszdot_2_vv.<locals>.check_argsý  s;   € ØŒW‰ˆØŒW‰ˆØ�Š6ˆ6Ýð 1ñ 2ô 2ð 2ð ˆ6r&   )r~   rƒ   r   r   Úunpack_tuplerë   r”   r   r   r•   r–   Úalloca_onceÚget_value_typer¼   rÑ   Úload)r6   r7   rO   r~   rµ   ÚatyÚbtyr!   rð   rñ   r‘   r  rò   s                r$   Údot_2_vvr  ò  s  € ð
 Œx�H€CˆØŒO€EØ�
�3‰Œ˜ ¨$¨q¬'Ñ2Ô2€AØ�
�3‰Œ˜ ¨$¨q¬'Ñ2Ô2€AÝ	Ô	˜g q¤wÑ	/Ô	/�B€Að2ð 2ð 2ð ×Ò˜W jÝ&¥u¤zÐ=°C´HÐ=Ð=Ð=¸tñEô Eð Eå�˜ !Ñ$Ô$Ð$å
Ô
˜g w×'=Ò'=¸eÑ'DÔ'DÑ
EÔ
E€CÝˆw˜ ¨E°1°a´f¸a¼fÀcÑJÔJÐJØ�<Š<˜ÑÔÐr&   c                 ó$   — t          d| |¦  «        S )z
    np.dot(a, b)
    znp.dot()©Ú
dot_2_impl©ÚleftÚrights     r$   Údot_2r    s   € õ
 �j $¨Ñ.Ô.Ð.r&   c                 ó$   — t          d| |¦  «        S )z
    a @ b
    z'@'r  r  s     r$   Úmatmul_2r    s   € õ
 �e˜T 5Ñ)Ô)Ð)r&   c                 ó
  ‡ ‡— t          |t          j        ¦  «        rdt          |t          j        ¦  «        rLt          ˆ fd„¦   «         Š|j        dvs	|j        dvr!t          j        ‰ ›d||f›�t          ¦  «         ˆfd„S d S d S )Nc                 ój  •‡— |j         |j         fŠˆfd„}|j        |j        k    rt          d‰z  ¦  «        ‚‰dk    rt          j        |j        dd¦  «        }nH‰dk    s‰dk    rt          j        |j        dd¦  «        }n ‰d	k    r|j        }nt          d
‰z  ¦  «        ‚t          |||¦  «        |fS )Nc                 ó¤  •— t          ¦   «          t          | |||¦  «        5 \  }}‰dk    rt          | |||¦  «        cd d d ¦  «         S ‰dk    rt          | |||¦  «        cd d d ¦  «         S ‰dk    rt	          | |||¦  «        cd d d ¦  «         S ‰dk    rt          | |||¦  «        cd d d ¦  «         S t          d¦  «        ‚# 1 swxY w Y   d S )N©é   r  ©r  r   ©r   r  ©r   r   Úunreachable)r-   r�   rö   rÿ   rû   r  ÚAssertionError©r6   r7   rO   r~   Úndimss       €r$   Ú_dot2_codegenz0dot_2_impl.<locals>._impl.<locals>._dot2_codegen#  s{  ø€ Ý‘”�å$ W¨g°s¸DÑAÔAð 
<Á[ÀcÈ4Ø ’�Ý'¨°¸#¸tÑDÔDð
<ð 
<ð 
<ð 
<ñ 
<ô 
<ð 
<ð 
<ð  &š˜Ý'¨°¸#¸tÑDÔDð	
<ð 
<ð 
<ð 
<ñ 
<ô 
<ð 
<ð 
<ð
  &š˜Ý'¨°¸#¸tÑDÔDð
<ð 
<ð 
<ð 
<ñ 
<ô 
<ð 
<ð 
<ð  &š˜Ý'¨°¸#¸tÑDÔDð
<ð 
<ð 
<ð 
<ñ 
<ô 
<ð 
<ð 
<õ -¨]Ñ;Ô;Ð;ð
<ð 
<ð 
<ð 
<øøøð 
<ð 
<ð 
<ð 
<ð 
<ð 
<s)   ¢CÁ
CÁ.CÂCÂ6CÃC	ÃC	z)%s arguments must all have the same dtyper  r  rz   r  r  r   r  z*%s: inputs must have compatible dimensions)Úndimr!   r   r   r€   r   )Útypingcontextr  r  r!  rƒ   r   Únames        @€r$   Ú_implzdot_2_impl.<locals>._impl  së   øø€ à”Y ¤
Ð+ˆEð<ð <ð <ð <ð <ð Œz˜Uœ[Ò(Ð(Ý!Ø?À$ÑFñHô Hð Hð ˜ŠˆÝ#œk¨$¬*°a¸Ñ=Ô=��Ø˜&’� E¨V¢O OÝ#œk¨$¬*°a¸Ñ=Ô=��Ø˜&’�Ø"œj��å!ð $0Ø37ñ#8ñ 9ô 9ð 9å˜[¨$°Ñ6Ô6¸ÐEÐEr&   ry   z+ is faster on contiguous arrays, called on c                 ó   •—  ‰| |¦  «        S r3   rY   ©r  r  r%  s     €r$   ú<lambda>zdot_2_impl.<locals>.<lambda>F  ó   ø€  5 5¨¨uÑ#5Ô#5€ r&   ©r   r   r€   r	   r|   ÚwarningsÚwarnr   )r$  r  r  r%  s   `  @r$   r  r    sÃ   øø€ Ý�$�œÑ$Ô$ð (6­°E½5¼;Ñ)GÔ)Gð (6Ý	ð	Fð 	Fð 	Fð 	Fñ 
Œð	FðB Œ;˜dÐ"Ð" e¤l¸$Ð&>Ð&>ÝŒMà�D�D˜4 ˜-˜-ð*Ý+BñDô Dð Dð 6Ð5Ð5Ð5Ð5ðQ(6ð (6ð (6ð (6r&   c                 ó   ‡— t          | t          j        ¦  «        r`t          |t          j        ¦  «        rHt          d„ ¦   «         Š| j        dvs	|j        dvrt          j        d| |f›�t          ¦  «         ˆfd„S dS dS )z
    np.vdot(a, b)
    c                 óÀ   — d„ }|j         dk    s|j         dk    rt          d¦  «        ‚|j        |j        k    rt          d¦  «        ‚t          |j        ||¦  «        |fS )Nc                 ó¤   — t          ¦   «          t          | |||¦  «        5 \  }}t          | |||d¬¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NT)rµ   )r-   r�   r  )r6   r7   rO   r~   s       r$   Úcodegenz$vdot.<locals>._impl.<locals>.codegenQ  s®   € Ý‘”�å$ W¨g°s¸DÑAÔAð QÙ#˜˜dÝ# G¨W°c¸4È4ÐPÑPÔPðQð Qð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qð Qð Qs   ¡AÁA	ÁA	r   z&np.vdot() only supported on 1-D arraysz0np.vdot() arguments must all have the same dtype)r"  r   r!   r   )r#  r  r  r0  s       r$   r%  zvdot.<locals>._implO  sz   € ðQð Qð Qð Œy˜AŠ~ˆ~ ¤¨q¢ Ý!Ð"JÑKÔKÐKàŒz˜Uœ[Ò(Ð(Ý!ØFñHô Hð Hå˜TœZ¨¨uÑ5Ô5°wÐ>Ð>r&   ry   ú4np.vdot() is faster on contiguous arrays, called on c                 ó   •—  ‰| |¦  «        S r3   rY   r'  s     €r$   r(  zvdot.<locals>.<lambda>e  r)  r&   Nr*  r'  s     @r$   Úvdotr3  I  s¬   ø€ õ
 �$�œÑ$Ô$ð 6­°E½5¼;Ñ)GÔ)Gð 6Ý	ð	?ð 	?ñ 
Œð	?ð  Œ;˜dÐ"Ð" e¤l¸$Ð&>Ð&>ÝŒMˆMà˜%�=�=ð#Ý$;ñ=ô =ð =ð 6Ð5Ð5Ð5Ð5ð/6ð 6ð 6ð 6r&   c                 óŒ   — | j         \  }|j         \  }}||k    rt          d¦  «        ‚|j         |fk    rt          d¦  «        ‚d S )Nz;incompatible array sizes for np.dot(a, b) (vector * matrix)zFincompatible output array size for np.dot(a, b, out) (vector * matrix)r  )rð   rñ   rò   rÊ   rú   r‘   s         r$   Údot_3_vm_check_argsr5  h  sg   € Ø	
Œ�B€AØŒG�E€BˆØˆB‚w€wÝð :ñ ;ô ;ð 	;à
„y�Q�DÒÐÝð ?ñ @ô @ð 	@ð Ðr&   c                 óŒ   — | j         \  }}|j         \  }||k    rt          d¦  «        ‚|j         |fk    rt          d¦  «        ‚d S )Nz;incompatible array sizes for np.dot(a, b) (matrix * vector)zFincompatible output array size for np.dot(a, b, out) (matrix * vector)r  )rð   rñ   rò   rÊ   rþ   r‘   s         r$   Údot_3_mv_check_argsr7  s  sg   € ØŒG�E€A€rØ	
Œ�B€AØˆB‚w€wÝð -ñ .ô .ð 	.à
„y�Q�DÒÐÝð ?ñ @ô @ð 	@ð Ðr&   c                 ó®  — |j         \  }}}||j        k    sJ ‚|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | ||d         ¦  «        }	 t          |¦  «        | ||d         ¦  «        }
t	          j        ||j        ¦  «        }t	          j        ||	j        ¦  «        }t	          j        ||
j        ¦  «        }|j        |j        k     r5|}|}|d         }|d         }|j        dk    }|	j	        |j	        }}t          }n4|}|}|d         }|d         }|j        dk    }|j	        |	j	        }}t          }|                      ||t          t          j        g|j         ¢R Ž |¦  «         |D ]}t!          | ||¦  «         Œ|                      t          j        d¦  «        }|                     d||¦  «        }|                     d||¦  «        }|                     ||¦  «        }|                     |d¬¦  «        5 \  }}|5  t	          j        ||
j	        |                     |
j        |
j        ¦  «        d¦  «         d	d	d	¦  «         n# 1 swxY w Y   |5  t5          | |||||||
j	        ¦  «         d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   t7          | ||j        |
                     ¦   «         ¦  «        S )
zE
    np.dot(vector, matrix, out)
    np.dot(matrix, vector, out)
    r   r   r  rÁ   rz   ú==Fr˜   N)r~   rƒ   r!   r   r   r  rë   r"  r|   rÑ   r5  r7  r”   r   r   r•   r–   Úget_constantrI   Úicmp_signedÚor_Úif_elseÚmemsetÚmulÚitemsizeÚnitemsrÍ   r   Ú	_getvalue)r6   r7   rO   r~   ÚxtyÚytyÚouttyr!   ÚxÚyrò   rÖ   rÙ   rÛ   ÚmtyrÅ   Úv_shaperË   rÃ   rÆ   rÇ   r  r9   ÚzeroÚ
both_emptyÚmatrix_emptyÚis_emptyrî   Únonemptys                                r$   Údot_3_vmrO  ~  s³  € ð
 ”h�O€CˆˆeØ�C”OÒ#Ð#Ð#Ð#ØŒI€Eà�
�3‰Œ˜ ¨$¨q¬'Ñ2Ô2€AØ�
�3‰Œ˜ ¨$¨q¬'Ñ2Ô2€AØ
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€CÝÔ# G¨Q¬WÑ5Ô5€HÝÔ# G¨Q¬WÑ5Ô5€HÝÔ% g¨s¬yÑ9Ô9€JØ
„x�#”(ÒÐð ˆØˆØ˜1”+ˆØ�qŒkˆØ”: Ò$ˆØœ ¤�ˆÝ(ˆ
ˆ
ð ˆØˆØ˜1”+ˆØ�qŒkˆØ”: Ò$ˆØœ ¤�ˆÝ(ˆ
à×Ò˜W jÝ&¥u¤zÐ=°C´HÐ=Ð=Ð=¸tñEô Eð Eàð +ð +ˆÝ�G˜W cÑ*Ô*Ð*Ð*à×Ò¥¤
¨AÑ.Ô.€DØ×$Ò$ T¨7°DÑ9Ô9€JØ×&Ò& t¨S°$Ñ7Ô7€LØ�{Š{˜: |Ñ4Ô4€HØ	�Š˜¨%ˆÑ	0Ô	0ð *Ñ4E°U¸HØð 	Eð 	EÝŒN˜7 C¤HØ"Ÿ;š; s¤|°S´ZÑ@Ô@À!ñEô Eð Eð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð ð 	*ð 	*Ý˜ ¨(°C¸À6Ø ¤ñ*ô *ð *ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð	*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ ˜W g¨s¬Ø Ÿ]š]™_œ_ñ.ô .ð .sZ   È
J#È;IÉJ#ÉI	ÉJ#ÉI	ÉJ#É$JÊ J#ÊJ	ÊJ#ÊJ	ÊJ#Ê#J'Ê*J'c                 ó^	  — |j         \  }}}||j        k    sJ ‚|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | ||d         ¦  «        }	 t          |¦  «        | ||d         ¦  «        }
t	          j        ||j        ¦  «        }t	          j        ||	j        ¦  «        }t	          j        ||
j        ¦  «        }|\  }}|\  }}|j        dk    sJ ‚d„ }|                      ||t          t          j        g|j         ¢R Ž |¦  «         t          | ||¦  «         t          | ||¦  «         t          | ||¦  «         |j        }|	j        }|
j        }|                      t          j        d¦  «        }|                     d||¦  «        }|                     d||¦  «        }|                     d||¦  «        }|                     ||                     ||¦  «        ¦  «        }|                     |d¬¦  «        5 \  }}|5  t	          j        ||
j        |                     |
j        |
j        ¦  «        d¦  «         d	d	d	¦  «         n# 1 swxY w Y   |5  |                      t          j        d¦  «        }|                     d||¦  «        }|                     d||¦  «        }|                     |¦  «        5 \  } }!| 5  |                     |¦  «        5 \  }"}#|"5  t/          | |d|||||¦  «         d	d	d	¦  «         n# 1 swxY w Y   |#5  |j        |j        k    }$t1          | ||$|||||¦  «         d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   |!5  |                     |¦  «        5 \  }%}&|%5  |j        |j        k    }$t1          | ||$|||||¦  «         d	d	d	¦  «         n# 1 swxY w Y   |&5  t3          | ||||||||||¦  «         d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   t5          | ||j        |
                     ¦   «         ¦  «        S )
z%
    np.dot(matrix, matrix, out)
    r   r   r  rz   c                 ó�   — | j         \  }}|j         \  }}||k    rt          d¦  «        ‚|j         ||fk    rt          d¦  «        ‚d S )Nz;incompatible array sizes for np.dot(a, b) (matrix * matrix)zFincompatible output array size for np.dot(a, b, out) (matrix * matrix)r  )rð   rñ   rò   rÊ   rÜ   rÝ   r‘   s          r$   r  zdot_3_mm.<locals>.check_argsË  sl   € ØŒw‰ˆˆ1Ø”‰ˆˆAØ�Š7ˆ7Ýð 1ñ 2ô 2ð 2àŒ9˜˜A˜ÒÐÝð Cñ Dô Dð Dð Ðr&   r9  Fr˜   N)r~   rƒ   r!   r   r   r  rë   r|   r”   r   r   r•   r–   rÑ   r:  rI   r;  r<  r=  r>  r?  r@  rA  r¼   rÍ   ræ   r   rB  )'r6   r7   rO   r~   rC  rD  rE  r!   rF  rG  rò   rÖ   rÙ   rÛ   rÊ   rÜ   rÝ   r‘   r  r×   rÚ   r¸   rJ  rK  Úx_emptyÚy_emptyrM  rî   rN  ÚoneÚis_left_vecÚis_right_vecÚr_vecÚr_matÚv_vÚm_vrÃ   Úv_mÚm_ms'                                          r$   Údot_3_mmr]  ·  s«  € ð ”h�O€CˆˆeØ�C”OÒ#Ð#Ð#Ð#ØŒI€Eà�
�3‰Œ˜ ¨$¨q¬'Ñ2Ô2€AØ�
�3‰Œ˜ ¨$¨q¬'Ñ2Ô2€AØ
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€CÝÔ# G¨Q¬WÑ5Ô5€HÝÔ# G¨Q¬WÑ5Ô5€HÝÔ% g¨s¬yÑ9Ô9€JØ�D€A€qØ�E€Bˆð Œ<˜3ÒÐÐÐðDð Dð Dð ×Ò˜W jÝ&¥u¤zÐ=°C´HÐ=Ð=Ð=¸tñEô Eð Eõ �˜ !Ñ$Ô$Ð$Ý�˜ !Ñ$Ô$Ð$Ý�˜ !Ñ$Ô$Ð$àŒV€FØŒV€FØŒx€Hð ×Ò¥¤
¨AÑ.Ô.€DØ×$Ò$ T¨1¨dÑ3Ô3€JØ×!Ò! $¨¨4Ñ0Ô0€GØ×!Ò! $¨¨4Ñ0Ô0€GØ�{Š{˜: w§{¢{°7¸GÑ'DÔ'DÑEÔE€HØ	�Š˜¨%ˆÑ	0Ô	0ð $EÑ4E°U¸HØð 	Eð 	EÝŒN˜7 C¤HØ"Ÿ;š; s¤|°S´ZÑ@Ô@À!ñEô Eð Eð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð ð  	Eð  	Eð ×&Ò&¥u¤z°1Ñ5Ô5ˆCØ!×-Ò-¨d°A°sÑ;Ô;ˆKØ"×.Ò.¨t°Q¸Ñ<Ô<ˆLà—’ Ñ.Ô.ð E±.°5¸%Øð 
Qð 
QØ Ÿš¨Ñ5Ô5ð 	Q¹¸#¸sØ ð Dð Då& w°¸ÀØ'(¨&°&¸(ñDô Dð DðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dð !ð Qð Qà'*¤z°U´\Ò'A˜HÝ'¨°¸(Ø(+¨X°v¸vÀxñQô Qð QðQð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qð	Qð 	Qð 	Qñ 	Qô 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qøøøð 	Qð 	Qð 	Qð 	Qð
Qð 
Qð 
Qñ 
Qô 
Qð 
Qð 
Qð 
Qð 
Qð 
Qð 
Qøøøð 
Qð 
Qð 
Qð 
Qð ð Eð EØ Ÿš¨Ñ5Ô5ð E¹¸#¸sØ ð Qð Qà'*¤z°U´\Ò'A˜HÝ'¨°¸(Ø(+¨X°v¸vÀxñQô Qð QðQð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qð
 !ð Eð Eå'¨°Ø(+¨X°vØ(+¨X°vØ(-¨z¸8ñEô Eð EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð 	Eð  	Eð  	Eñ  	Eô  	Eð  	Eð  	Eð  	Eð  	Eð  	Eð  	Eøøøð  	Eð  	Eð  	Eð  	Eð	$Eð $Eð $Eñ $Eô $Eð $Eð $Eð $Eð $Eð $Eð $Eøøøð $Eð $Eð $Eð $EõL ˜W g¨s¬Ø Ÿ]š]™_œ_ñ.ô .ð .sŸ  ÈQ;È;IÉ	Q;ÉI	ÉQ;ÉI	ÉQ;É"A$Q$ËQËM9	Ë"M"Ë(LË?M"ÌLÌM"ÌLÌM"Ì'MÌ?M"ÍMÍM"ÍMÍM"ÍM9	Í"M&Í&M9	Í)M&Í*M9	Í-QÍ9M=Í=QÎ M=ÎQÎP6	ÎPÎ"'OÏ	PÏOÏPÏOÏPÏ"PÏ<PÐPÐPÐPÐPÐP6	ÐP#Ð#P6	Ð&P#Ð'P6	Ð*QÐ6P:Ð:QÐ=P:Ð>QÑQ$ÑQÑQ$ÑQÑQ$ÑQ;Ñ$Q(	Ñ(Q;Ñ+Q(	Ñ,Q;Ñ;Q?ÒQ?c                 óJ  ‡— t          | t          j        ¦  «        rƒt          |t          j        ¦  «        rkt          |t          j        ¦  «        rSt          d„ ¦   «         Š| j        dvs|j        dvs	|j        dvrt          j        d| |f›�t          ¦  «         ˆfd„S dS dS dS )z
    np.dot(a, b, out)
    c                 óŽ   — d„ }|j         |j         k    s|j         |j         k    rt          d¦  «        ‚t          ||||¦  «        |fS )Nc                 ód  — t          ¦   «          t          | |||¦  «        5 \  }}t          d„ |j        d d…         D ¦   «         ¦  «        }|dhk    rt	          | |||¦  «        cd d d ¦  «         S |ddhk    rt          | |||¦  «        cd d d ¦  «         S t          d¦  «        ‚# 1 swxY w Y   d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r3   ©r"  )Ú.0rF  s     r$   ú	<genexpr>z8dot_3.<locals>._impl.<locals>.codegen.<locals>.<genexpr>  s$   è è € Ð=Ð=¨1 ¤Ð=Ð=Ð=Ð=Ð=Ð=r&   r  r   r  )r-   r�   Úsetr~   r]  rO  r  r  s        r$   r0  z%dot_3.<locals>._impl.<locals>.codegen  s$  € Ý‘”�å$ W¨g°s¸DÑAÔAð <ñ FLÀcØFJÝÐ=Ð=°´¸¸!¸´Ð=Ñ=Ô=Ñ=Ô=�EØ  ’|�|Ý'¨°¸#¸tÑDÔDð	<ð <ð <ð <ñ <ô <ð <ð <ð
  1 a &š˜Ý'¨°¸#¸tÑDÔDð<ð <ð <ð <ñ <ô <ð <ð <õ -¨]Ñ;Ô;Ð;ð<ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   ¡AB%Á0B%ÂB%Â%B)Â,B)z/np.dot() arguments must all have the same dtype)r!   r   r   )r#  r  r  rò   r0  s        r$   r%  zdot_3.<locals>._impl  sc   € ð<ð <ð <ð Œz˜Uœ[Ò(Ð(¨D¬J¸#¼)Ò,CÐ,CÝ!ØEñGô Gð Gõ ˜S $¨¨sÑ3Ô3°WÐ<Ð<r&   ry   r1  c                 ó   •—  ‰| ||¦  «        S r3   rY   ©r  r  rò   r%  s      €r$   r(  zdot_3.<locals>.<lambda>1  s   ø€ ¨¨¨d°E¸3Ñ(?Ô(?€ r&   Nr*  rg  s      @r$   Údot_3rh    sç   ø€ õ
 	�4�œÑ%Ô%ð @­*°U½E¼KÑ*HÔ*Hð @Ý�s�EœKÑ(Ô(ð@å	ð	=ð 	=ñ 
Œð	=ð& Œ;˜dÐ"Ð" e¤l¸$Ð&>Ð&>À#Ä*ØðCð CåŒMˆMà˜%�=�=ð#Ý$;ñ=ô =ð =ð @Ð?Ð?Ð?Ð?ð9@ð @ð @ð @ð @ð @r&   Únumba_fatal_errorc                 ó¾   — t          j        | ¦  «        D ]G}t          j        |                     ¦   «         ¦  «        st           j                             d¦  «        ‚ŒHd S )Nz$Array must not contain infs or NaNs.)rì   ÚnditerÚisfiniteÚitemÚlinalgÚLinAlgError)rð   Úvs     r$   Ú_check_finite_matrixrq  7  s_   € åŒY�q‰\Œ\ð 8ð 8ˆÝŒ{˜1Ÿ6š6™8œ8Ñ$Ô$ð 	8Ý”)×'Ò'Ø6ñ8ô 8ð 8ð	8ð8ð 8r&   Tc                 ó€  — |rdnd}||f}t          | t          j        ¦  «        r| j        } t          | t          j        ¦  «        sd|z  }t          |d¬¦  «        ‚| j        dk    sd|z  }t          |d¬¦  «        ‚t          | j        t          j        t          j	        f¦  «        sd|z  }t          |d¬¦  «        ‚d S )	Nú	np.linalgrì   z&%s.%s() only supported for array typesF©Úhighlightingr  z%%s.%s() only supported on 2-D arrays.ú3%s.%s() only supported on float and complex arrays.)
r   r   ÚOptionalÚtyper€   r   r"  r!   ÚFloatÚComplex)rð   r"   Ú	la_prefixÚprefixÚinterpÚmsgs         r$   Ú_check_linalg_matrixr  ?  sÙ   € ð &Ð/ˆ[ˆ[¨4€FØ�iÐ €Få�!•U”^Ñ$Ô$ð ØŒFˆÝ�a�œÑ%Ô%ð 3Ø6¸Ñ?ˆÝ˜#¨EÐ2Ñ2Ô2Ð2ØŒ6�QŠ;ˆ;Ø5¸Ñ>ˆÝ˜#¨EÐ2Ñ2Ô2Ð2Ý�a”g¥¤­U¬]Ð;Ñ<Ô<ð 3ð(Ø*0ñ1ˆå˜#¨EÐ2Ñ2Ô2Ð2ð3ð 3r&   c                 ó|   — |d         j         }|dd …         D ]#}|j         |k    rd| z  }t          |d¬¦  «        ‚Œ$d S )Nr   r   zAnp.linalg.%s() only supports inputs that have homogeneous dtypes.Frt  )r!   r   )r"   r   Út0rÂ   r~  s        r$   Ú_check_homogeneous_typesr‚  T  s\   € Ø	ˆqŒŒ€BØ�1�2�2ŒYð 7ð 7ˆØŒ7�bŠ=ˆ=ØUÐXaÑaˆCÝ˜c°Ð6Ñ6Ô6Ð6ð ð7ð 7r&   c                  ó   — d S r3   rY   rY   r&   r$   Ú_copy_to_fortran_orderr„  \  s   € Ø€Dr&   c                 óB   ‡‡— | j         dk    Š| j         dk    Šˆˆfd„}|S )NrÁ   ÚAc                 óæ   •— ‰rt          j        | ¦  «        }nX‰rB| j        j        }|rt          j        | j        ¦  «        j        }n)t          j        | ¦  «        }nt          j        | ¦  «        }|S r3   )rì   r�   ÚflagsÚf_contiguousÚTÚasfortranarray)rð   ÚacpyÚflag_fÚA_layoutÚF_layouts      €€r$   r“   z&ol_copy_to_fortran_order.<locals>.implf  st   ø€ Øð 	(å”7˜1‘:”:ˆDˆDØð 	(à”WÔ)ˆFØð ,õ ”w˜qœs‘|”|”~��õ Ô(¨Ñ+Ô+��õ Ô$ QÑ'Ô'ˆDØˆr&   r{   )rð   r“   rŽ  r�  s     @@r$   Úol_copy_to_fortran_orderr�  `  sA   øø€ ð Œx˜3Š€HØŒx˜3Š€Hðð ð ð ð ð ð& €Kr&   c                 óŒ   — | dk    r;| dk     rt          ¦   «          J ‚| dk    r!t          j                             d¦  «        ‚d S d S )Nr   z(Matrix is singular to machine precision.)Úfatal_error_funcrì   rn  ro  ©Úrs    r$   Ú_inv_err_handlerr•  |  sY   € àˆA‚v€vØˆqŠ5ˆ5ÝÑÔÐØˆHØˆqŠ5ˆ5Ý”)×'Ò'Ø:ñ<ô <ð <ð €vð ˆ5r&   c                 ó   — | d         S )zFpass a list of variables to be preserved through dead code eliminationr   rY   ©rð   s    r$   Ú_dummy_liveness_funcr˜  †  s   € ð ˆQŒ4€Kr&   c                 ó2  ‡‡‡— t          ¦   «          t          | d¦  «         t          ¦   «                              | j        ¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Šˆˆˆfd„}|S )NÚinvc                 óà  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }|dk    r|S t          j        |t          ¬¦  «        } ‰‰|||j        ||j        ¦  «        }t          |¦  «          ‰‰||j        ||j        ¦  «        }t          |¦  «         t          |j        |j        g¦  «         |S )Néÿÿÿÿéþÿÿÿú.Last 2 dimensions of the array must be square.r   ©r!   )rë   rì   rn  ro  rq  r„  rî   ÚF_INT_nptypeÚctypesr•  r˜  Úsize)	rð   r‘   r~  rŒ  Úipivr”  r#   r^   Únumba_xxgetris	         €€€r$   Úinv_implzinv_impl.<locals>.inv_impl˜  sé   ø€ ØŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆà�Š6ˆ6ØˆKåŒx˜¥Ð.Ñ.Ô.ˆàˆM˜$  1 d¤k°1°d´kÑBÔBˆÝ˜ÑÔÐàˆM˜$  4¤;°°4´;Ñ?Ô?ˆÝ˜ÑÔÐõ 	˜dœi¨¬Ð3Ñ4Ô4Ð4Øˆr&   )r1   r  r[   r^   r!   rb   r±   r%   )rð   r¥  r#   r^   r¤  s     @@@r$   r¥  r¥  Œ  s“   øøø€ å�O„O€Oå˜˜EÑ"Ô"Ð"å‘I”I×+Ò+¨A¬GÑ4Ô4€Må‘I”I×.Ò.¨q¬wÑ7Ô7€Må�}˜QœW eÑ,Ô,Ñ-Ô-€Dðð ð ð ð ð ð ð2 €Or&   c                 ól   — | dk    r+| dk     rt          ¦   «          J ‚| dk    rt          d¦  «        ‚d S d S )Nr   z&Internal algorithm failed to converge.)r’  r  r“  s    r$   Ú%_handle_err_maybe_convergence_problemr§  ´  sK   € àˆA‚v€vØˆqŠ5ˆ5ÝÑÔÐØˆHØˆqŠ5ˆ5ÝÐEÑFÔFÐFð €vð ˆ5r&   c                 ó&  — |rdnd}||f}t          | t          j        ¦  «        st          d|z  ¦  «        ‚| j        dk    st          d|z  ¦  «        ‚t          | j        t          j        t          j        f¦  «        st          d|z  ¦  «        ‚d S )Nrs  rì   z'%s.%s() only supported for array types r  ú+%s.%s() only supported on 1 and 2-D arrays rv  )r   r   r€   r   r"  r!   ry  rz  ©rð   r"   r{  r|  r}  s        r$   Ú_check_linalg_1_or_2d_matrixr«  ¾  sÁ   € ð &Ð/ˆ[ˆ[¨4€FØ�iÐ €Få�a�œÑ%Ô%ð $ÝÐCØ"ñ#ñ $ô $ð 	$àŒ6�QŠ;ˆ;ÝÐGØ"ñ#ñ $ô $ð 	$å�a”g¥¤­U¬]Ð;Ñ<Ô<ð @Ýð 6Ø8>ñ?ñ @ô @ð 	@ð@ð @r&   c                 ó"  ‡‡‡— t          ¦   «          t          | d¦  «         t          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        }ˆˆˆfd„}|S )NÚcholeskyÚUÚLc                 óž  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚|                      ¦   «         }|dk    r|S  ‰‰‰||j        |¦  «        }|dk    r;|dk     rt          ¦   «          J ‚|dk    rt          j                             d¦  «        ‚t          |¦  «        D ]}d|d |…|f<   Œ|S )Nrœ  r�  rž  r   z Matrix is not positive definite.)rë   rì   rn  ro  r�   r¡  r’  Úrange)	rð   r‘   r~  rò   r”  ÚcolÚUPr#   rk   s	         €€€r$   Úcho_implzcho_impl.<locals>.cho_implÜ  sê   ø€ ØŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,ð �fŠf‰hŒhˆà�Š6ˆ6ØˆJð ˆM˜$  A s¤z°1Ñ5Ô5ˆØ�Š6ˆ6Ø�1ŠuˆuÝ Ñ"Ô"Ð"Ø�Ø�1ŠuˆuÝ”i×+Ò+Ø6ñ8ô 8ð 8õ ˜‘8”8ð 	ð 	ˆCØˆC����c�	‰NˆNØˆ
r&   )r1   r  r[   rk   r!   r±   r%   )rð   ÚLOr´  r³  r#   rk   s      @@@r$   r´  r´  Ð  s�   øøø€ å�O„O€Oå˜˜JÑ'Ô'Ð'å‘I”I×+Ò+¨A¬GÑ4Ô4€Må�}˜QœW jÑ1Ô1Ñ2Ô2€DÝ	ˆS‰Œ€BÝ	ˆS‰Œ€Bðð ð ð ð ð ð ð< €Or&   c                 óÐ  ‡‡‡‡‡— t          ¦   «          t          | d¦  «         t          ¦   «                              | j        ¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        Šˆˆˆˆfd„}ˆˆˆˆfd„}t          | j        t          j
        j        ¦  «        r|S |S )NÚeigÚNÚVc                 óò  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }d}|}t          j        || j        ¬¦  «        }t          j        || j        ¬¦  «        }t          j        ||f| j        ¬¦  «        }t          j        ||f| j        ¬¦  «        }	|dk    r	||	j        fS  ‰‰‰‰||j	        ||j	        |j	        |j	        ||	j	        |¦  «        }
t          |
¦  «         t          j        |¦  «        rt          d¦  «        ‚t          |j        |j        |	j        |j        |j        g¦  «         ||	j        fS )z7
        eig() implementation for real arrays.
        rœ  r�  rž  r   rŸ  r   z.eig() argument must not cause a domain change.)rë   rì   rn  ro  rq  r„  rî   r!   rŠ  r¡  r§  Úanyr  r˜  r¢  ©rð   r‘   r~  rŒ  ÚldvlÚldvrÚwrÚwiÚvlÚvrr”  ÚJOBVLÚJOBVRr#   rd   s              €€€€r$   Úreal_eig_implzeig_impl.<locals>.real_eig_impl
  s€  ø€ ð ŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆàˆØˆÝŒX�a˜qœwÐ'Ñ'Ô'ˆÝŒX�a˜qœwÐ'Ñ'Ô'ˆÝŒX�q˜$�i q¤wÐ/Ñ/Ô/ˆÝŒX�q˜$�i q¤wÐ/Ñ/Ô/ˆà�Š6ˆ6Ø˜œ�:ÐàˆN˜4Ø!Ø!ØØ œKØØœIØœIØœIØ ØœIØ ñ"ô "ˆõ 	.¨aÑ0Ô0Ð0õ Œ6�"‰:Œ:ð 	BÝØ@ñBô Bð Bõ
 	˜dœi¨¬°"´'¸2¼7ÀBÄGÐLÑMÔMÐMØ�B”DˆzÐr&   c                 ó^  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }d}|}t          j        || j        ¬¦  «        }t          j        ||f| j        ¬¦  «        }t          j        ||f| j        ¬¦  «        }|dk    r	||j        fS  ‰‰‰
‰||j	        ||j	        |j	        ||j	        |¦  «        }	t          |	¦  «         t          |j        |j        |j        |j        g¦  «         ||j        fS )z:
        eig() implementation for complex arrays.
        rœ  r�  rž  r   rŸ  r   )rë   rì   rn  ro  rq  r„  rî   r!   rŠ  r¡  r§  r˜  r¢  ©rð   r‘   r~  rŒ  r½  r¾  ÚwrÁ  rÂ  r”  rÃ  rÄ  r#   rf   s             €€€€r$   Úcmplx_eig_implz eig_impl.<locals>.cmplx_eig_implB  s6  ø€ ð ŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆàˆØˆÝŒH�Q˜aœgÐ&Ñ&Ô&ˆÝŒX�q˜$�i q¤wÐ/Ñ/Ô/ˆÝŒX�q˜$�i q¤wÐ/Ñ/Ô/ˆà�Š6ˆ6Ø�r”t�9ÐàˆN˜4Ø!Ø!ØØ œKØØœHØœIØ ØœIØ ñ
"ô 
"ˆõ 	.¨aÑ0Ô0Ð0õ 	˜dœi¨¬°"´'¸1¼6ÐBÑCÔCÐCØ�2”4ˆyÐr&   ©r1   r  r[   rd   r!   rf   r±   r%   r   r   Úscalarsrz  )rð   rÅ  rÉ  rÃ  rÄ  r#   rf   rd   s      @@@@@r$   Úeig_implrÌ  ü  sú   øøøøø€ å�O„O€Oå˜˜EÑ"Ô"Ð"å‘Y”Y×-Ò-¨a¬gÑ6Ô6€NÝ‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå�}˜QœW eÑ,Ô,Ñ-Ô-€Då�‰HŒH€EÝ�‰HŒH€Eð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ðp&ð &ð &ð &ð &ð &ð &ð &õP �!”'�5œ=Ô0Ñ1Ô1ð ØÐàÐr&   c                 óÐ  ‡‡‡‡‡— t          ¦   «          t          | d¦  «         t          ¦   «                              | j        ¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        Šˆˆˆˆfd„}ˆˆˆˆfd„}t          | j        t          j
        j        ¦  «        r|S |S )NÚeigvalsr¸  c                 óÎ  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }d}d}t          j        || j        ¬¦  «        }|dk    r|S t          j        || j        ¬¦  «        }t          j        d| j        ¬¦  «        }t          j        d| j        ¬¦  «        }	 ‰‰‰‰||j        ||j        |j        |j        ||	j        |¦  «        }
t          |
¦  «         t          j
        |¦  «        rt          d¦  «        ‚t          |j        |j        |	j        |j        |j        g¦  «         |S )z;
        eigvals() implementation for real arrays.
        rœ  r�  rž  r   rŸ  r   z2eigvals() argument must not cause a domain change.)rë   rì   rn  ro  rq  r„  rî   r!   r¡  r§  r»  r  r˜  r¢  r¼  s              €€€€r$   Úreal_eigvals_implz'eigvals_impl.<locals>.real_eigvals_impl}  sl  ø€ ð ŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆàˆØˆÝŒX�a˜qœwÐ'Ñ'Ô'ˆà�Š6ˆ6ØˆIåŒX�a˜qœwÐ'Ñ'Ô'ˆõ ŒX�q ¤Ð)Ñ)Ô)ˆÝŒX�q ¤Ð)Ñ)Ô)ˆàˆN˜4Ø!Ø!ØØ œKØØœIØœIØœIØ ØœIØ ñ"ô "ˆõ 	.¨aÑ0Ô0Ð0õ Œ6�"‰:Œ:ð 	FÝØDñFô Fð Fõ
 	˜dœi¨¬°"´'¸2¼7ÀBÄGÐLÑMÔMÐMØˆ	r&   c                 ó:  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }d}d}t          j        || j        ¬¦  «        }|dk    r|S t          j        d| j        ¬¦  «        }t          j        d| j        ¬¦  «        } ‰‰‰
‰||j        ||j        |j        ||j        |¦  «        }	t          |	¦  «         t          |j        |j        |j        |j        g¦  «         |S )z>
        eigvals() implementation for complex arrays.
        rœ  r�  rž  r   rŸ  r   )rë   rì   rn  ro  rq  r„  rî   r!   r¡  r§  r˜  r¢  rÇ  s             €€€€r$   Úcmplx_eigvals_implz(eigvals_impl.<locals>.cmplx_eigvals_impl¸  s   ø€ ð ŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆàˆØˆÝŒH�Q˜aœgÐ&Ñ&Ô&ˆà�Š6ˆ6ØˆHåŒX�q ¤Ð)Ñ)Ô)ˆÝŒX�q ¤Ð)Ñ)Ô)ˆàˆN˜4Ø!Ø!ØØ œKØØœHØœIØ ØœIØ ñ
"ô 
"ˆõ 	.¨aÑ0Ô0Ð0õ 	˜dœi¨¬°"´'¸1¼6ÐBÑCÔCÐCØˆr&   rÊ  )rð   rÐ  rÒ  rÃ  rÄ  r#   rf   rd   s      @@@@@r$   Úeigvals_implrÓ  o  sú   øøøøø€ å�O„O€Oå˜˜IÑ&Ô&Ð&å‘Y”Y×-Ò-¨a¬gÑ6Ô6€NÝ‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå�}˜QœW iÑ0Ô0Ñ1Ô1€Då�‰HŒH€EÝ�‰HŒH€Eð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ðv'ð 'ð 'ð 'ð 'ð 'ð 'ð 'õR �!”'�5œ=Ô0Ñ1Ô1ð !Ø!Ð!à Ð r&   c                 óˆ  ‡‡‡‡‡— t          ¦   «          t          | d¦  «         t          | j        d| j        ¦  «        }t	          j        |¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        Šˆˆˆˆˆfd„}|S )NÚeighrC   r¹  r¯  c           	      ó�  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }t          j        |‰
¬¦  «        }|dk    r||fS  ‰	‰‰‰||j        ||j        ¦  «        }t          |¦  «         t          |j
        |j
        g¦  «         ||fS ©Nrœ  r�  rž  rŸ  r   ©rë   rì   rn  ro  rq  r„  rî   r¡  r§  r˜  r¢  ©rð   r‘   r~  rŒ  rÈ  r”  ÚJOBZÚUPLOr#   rh   Úw_dtypes         €€€€€r$   Ú	eigh_implzeigh_impl.<locals>.eigh_impl÷  sØ   ø€ ØŒG�BŒKˆàŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆåŒH�Q˜gÐ&Ñ&Ô&ˆà�Š6ˆ6Ø�t�9ÐàˆO˜DØ Ø ØØ œKØØœHñô ˆõ 	.¨aÑ0Ô0Ð0õ 	˜dœi¨¬Ð0Ñ1Ô1Ð1Ø�4ˆyÐr&   ©
r1   r  rF   r!   Ú
np_supportÚas_dtyper[   rh   r±   r%   )rð   Úw_typerÝ  rÚ  rÛ  r#   rh   rÜ  s      @@@@@r$   rÝ  rÝ  æ  sÅ   øøøøø€ å�O„O€Oå˜˜FÑ#Ô#Ð#õ �Q”WÐ0°!´'Ñ:Ô:€FÝÔ! &Ñ)Ô)€Gå‘i”i×/Ò/°´Ñ8Ô8€Oå�}˜QœW fÑ-Ô-Ñ.Ô.€Dåˆs‰8Œ8€DÝˆs‰8Œ8€Dðð ð ð ð ð ð ð ð ð< Ðr&   c                 óˆ  ‡‡‡‡‡— t          ¦   «          t          | d¦  «         t          | j        d| j        ¦  «        }t	          j        |¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        Šˆˆˆˆˆfd„}|S )NÚeigvalshrC   r¸  r¯  c           	      óˆ  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚t	          | ¦  «         t          | ¦  «        }t          j        |‰
¬¦  «        }|dk    r|S  ‰	‰‰‰||j        ||j        ¦  «        }t          |¦  «         t          |j
        |j
        g¦  «         |S r×  rØ  rÙ  s         €€€€€r$   Úeigvalsh_implz$eigvalsh_impl.<locals>.eigvalsh_impl(  sÎ   ø€ ØŒG�BŒKˆàŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,å˜QÑÔÐå% aÑ(Ô(ˆåŒH�Q˜gÐ&Ñ&Ô&ˆà�Š6ˆ6ØˆHàˆO˜DØ Ø ØØ œKØØœHñô ˆõ 	.¨aÑ0Ô0Ð0õ 	˜dœi¨¬Ð0Ñ1Ô1Ð1Øˆr&   rÞ  )rð   rá  rå  rÚ  rÛ  r#   rh   rÜ  s      @@@@@r$   rå  rå    sÅ   øøøøø€ å�O„O€Oå˜˜JÑ'Ô'Ð'õ �Q”WÐ0°!´'Ñ:Ô:€FÝÔ! &Ñ)Ô)€Gå‘i”i×/Ò/°´Ñ8Ô8€Oå�}˜QœW jÑ1Ô1Ñ2Ô2€Dåˆs‰8Œ8€DÝˆs‰8Œ8€Dðð ð ð ð ð ð ð ð ð< Ðr&   c                 óŠ  ‡‡‡‡‡— t          ¦   «          t          | d¦  «         t          | j        d| j        ¦  «        }t	          j        |¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        Šdˆˆˆˆˆfd„	}|S )NÚsvdrC   r†  ÚSr   c                 óˆ  •— | j         d         }| j         d         }|dk    s|dk    rt          j                             d¦  «        ‚t	          | ¦  «         t          | ¦  «        }|}t          ||¦  «        }|r‰}|}|}	n‰}|}|}	t          j        ||f| j        ¬¦  «        }
t          j        |‰¬¦  «        }t          j        ||	f| j        ¬¦  «        } ‰‰||||j	        ||j	        |
j	        ||j	        |	¦  «        }t          |¦  «         t          |j        |j        |
j        |j        g¦  «         |
j        ||j        fS )Nrœ  r�  r   úArrays cannot be emptyrŸ  )rë   rì   rn  ro  rq  r„  Úminrî   r!   r¡  r§  r˜  r¢  rŠ  )rð   Úfull_matricesr‘   rÊ   rŒ  ÚlduÚminmnrÚ  ÚucolÚldvtÚur   Úvtr”  ÚJOBZ_AÚJOBZ_Sr#   rm   Ús_dtypes                 €€€€€r$   Úsvd_implzsvd_impl.<locals>.svd_implY  sY  ø€ ØŒG�BŒKˆØŒG�BŒKˆà�Š6ˆ6�Q˜!’V�VÝ”)×'Ò'Ð(@ÑAÔAÐAå˜QÑÔÐå% aÑ(Ô(ˆàˆÝ�A�q‘	”	ˆàð 	ØˆDØˆDØˆDˆDàˆDØˆDØˆDåŒH�d˜C�[¨¬Ð0Ñ0Ô0ˆÝŒH�U 'Ð*Ñ*Ô*ˆÝŒX�q˜$�i q¤wÐ/Ñ/Ô/ˆàˆNØØØØØŒKØØŒHØŒHØØŒIØñ
ô 
ˆõ 	.¨aÑ0Ô0Ð0õ 	˜dœi¨¬°!´&¸!¼&ÐAÑBÔBÐBØ”�Q˜œˆ~Ðr&   ©r   )
r1   r  rF   r!   rß  rà  r[   rm   r±   r%   )	rð   rì  Ús_typerö  ró  rô  r#   rm   rõ  s	       @@@@@r$   rö  rö  H  sÊ   øøøøø€ å�O„O€Oå˜˜EÑ"Ô"Ð"õ �Q”WÐ0°!´'Ñ:Ô:€FÝÔ! &Ñ)Ô)€Gå‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå�}˜QœW eÑ,Ô,Ñ-Ô-€Då�‰XŒX€FÝ�‰XŒX€Fð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð\ €Or&   c                 ó2  ‡‡‡— t          ¦   «          t          | d¦  «         t          ¦   «                              | j        ¦  «        Št          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Šˆˆˆfd„}|S )NÚqrc           	      óF  •— | j         d         }| j         d         }|dk    s|dk    rt          j                             d¦  «        ‚t	          | ¦  «         t          | ¦  «        }|}t          ||¦  «        }t          j        || j        ¬¦  «        } ‰‰|||j	        ||j	        ¦  «        }|dk     rt          ¦   «          J ‚t          j        ||f| j        ¬¦  «        j        }t          |¦  «        D ]&}	t          |	dz   ¦  «        D ]}
||
|	f         ||
|	f<   ŒŒ't          ||¦  «        D ]#}	t          |¦  «        D ]}
||
|	f         ||
|	f<   ŒŒ$ ‰‰||||j	        ||j	        ¦  «        }t          |¦  «         t          |j        |j        g¦  «         |d d …d |…f         |fS )Nrœ  r�  r   rê  rŸ  r   )rë   rì   rn  ro  rq  r„  rë  rî   r!   r¡  r’  rí   rŠ  r±  r§  r˜  r¢  )rð   r‘   rÊ   ÚqrË   rî  ÚtauÚretr”  ÚiÚjr#   rp   rr   s              €€€r$   Úqr_implzqr_impl.<locals>.qr_impl›  sî  ø€ ØŒG�BŒKˆØŒG�BŒKˆà�Š6ˆ6�Q˜!’V�VÝ”)×'Ò'Ð(@ÑAÔAÐAå˜QÑÔÐõ # 1Ñ%Ô%ˆàˆå�A�q‘	”	ˆÝŒh˜ a¤gÐ.Ñ.Ô.ˆàˆnØØØØŒHØØŒJñ
ô 
ˆð �Š7ˆ7ÝÑÔÐØˆHõ ŒH�a˜�Z q¤wÐ/Ñ/Ô/Ô1ˆõ �u‘”ð 	"ð 	"ˆAÝ˜1˜q™5‘\”\ð "ð "�Ø˜A˜q˜Dœ'��!�Q�$‘�ð"õ �u˜a‘”ð 	"ð 	"ˆAÝ˜5‘\”\ð "ð "�Ø˜A˜q˜Dœ'��!�Q�$‘�ð"ð ˆnØØØØØŒHØØŒJñ
ô 
ˆõ 	.¨cÑ2Ô2Ð2õ 	˜cœh¨¬Ð/Ñ0Ô0Ð0Ø�!�!�!�V�e�V�)”˜aÐ Ð r&   )r1   r  r[   rp   r!   rr   r±   r%   )rð   r  r#   rp   rr   s     @@@r$   r  r  Š  s–   øøø€ å�O„O€Oå˜˜DÑ!Ô!Ð!õ ‘Y”Y×-Ò-¨a¬gÑ6Ô6€NÝ‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå�}˜QœW dÑ+Ô+Ñ,Ô,€Dð7!ð 7!ð 7!ð 7!ð 7!ð 7!ð 7!ðr €Nr&   c                 ó   — t           ‚)z;
    Correctly copy 'b' into the 'bcpy' scratch space.
    ©ÚNotImplementedError©Úbcpyrñ   Únrhss      r$   Ú_system_copy_in_br  Û  ó
   € õ Ðr&   c                 ó,   — |j         dk    rd„ }|S d„ }|S )Nr   c                 ó.   — || d |j         d         …df<   d S )Nrœ  r   ©rë   r  s      r$   Ú	oneD_implz)_system_copy_in_b_impl.<locals>.oneD_implå  s    € Ø$%ˆD��!”'˜"”+�˜q�Ñ!Ð!Ð!r&   c                 ó2   — || d |j         d         …d |…f<   d S )Nr�  r  r  s      r$   Ú	twoD_implz)_system_copy_in_b_impl.<locals>.twoD_implé  s%   € Ø()ˆD��!”'˜"”+�˜u ˜uÐ$Ñ%Ð%Ð%r&   rb  )r  rñ   r  r  r  s        r$   Ú_system_copy_in_b_implr  â  s7   € à„v�‚{€{ð	&ð 	&ð 	&àÐð	*ð 	*ð 	*àÐr&   c                 ó   — t           ‚)zK
    Compute the number of right hand sides in the system of equations
    r  ©rñ   s    r$   Ú_system_compute_nrhsr  î  r	  r&   c                 ó,   — | j         dk    rd„ }|S d„ }|S )Nr   c                 ó   — dS ©Nr   rY   r  s    r$   r  z,_system_compute_nrhs_impl.<locals>.oneD_implø  s   € Ø�1r&   c                 ó   — | j         d         S )Nrœ  r  r  s    r$   r  z,_system_compute_nrhs_impl.<locals>.twoD_implü  s   € Ø”7˜2”;Ðr&   rb  )rñ   r  r  s      r$   Ú_system_compute_nrhs_implr  õ  s7   € à„v�‚{€{ð	ð 	ð 	àÐð	ð 	ð 	àÐr&   c                 ó   — t           ‚)zD
    Check that AX=B style system input is dimensionally valid.
    r  ©rð   rñ   s     r$   Ú!_system_check_dimensionally_validr    r	  r&   c                 ó0   — |j         }|dk    rd„ }|S d„ }|S )Nr   c                 ó„   — | j         d         }|j         d         }||k    rt          j                             d¦  «        ‚d S )Nr�  rœ  ú<Incompatible array sizes, system is not dimensionally valid.©rë   rì   rn  ro  ©rð   rñ   ÚamÚbms       r$   r  z9_system_check_dimensionally_valid_impl.<locals>.oneD_impl  óH   € Ø”˜”ˆBØ”˜”ˆBØ�RŠxˆxÝ”i×+Ò+ØRñTô Tð Tð ˆxr&   c                 ó„   — | j         d         }|j         d         }||k    rt          j                             d¦  «        ‚d S )Nr�  r  r  r   s       r$   r  z9_system_check_dimensionally_valid_impl.<locals>.twoD_impl  r#  r&   rb  ©rð   rñ   r"  r  r  s        r$   Ú&_system_check_dimensionally_valid_implr&    sF   € àŒ6€DØˆq‚y€yð	Tð 	Tð 	Tð Ðð	Tð 	Tð 	Tð Ðr&   c                 ó   — t           ‚)z:
    Check that AX=B style system input is not empty.
    r  r  s     r$   Ú_system_check_non_emptyr(    r	  r&   c                 ó0   — |j         }|dk    rd„ }|S d„ }|S )Nr   c                 ó¶   — | j         d         }| j         d         }|j         d         }|dk    s|dk    s|dk    rt          j                             d¦  «        ‚d S ©Nr�  rœ  r   rê  r  )rð   rñ   r!  Úanr"  s        r$   r  z/_system_check_non_empty_impl.<locals>.oneD_impl(  sZ   € Ø”˜”ˆBØ”˜”ˆBØ”˜”ˆBØ�QŠwˆw˜" š'˜' R¨1¢W WÝ”i×+Ò+Ð,DÑEÔEÐEð &- Wr&   c                 óÜ   — | j         d         }| j         d         }|j         d         }|j         d         }|dk    s|dk    s|dk    s|dk    rt          j                             d¦  «        ‚d S r+  r  )rð   rñ   r!  r,  r"  Úbns         r$   r  z/_system_check_non_empty_impl.<locals>.twoD_impl0  sm   € Ø”˜”ˆBØ”˜”ˆBØ”˜”ˆBØ”˜”ˆBØ�QŠwˆw˜" š'˜' R¨1¢W W°°a²°Ý”i×+Ò+Ð,DÑEÔEÐEð 18°r&   rb  r%  s        r$   Ú_system_check_non_empty_implr/  $  sF   € àŒ6€DØˆq‚y€yð	Fð 	Fð 	Fð Ðð	Fð 	Fð 	Fð Ðr&   c                 ó   — t           ‚)z:
    Compute the residual from the 'b' scratch space.
    r  )rñ   r‘   r  s      r$   Ú_lstsq_residualr1  :  r	  r&   c                 ó"  ‡— | j         }| j        }t          j        t	          |d|¦  «        ¦  «        Š|dk    r(t          |t          j        ¦  «        rˆfd„}|S ˆfd„}|S |dk    sJ ‚t          |t          j        ¦  «        rˆfd„}|S ˆfd„}|S )NrC   r   c                 ó    •— t          j        d‰¬¦  «        }t          j        t          j        | |d …df         ¦  «        dz  ¦  «        |d<   |S ©Nr÷  rŸ  r   r  )rì   rî   ÚsumÚabs©rñ   r‘   r  r¡   Ú
real_dtypes       €r$   Ú
cmplx_implz(_lstsq_residual_impl.<locals>.cmplx_implI  sJ   ø€ Ý”h˜t¨:Ð6Ñ6Ô6�Ýœ¥¤ q¨¨¨¨Q¨¤xÑ 0Ô 0°!Ñ 3Ñ4Ô4��A‘Ø�
r&   c                 ó|   •— t          j        d‰¬¦  «        }t          j        | |d …df         dz  ¦  «        |d<   |S r4  )rì   rî   r5  r7  s       €r$   Ú	real_implz'_lstsq_residual_impl.<locals>.real_implO  s?   ø€ Ý”h˜t¨:Ð6Ñ6Ô6�Ýœ  ! " " a %¤¨!¡Ñ,Ô,��A‘Ø�
r&   r  c                 óÄ   •— t          j        |‰¬¦  «        }t          |¦  «        D ]8}t          j        t          j        | |d …|f         ¦  «        dz  ¦  «        ||<   Œ9|S ©NrŸ  r  )rì   rî   r±  r5  r6  ©rñ   r‘   r  r¡   rÜ   r8  s        €r$   r9  z(_lstsq_residual_impl.<locals>.cmplx_implW  sa   ø€ Ý”h ¨ZÐ8Ñ8Ô8�Ý˜t™œð 9ð 9�AÝœV¥B¤F¨1¨Q¨R¨R°¨U¬8Ñ$4Ô$4°aÑ$7Ñ8Ô8�C˜‘F�FØ�
r&   c                 ó    •— t          j        |‰¬¦  «        }t          |¦  «        D ]&}t          j        | |d …|f         dz  ¦  «        ||<   Œ'|S r=  )rì   rî   r±  r5  r>  s        €r$   r;  z'_lstsq_residual_impl.<locals>.real_impl^  sV   ø€ Ý”h ¨ZÐ8Ñ8Ô8�Ý˜t™œð 1ð 1�AÝœV A a b b¨! e¤H¨a¡KÑ0Ô0�C˜‘F�FØ�
r&   )r"  r!   rß  rà  rF   r   r   rz  )rñ   r‘   r  r"  r!   r9  r;  r8  s          @r$   Ú_lstsq_residual_implr@  A  sð   ø€ àŒ6€DØŒG€EÝÔ$¥W¨UÐ4FÈÑ%NÔ%NÑOÔO€Jàˆq‚y€yÝ�e�eœmÑ-Ô-ð 	ðð ð ð ð ð Ððð ð ð ð ð Ðà�qŠyˆyˆyˆyÝ�e�eœmÑ-Ô-ð 	ðð ð ð ð ð
 Ððð ð ð ð ð
 Ðr&   c                 ó   — t           ‚)zŠ
    Extract 'x' (the lstsq solution) from the 'bcpy' scratch space.
    Note 'b' is only used to check the system input dimension...
    r  ©rñ   r  r‘   s      r$   Ú_lstsq_solutionrC  f  ó
   € õ
 Ðr&   c                 ó,   — | j         dk    rd„ }|S d„ }|S )Nr   c                 óD   — |j                              ¦   «         d |…         S r3   ©rŠ  ÚravelrB  s      r$   r  z'_lstsq_solution_impl.<locals>.oneD_implq  s   € Ø”6—<’<‘>”> " 1 "Ô%Ð%r&   c                 óB   — |d |…d d …f                               ¦   «         S r3   ©r�   rB  s      r$   r  z'_lstsq_solution_impl.<locals>.twoD_implu  s$   € Ø˜˜˜˜A˜A˜A˜”;×#Ò#Ñ%Ô%Ð%r&   rb  )rñ   r  r‘   r  r  s        r$   Ú_lstsq_solution_implrK  n  s7   € à„v�‚{€{ð	&ð 	&ð 	&àÐð	&ð 	&ð 	&àÐr&   ç      ð¿c                 ó®  ‡‡‡‡	— t          ¦   «          t          | d¦  «         t          |d¦  «         t          d| |¦  «         t	          j        | j        ¦  «        Š| j        }t          |d|¦  «        }t	          j        |¦  «        Š	t          ¦   «          	                    | j        ¦  «        Št          t          |d¦  «        ¦  «        Šdˆˆˆˆ	fd„	}|S )NÚlstsqrC   rL  c                 ól  •— | j         d         }| j         d         }t          |¦  «        }t          | ¦  «         t          |¦  «         t          | |¦  «         t	          | |¦  «         t          ||¦  «        }t          ||¦  «        }t          | ¦  «        }t          j	        ||f‰¬¦  «        j
        }	t          |	||¦  «         t          j	        |‰¬¦  «        }
t          j	        dt          j        ¬¦  «        } ‰‰||||j        ||	j        ||
j        ||j        ¦  «        }t          |¦  «         |d         }||k     s||k    rt          j	        d‰¬¦  «        }nt          |	||¦  «        }t!          ||	|¦  «        }t#          |j        |	j        |
j        |j        g¦  «         ||||
d |…         fS )Nrœ  r�  rŸ  r   r   )rë   r  rq  r(  r  rë  Úmaxr„  rì   rî   rŠ  r  Úint32r¡  r§  r1  rC  r˜  r¢  )rð   rñ   Úrcondr‘   rÊ   r  rî  ÚmaxmnrŒ  r  r   Úrank_ptrr”  Úrankr¡   rF  r#   Únp_dtrt   r8  s                   €€€€r$   Ú
lstsq_implzlstsq_impl.<locals>.lstsq_impl—  sÈ  ø€ ØŒG�BŒKˆØŒG�BŒKˆÝ# AÑ&Ô&ˆõ 	˜QÑÔÐÝ˜QÑÔÐõ 	   1Ñ%Ô%Ð%õ 	*¨!¨QÑ/Ô/Ð/å�A�q‘	”	ˆÝ�A�q‘	”	ˆõ & aÑ(Ô(ˆõ Œx˜˜u˜¨UÐ3Ñ3Ô3Ô5ˆå˜$  4Ñ(Ô(Ð(õ ŒH�U *Ð-Ñ-Ô-ˆÝ”8˜A¥R¤XÐ.Ñ.Ô.ˆàˆNØØØØØŒKØØŒKØØŒHØØŒOñ
ô 
ˆõ 	.¨aÑ0Ô0Ð0ð ˜Œ{ˆð �!Š8ˆ8�q˜A’v�vÝ”(˜A jÐ1Ñ1Ô1ˆCˆCõ " $¨¨4Ñ0Ô0ˆCõ ˜A˜t QÑ'Ô'ˆõ 	˜dœi¨¬°A´F¸H¼MÐJÑKÔKÐKØ�3˜˜a   œiÐ(Ð(r&   ©rL  )r1   r  r«  r‚  rß  rà  r!   rF   r[   rt   r±   r%   )
rð   rñ   rR  Únb_dtÚr_typerW  r#   rV  rt   r8  s
         @@@@r$   rW  rW  z  sè   øøøø€ å�O„O€Oå˜˜GÑ$Ô$Ð$õ !  GÑ,Ô,Ð,å˜W a¨Ñ+Ô+Ð+åÔ ¤Ñ(Ô(€EØŒG€Eõ �UÐ.°Ñ6Ô6€FÝÔ$ VÑ,Ô,€Jõ ‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå�}˜U GÑ,Ô,Ñ-Ô-€Dð=)ð =)ð =)ð =)ð =)ð =)ð =)ð =)ð =)ð~ Ðr&   c                 ó   — t           ‚)z„
    Extract 'x' (the solution) from the 'bcpy' scratch space.
    Note 'b' is only used to check the system input dimension...
    r  ©rñ   r  s     r$   Ú_solve_compute_returnr]  Ù  rD  r&   c                 ó,   — | j         dk    rd„ }|S d„ }|S )Nr   c                 ó4   — |j                              ¦   «         S r3   rG  r\  s     r$   r  z-_solve_compute_return_impl.<locals>.oneD_implä  s   € Ø”6—<’<‘>”>Ð!r&   c                 ó   — |S r3   rY   r\  s     r$   r  z-_solve_compute_return_impl.<locals>.twoD_implè  s   € ØˆKr&   rb  )rñ   r  r  r  s       r$   Ú_solve_compute_return_implra  á  s7   € à„v�‚{€{ð	"ð 	"ð 	"àÐð	ð 	ð 	àÐr&   c                 ó^  ‡‡‡— t          ¦   «          t          | d¦  «         t          |d¦  «         t          d| |¦  «         t	          j        | j        ¦  «        Š| j        }t          ¦   «                              | j        ¦  «        Št          t          |d¦  «        ¦  «        Šˆˆˆfd„}|S )NÚsolvec           
      ó6  •— | j         d         }t          |¦  «        }t          | ¦  «         t          |¦  «         t          | |¦  «         t	          | ¦  «        }t          j        ||f‰	¬¦  «        j        }|dk    rt          ||¦  «        S t          |||¦  «         t          j        |t          ¬¦  «        } ‰
‰|||j        ||j        |j        |¦  «        }t          |¦  «         t          |j        |j        |j        g¦  «         t          ||¦  «        S )Nrœ  rŸ  r   )rë   r  rq  r  r„  rì   rî   rŠ  r]  r  r   r¡  r•  r˜  r¢  )rð   rñ   r‘   r  rŒ  r  r£  r”  r#   rV  rw   s           €€€r$   Ú
solve_implzsolve_impl.<locals>.solve_implþ  s&  ø€ ØŒG�BŒKˆÝ# AÑ&Ô&ˆõ 	˜QÑÔÐÝ˜QÑÔÐõ 	*¨!¨QÑ/Ô/Ð/õ & aÑ(Ô(ˆõ Œx˜˜q˜	¨Ð/Ñ/Ô/Ô1ˆØ�Š6ˆ6Ý(¨¨DÑ1Ô1Ð1õ 	˜$  4Ñ(Ô(Ð(õ Œx˜¥Ð.Ñ.Ô.ˆàˆKØØØØŒKØØŒKØŒKØñ	
ô 	
ˆõ 	˜ÑÔÐõ 	˜dœi¨¬°D´IÐ>Ñ?Ô?Ð?Ý$ Q¨Ñ-Ô-Ð-r&   )r1   r  r«  r‚  rß  rà  r!   r[   rw   r±   r%   )rð   rñ   rY  re  r#   rV  rw   s       @@@r$   re  re  í  s·   øøø€ å�O„O€Oå˜˜GÑ$Ô$Ð$Ý   GÑ,Ô,Ð,å˜W a¨Ñ+Ô+Ð+åÔ ¤Ñ(Ô(€EØŒG€Eõ ‘)”)×'Ò'¨¬Ñ0Ô0€Kå�}˜U GÑ,Ô,Ñ-Ô-€Dð'.ð '.ð '.ð '.ð '.ð '.ð '.ðR Ðr&   çVçž¯Ò<c           
      ó’  ‡‡‡‡‡	‡
‡‡‡— t          ¦   «          t          | d¦  «         t          | j        d| j        ¦  «        }t	          j        |¦  «        Št          ¦   «                              | j        ¦  «        Š	t          ¦   «          	                    | j        ¦  «        Š
t          t          | j        d¦  «        ¦  «        Št          d¦  «        Št          d¦  «        Št          d¦  «        Št	          j        | j        ¦  «        }t          j        dg|¬¦  «        Št          j        dg|¬¦  «        Šd
ˆˆˆˆˆ	ˆ
ˆˆˆf	d	„	}|S )NÚpinvrC   rè  rz   rÀ   rŸ  r¿   rf  c                 óÞ  •	— | j         d         }| j         d         }t          | ¦  «         t          | ¦  «        }|dk    s|dk    r6|j                             ¦   «                              | j         ¦  «        j        S t          ||¦  «        }t          j        ||f| j	        ¬¦  «        }t          j        |‰¬¦  «        }t          j        ||f| j	        ¬¦  «        } ‰‰‰|||j
        ||j
        |j
        ||j
        |¦  «        }	t          |	¦  «         |d         |z  }
d}t          |¦  «        D ]}||         |
k    rd||         z  ||<   |}Œ|dz  }||k    r=t          |¦  «        D ],}t          |¦  «        D ]}|||f         ||         z  |||f<   ŒŒ-n>t          |¦  «        D ].}||         }t          |¦  «        D ]}|||f         |z  |||f<   ŒŒ/ ‰‰‰‰|||‰j
        |j
        ||j
        |‰j
        |j
        |¦  «        }	t          |j        |j        |j        |j        ‰j        ‰j        g¦  «         |j                             ¦   «                              | j         ¦  «        j        S )Nrœ  r�  r   rŸ  r¿   r   )rë   rq  r„  rŠ  rH  Úreshaperë  rì   rî   r!   r¡  r§  r±  r˜  r¢  )rð   rR  r‘   rÊ   rŒ  rî  rñ  r   rò  r”  Úcut_atÚcut_idxrÜ   rÿ  r   Ús_localÚJOBÚTRANSAÚTRANSBr#   rm   rQ   rT  rõ  rJ  s                   €€€€€€€€€r$   Ú	pinv_implzpinv_impl.<locals>.pinv_implD  s°  ø€ ðN ŒG�BŒKˆØŒG�BŒKˆå˜QÑÔÐå% aÑ(Ô(ˆà�Š6ˆ6�Q˜!’V�VØ”6—<’<‘>”>×)Ò)¨!¬'Ñ2Ô2Ô4Ð4å�A�q‘	”	ˆåŒH�e˜Q�Z q¤wÐ/Ñ/Ô/ˆÝŒH�U 'Ð*Ñ*Ô*ˆÝŒX�q˜%�j¨¬Ð0Ñ0Ô0ˆàˆNØØØØØŒKØØŒHØŒHØØŒIØñ
ô 
ˆõ 	.¨aÑ0Ô0Ð0ð �1”˜‘ˆØˆÝ�u‘”ð 	ð 	ˆAØ�Œt�fŠ}ˆ}Ø˜A˜aœD‘y��!‘Ø�øØ�1‰ˆð �Š6ˆ6å˜1‘X”Xð /ð /�Ý˜w™œð /ð /�AØ! ! Q $œx¨!¨A¬$™�B�q˜!�t‘H�Hð/ð/õ
 ˜7‘^”^ð 0ð 0�Ø˜Aœ$�Ý˜u™œð 0ð 0�AØ  1 œg¨Ñ/�A�a˜�d‘G�Gð0ð ˆLØØØØØØØŒJØŒIØØŒHØØŒKØŒKØñ
ô 
ˆõ0 	˜dœi¨¬°!´&¸!¼&À#Ä(ØŒIðñ 	ô 	ð 	àŒv�|Š|‰~Œ~×%Ò% a¤gÑ.Ô.Ô0Ð0r&   ©rf  )r1   r  rF   r!   rß  rà  r[   rm   r=   rQ   r±   r%   rì   Úarray)rð   rR  rø  Údtrq  rn  ro  rp  r#   rm   rQ   rT  rõ  rJ  s        @@@@@@@@@r$   rq  rq  *  sW  øøøøøøøøø€ å�O„O€Oå˜˜FÑ#Ô#Ð#õ �Q”WÐ0°!´'Ñ:Ô:€FÝÔ! &Ñ)Ô)€Gå‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå‘7”7×'Ò'¨¬Ñ0Ô0€Lå�}˜QœW fÑ-Ô-Ñ.Ô.€DÝ
ˆc‰(Œ(€Cõ �‰XŒX€FÝ�‰XŒX€Fõ 
Ô	˜QœWÑ	%Ô	%€BÝŒ8�R�D Ð#Ñ#Ô#€DÝ
Œ(�B�4˜rÐ
"Ñ
"Ô
"€CðE1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ð E1ðN Ðr&   c                 óˆ   — t          | j        t          j        ¦  «        rt          d„ ¦   «         }|S t          d„ ¦   «         }|S )zù
    Walks the diag of a LUP decomposed matrix
    uses that det(A) = prod(diag(lup(A)))
    and also that log(a)+log(b) = log(a*b)
    The return sign is adjusted based on the values found
    such that the log(value) stays in the real domain.
    c                 óÂ   — |dz   }d}t          | ¦  «        D ]E}t          j        |||f         ¦  «        }||||f         |z  z  }|t          j        |¦  «        z   }ŒF||fS )Ny                rÀ   )r±  rì   r6  Úlog)r‘   rð   ÚsgnÚcsgnÚaccrÜ   Úabsels          r$   Úcmplx_diag_walkerz3_get_slogdet_diag_walker.<locals>.cmplx_diag_walker×  sp   € ð ˜‘9ˆDØˆCÝ˜1‘X”Xð *ð *�Ýœ˜q  A œw™œ�Ø˜q  A œw¨™Ñ/�Ø�BœF 5™MœMÑ)��Ø˜#�;Ðr&   c                 ó’   — d}t          | ¦  «        D ]/}|||f         }|dk     r| }| }|t          j        |¦  «        z   }Œ0|dz   |fS )NrÀ   )r±  rì   rw  )r‘   rð   rx  rz  rÜ   rp  s         r$   Úreal_diag_walkerz2_get_slogdet_diag_walker.<locals>.real_diag_walkerã  sc   € ð ˆCÝ˜1‘X”Xð &ð &�Ø�a˜�d”G�Ø�r’6�6Ø˜$�CØ˜�AØ�BœF 1™IœI‘o��à˜"‘H˜c�?Ð"r&   )r   r!   r   rz  r   )rð   r|  r~  s      r$   Ú_get_slogdet_diag_walkerr  Î  s^   € õ �!”'�5œ=Ñ)Ô)ð  Ý	ð	ð 	ñ 
Ô	ð	ð !Ð å	ð
	#ð 
	#ñ 
Ô	ð
	#ð  Ðr&   c                 ó~  ‡‡‡‡‡— t          ¦   «          t          | d¦  «         t          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Št          | ¦  «        Š|                      d¦  «        Š t          | j        d| j        ¦  «        d¦  «        Šˆˆˆˆˆfd„}|S )NÚslogdetr   rC   r   c                 ó.  •— | j         d         }| j         d         |k    r!d}t          j                             |¦  «        ‚|dk    r‰‰	fS t	          | ¦  «         t          | ¦  «        }t          j        |t          ¬¦  «        } ‰‰|||j        ||j        ¦  «        }|dk    rdt          j	         fS t          |¦  «         d}t          |¦  «        D ]}|||         |dz   k    z   }Œ|dz  }|dk    rd}t          |j        g¦  «          ‰
|||¦  «        S )Nrœ  r�  rž  r   rŸ  rÀ   r   )rë   rì   rn  ro  rq  r„  rî   r   r¡  Úinfr•  r±  r˜  r¢  )rð   r‘   r~  rŒ  r£  r”  rx  rÜ   ÚONEÚZEROÚdiag_walkerr#   r^   s           €€€€€r$   Úslogdet_implz"slogdet_impl.<locals>.slogdet_impl  s2  ø€ ØŒG�BŒKˆØŒ7�2Œ;˜!ÒÐØBˆCÝ”)×'Ò'¨Ñ,Ô,Ð,à�Š6ˆ6Ø˜�;Ðå˜QÑÔÐå% aÑ(Ô(ˆåŒx˜¥Ð.Ñ.Ô.ˆàˆM˜$  1 d¤k°1°d´kÑBÔBˆàˆqŠ5ˆ5à�œ˜�=Ð Ý˜ÑÔÐð ˆÝ�q‘”ð 	-ð 	-ˆAØ˜˜aœ Q¨¡UÒ+Ñ,ˆCˆCà�A‰gˆØ�!Š8ˆ8ØˆCõ 	˜dœi˜[Ñ)Ô)Ð)Øˆ{˜1˜d CÑ(Ô(Ð(r&   )	r1   r  r[   r^   r!   r±   r%   r  rF   )rð   r‡  r„  r…  r†  r#   r^   s     @@@@@r$   r‡  r‡  ò  sÄ   øøøøø€ å�O„O€Oå˜˜IÑ&Ô&Ð&å‘I”I×+Ò+¨A¬GÑ4Ô4€Må�}˜QœW iÑ0Ô0Ñ1Ô1€Då*¨1Ñ-Ô-€Kà
�'Š'�!‰*Œ*€CØ8�7�1”7Ð.°´Ñ8Ô8¸Ñ;Ô;€Dð')ð ')ð ')ð ')ð ')ð ')ð ')ð ')ð ')ðR Ðr&   c                 óH   — t          ¦   «          t          | d¦  «         d„ }|S )NÚdetc                 ót   — t           j                             | ¦  «        \  }}|t          j        |¦  «        z  S r3   )rì   rn  r�  Úexp)rð   rx  r�  s      r$   Údet_implzdet_impl.<locals>.det_impl4  s.   € Ýœ×*Ò*¨1Ñ-Ô-‰ˆˆgØ•R”V˜G‘_”_Ñ$Ð$r&   ©r1   r  )rð   rŒ  s     r$   rŒ  rŒ  -  s3   € õ �O„O€Oå˜˜EÑ"Ô"Ð"ð%ð %ð %ð €Or&   c                 ó   — t           ‚)z)
    Compute singular values of *a*.
    r  r—  s    r$   Ú_compute_singular_valuesr�  ;  r	  r&   c                 ó¼  ‡‡‡‡‡‡	— t          ¦   «                              | j        ¦  «        Št          t	          | j        d¦  «        ¦  «        Št          d¦  «        Št          | j        d| j        ¦  «        }t          j        |¦  «        Št          j        | j        ¦  «        }t          j	        d|¬¦  «        Št          j	        d|¬¦  «        Š	ˆˆˆˆˆˆ	fd„}|S )z>
    Returns a function to compute singular values of `a`
    rç  r¸  rC   r  rŸ  c                 óä  •— | j         d         }| j         d         }|dk    s|dk    rt          j                             d¦  «        ‚t	          | ¦  «         |}t          ||¦  «        }d}d}t          | ¦  «        }t          j        |‰¬¦  «        } ‰‰‰
|||j        ||j        ‰j        |‰j        |¦  «        }	t          |	¦  «         t          |j        ‰j        ‰j        |j        g¦  «         |S )z+
        Computes singular values.
        rœ  r�  r   rê  r   rŸ  )rë   rì   rn  ro  rq  rë  r„  rî   r¡  r§  r˜  r¢  )rð   r‘   rÊ   rí  rî  rï  rð  rŒ  r   r”  ÚJOBZ_Nr#   Únp_ret_typerm   rñ  rò  s             €€€€€€r$   Úsv_functionz2_compute_singular_values_impl.<locals>.sv_functionW  s  ø€ ð ŒG�BŒKˆØŒG�BŒKˆØ�Š6ˆ6�Q˜!’V�VÝ”)×'Ò'Ð(@ÑAÔAÐAÝ˜QÑÔÐàˆÝ�A�q‘	”	ˆð ˆØˆå% aÑ(Ô(ˆõ
 ŒH�U +Ð.Ñ.Ô.ˆàˆNØØØØØŒKØØŒHØŒHØØŒIØñ
ô 
ˆõ 	.¨aÑ0Ô0Ð0õ 	˜dœi¨¬°!´&¸!¼&ÐAÑBÔBÐBØˆr&   )
r[   rm   r!   r±   r%   rF   rß  rà  rì   rî   )
rð   Únb_ret_typeÚnp_dtyper”  r’  r#   r“  rm   rñ  rò  s
       @@@@@@r$   Ú_compute_singular_values_implr—  B  sæ   øøøøøø€ õ
 ‘Y”Y×-Ò-¨a¬gÑ6Ô6€Nå�}˜QœW eÑ,Ô,Ñ-Ô-€Dõ �‰XŒX€Få˜!œ'Ð#5°q´wÑ?Ô?€KÝÔ% kÑ2Ô2€KÝÔ" 1¤7Ñ+Ô+€Hõ 	Œ�˜xÐ(Ñ(Ô(€AÝ	Œ�& Ð	)Ñ	)Ô	)€Bð-ð -ð -ð -ð -ð -ð -ð -ð -ð -ð^ Ðr&   c                 ó   — t           ‚)z.
    Compute the L2-norm of 1D-array *a*.
    r  r—  s    r$   Ú_oneD_norm_2r™  ‰  r	  r&   c                 ó  ‡‡‡— t          | j        d| j        ¦  «        }t          j        |¦  «        Št	          ¦   «                              | j        ¦  «        Št          t          | j        d¦  «        ¦  «        Šˆˆˆfd„}|S )NrC   Únormc                 ó6  •— t          | ¦  «        }t          j        d‰¬¦  «        }t          | j        d         | j        z  ¦  «        } ‰‰|| j        ||j        ¦  «        }|dk     rt          ¦   «          J ‚t          |j	        | j	        g¦  «         |d         S )Nr÷  rŸ  r   )
Úlenrì   rî   r²   Ústridesr@  r¡  r’  r˜  r¢  )rð   r‘   rþ  Újmpr”  r#   r“  Úxxnrm2s        €€€r$   r“   z_oneD_norm_2_impl.<locals>.impl™  s    ø€ õ �‰FŒFˆåŒh�t ;Ð/Ñ/Ô/ˆÝ�!”)˜A”, ¤Ñ+Ñ,Ô,ˆØˆFØØØŒHØØŒJñ
ô 
ˆð ˆqŠ5ˆ5ÝÑÔÐØˆHõ
 	˜cœh¨¬Ð/Ñ0Ô0Ð0Ø�1Œvˆr&   )rF   r!   rß  rà  r=   rD   r±   r%   )rð   r•  r“   r#   r“  r   s      @@@r$   Ú_oneD_norm_2_implr¡  �  s‡   øøø€ å˜!œ'Ð#5°q´wÑ?Ô?€KÝÔ% kÑ2Ô2€Kå‰WŒW×!Ò! !¤'Ñ*Ô*€Få�}˜QœW fÑ-Ô-Ñ.Ô.€Dðð ð ð ð ð ð ð0 €Kr&   c                 ó–  ‡	‡
— t          | j        d| j        ¦  «        }t          j        |¦  «        }t          j        | j        ¦  «        }t	          ¦   «                              | j        ¦  «        }t          t          | j        d¦  «        ¦  «        }| j        dk    r|d t          j
        fv rdd„}ndd„}|S | j        dk    r…|d t          j
        fv rO| j        dk    rt          d„ ¦   «         Š	n,| j        d	k    rt          d
„ ¦   «         Š	nt          d„ ¦   «         Š	dˆ	fd„	}n$t          j        |j        ¦  «        j        Š
dˆ
fd„	}|S J ‚)NrC   r›  r   c                 ó    — t          | ¦  «        S r3   )r™  ©rF  r±   s     r$   r  z!_get_norm_impl.<locals>.oneD_implÑ  s   € Ý# A‘”Ð&r&   c                 óè  — t          | ¦  «        }|dk    rdS |dk    rt          | ¦  «        S |t          j        k    rGt	          | d         ¦  «        }t          d|¦  «        D ]}t	          | |         ¦  «        }||k    r|}Œ |S |t          j         k    rGt	          | d         ¦  «        }t          d|¦  «        D ]}t	          | |         ¦  «        }||k     r|}Œ |S |dk    r'd}t          |¦  «        D ]}| |         dk    r|dz  }Œ|S |dk    r.d}t          |¦  «        D ]}|t	          | |         ¦  «        z  }Œ|S d}t          |¦  «        D ]}|t	          | |         ¦  «        |z  z  }Œ|d|z  z  S )Nr   rÀ   r  r   r¿   )r�  r™  rì   rƒ  r6  r±  )rF  r±   r‘   rþ  rÜ   r9   s         r$   r  z!_get_norm_impl.<locals>.oneD_implÔ  sŸ  € Ý˜‘F”F�ð ˜’6�6Ø˜3ð ˜!’8�8Ý'¨™?œ?Ð*Ø�BœF’]�]å˜a œd™)œ)�CÝ" 1 a™[œ[ð &ð &˜Ý! ! A¤$™iœi˜Ø š9˜9Ø"%˜CøØ�Jà�RœV˜G’^�^å˜a œd™)œ)�CÝ" 1 a™[œ[ð &ð &˜Ý! ! A¤$™iœi˜Ø š9˜9Ø"%˜CøØ�Jà˜A’X�Xà�CÝ" 1™XœXð &ð &˜Ø˜Qœ4 2š:˜:Ø 2™I˜CøØ�Jà˜A’X�Xà�CÝ" 1™XœXð )ð )˜Ø�s 1 Q¤4™yœyÑ(˜˜Ø�Jð �CÝ" 1™XœXð .ð .˜Ø�s 1 Q¤4™yœy¨#™~Ñ-˜˜Ø  c¡™?Ð*r&   r  rz   c                 ó   — | S r3   rY   ©rF  s    r$   Úarray_preparez%_get_norm_impl.<locals>.array_prepare	  s   € à�Hr&   rÁ   c                 ó   — | j         S r3   )rŠ  r§  s    r$   r¨  z%_get_norm_impl.<locals>.array_prepare	  s   € ð œ3�Jr&   c                 ó*   — |                       ¦   «         S r3   rJ  r§  s    r$   r¨  z%_get_norm_impl.<locals>.array_prepare 	  s   € àŸ6š6™8œ8�Or&   c                 ó|   •— | j         }|dk    rdS  ‰| ¦  «        }t          |                     |¦  «        ¦  «        S )Nr   rÀ   )r¢  r™  rj  )rF  r±   r‘   Úx_cr¨  s       €r$   r  z!_get_norm_impl.<locals>.twoD_impl&	  s?   ø€ Ø”F�Ø˜’6�6à˜3Ø#�m AÑ&Ô&�Ý# C§K¢K°¡N¤NÑ3Ô3Ð3r&   c                 ó–  •— | j         d         }| j         d         }| j        dk    rdS |t          j        k    rLd}t	          |¦  «        D ]8}d}t	          |¦  «        D ]}|t          | ||f         ¦  «        z  }Œ||k    r|}Œ9|S |t          j         k    rL‰	}t	          |¦  «        D ]8}d}t	          |¦  «        D ]}|t          | ||f         ¦  «        z  }Œ||k     r|}Œ9|S |dk    rLd}t	          |¦  «        D ]8}d}t	          |¦  «        D ]}|t          | ||f         ¦  «        z  }Œ||k    r|}Œ9|S |dk    rL‰	}t	          |¦  «        D ]8}d}t	          |¦  «        D ]}|t          | ||f         ¦  «        z  }Œ||k     r|}Œ9|S |dk    rt          | ¦  «        d         S |dk    rt          | ¦  «        d         S t          d¦  «        ‚)Nrœ  r�  r   rÀ   r   r  z Invalid norm order for matrices.)rë   r¢  rì   rƒ  r±  r6  r�  r  )
rF  r±   r‘   rÊ   Ú
global_maxÚiiÚtmpÚjjÚ
global_minÚmax_vals
            €r$   r  z!_get_norm_impl.<locals>.twoD_impl1	  s<  ø€ Ø”G˜B”K�Ø”G˜B”K�ð ”6˜Q’;�;Ø˜3à�"œ&’=�=ð "$�JÝ# A™hœhð -ð -˜Ø ˜Ý"'¨¡(¤(ð 2ð 2˜BØ¥3 q¨¨R¨¤y¡>¤>Ñ1˜C˜CØ Ò+Ð+Ø),˜JøØ%Ð%à�RœV˜G’^�^ð ")�JÝ# A™hœhð -ð -˜Ø ˜Ý"'¨¡(¤(ð 2ð 2˜BØ¥3 q¨¨R¨¤y¡>¤>Ñ1˜C˜CØ Ò+Ð+Ø),˜JøØ%Ð%Ø˜A’X�Xð "$�JÝ# A™hœhð -ð -˜Ø ˜Ý"'¨¡(¤(ð 2ð 2˜BØ¥3 q¨¨R¨¤y¡>¤>Ñ1˜C˜CØ Ò+Ð+Ø),˜JøØ%Ð%à˜B’Y�Yð ")�JÝ# A™hœhð -ð -˜Ø ˜Ý"'¨¡(¤(ð 2ð 2˜BØ¥3 q¨¨R¨¤y¡>¤>Ñ1˜C˜CØ Ò+Ð+Ø),˜JøØ%Ð%ð ˜A’X�Xå3°AÑ6Ô6°qÔ9Ð9Ø˜B’Y�Yå3°AÑ6Ô6°rÔ:Ð:õ %Ð%GÑHÔHÐHr&   r   r3   )rF   r!   rß  rà  r=   rD   r±   r%   r"  r   r•   r|   r   rì   Úfinforx  rP  )rF  Úord_flagr•  r“  r–  r   r#   r  r  r¨  r³  s            @@r$   Ú_get_norm_implr¶  ´  sÈ  øø€ õ ˜!œ'Ð#5°q´wÑ?Ô?€KÝÔ% kÑ2Ô2€KåÔ" 1¤7Ñ+Ô+€Hå‰WŒW×!Ò! !¤'Ñ*Ô*€Få�}˜QœW fÑ-Ô-Ñ.Ô.€Dà„v�‚{€{ð ˜�eœjÐ)Ð)Ð)ð'ð 'ð 'ð 'ð 'ð8+ð 8+ð 8+ð 8+ðr Ðà	
Œ�1Šˆð ˜�eœjÐ)Ð)Ð)ð Œx˜3ŠˆÝ!ðð ñ "Ô!ðð à”˜S’�Ý!ðð ñ "Ô!ðð õ "ð$ð $ñ "Ô!ð$ð
4ð 4ð 4ð 4ð 4ð 4ð 4õ ”h˜{Ô/Ñ0Ô0Ô4ˆGðDIð DIð DIð DIð DIð DIðJ Ðàˆr&   c                 ó^   — t          ¦   «          t          | d¦  «         t          | |¦  «        S )Nr›  )r1   r«  r¶  r¤  s     r$   Ú	norm_implr¸  {	  s+   € å�O„O€Oå   FÑ+Ô+Ð+å˜!˜SÑ!Ô!Ð!r&   c                 óJ   — t          ¦   «          t          | d¦  «         dd„}|S )NÚcondc                 óÜ  — |dk    s|dk    s|€[t          | ¦  «        }|dk    s|€"t          j        |d         |d         ¦  «        }n„t          j        |d         |d         ¦  «        }nbt          j                             | |¦  «        }t          j                             t          j                             | ¦  «        |¦  «        }||z  }t          j        |¦  «        rt          j        S |S )Nr  r�  r   rœ  )r�  rì   Údividern  r›  rš  Úisnanrƒ  )rF  Úpr   r”  Únorm_xÚ
norm_inv_xs         r$   r“   zcond_impl.<locals>.implŠ	  sÉ   € ð& �Š6ˆ6�Q˜"’W�W  	Ý(¨Ñ+Ô+ˆAØ�AŠvˆv˜˜Ý”I˜a œd A b¤EÑ*Ô*��å”I˜a œe Q q¤TÑ*Ô*��å”Y—^’^ A qÑ)Ô)ˆFÝœŸš­¬	¯ª°aÑ(8Ô(8¸!Ñ<Ô<ˆJØ˜Ñ#ˆAõ Œ8�A‰;Œ;ð 	Ý”6ˆMàˆHr&   r3   r�  )rF  r¾  r“   s      r$   Ú	cond_implrÁ  „	  s7   € å�O„O€Oå˜˜FÑ#Ô#Ð#ð#ð #ð #ð #ðH €Kr&   c                 ól   — d}t          t          | ¦  «        ¦  «        D ]}| |         |k    r|dz   }Œ |S )zJ
    Gets rank from singular values with cut-off at a given tolerance
    r   r   ©r±  r�  )ÚsvrÂ   rU  rÜ   s       r$   Ú_get_rank_from_singular_valuesrÅ  ±	  sD   € ð
 €DÝ•3�r‘7”7‰^Œ^ð ð ˆØˆaŒ5�1Š9ˆ9Ø˜!‘8ˆDˆDàØ€Kr&   c                 óh   ‡— t          ¦   «          t          | d¦  «         d„ Šˆfd„} || |¦  «        S )ah  
    Computes rank for matrices and vectors.
    The only issue that may arise is that because numpy uses double
    precision lapack calls whereas numba uses type specific lapack
    calls, some singular values may differ and therefore counting the
    number of them above a tolerance may lead to different counts,
    and therefore rank, in some cases.
    Úmatrix_rankc                 óÐ   ‡— |d t           j        fv rPt          | j        d| j        ¦  «        }t	          j        |¦  «        }t          j        |¦  «        j        Šdˆfd„	}|S dd„}|S )NrC   c                 ó²   •— t          | ¦  «        }| j        d         }| j        d         }t          ||¦  «        }|d         |z  ‰z  }t          ||¦  «        S )Nr   r   )r�  rë   rP  rÅ  )r†  Útolr   r”  r   ÚlrÂ   Úeps_vals          €r$   Ú_2d_tol_none_implzImatrix_rank_impl.<locals>._2d_matrix_rank_impl.<locals>._2d_tol_none_implÕ	  sU   ø€ Ý,¨QÑ/Ô/�à”G˜A”J�Ø”G˜A”J�Ý˜˜1‘I”I�Ø�a”D˜1‘H˜wÑ&�Ý5°a¸Ñ;Ô;Ð;r&   c                 ó@   — t          | ¦  «        }t          ||¦  «        S r3   )r�  rÅ  )r†  rÊ  r   s      r$   Ú_2d_tol_not_none_implzMmatrix_rank_impl.<locals>._2d_matrix_rank_impl.<locals>._2d_tol_not_none_implß	  s   € Ý,¨QÑ/Ô/�Ý5°a¸Ñ=Ô=Ð=r&   r3   )	r   r•   rF   r!   rß  rà  rì   r´  Úeps)r†  rÊ  Únb_typeÚnp_typerÍ  rÏ  rÌ  s         @r$   Ú_2d_matrix_rank_implz.matrix_rank_impl.<locals>._2d_matrix_rank_implÍ	  s‘   ø€ ð �4�œÐ$Ð$Ð$Ý˜aœgÐ'9¸1¼7ÑCÔCˆGÝ Ô)¨'Ñ2Ô2ˆGÝ”h˜wÑ'Ô'Ô+ˆGð<ð <ð <ð <ð <ð <ð %Ð$ð>ð >ð >ð >ð )Ð(r&   c                 óR   •— | j         }|dk    rdd„}|S |dk    r ‰| |¦  «        S J ‚)Nr   c                 ób   — t          t          | ¦  «        ¦  «        D ]}| |         dk    r dS ŒdS )NrÀ   r   r   rÃ  )r†  rÊ  rÜ   s      r$   Ú_1d_matrix_rank_implzMmatrix_rank_impl.<locals>._get_matrix_rank_impl.<locals>._1d_matrix_rank_impló	  s;   € Ý�s 1™vœv™œð !ð !�AØ˜”t˜r’z�zØ ˜q˜qð "à�qr&   r  r   r3   rb  )r†  rÊ  r"  rÖ  rÓ  s       €r$   Ú_get_matrix_rank_implz/matrix_rank_impl.<locals>._get_matrix_rank_implä	  sP   ø€ ØŒvˆØ�1Š9ˆ9ðð ð ð ð
 (Ð'Ø�QŠYˆYØ'Ð'¨¨3Ñ/Ô/Ð/àˆHr&   )r1   r«  )r†  rÊ  r×  rÓ  s      @r$   Úmatrix_rank_implrØ  ¿	  s[   ø€ õ �O„O€Oå   MÑ2Ô2Ð2ð)ð )ð )ð.ð ð ð ð ð4 !Ð   CÑ(Ô(Ð(r&   c                 óØ   ‡— t          | d¦  «         t          j        | j        ¦  «        Št	          |d|¦  «        }t          |t          j        ¦  «        st          d¦  «        ‚ˆfd„}|S )zL
    Computes matrix power. Only integer powers are supported in numpy.
    Úmatrix_powerr!   zExponent must be an integer.c                 ó&  •— |dk    rAt          j        | j        ‰
¬¦  «        }t          | j        d         ¦  «        D ]	}d|||f<   Œ
|S | j        d         | j        d         }}||k    rt	          d¦  «        ‚|dk    r|                      ¦   «         S |dk     r=t           j                             | ¦  «                             ¦   «         }|dk    r|S | }n|dk    r|                      ¦   «         S | }|dk     rK|d	k    rt          j        ||¦  «        S |d
k    r(t          j        t          j        ||¦  «        |¦  «        S d S |}|}|}d}	|dk    rA|dz  r|	r|}d}	nt          j        ||¦  «        }t          j        ||¦  «        }|dz	  }|dk    °A|S )Nr   rŸ  r¿   rœ  r�  zinput must be a square arrayr   é   r  é   TF)	rì   rí   rë   r±  r  r�   rn  rš  rï   )rð   r‘   r†  rÜ   r!  r,  rz  r‹  rþ  Úflagr–  s             €r$   Úmatrix_power_implz,matrix_power_impl.<locals>.matrix_power_impl
  sÄ  ø€ à�Š6ˆ6õ ”˜œ¨Ð1Ñ1Ô1ˆAÝ˜1œ7 1œ:Ñ&Ô&ð ð �Ø��!�Q�$‘�ØˆHà”˜”˜aœg bœkˆBˆØ�Š8ˆ8ÝÐ;Ñ<Ô<Ð<ð �Š7ˆ7Ø—6’6‘8”8ˆOð ˆqŠ5ˆ5Ý”	—’˜aÑ Ô ×%Ò%Ñ'Ô'ˆAØ�BŠwˆwØ�Ø�ˆAˆAà�AŠvˆvØ—v’v‘x”x�ØˆAàˆqŠ5ˆ5Ø�AŠvˆvÝ”v˜a ‘|”|Ð#Ø�AŠvˆvÝ”v�bœf Q¨™lœl¨AÑ.Ô.Ð.ð ˆvð ˆCØˆCð ˆCð ˆDØ˜’(�(Ø˜‘7ð /Øð /Ø!˜Ø$˜˜å œf S¨#Ñ.Ô.˜Ý”f˜S #Ñ&Ô&�Ø˜Q‘h�ð ˜’(�(ð ˆJr&   )	r  rß  rà  r!   rF   r   r   ÚIntegerr   )rð   r‘   Úntrß  r–  s       @r$   rß  rß  
  s}   ø€ õ ˜˜NÑ+Ô+Ð+ÝÔ" 1¤7Ñ+Ô+€Hå	��G˜QÑ	Ô	€BÝ�b�%œ-Ñ(Ô(ð =ÝÐ;Ñ<Ô<Ð<ð=ð =ð =ð =ð =ð~ Ðr&   c                 ó˜   — t          | dd¬¦  «         t          |t          t          j        f¦  «        st          d|z  ¦  «        ‚dd„}|S )z)
    Computes the trace of an array.
    ÚtraceF©r{  z!integer argument expected, got %sr   c                 ó   — | j         \  }}|}|dk     r||z   }|dk    r||z
  }t          t          ||¦  «        d¦  «        }d}|dk    r#t          |¦  «        D ]}|| |||z   f         z  }Œn"t          |¦  «        D ]}|| ||z
  |f         z  }Œ|S ré   )rë   rP  rë  r±  )rð   ÚoffsetÚrowsÚcolsrÜ   r‘   rþ  rÿ  s           r$   Úmatrix_trace_implz,matrix_trace_impl.<locals>.matrix_trace_impl]
  sÁ   € Ø”W‰
ˆˆdØˆØˆqŠ5ˆ5Ø˜!‘8ˆDØˆqŠ5ˆ5Ø˜!‘8ˆDÝ•�D˜$‘” Ñ#Ô#ˆØˆØ�Š6ˆ6Ý˜1‘X”Xð #ð #�Ø�q˜˜A ™E˜”{Ñ"��ð#õ ˜1‘X”Xð #ð #�Ø�q˜˜Q™ ˜”{Ñ"��Øˆ
r&   ©r   )r  r   r²   r   rà  r   )rð   ræ  ré  s      r$   ré  ré  R
  sc   € õ ˜˜G¨uÐ5Ñ5Ô5Ð5å�f�s¥E¤MÐ2Ñ3Ô3ð KÝÐ@À6ÑIÑJÔJÐJðð ð ð ð" Ðr&   c                 ó�   — |rdnd}||f}t          | t          j        ¦  «        r| j        dk    st	          d|z  d¬¦  «        ‚d S d S )Nrs  rì   r  r©  Frt  )r   r   r€   r"  r   rª  s        r$   Ú_check_scalar_or_lt_2d_matrì  q
  sm   € Ø%Ð/ˆ[ˆ[¨4€FØ�iÐ €Få�!•U”[Ñ!Ô!ð <ØŒv˜Š{ˆ{ÝÐKØ &ñ'Ø5:ð<ñ <ô <ð <ð<ð <Øˆ{r&   c                 ó,  — t          j        | ¦  «        }t          j        |¦  «        }t          j        |                     ¦   «                              |j        df¦  «        |                     ¦   «                              d|j        f¦  «        ¦  «        S r  ©rì   ÚasarrayÚmultiplyrH  rj  r¢  ©rð   rñ   rò   ÚaaÚbbs        r$   Úouter_impl_nonerô  {
  sm   € å	Œ�A‰Œ€BÝ	Œ�A‰Œ€BÝŒ;�r—x’x‘z”z×)Ò)¨2¬7°A¨,Ñ7Ô7ØŸš™
œ
×*Ò*¨A¨r¬w¨<Ñ8Ô8ñ:ô :ð :r&   c                 ó2  — t          j        | ¦  «        }t          j        |¦  «        }t          j        |                     ¦   «                              |j        df¦  «        |                     ¦   «                              d|j        f¦  «        |¦  «         |S r  rî  rñ  s        r$   Úouter_impl_arrrö  ƒ
  sw   € å	Œ�A‰Œ€BÝ	Œ�A‰Œ€BÝ„K�—’‘
”
×"Ò" B¤G¨Q <Ñ0Ô0Ø—’‘
”
×"Ò" A r¤w <Ñ0Ô0Øñô ð ð €Jr&   c                 ó>   — |d t           j        fv rt          S t          S r3   )r   r•   rô  rö  )rð   rñ   rò   s      r$   Ú_get_outer_implrø  �
  s    € Ø
ˆt•U”ZÐ Ð Ð ÝÐåÐr&   c                 ó~   ‡— t          | dd¬¦  «         t          |dd¬¦  «         t          | ||¦  «        Šdˆfd„	}|S )NÚouterFrä  c                 ó   •—  ‰| ||¦  «        S r3   rY   )rð   rñ   rò   r“   s      €r$   Ú
outer_implzouter_impl.<locals>.outer_implœ
  s   ø€ Øˆt�A�q˜#‰ŒÐr&   r3   )rì  rø  )rð   rñ   rò   rü  r“   s       @r$   rü  rü  ”
  sf   ø€ õ ˜q '°UÐ;Ñ;Ô;Ð;Ý˜q '°UÐ;Ñ;Ô;Ð;å˜1˜a Ñ%Ô%€Dðð ð ð ð ð ð Ðr&   c                 ó  — t          | t          j        ¦  «        r_| j        dvr't	          d                     | j        ¦  «        ¦  «        ‚| j        dk    rt          d„ ¦   «         }|S t          d„ ¦   «         }|S t          d„ ¦   «         }|S )N)rz   rÁ   z^np.linalg.kron only supports 'C' or 'F' layout input arrays. Received an input of layout '{}'.r  c                 ób   — | j         d         }| j         d         }|                      ||¦  «        S )Nrœ  r�  ©rë   rj  )rF  ÚxnÚxms      r$   Ú	nrm_shapez(_kron_normaliser_impl.<locals>.nrm_shapeª
  s,   € à”W˜R”[�Ø”W˜R”[�Ø—y’y  RÑ(Ô(Ð(r&   c                 óH   — | j         d         }|                      d|¦  «        S )Nrœ  r   rÿ  )rF  r   s     r$   r  z(_kron_normaliser_impl.<locals>.nrm_shape±
  s!   € à”W˜R”[�Ø—y’y  BÑ'Ô'Ð'r&   c                 óT   — t          j        dt          | ¦  «        ¦  «        }| |d<   |S )Nr  r   )rì   rî   rx  )rF  rð   s     r$   r  z(_kron_normaliser_impl.<locals>.nrm_shape·
  s'   € å”˜¥ a¡¤Ñ)Ô)ˆAØˆAˆa‰DØˆHr&   )r   r   r€   r|   r   Úformatr"  r   )rF  r  s     r$   Ú_kron_normaliser_implr  ¢
  s¼   € å�!•U”[Ñ!Ô!ð ØŒ8˜:Ð%Ð%Ýð -ç-3ªV°A´HÑ-=Ô-=ñ?ô ?ð ?ð ŒV�qŠ[ˆ[Ýð)ð )ñ Ôð)ð Ðåð(ð (ñ Ôð(ð Ðå	ð	ð 	ñ 
Ô	ð	ð Ðr&   c                 óZ  — t          | t          j        ¦  «        }t          |t          j        ¦  «        }|r<|r:| j        dk    s|j        dk    rt          d„ ¦   «         }|S t          d„ ¦   «         }|S |rt          d„ ¦   «         }|S |rt          d„ ¦   «         }|S t          d„ ¦   «         }|S )Nr  c                 ó   — |S r3   rY   ©rð   rñ   r   s      r$   rþ  z_kron_return.<locals>.retÆ
  s   € à�r&   c                 ó6   — |                      |j        ¦  «        S r3   )rj  r¢  r	  s      r$   rþ  z_kron_return.<locals>.retË
  s   € à—y’y ¤Ñ(Ô(Ð(r&   c                 ó6   — |                      | j        ¦  «        S r3   ©rj  rë   r	  s      r$   rþ  z_kron_return.<locals>.retÑ
  ó   € à—y’y ¤Ñ)Ô)Ð)r&   c                 ó6   — |                      |j        ¦  «        S r3   r  r	  s      r$   rþ  z_kron_return.<locals>.retÖ
  r  r&   c                 ó   — |d         S ré   rY   r	  s      r$   rþ  z_kron_return.<locals>.retÛ
  s   € à˜”t�r&   )r   r   r€   r"  r   )rð   rñ   Úa_is_arrÚb_is_arrrþ  s        r$   Ú_kron_returnr  ¿
  sõ   € õ ˜!�Uœ[Ñ)Ô)€HÝ˜!�Uœ[Ñ)Ô)€HØð �Hð ØŒ6�QŠ;ˆ;˜!œ& Aš+˜+Ýðð ñ ÔðàˆJåð)ð )ñ Ôð)àˆJàð 	Ýð*ð *ñ Ôð*àˆJØð 		Ýð*ð *ñ Ôð*àˆJåðð ñ ÔðàˆJr&   c                 óä   ‡‡‡‡— t          | dd¬¦  «         t          |dd¬¦  «         t          | ¦  «        Št          |¦  «        Št          | |¦  «        Št          | d| ¦  «        Šˆˆˆˆfd„}|S )NÚkronFrä  r!   c           	      óÆ  •—  ‰| ¦  «        } ‰|¦  «        }|j         d         }|j         d         }|j         d         }|j         d         }||z  }||z  }	t          j        ||	f‰¬¦  «        }
t          |¦  «        D ]X}||z  }t          |¦  «        D ]A}||z   }||d d …f         }t          |¦  «        D ]}||z  }|||f         |z  |
||||z   …f<   ŒŒBŒY ‰| ||
¦  «        S )Nr�  rœ  rŸ  )rë   rì   rî   r±  )rð   rñ   rò  ró  r!  r,  r"  r.  ÚcmÚcnrz   rÿ  ÚrjmprÜ   ÚirjmpÚslcr   Úcjmprt  Úfix_aÚfix_bÚret_cs                     €€€€r$   Ú	kron_implzkron_impl.<locals>.kron_implï
  s(  ø€ àˆU�1‰XŒXˆØˆU�1‰XŒXˆàŒX�bŒ\ˆØŒX�bŒ\ˆØŒX�bŒ\ˆØŒX�bŒ\ˆà�"‰WˆØ�"‰Wˆõ ŒH�b˜"�X RÐ(Ñ(Ô(ˆõ �r‘”ð 	>ð 	>ˆAà�r‘6ˆDå˜2‘Y”Yð >ð >�à˜q™�à˜˜A˜A˜A˜”h�å˜r™œð >ð >�Að ˜r™6�DØ/1°!°Q°$¬x¸#©~�A�e˜T $¨¡)˜^Ð+Ñ,Ð,ð>ð>ð ˆu�Q˜˜1‰~Œ~Ðr&   )rì  r  r  rF   )rð   rñ   r  rt  r  r  r  s      @@@@r$   r  r  á
  sŸ   øøøø€ õ ˜q &°EÐ:Ñ:Ô:Ð:Ý˜q &°EÐ:Ñ:Ô:Ð:å! !Ñ$Ô$€EÝ! !Ñ$Ô$€EÝ˜˜AÑÔ€Eõ 
��G˜QÑ	Ô	€Bð&ð &ð &ð &ð &ð &ð &ð &ðP Ðr&   )r   )F)Tr÷  rX  rr  r3   rê  )ŸrW   Ú
contextlibr+  Úllvmliter   Únumpyrì   ÚoperatorÚnumba.core.imputilsr   r   r   r   Únumba.core.typingr   Únumba.core.extendingr	   r
   r   Ú
numba.corer   r   Únumba.core.errorsr   r   r   Úarrayobjr   r   r   Únumba.npr   rß  rª   r«   Ú
as_pointerÚ	ll_char_pr­   Úll_intcÚ	ll_intc_pr¬   Ú	ll_intp_prQ  r   r`   Úfloat32ru   Ú	complex64Ú
complex128r   r%   r-   r1   r;   r=   r[   Úcontextmanagerr�   r–   r£   r¦   r¼   rÍ   ræ   rö   rû   rÿ   r  rï   r  Úmatmulr  r  r3  r5  r7  rO  r]  rh  rK   rG   r’  rq  r  r‚  r„  r�  r•  r˜  rn  rš  r¥  r§  r«  r­  r´  r·  rÌ  rÎ  rÓ  rÕ  rÝ  rã  rå  rç  rö  rú  r  r  r  r  r  r  r&  r(  r/  r1  r@  rC  rK  rN  rW  r]  ra  rc  re  rh  rq  r  r�  r‡  r‰  rŒ  r�  r—  r™  r¡  r¶  r›  r¸  rº  rÁ  rÅ  rÇ  rØ  rÚ  rß  rã  ré  rì  rô  rö  rø  rú  rü  r  r  r  r  rY   r&   r$   ú<module>r5     s  ððð ð
 Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€ðJð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jà 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à
ˆ"Œ*�Q‰-Œ-€Ø×ÒÑ Ô €	Ø€	Ø
ˆ"Œ*�R‰.Œ.€Ø×ÒÑ Ô €	Ø	Œ€Ø×ÒÑÔ€	ð Œx€ØŒ{€ð 
„M�3Ø	„M�3Ø	„O�SØ	Ô�cð	€ðð ð ð ðHð Hð HðHð Hð Hð5ð 5ð 5ð
&;ð &;ð &;ð &;ð &;ñ &;ô &;ð &;ðR`:ð `:ð `:ð `:ð `:ñ `:ô `:ð `:ðF Ôð-ð -ñ Ôð-ð0Fð Fð Fð	Að 	Að 	Að	Cð 	Cð 	Cð-ð -ð -ð,"-ð "-ð "-ðJ/-ð /-ð /-ðdDð Dð Dð Dð Dð Dð Dð Dð Dð ð ð ð ð6 
€ˆ"Œ&ÑÔð/ð /ñ Ôð/ð 
€ˆ(Œ/ÑÔð*ð *ñ Ôð*ð)6ð )6ð )6ðX 
€ˆ"Œ'ÑÔð6ð 6ñ Ôð6ð<@ð @ð @ð@ð @ð @ð6.ð 6.ð 6.ðrV.ð V.ð V.ðr 
€ˆ"Œ&ÑÔð @ð  @ñ Ôð @ðF *�5Ô)Ð*=¸z¸u¼z¹|¼|ÑLÔLÐ ð ð8ð 8ñ Ôð8ð3ð 3ð 3ð 3ð*7ð 7ð 7ð	ð 	ð 	ð 
€Ð
 Ñ!Ô!ðð ñ "Ô!ðð6 ð<ð <ñ Ôð<ð ðð ñ Ôðð
 
€ˆ"Œ)Œ-ÑÔð$ð $ñ Ôð$ðN ðGð Gñ ÔðGð@ð @ð @ð @ð$ 
€ˆ"Œ)Ô
ÑÔð)ð )ñ Ôð)ðV 
€ˆ"Œ)Œ-ÑÔðpð pñ Ôðpðd 
€ˆ"Œ)Ô
ÑÔðt!ð t!ñ Ôðt!ðl 
€ˆ"Œ)Œ.ÑÔð.ð .ñ Ôð.ð` 
€ˆ"Œ)Ô
ÑÔð.ð .ñ Ôð.ð` 
€ˆ"Œ)Œ-ÑÔð>ð >ð >ñ Ôð>ðB 
€ˆ"Œ)Œ,ÑÔðIð Iñ ÔðIð`ð ð ð 
€Ð
ÑÔðð ñ Ôððð ð ð 
€Ð
ÑÔðð ñ  Ôððð ð ð 
€Ð
+Ñ,Ô,ðð ñ -Ô,ðð(ð ð ð 
€Ð
!Ñ"Ô"ðð ñ #Ô"ðð*ð ð ð 
€ˆ/ÑÔð!ð !ñ Ôð!ðHð ð ð 
€ˆ/ÑÔðð ñ Ôðð 
€ˆ"Œ)Œ/ÑÔð[ð [ð [ñ Ôð[ð|ð ð ð 
€Ð
Ñ Ô ðð ñ !Ô ðð 
€ˆ"Œ)Œ/ÑÔð9ð 9ñ Ôð9ðx 
€ˆ"Œ)Œ.ÑÔð`ð `ð `ñ Ôð`ðF! ð ! ð ! ðH 
€ˆ"Œ)Ô
ÑÔð7ð 7ñ Ôð7ðt 
€ˆ"Œ)Œ-ÑÔð
ð 
ñ Ôð
ðð ð ð 
€Ð
"Ñ#Ô#ðCð Cñ $Ô#ðCðLð ð ð 
€ˆ,ÑÔð ð  ñ Ôð ðFDð Dð DðN 
€ˆ"Œ)Œ.ÑÔð"ð "ð "ñ Ôð"ð 
€ˆ"Œ)Œ.ÑÔð)ð )ð )ñ Ôð)ðX ð
ð 
ñ Ôð
ð 
€ˆ"Œ)Ô
Ñ Ô ð>)ð >)ð >)ñ !Ô ð>)ðB 
€ˆ"Œ)Ô
 Ñ!Ô!ðKð Kñ "Ô!ðKð` 
€ˆ"Œ(ÑÔðð ð ñ Ôðð<<ð <ð <ð <ð ð:ð :ñ Ôð:ð ðð ñ Ôððð ð ð 
€ˆ"Œ(ÑÔð
ð 
ð 
ñ Ôð
ðð ð ð:ð ð ðD 
€ˆ"Œ'ÑÔð5ð 5ñ Ôð5ð 5ð 5r&   