ó
    „ñ:i.i ã                   ó0  • S r SSKrSSKrSSKJr  SSKrSSKrSSKJ	r	J
r
JrJr  SSKJr  SSKJrJrJr  SSKJrJrJr  SSKJrJrJr  S	S
KJrJrJr  SSKJ r!  \RD                  " S5      r#\#RI                  5       r%\%r&\RD                  " S5      r'\'RI                  5       r(\RR                  r)\)RI                  5       r*\RV                  r,\RZ                  (       a?  \RV                  r.\R^                  S\R`                  S\Rb                  S\Rd                  S0r3O>\Rh                  r.\Rj                  S\Rl                  S\Rn                  S\Rp                  S0r3SgS jr9S r:S r;S r< " S S5      r= " S S5      r>\R~                  S 5       r@S rAS rBS rCS rDS rES  rFS! rGS" rHS# rIShS$ jrJ\" \R–                  5      S% 5       rL\" \Rš                  5      S& 5       rNS' rO\" \R                   5      S( 5       rPS) rQS* rRS+ rSS, rT\" \R–                  5      S- 5       rU\RZ                  (       a#  \R¬                  " S.\R®                  " 5       5      rXO"\R¬                  " S.\R²                  " 5       5      rX\S/ 5       rZSiS0 jr[S1 r\S2 r]\" \]5      S3 5       r^\S4 5       r_\S5 5       r`\" \RÂ                  RÄ                  5      S6 5       rc\S7 5       rdSiS8 jre\" \RÂ                  RÌ                  5      S9 5       rg\" \RÂ                  RÐ                  5      S: 5       ri\" \RÂ                  RÔ                  5      S; 5       rk\" \RÂ                  RØ                  5      S< 5       rm\" \RÂ                  RÜ                  5      S= 5       ro\" \RÂ                  Rà                  5      SjS> j5       rq\" \RÂ                  Rä                  5      S? 5       rsS@ rt\" \t5      SA 5       ruSB rv\" \v5      SC 5       rwSD rx\" \x5      SE 5       rySF rz\" \z5      SG 5       r{SH r|\" \|5      SI 5       r}SJ r~\" \~5      SK 5       r\" \RÂ                  GR                   5      SkSL j5       r�SM r‚\" \‚5      SN 5       rƒ\" \RÂ                  GR                  5      SO 5       r…\" \RÂ                  GR                  5      SlSP j5       r‡SQ rˆ\" \RÂ                  GR                  5      SR 5       rŠ\" \RÂ                  GR                  5      SS 5       rŒST r�\" \�5      SU 5       rŽSV r�\" \�5      SW 5       r�SX r‘\" \RÂ                  GR$                  5      SmSY j5       r“\" \RÂ                  GR(                  5      SmSZ j5       r•\S[ 5       r–\" \RÂ                  GR.                  5      SmS\ j5       r˜\" \RÂ                  GR2                  5      S] 5       rš\" \GR6                  5      SnS^ j5       rœSiS_ jr�\S` 5       rž\Sa 5       rŸSb r \" \GRB                  5      SmSc j5       r¢Sd r£Se r¤\" \GRJ                  5      Sf 5       r¦g)oz.
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Úconfig)ÚTypingErrorÚNumbaTypeErrorÚNumbaPerformanceWarningé   )Ú
make_arrayÚ_empty_nd_implÚ
array_copy)Únumpy_supporté   é    ÚsÚdÚcÚzc                 óV   • [         R                  U 5      nUc  [        SU< S35      eU$ )Nzunsupported dtype for z())Ú_blas_kindsÚgetr   )ÚdtypeÚ	func_nameÚkinds      ÚR/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/np/linalg.pyÚget_blas_kindr$   ;   s(   € Ü�?‰?˜5Ó!€DØ�|Ý»YÐHÓIÐIØ€Kó    c                  ó@   •  SS K n g ! [         a    [        S5      ef = f©Nr   z*scipy 0.16+ is required for linear algebra)Úscipy.linalg.cython_blasÚImportError©Úscipys    r#   Úensure_blasr,   B   s(   € ðHÜ'øÜó HÜÐFÓGÐGðHúó   ‚ ‡c                  ó@   •  SS K n g ! [         a    [        S5      ef = fr'   )Úscipy.linalg.cython_lapackr)   r*   s    r#   Úensure_lapackr0   I   s(   € ðHÜ)øÜó HÜÐFÓGÐGðHúr-   c                 óR   • U R                  XU5      n[        R                  " X5      $ ©N)Úget_constant_genericr   Úalloca_once_value)ÚcontextÚbuilderÚtyÚvalÚconsts        r#   Úmake_constant_slotr:   P   s%   € Ø×(Ñ(¨°cÓ:€EÜ×$Ò$ WÓ4Ð4r%   c                   ó>   • \ rS rSrSrS r\S 5       r\S 5       rSr	g)Ú_BLASéU   zA
Functions to return type signatures for wrapped
BLAS functions.
c                 ó   • [        5         g r2   )r,   ©Úselfs    r#   Ú__init__Ú_BLAS.__init__[   s   € Ü�r%   c           	      ó"  • [        USU5      n[        R                  " [        R                  [        R                  [        R
                  " U5      [        R                  [        R
                  " U5      5      n[        R                  " SU5      $ )NÚunderlying_floatÚnumba_xxnrm2©Úgetattrr   ÚintcÚcharÚintpÚCPointerÚExternalFunction©Úclsr    ÚrtypeÚsigs       r#   rE   Ú_BLAS.numba_xxnrm2^   s`   € ä˜Ð1°5Ó9ˆÜ�jŠjœŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ÜŸš¨Ó.ó	0ˆô ×%Ò% n°cÓ:Ð:r%   c                 ó:  • [         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  " U5      [         R                  " U5      [         R                  [         R                  " U5      [         R                  [         R                  " U5      [         R                  " U5      [         R                  5      n[         R
                  " SU5      $ )NÚnumba_xxgemm©r   rH   rI   rJ   rK   rL   ©rN   r    rP   s      r#   rS   Ú_BLAS.numba_xxgemmi   s    € ä�jŠjÜ�J‰JÜ�J‰JÜ�J‰JÜ�J‰JÜ�J‰JÜ�J‰JÜ�NŠN˜5Ó!Ü�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!Ü�NŠN˜5Ó!Ü�J‰Jó
ˆô  ×%Ò% n°cÓ:Ð:r%   © N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rA   ÚclassmethodrE   rS   Ú__static_attributes__rW   r%   r#   r<   r<   U   s4   † ñò
ð ñ;ó ð;ð ñ;ó ó;r%   r<   c                   óÎ   • \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)Ú_LAPACKé~   zC
Functions to return type signatures for wrapped
LAPACK functions.
c                 ó   • [        5         g r2   )r0   r?   s    r#   rA   Ú_LAPACK.__init__„   s   € Ü�r%   c           
      ó.  • [         R                  " [         R                  [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " [
        5      5      n[         R                  " SU5      $ )NÚnumba_xxgetrf©r   rH   rI   rJ   rK   ÚF_INT_nbtyperL   rU   s      r#   re   Ú_LAPACK.numba_xxgetrf‡   sX   € ä�jŠjœŸ™ÜŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ÜŸš¬Ó5óˆô ×%Ò% o°sÓ;Ð;r%   c           	      ó  • [         R                  " [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " [
        5      5      n[         R                  " SU5      $ )NÚnumba_ez_xxgetrirf   rU   s      r#   rj   Ú_LAPACK.numba_ez_xxgetri’   sR   € ä�jŠjœŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ÜŸš¬Ó5ó	ˆô ×%Ò%Ð&8¸#Ó>Ð>r%   c                 óþ  • [         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " U5      [         R                  " U5      [         R                  " U5      [         R                  [         R                  " U5      [         R                  5      n[         R
                  " SU5      $ )NÚnumba_ez_rgeevrT   rU   s      r#   rm   Ú_LAPACK.numba_ez_rgeevœ   s’   € ä�jŠjœŸ™ÜŸ™ÜŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ÜŸš¨Ó.ÜŸš¨Ó.ÜŸš¨Ó.ÜŸ™ÜŸš¨Ó.ÜŸ™óˆô ×%Ò%Ð&6¸Ó<Ð<r%   c                 óÔ  • [         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " U5      [         R                  " U5      [         R                  [         R                  " U5      [         R                  5      n[         R
                  " SU5      $ )NÚnumba_ez_cgeevrT   rU   s      r#   rp   Ú_LAPACK.numba_ez_cgeev­   s†   € ä�jŠjœŸ™ÜŸ™ÜŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ÜŸš¨Ó.ÜŸš¨Ó.ÜŸ™ÜŸš¨Ó.ÜŸ™óˆô ×%Ò%Ð&6¸Ó<Ð<r%   c                 ó^  • [        USU5      n[        R                  " [        R                  [        R                  [        R                  [        R                  [        R
                  " U5      [        R                  [        R
                  " U5      5      n[        R                  " SU5      $ )NrD   Únumba_ez_xxxevdrF   )rN   r    ÚwtyperP   s       r#   rs   Ú_LAPACK.numba_ez_xxxevd½   so   € ä˜Ð1°5Ó9ˆÜ�jŠjœŸ™ÜŸ™ÜŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ÜŸš¨Ó.óˆô ×%Ò%Ð&7¸Ó=Ð=r%   c                 óü   • [         R                  " [         R                  [         R                  [         R                  [         R                  " U5      [         R                  5      n[         R
                  " SU5      $ )NÚnumba_xxpotrfrT   rU   s      r#   rw   Ú_LAPACK.numba_xxpotrfÊ   sL   € ä�jŠjœŸ™ÜŸ™ÜŸ™ÜŸš¨Ó.ÜŸ™ó	ˆô ×%Ò% o°sÓ;Ð;r%   c                 óî  • [        USU5      n[        R                  " [        R                  [        R                  [        R                  [        R                  [        R
                  " U5      [        R                  [        R
                  " U5      [        R
                  " U5      [        R                  [        R
                  " U5      [        R                  5      n[        R                  " SU5      $ )NrD   Únumba_ez_gesddrF   )rN   r    ÚstyperP   s       r#   rz   Ú_LAPACK.numba_ez_gesddÔ   s–   € ä˜Ð1°5Ó9ˆÜ�jŠjÜ�J‰JÜ�J‰JÜ�J‰JÜ�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!Ü�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!Ü�J‰Jó
ˆô ×%Ò%Ð&6¸Ó<Ð<r%   c           
      ó&  • [         R                  " [         R                  [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " U5      5      n[         R
                  " SU5      $ )NÚnumba_ez_geqrfrT   rU   s      r#   r~   Ú_LAPACK.numba_ez_geqrfç   sZ   € ä�jŠjÜ�J‰JÜ�J‰JÜ�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!ó
ˆô ×%Ò%Ð&6¸Ó<Ð<r%   c                 óD  • [         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " U5      5      n[         R
                  " SU5      $ )NÚnumba_ez_xxgqrrT   rU   s      r#   r�   Ú_LAPACK.numba_ez_xxgqró   sa   € ä�jŠjÜ�J‰JÜ�J‰JÜ�J‰JÜ�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!ó
ˆô ×%Ò%Ð&6¸Ó<Ð<r%   c                 ó
  • [        USU5      n[        R                  " [        R                  [        R                  [        R                  [        R                  [        R
                  " U5      [        R                  [        R
                  " U5      [        R                  [        R
                  " U5      [        R                  [        R
                  " [        R                  5      5      n[        R                  " SU5      $ )NrD   Únumba_ez_gelsd)rG   r   rH   rI   rJ   rK   Úfloat64rL   rM   s       r#   r„   Ú_LAPACK.numba_ez_gelsd   sš   € ä˜Ð1°5Ó9ˆÜ�jŠjÜ�J‰JÜ�J‰JÜ�J‰JÜ�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠN˜5Ó!Ü�M‰MÜ�NŠNœ5Ÿ:™:Ó&ó
ˆô ×%Ò%Ð&6¸Ó<Ð<r%   c                 óv  • [         R                  " [         R                  [         R                  [         R                  [         R                  " U5      [         R                  [         R                  " [
        5      [         R                  " U5      [         R                  5      n[         R                  " SU5      $ )NÚnumba_xgesvrf   rU   s      r#   rˆ   Ú_LAPACK.numba_xgesv  sl   € ä�jŠjÜ�J‰JÜ�J‰JÜ�J‰JÜ�NŠN˜5Ó!Ü�J‰JÜ�NŠNœ<Ó(Ü�NŠN˜5Ó!Ü�J‰Jó	
ˆô ×%Ò% m°SÓ9Ð9r%   rW   N)rX   rY   rZ   r[   r\   rA   r]   re   rj   rm   rp   rs   rw   rz   r~   r�   r„   rˆ   r^   rW   r%   r#   r`   r`   ~   sè   † ñò
ð ñ<ó ð<ð ñ?ó ð?ð ñ=ó ð=ð  ñ=ó ð=ð ñ
>ó ð
>ð ñ<ó ð<ð ñ=ó ð=ð$ ñ	=ó ð	=ð ñ
=ó ð
=ð ñ=ó ð=ð" ñ:ó ó:r%   r`   c              #   ó  #   • / n/ n/ n[        UR                  U5       H’  u  px[        U[        R                  5      (       a  UR
                  S;   a  Xxp©O9UR                  SS9n	[        X—5      n[        XX¸45      n
UR                  Xš45        UR                  U	5        UR                  U
5        M”     [        UR                  /UQ76 [        U5      4v •  U H!  u  pxU R                  R                  XU5        M#     g7f)zs
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)r5   r6   rP   r�   ÚnewtysÚnewargsÚcopiesr7   r8   ÚnewtyÚnewvalÚcopysigs               r#   Úmake_contiguousrŸ   !  sÛ   é € ð €FØ€GØ€FÜ�s—x‘x Ö&‰ˆÜ˜"œeŸk™k×*Ñ*¨b¯i©i¸4Ó.?Ø‘6à—G‘G 3�GÐ'ˆEÜ Ó*ˆGÜ °'¸6ÓBˆFØ�M‰M˜5˜/Ô*Ø�‰�eÔØ�‰�vÖñ 'ô �C—O‘OÐ
- fÒ
-¬u°W«~Ð
=Ò=Û‰ˆØ�‰×Ñ˜7¨Ö,ò ùs   ‚C>D c                 óŠ   ^• SmU4S jnU R                  X[        [        R                  [        R                  5      U45        g)z&
Check whether *n* fits in a C `int`.
iÿÿÿc                 ó(   >• U T:”  a  [        S5      eg )Nz$array size too large to fit in C int)ÚOverflowError)ÚnÚ_maxints    €r#   ÚimplÚcheck_c_int.<locals>.impl@  s   ø€ Øˆw‹;ÜÐ FÓGÐGð r%   N)Úcompile_internalr   r   ÚnonerJ   )r5   r6   r£   r¥   r¤   s       @r#   Úcheck_c_intr©   :  s9   ø€ ð €GõHð ×Ñ˜WÜ&¤u§z¡z´5·:±:Ó>ÀÀõFr%   c                 óä   • UR                  [        R                  " X5      SS9   U R                  U5      nUR	                  5         UR                  S5        SSS5        g! , (       d  f       g= f)zO
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©r5   r6   ÚresÚpyapis       r#   Úcheck_blas_returnr¶   H  sW   € ð
 
�‰œ×,Ò,¨WÓ:À5ˆÒ	Ià×&Ñ& wÓ/ˆØ×ÑÔØ×ÑÐ?Ô@÷	 
J×	IÖ	Iúó   ¥3A!Á!
A/c                 óä   • UR                  [        R                  " X5      SS9   U R                  U5      nUR	                  5         UR                  S5        SSS5        g! , (       d  f       g= f)zQ
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¹   T  sW   € ð
 
�‰œ×,Ò,¨WÓ:À5ˆÒ	Ià×&Ñ& wÓ/ˆØ×ÑÔØ×ÑÐAÔB÷	 
J×	IÖ	Iúr·   c                 ó<  • [         R                  " [         R                  " S5      [        [        [        [
        [
        [
        /5      n[        R                  " UR                  US5      n	[        U5      n
[         R                  " [        [        U
5      5      n[         R                  " [        [        U5      5      nUR                  X›X$UR                  U[
        5      UR                  U[
        5      UR                  U[
        5      45      n[        XU5        g)zI
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¶   )r5   r6   Ú	conjugater    r£   Úa_dataÚb_dataÚout_dataÚfntyÚfnr"   Úkind_valr´   s                r#   Ú
call_xxdotrÏ   `  sÊ   € ô
 �?Š?œ2Ÿ:š: b›>Ü#¤W¬fÜ%¤y´)ðó€Dô 
×	'Ò	'¨¯©¸¸mÓ	L€Bä˜Ó€DÜ�{Š{œ7¤C¨£IÓ.€HÜ—’œG¤S¨£^Ó4€Ià
�,‰,�r iØ#ŸO™O¨F´IÓ>Ø#ŸO™O¨F´IÓ>Ø#ŸO™O¨H´iÓ@ðBó C€Cô �g¨Õ,r%   c                 ót  • [         R                  " [         R                  " S5      [        [        [        [        [
        [
        [        [
        [
        [
        /
5      n[        R                  " UR                  US5      n	UR                  n
[        XU
S5      n[        XU
S5      nUR                  S:X  a
  Uu  pÞUS   nO	Uu  píUS   n[        U
5      n[         R                  " [        [        U5      5      n[         R                  " [        U(       a  [        S5      O
[        S	5      5      nUR                  U	UUXÞUR!                  U[
        5      UR!                  U[
        5      UUR!                  U[
        5      UR!                  U[
        5      UR!                  U[
        5      4
5      n[#        XU5        g
)zI
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¶   )r5   r6   Údo_transÚm_typeÚm_shapesÚm_dataÚv_datarË   rÌ   rÍ   r    ÚalphaÚbetaÚmr£   Úldar"   rÎ   Útransr´   s                       r#   Úcall_xxgemvrà   v  sO  € ô
 �?Š?œ2Ÿ:š: b›>Ü#¤WÜ"¤FÜ%¤y´&Ü%¤y´)ðó€Dô 
×	'Ò	'¨¯©¸¸nÓ	M€Bà�L‰L€EÜ˜w°¸Ó<€EÜ˜g°°sÓ;€Dà‡}�}˜ÓØ‰ˆØ�q‰k‰à‰ˆØ�q‰kˆä˜Ó€DÜ�{Š{œ7¤C¨£IÓ.€HÜ�KŠKœ®X¤ S¤¼3¸s»8Ó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ô �g¨Õ,r%   c                 óŠ  ^^^!^"• [         R                  " [         R                  " S5      [        [        [        [        [        [        [
        [
        [        [
        [        [
        [
        [        /5      n[        R                  " TR                  US5      nUu  pÞUu  nnUR                  n[        U TUS5      n[        U TUS5      n[         R                  " [        [        S5      5      m"[         R                  " [        [        S5      5      m!UU!UU"4S jnU" XVU5      u  nnnU" X#U5      u  nnnU" TXš5      u  nnn[        U5      n[         R                  " [        [        U5      5      nTR                  UUUUUXÞTR                  U[
        5      UUUUTR                  U[
        5      UU45      n [!        U TU 5        g)	zI
Call the BLAS matrix * matrix product function for the given arguments.
r   rS   rÒ   rÓ   rÕ   r£   c                 óž   >• U R                   TR                   :X  a  TOTU R                   S:X  a  US   OUS   TR                  U[        5      4$ )NrŒ   r   r   )rŽ   rÇ   rÀ   )r7   ÚshapesÚdatar6   ÚnotransÚout_typerß   s      €€€€r#   Úget_array_paramÚ$call_xxgemm.<locals>.get_array_paramµ  sI   ø€ ð —y‘y H§O¡OÓ3‰G¸àŸ™ cÓ)ˆF�1Š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¶   )#r5   r6   Ú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ú   ›  sw  û€ ô �?Š?œ2Ÿ:š: b›>Ü#Ü#¤WÜ"¤F¬FÜ%¤y´&Ü%¤v¬yÜ%¤vðó€Dô 
×	'Ò	'¨¯©¸¸nÓ	M€Bà�D€AØ�E€BˆØ�L‰L€EÜ˜w¨°¸Ó<€EÜ˜g w°°sÓ;€Dä�KŠKœ¤ S£Ó*€EÜ�kŠkœ'¤3 s£8Ó,€G÷
ð 
ñ *¨&¸FÓCÑ€FˆC�Ù)¨&¸FÓCÑ€FˆC�Ù$ X¨zÓD�N€A€sˆFä˜Ó€DÜ�{Š{œ7¤C¨£IÓ.€Hà
�,‰,�r˜H f¨f°a¸Ø#ŸO™O¨E´9Ó=¸vÀsØ" C¨¯©¸¼yÓ)IØ" Cð)ó *€Cô �g˜w¨Õ,r%   c                 óZ   • S nU R                  XX#5      n[        XUR                  U5      $ )z
np.dot(matrix, matrix)
c                 óü   • U R                   u  p#UR                   u  pEUS:X  a"  [        R                  " X%4U R                  5      $ [        R                  " X%4U R                  5      n[        R
                  " XU5      $ ©Nr   ©ÚshapeÚnpÚzerosr    ÚemptyÚdot)ÚaÚbrÝ   rð   rñ   r£   Úouts          r#   Údot_implÚdot_2_mm.<locals>.dot_implÑ  s]   € Ø�w‰w‰ˆØ—‘‰ˆØ�‹6Ü—8’8˜Q˜F A§G¡GÓ,Ð,Ü�hŠh˜�v˜qŸw™wÓ'ˆÜ�vŠv�a˜CÓ Ð r%   ©r§   r   r•   ©r5   r6   rP   r�   r  r´   s         r#   Údot_2_mmr  Í  ó.   € ò!ð ×
"Ñ
" 7°cÓ
@€CÜ˜G¨c¯o©o¸sÓCÐCr%   c                 óZ   • S nU R                  XX#5      n[        XUR                  U5      $ )z
np.dot(vector, matrix)
c                 óü   • U R                   u  nUR                   u  p4US:X  a"  [        R                  " U4U R                  5      $ [        R                  " U4U R                  5      n[        R
                  " XU5      $ rý   rþ   )r  r  rÝ   Ú_mr£   r  s         r#   r  Údot_2_vm.<locals>.dot_implá  s]   € Ø�W‰W‰ˆØ—‘‰ˆØ�‹6Ü—8’8˜Q˜E 1§7¡7Ó+Ð+Ü�hŠh˜�u˜aŸg™gÓ&ˆÜ�vŠv�a˜CÓ Ð r%   r	  r
  s         r#   Údot_2_vmr  Ý  r  r%   c                 óZ   • S nU R                  XX#5      n[        XUR                  U5      $ )z
np.dot(matrix, vector)
c                 óü   • U R                   u  p#UR                   u  nUS:X  a"  [        R                  " U4U R                  5      $ [        R                  " U4U R                  5      n[        R
                  " XU5      $ rý   rþ   )r  r  rÝ   r£   Ú_nr  s         r#   r  Údot_2_mv.<locals>.dot_implñ  s]   € Ø�w‰w‰ˆØ�g‰g‰ˆØ�‹6Ü—8’8˜Q˜E 1§7¡7Ó+Ð+Ü�hŠh˜�u˜aŸg™gÓ&ˆÜ�vŠv�a˜CÓ Ð r%   r	  r
  s         r#   Údot_2_mvr  í  r  r%   c           
      ó  • UR                   u  pVUR                  n[        U5      " XUS   5      n[        U5      " XUS   5      n	[        R                  " XR
                  5      u  n
S nU R                  X[        [        R                  /UR                   Q76 U5        [        XU
5        [        R                  " XR                  U5      5      n[        XXGX¨R                  U	R                  U5        UR                  U5      $ )z0
np.dot(vector, vector)
np.vdot(vector, vector)
r   r   c                 ó\   • U R                   u  nUR                   u  nX#:w  a  [        S5      eg )Nz;incompatible array sizes for np.dot(a, b) (vector * vector)©rÿ   Ú
ValueError)r  r  rÝ   r£   s       r#   Ú
check_argsÚdot_2_vv.<locals>.check_args  s4   € Ø�W‰W‰ˆØ�W‰W‰ˆØ‹6Üð 1ó 2ð 2ð r%   )r�   r•   r   r   Úunpack_tuplerÿ   r§   r   r   r¨   r©   Úalloca_onceÚget_value_typerÏ   rä   Úload)r5   r6   rP   r�   rÈ   ÚatyÚbtyr    r  r  r£   r  r  s                r#   Údot_2_vvr#  ý  sÑ   € ð
 �x‰x�H€CØ�O‰O€EÜ�3Œ˜¨$¨q©'Ó2€AÜ�3Œ˜¨$¨q©'Ó2€AÜ	×	Ò	˜g§w¡wÓ	/�B€Aò2ð ×Ñ˜WÜ&¤u§z¡zÐ=°C·H±HÒ=¸tôEä� !Ô$ä
×
Ò
˜g×'=Ñ'=¸eÓ'DÓ
E€CÜˆw °1·f±f¸a¿f¹fÀcÔJØ�<‰<˜ÓÐr%   c                 ó   • [        SX5      $ )z
np.dot(a, b)
znp.dot()©Ú
dot_2_impl©ÚleftÚrights     r#   Údot_2r*    s   € ô
 �j $Ó.Ð.r%   c                 ó   • [        SX5      $ )z
a @ b
z'@'r%  r'  s     r#   Úmatmul_2r,     s   € ô
 �e˜TÓ)Ð)r%   c                 ó6  ^ ^• [        U[        R                  5      (       ax  [        U[        R                  5      (       aX  [        U 4S j5       mUR                  S;  d  UR                  S;  a#  [
        R                  " T < SX4< 3[        5        U4S j$ g g )Nc                 ó   >^• UR                   UR                   4mU4S jnUR                  UR                  :w  a  [        ST-  5      eTS:X  a#  [        R                  " UR                  SS5      nOPTS:X  d  TS:X  a#  [        R                  " UR                  SS5      nO!TS	:X  a  UR                  nO[        S
T-  5      e[        XAU5      U4$ )Nc                 óF  >• [        5         [        XX#5       u  p#TS:X  a  [        XX#5      sS S S 5        $ TS:X  a  [        XX#5      sS S S 5        $ TS:X  a  [	        XX#5      sS S S 5        $ TS:X  a  [        XX#5      sS S S 5        $ [        S5      e! , (       d  f       g = f)N©é   r1  ©r1  r   ©r   r1  ©r   r   Úunreachable)r,   rŸ   r  r  r  r#  ÚAssertionError©r5   r6   rP   r�   Úndimss       €r#   Ú_dot2_codegenÚ0dot_2_impl.<locals>._impl.<locals>._dot2_codegen.  s›   ø€ Ü”ä$ W°sÔAÁ[ÀcØ “Ü'¨¸#ÓD÷ BÑAð  &›Ü'¨¸#ÓD÷	 BÑAð
  &›Ü'¨¸#ÓD÷ BÑAð  &›Ü'¨¸#ÓD÷ BÑAô -¨]Ó;Ð;÷ BÕAús"   ˜B¶BÁBÁ,BÂBÂ
B z)%s arguments must all have the same dtyper0  r1  rŒ   r2  r3  r   r4  z*%s: inputs must have compatible dimensions)Úndimr    r   r   r’   r   )Útypingcontextr(  r)  r9  r•   r8  Únames        @€r#   Ú_implÚdot_2_impl.<locals>._impl*  sÁ   ù€ à—Y‘Y §
¡
Ð+ˆEõ<ð �z‰z˜UŸ[™[Ó(Ü!Ø?À$ÑFóHð Hð ˜‹Ü#Ÿkšk¨$¯*©*°a¸Ó=‘Ø˜&“ E¨V£OÜ#Ÿkšk¨$¯*©*°a¸Ó=‘Ø˜&“Ø"Ÿj™j‘ä!ð $0Ø37ñ#8ó 9ð 9ä˜[°Ó6¸ÐEÐEr%   r‹   z+ is faster on contiguous arrays, called on c                 ó   >• T" X5      $ r2   rW   ©r(  r)  r>  s     €r#   Ú<lambda>Údot_2_impl.<locals>.<lambda>Q  ó
   ø€ ¡5¨Ô#5r%   ©r‘   r   r’   r	   rŽ   ÚwarningsÚwarnr   )r=  r(  r)  r>  s   `  @r#   r&  r&  (  s€   ù€ Ü�$œŸ™×$Ñ$¬°E¼5¿;¹;×)GÑ)GÜ	ô	Fó 
ð	FðB �;‰;˜dÓ" e§l¡l¸$Ó&>Ü�MŠMã˜4š-ð*Ü+BôDô 6Ð5ðQ *HÐ$r%   c                 ó(  ^• [        U [        R                  5      (       ar  [        U[        R                  5      (       aR  [        S 5       mU R                  S;  d  UR                  S;  a   [
        R                  " SX4< 3[        5        U4S j$ gg)z
np.vdot(a, b)
c                 óØ   • S nUR                   S:w  d  UR                   S:w  a  [        S5      eUR                  UR                  :w  a  [        S5      e[        UR                  X5      U4$ )Nc           	      ó~   • [        5         [        XX#5       u  p#[        XX#SS9sS S S 5        $ ! , (       d  f       g = f)NT)rÈ   )r,   rŸ   r#  )r5   r6   rP   r�   s       r#   ÚcodegenÚ$vdot.<locals>._impl.<locals>.codegen\  s/   € Ü”ä$ W°sÔAÙ#˜Ü# G°cÈ4ÑP÷ B×A×Aús   —.®
<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)  rK  s       r#   r>  Úvdot.<locals>._implZ  sc   € òQð �y‰y˜A‹~ §¡¨q£Ü!Ð"JÓKÐKà�z‰z˜UŸ[™[Ó(Ü!ØFóHð Hä˜TŸZ™Z¨Ó5°wÐ>Ð>r%   r‹   ú4np.vdot() is faster on contiguous arrays, called on c                 ó   >• T" X5      $ r2   rW   rA  s     €r#   rB  Úvdot.<locals>.<lambda>p  rD  r%   NrE  rA  s     @r#   ÚvdotrQ  T  s{   ø€ ô
 �$œŸ™×$Ñ$¬°E¼5¿;¹;×)GÑ)GÜ	ñ	?ó 
ð	?ð  �;‰;˜dÓ" e§l¡l¸$Ó&>Ü�M‹Mà’=ð#Ü$;ô=ô 6Ð5ð/ *HÐ$r%   c                 ó”   • U R                   u  nUR                   u  pEX4:w  a  [        S5      eUR                   U4:w  a  [        S5      eg )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_argsrS  s  sV   € Ø	
�‰�B€AØ�G‰G�E€BØƒwÜð :ó ;ð 	;à
‡y�y�Q�DÓÜð ?ó @ð 	@ð r%   c                 ó”   • U R                   u  p4UR                   u  nXT:w  a  [        S5      eUR                   U4:w  a  [        S5      eg )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_argsrU  ~  sV   € Ø�G‰G�E€AØ	
�‰�B€AØƒwÜð -ó .ð 	.à
‡y�y�Q�DÓÜð ?ó @ð 	@ð r%   c                 óÔ  • UR                   u  pEnXbR                  :X  d   eUR                  n[        U5      " XUS   5      n[        U5      " XUS   5      n	[        U5      " XUS   5      n
[        R
                  " XR                  5      n[        R
                  " XR                  5      n[        R
                  " XR                  5      nUR                  UR                  :  a<  UnUnUS   nUS   nUR                  S:H  nU	R                  UR                  nn[        nO;UnUnUS   nUS   nUR                  S:H  nUR                  U	R                  nn[        nU R                  UU[        [        R                  /UR                   Q76 U5        U H  n[!        XU5        M     U R#                  [        R$                  S5      nUR'                  SUU5      nUR'                  SUU5      nUR)                  UU5      nUR+                  USS9 u  nnU   [        R,                  " XR                  UR/                  U
R0                  U
R2                  5      S5        S	S	S	5        U   [5        XUXïUUU
R                  5        S	S	S	5        S	S	S	5        [7        XUR                  U
R9                  5       5      $ ! , (       d  f       N`= f! , (       d  f       NL= f! , (       d  f       NU= f)
z9
np.dot(vector, matrix, out)
np.dot(matrix, vector, out)
r   r   r1  rÔ   rŒ   ú==Fr«   N)r�   r•   r    r   r   r  rÿ   r;  rŽ   rä   rS  rU  r§   r   r   r¨   r©   Úget_constantrJ   Úicmp_signedÚor_Úif_elseÚmemsetÚmulÚitemsizeÚnitemsrà   r   Ú	_getvalue)r5   r6   rP   r�   ÚxtyÚytyÚouttyr    ÚxÚyr  rê   rí   rï   ÚmtyrØ   Úv_shaperÞ   rÖ   rÙ   rÚ   r  r8   ÚzeroÚ
both_emptyÚmatrix_emptyÚis_emptyr  Únonemptys                                r#   Údot_3_vmrm  ‰  sp  € ð
 —h‘h�O€CˆeØ—O‘OÓ#Ð#Ð#Ø�I‰I€Eä�3Œ˜¨$¨q©'Ó2€AÜ�3Œ˜¨$¨q©'Ó2€AÜ
�UÔ
˜G¨d°1©gÓ
6€CÜ×#Ò# G¯W©WÓ5€HÜ×#Ò# G¯W©WÓ5€HÜ×%Ò% g¯y©yÓ9€JØ
‡x�x�#—(‘(Óð ˆØˆØ˜1‘+ˆØ�q‰kˆØ—:‘: Ñ$ˆØŸ™ §¡�ˆÜ(‰
ð ˆØˆØ˜1‘+ˆØ�q‰kˆØ—:‘: Ñ$ˆØŸ™ §¡�ˆÜ(ˆ
à×Ñ˜W jÜ&¤u§z¡zÐ=°C·H±HÒ=¸tôEãˆÜ�G cÖ*ñ ð ×Ñ¤§
¡
¨AÓ.€DØ×$Ñ$ T¨7°DÓ9€JØ×&Ñ& t¨S°$Ó7€LØ�{‰{˜: |Ó4€HØ	�‰˜¨%ˆÑ	0Ñ4E°U¸HÚÜ�NŠN˜7§H¡HØ"Ÿ;™; s§|¡|°S·Z±ZÓ@À!ôE÷ ò Ü˜¨(°CÀ6Ø §¡ô*÷ ÷	 
1ô ˜W¨s¯©Ø Ÿ]™]›_ó.ð .÷ �Uú÷ �Xú÷	 
1Õ	0ús=   ÈKÈAJ7É
KÉ'KÊKÊ7
K	ËKË
K	ËKË
K'c                 óF	  • UR                   u  pEnXbR                  :X  d   eUR                  n[        U5      " XUS   5      n[        U5      " XUS   5      n	[        U5      " XUS   5      n
[        R
                  " XR                  5      n[        R
                  " XR                  5      n[        R
                  " XR                  5      nUu  pïUu  nnUR                  S:X  d   eS nU R                  UU[        [        R                  /UR                   Q76 U5        [        XU5        [        XU5        [        XU5        UR                  nU	R                  nU
R                  nU R                  [        R                  S5      nUR!                  SUU5      nUR!                  SUU5      nUR!                  SUU5      nUR#                  UUR#                  UU5      5      nUR%                  USS9 u  nnU   [        R&                  " XR                  UR)                  U
R*                  U
R,                  5      S5        S	S	S	5        U   U R                  [        R                  S5      nUR!                  SUU5      nUR!                  SUU5      nUR%                  U5       u  n n!U    UR%                  U5       u  n"n#U"   [/        XSUUUUU5        S	S	S	5        U#   UR                  UR                  :H  n$[1        XU$XKUUU5        S	S	S	5        S	S	S	5        S	S	S	5        U!   UR%                  U5       u  n%n&U%   UR                  UR                  :g  n$[1        XU$X\UUU5        S	S	S	5        U&   [3        XXKUX\UXmU5        S	S	S	5        S	S	S	5        S	S	S	5        S	S	S	5        S	S	S	5        S	S	S	5        [5        XUR                  U
R7                  5       5      $ ! , (       d  f       GNš= f! , (       d  f       GN= f! , (       d  f       N÷= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       NÐ= f! , (       d  f       NÅ= f! , (       d  f       NÎ= f! , (       d  f       N×= f! , (       d  f       Nà= f! , (       d  f       Né= f! , (       d  f       Nò= f)
z
np.dot(matrix, matrix, out)
r   r   r1  rŒ   c                 ó”   • U R                   u  p4UR                   u  pVXE:w  a  [        S5      eUR                   X64:w  a  [        S5      eg )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  Údot_3_mm.<locals>.check_argsÖ  sW   € Ø�w‰w‰ˆØ—‘‰ˆØ‹7Üð 1ó 2ð 2à�9‰9˜˜ÓÜð Có Dð Dð r%   rW  Fr«   N)r�   r•   r    r   r   r  rÿ   rŽ   r§   r   r   r¨   r©   rä   rX  rJ   rY  rZ  r[  r\  r]  r^  r_  rÏ   rà   rú   r   r`  )'r5   r6   rP   r�   ra  rb  rc  r    rd  re  r  rê   rí   rï   rÝ   rð   rñ   r£   r  rë   rî   rË   rh  ri  Úx_emptyÚy_emptyrk  r  rl  Ú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‘h�O€CˆeØ—O‘OÓ#Ð#Ð#Ø�I‰I€Eä�3Œ˜¨$¨q©'Ó2€AÜ�3Œ˜¨$¨q©'Ó2€AÜ
�UÔ
˜G¨d°1©gÓ
6€CÜ×#Ò# G¯W©WÓ5€HÜ×#Ò# G¯W©WÓ5€HÜ×%Ò% g¯y©yÓ9€JØ�D€AØ�E€Bˆð �<‰<˜3ÓÐÐòDð ×Ñ˜W jÜ&¤u§z¡zÐ=°C·H±HÒ=¸tôEô � !Ô$Ü� !Ô$Ü� !Ô$à�V‰V€FØ�V‰V€FØ�x‰x€Hð ×Ñ¤§
¡
¨AÓ.€DØ×$Ñ$ T¨1¨dÓ3€JØ×!Ñ! $¨¨4Ó0€GØ×!Ñ! $¨¨4Ó0€GØ�{‰{˜: w§{¡{°7¸GÓ'DÓE€HØ	�‰˜¨%ˆÑ	0Ñ4E°U¸HÚÜ�NŠN˜7§H¡HØ"Ÿ;™; s§|¡|°S·Z±ZÓ@À!ôE÷ ò ð ×&Ñ&¤u§z¡z°1Ó5ˆCØ!×-Ñ-¨d°A°sÓ;ˆKØ"×.Ñ.¨t°Q¸Ó<ˆLà—‘ Ô.±.°5¸%ÚØ Ÿ™¨Ô5¹¸#¸sÚ ä& w¸ÀØ'(¨&°&¸(ôD÷ !ò !à'*§z¡z°U·\±\Ñ'A˜HÜ'¨¸(Ø(+°v¸vÀxôQ÷ !÷ 6÷ ò Ø Ÿ™¨Ô5¹¸#¸sÚ à'*§z¡z°U·\±\Ñ'A˜HÜ'¨¸(Ø(+°v¸vÀxôQ÷ !ò
 !ä'¨Ø(+°vØ(+°vØ(-¸8ôE÷ !÷ 6÷ ÷ /÷ ÷	 
1ôL ˜W¨s¯©Ø Ÿ]™]›_ó.ð .÷K ŽUú÷ !žSú÷ !�Sú÷ 6Ö5ú÷ –Uú÷ !�Sú÷
 !�Sú÷ 6Õ5ú÷ •Uú÷ /Õ.ú÷ �Xú÷	 
1Õ	0ús  Ç3RÇ9AOÉ 
RÉ
ARÊ"Q0Ê(P	Ê:PË O%Ë
PË*O7ÌPÌP	Ì
Q0Ì Q	Ì2QÌ8*P,Í"
QÍ,P=Í>QÎQ	ÎQ0ÎRÎRÏ
O"	ÏRÏ%
O4Ï/PÏ7
PÐPÐ
PÐP	Ð
P)Ð$Q0Ð,
P:Ð6QÐ=
QÑQÑ
QÑQ	Ñ
Q-Ñ)Q0Ñ0
Q>Ñ:RÒ
R	ÒRÒ
R c                 óˆ  ^• [        U [        R                  5      (       a¢  [        U[        R                  5      (       a‚  [        U[        R                  5      (       ab  [        S 5       mU R                  S;  d   UR                  S;  d  UR                  S;  a   [
        R                  " SX4< 3[        5        U4S j$ ggg)z
np.dot(a, b, out)
c                 ó¢   • S nUR                   UR                   :w  d  UR                   UR                   :w  a  [        S5      e[        X1X#5      U4$ )Nc                 ó  • [        5         [        XX#5       u  nn[        S UR                  S S  5       5      nUS1:X  a  [	        XX#5      sS S S 5        $ USS1:X  a  [        XX#5      sS S S 5        $ [        S5      e! , (       d  f       g = f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr2   ©r;  )Ú.0rd  s     r#   Ú	<genexpr>Ú8dot_3.<locals>._impl.<locals>.codegen.<locals>.<genexpr>)  s   é € Ð=²¨1§¦²ùs   ‚r1  r   r5  )r,   rŸ   Úsetr�   r|  rm  r6  r7  s        r#   rK  Ú%dot_3.<locals>._impl.<locals>.codegen$  sŠ   € Ü”ä$ W°sÔAñ FLÀcØFJÜÑ=°·±¸¸!±Ó=Ó=�EØ  “|Ü'¨¸#ÓD÷	 BÑAð
  1 a &›Ü'¨¸#ÓD÷ BÑAô -¨]Ó;Ð;÷ BÕAús   —5A>ÁA>Á3A>Á>
Bz/np.dot() arguments must all have the same dtype)r    r   r   )r<  r(  r)  r  rK  s        r#   r>  Údot_3.<locals>._impl"  sN   € ò<ð �z‰z˜UŸ[™[Ó(¨D¯J©J¸#¿)¹)Ó,CÜ!ØEóGð Gô ˜S¨Ó3°WÐ<Ð<r%   r‹   rN  c                 ó   >• T" XU5      $ r2   rW   ©r(  r)  r  r>  s      €r#   rB  Údot_3.<locals>.<lambda><  s   ø€ ©¨d¸3Ô(?r%   NrE  r‰  s      @r#   Údot_3r‹    s¡   ø€ ô
 	�4œŸ™×%Ñ%¬*°U¼E¿K¹K×*HÑ*HÜ�sœEŸK™K×(Ñ(Ü	ñ	=ó 
ð	=ð& �;‰;˜dÓ" e§l¡l¸$Ó&>À#Ç*Á*ØóCä�M‹Mà’=ð#Ü$;ô=ô @Ð?ð7 )ð +IÐ%r%   Únumba_fatal_errorc                 óÎ   • [         R                  " U 5       HK  n[         R                  " UR                  5       5      (       a  M.  [         R                  R                  S5      e   g )Nz$Array must not contain infs or NaNs.)r   ÚnditerÚisfiniteÚitemÚlinalgÚLinAlgError)r  Úvs     r#   Ú_check_finite_matrixr”  E  sC   € ä�YŠY�qŽ\ˆÜ�{Š{˜1Ÿ6™6›8×$Ó$Ü—)‘)×'Ñ'Ø6ó8ð 8ò r%   c                 ó   • U(       a  SOSnX14n[        U [        R                  5      (       a  U R                  n [        U [        R                  5      (       d  SU-  n[        USS9eU R                  S:X  d  SU-  n[        USS9e[        U R                  [        R                  [        R                  45      (       d  SU-  n[        USS9eg )	Nú	np.linalgr   z&%s.%s() only supported for array typesF©Úhighlightingr1  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¢  M  s¸   € ö &‰[¨4€FØÐ €Fä�!”U—^‘^×$Ñ$Ø�F‰FˆÜ�aœŸ™×%Ñ%Ø6¸Ñ?ˆÜ˜#¨EÑ2Ð2Ø�6‰6�Q‹;Ø5¸Ñ>ˆÜ˜#¨EÑ2Ð2Ü�a—g‘g¤§¡¬U¯]©]Ð;×<Ñ<ð(Ø*0ñ1ˆä˜#¨EÑ2Ð2ð =r%   c                 óx   • US   R                   nUSS   H"  nUR                   U:w  d  M  SU -  n[        USS9e   g )Nr   r   zAnp.linalg.%s() only supports inputs that have homogeneous dtypes.Fr—  )r    r   )r!   r   Út0rÕ   r¡  s        r#   Ú_check_homogeneous_typesr¥  b  sB   € Ø	ˆq‰�‰€BØ�1�2‹YˆØ�7‰7�b�=ØUÐXaÑaˆCÜ˜c°Ñ6Ð6ò r%   c                  ó   • g r2   rW   rW   r%   r#   Ú_copy_to_fortran_orderr§  j  s   € Ør%   c                 óT   ^^• U R                   S:H  mU R                   S:H  mUU4S jnU$ )NrÔ   ÚAc                 óD  >• T(       a  [         R                  " U 5      nU$ T(       ab  U R                  R                  nU(       a,  [         R                  " U R                  5      R                  nU$ [         R
                  " U 5      n U$ [         R
                  " U 5      nU$ r2   )r   r“   ÚflagsÚf_contiguousÚTÚasfortranarray)r  ÚacpyÚflag_fÚA_layoutÚF_layouts      €€r#   r¥   Ú&ol_copy_to_fortran_order.<locals>.implt  s   ø€ Þä—7’7˜1“:ˆDð ˆö à—W‘W×)Ñ)ˆFÞô —w’w˜qŸs™s“|—~‘~�ð ˆô	 ×(Ò(¨Ó+‘ð ˆô ×$Ò$ QÓ'ˆDØˆr%   r�   )r  r¥   r±  r²  s     @@r#   Úol_copy_to_fortran_orderr´  n  s+   ù€ ð �x‰x˜3‰€HØ�x‰x˜3‰€Höð& €Kr%   c                 ó€   • U S:w  a8  U S:  a  [        5          eU S:”  a  [        R                  R                  S5      eg g )Nr   z(Matrix is singular to machine precision.)Úfatal_error_funcr   r‘  r’  ©Úrs    r#   Ú_inv_err_handlerr¹  Š  sF   € àˆAƒvØˆq‹5ÜÔØ�1Øˆq‹5Ü—)‘)×'Ñ'Ø:ó<ð <ð ð	 r%   c                 ó   • U S   $ )zFpass a list of variables to be preserved through dead code eliminationr   rW   ©r  s    r#   Ú_dummy_liveness_funcr¼  ”  s   € ð ˆQ‰4€Kr%   c                 ó  ^^^• [        5         [        U S5        [        5       R                  U R                  5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      mUUU4S jnU$ )NÚinvc                 óä  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      nUS:X  a  U$ [        R                  " U[        S9nT" TXUR                  XR                  5      n[        U5        T" TXR                  XR                  5      n[        U5        [        UR                  UR                  /5        U$ )Néÿÿÿÿéþÿÿÿú.Last 2 dimensions of the array must be square.r   ©r    )rÿ   r   r‘  r’  r”  r§  r  ÚF_INT_nptypeÚctypesr¹  r¼  Úsize)	r  r£   r¡  r¯  Úipivr¸  r"   re   Únumba_xxgetris	         €€€r#   Úinv_implÚinv_impl.<locals>.inv_impl¦  sÂ   ø€ Ø�G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆà�‹6ØˆKä�xŠx˜¤Ñ.ˆá˜$  d§k¡k°1·k±kÓBˆÜ˜Ôá˜$ §;¡;°·;±;Ó?ˆÜ˜Ôô 	˜dŸi™i¨¯©Ð3Ô4Øˆr%   )r0   r¢  r`   re   r    rj   rÄ   r$   )r  rÉ  r"   re   rÈ  s     @@@r#   rÉ  rÉ  š  s_   ú€ ä„Oä˜˜EÔ"ä“I×+Ñ+¨A¯G©GÓ4€Mä“I×.Ñ.¨q¯w©wÓ7€MäŒ}˜QŸW™W eÓ,Ó-€D÷ð2 €Or%   c                 óX   • U S:w  a$  U S:  a  [        5          eU S:”  a  [        S5      eg g )Nr   z&Internal algorithm failed to converge.)r¶  r  r·  s    r#   Ú%_handle_err_maybe_convergence_problemrÌ  Â  s8   € àˆAƒvØˆq‹5ÜÔØ�1Øˆq‹5ÜÐEÓFÐFð ð	 r%   c                 óD  • U(       a  SOSnX14n[        U [        R                  5      (       d  [        SU-  5      eU R                  S::  d  [        SU-  5      e[        U R
                  [        R                  [        R                  45      (       d  [        SU-  5      eg )Nr–  r   z'%s.%s() only supported for array types r1  ú+%s.%s() only supported on 1 and 2-D arrays r™  )r‘   r   r’   r   r;  r    rœ  r�  ©r  r!   rž  rŸ  r   s        r#   Ú_check_linalg_1_or_2d_matrixrÐ  Ì  s    € ö &‰[¨4€FØÐ €Fä�aœŸ™×%Ñ%ÜÐCØ"ñ#ó $ð 	$à�6‰6�Q‹;ÜÐGØ"ñ#ó $ð 	$ä�a—g‘g¤§¡¬U¯]©]Ð;×<Ñ<Üð 6Ø8>ñ?ó @ð 	@ð =r%   c                 óø   ^^^• [        5         [        U S5        [        5       R                  U R                  5      m[        [        U R                  S5      5      m[        S5      m[        S5      nUUU4S jnU$ )NÚcholeskyÚUÚLc                 ó˜  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      eU R	                  5       nUS:X  a  U$ T" TTXR
                  U5      nUS:w  a7  US:  a  [        5          eUS:”  a  [        R                  R                  S5      e[        U5       H  nSUS U2U4'   M     U$ )NrÀ  rÁ  rÂ  r   z Matrix is not positive definite.)rÿ   r   r‘  r’  r“   rÅ  r¶  Úrange)	r  r£   r¡  r  r¸  ÚcolÚUPr"   rw   s	         €€€r#   Úcho_implÚcho_impl.<locals>.cho_implê  sÉ   ø€ Ø�G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ð �f‰f‹hˆà�‹6ØˆJñ ˜$  A§z¡z°1Ó5ˆØ�‹6Ø�1‹uÜ Ô"Ø�qØ�1‹uÜ—i‘i×+Ñ+Ø6ó8ð 8ô ˜–8ˆCØˆC����c�	‹Nñ àˆ
r%   )r0   r¢  r`   rw   r    rÄ   r$   )r  ÚLOrÙ  rØ  r"   rw   s      @@@r#   rÙ  rÙ  Þ  s[   ú€ ä„Oä˜˜JÔ'ä“I×+Ñ+¨A¯G©GÓ4€MäŒ}˜QŸW™W jÓ1Ó2€DÜ	ˆS‹€BÜ	ˆS‹€B÷ð< €Or%   c                 óÀ  ^^^^^• [        5         [        U S5        [        5       R                  U R                  5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      m[        S5      m[        S5      mUUUU4S jnUUUU4S jn[        U R                  [        R                  R                  5      (       a  U$ U$ )NÚeigÚNÚVc                 óf  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      nSnUn[        R                  " XR                  S9n[        R                  " XR                  S9n[        R                  " X4U R                  S9n[        R                  " X4U R                  S9n	US:X  a  XiR                  4$ T" TTTUUR                  UUR                  UR                  UR                  UU	R                  U5      n
[        U
5        [        R                  " U5      (       a  [        S5      e[        UR                  UR                  U	R                  UR                  UR                  /5        XiR                  4$ )z'
eig() implementation for real arrays.
rÀ  rÁ  rÂ  r   rÃ  r   z.eig() argument must not cause a domain change.)rÿ   r   r‘  r’  r”  r§  r  r    r­  rÅ  rÌ  Úanyr  r¼  rÆ  ©r  r£   r¡  r¯  ÚldvlÚldvrÚwrÚwiÚvlÚvrr¸  ÚJOBVLÚJOBVRr"   rm   s              €€€€r#   Úreal_eig_implÚeig_impl.<locals>.real_eig_impl  s\  ø€ ð �G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆàˆØˆÜ�XŠX�aŸw™wÑ'ˆÜ�XŠX�aŸw™wÑ'ˆÜ�XŠX�q�i q§w¡wÑ/ˆÜ�XŠX�q�i q§w¡wÑ/ˆà�‹6ØŸ™�:Ðá˜4Ø!Ø!ØØ ŸK™KØØŸI™IØŸI™IØŸI™IØ ØŸI™IØ ó"ˆô 	.¨aÔ0ô �6Š6�"�:‰:ÜØ@óBð Bô
 	˜dŸi™i¨¯©°"·'±'¸2¿7¹7ÀBÇGÁGÐLÔMØ—D‘DˆzÐr%   c                 ó²  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      nSnUn[        R                  " XR                  S9n[        R                  " X4U R                  S9n[        R                  " X4U R                  S9nUS:X  a  XhR                  4$ T" TT
TUUR                  UUR                  UR                  UUR                  U5      n	[        U	5        [        UR                  UR                  UR                  UR                  /5        XhR                  4$ )z*
eig() implementation for complex arrays.
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ä  Úwrç  rè  r¸  ré  rê  r"   rp   s             €€€€r#   Úcmplx_eig_implÚ eig_impl.<locals>.cmplx_eig_implP  s  ø€ ð �G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆàˆØˆÜ�HŠH�QŸg™gÑ&ˆÜ�XŠX�q�i q§w¡wÑ/ˆÜ�XŠX�q�i q§w¡wÑ/ˆà�‹6Ø—t‘t�9Ðá˜4Ø!Ø!ØØ ŸK™KØØŸH™HØŸI™IØ ØŸI™IØ ó
"ˆô 	.¨aÔ0ô 	˜dŸi™i¨¯©°"·'±'¸1¿6¹6ÐBÔCØ—4‘4ˆyÐr%   ©r0   r¢  r`   rm   r    rp   rÄ   r$   r‘   r   Úscalarsr�  )r  rë  rð  ré  rê  r"   rp   rm   s      @@@@@r#   Úeig_implrô  
  s¤   ü€ ä„Oä˜˜EÔ"ä“Y×-Ñ-¨a¯g©gÓ6€NÜ“Y×-Ñ-¨a¯g©gÓ6€NäŒ}˜QŸW™W eÓ,Ó-€Dä�‹H€EÜ�‹H€E÷6ð 6÷p&ð &ôP �!—'‘'œ5Ÿ=™=×0Ñ0×1Ñ1ØÐàÐr%   c                 óÀ  ^^^^^• [        5         [        U S5        [        5       R                  U R                  5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      m[        S5      m[        S5      mUUUU4S jnUUUU4S jn[        U R                  [        R                  R                  5      (       a  U$ U$ )NÚeigvalsrÞ  c                 ó6  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      nSnSn[        R                  " XR                  S9nUS:X  a  U$ [        R                  " XR                  S9n[        R                  " SU R                  S9n[        R                  " SU R                  S9n	T" TTTUUR                  UUR                  UR                  UR                  UU	R                  U5      n
[        U
5        [        R                  " U5      (       a  [        S5      e[        UR                  UR                  U	R                  UR                  UR                  /5        U$ )z+
eigvals() implementation for real arrays.
rÀ  rÁ  rÂ  r   rÃ  r   z2eigvals() argument must not cause a domain change.)rÿ   r   r‘  r’  r”  r§  r  r    rÅ  rÌ  rá  r  r¼  rÆ  râ  s              €€€€r#   Úreal_eigvals_implÚ'eigvals_impl.<locals>.real_eigvals_impl‹  sL  ø€ ð �G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆàˆØˆÜ�XŠX�aŸw™wÑ'ˆà�‹6ØˆIä�XŠX�aŸw™wÑ'ˆô �XŠX�q §¡Ñ)ˆÜ�XŠX�q §¡Ñ)ˆá˜4Ø!Ø!ØØ ŸK™KØØŸI™IØŸI™IØŸI™IØ ØŸI™IØ ó"ˆô 	.¨aÔ0ô �6Š6�"�:‰:ÜØDóFð Fô
 	˜dŸi™i¨¯©°"·'±'¸2¿7¹7ÀBÇGÁGÐLÔMØˆ	r%   c                 ó‚  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      nSnSn[        R                  " XR                  S9nUS:X  a  U$ [        R                  " SU R                  S9n[        R                  " SU R                  S9nT" TT
TUUR                  UUR                  UR                  UUR                  U5      n	[        U	5        [        UR                  UR                  UR                  UR                  /5        U$ )z.
eigvals() implementation for complex arrays.
rÀ  rÁ  rÂ  r   rÃ  r   )rÿ   r   r‘  r’  r”  r§  r  r    rÅ  rÌ  r¼  rÆ  rî  s             €€€€r#   Úcmplx_eigvals_implÚ(eigvals_impl.<locals>.cmplx_eigvals_implÆ  s
  ø€ ð �G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆàˆØˆÜ�HŠH�QŸg™gÑ&ˆà�‹6ØˆHä�XŠX�q §¡Ñ)ˆÜ�XŠX�q §¡Ñ)ˆá˜4Ø!Ø!ØØ ŸK™KØØŸH™HØŸI™IØ ØŸI™IØ ó
"ˆô 	.¨aÔ0ô 	˜dŸi™i¨¯©°"·'±'¸1¿6¹6ÐBÔCØˆr%   rò  )r  rø  rû  ré  rê  r"   rp   rm   s      @@@@@r#   Úeigvals_implrý  }  s¤   ü€ ä„Oä˜˜IÔ&ä“Y×-Ñ-¨a¯g©gÓ6€NÜ“Y×-Ñ-¨a¯g©gÓ6€NäŒ}˜QŸW™W iÓ0Ó1€Dä�‹H€EÜ�‹H€E÷9ð 9÷v'ð 'ôR �!—'‘'œ5Ÿ=™=×0Ñ0×1Ñ1Ø!Ð!à Ð r%   c                 ón  ^^^^^• [        5         [        U S5        [        U R                  SU R                  5      n[        R
                  " U5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      m[        S5      m[        S5      mUUUUU4S jnU$ )NÚeighrD   rß  rÔ  c           	      ó”  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      n[        R                  " UT
S9nUS:X  a  XC4$ T	" TTTUUR                  UUR                  5      n[        U5        [        UR                  UR                  /5        XC4$ ©NrÀ  rÁ  rÂ  rÃ  r   ©rÿ   r   r‘  r’  r”  r§  r  rÅ  rÌ  r¼  rÆ  ©r  r£   r¡  r¯  rï  r¸  ÚJOBZÚUPLOr"   rs   Úw_dtypes         €€€€€r#   Ú	eigh_implÚeigh_impl.<locals>.eigh_impl  sº   ø€ Ø�G‰G�B‰Kˆà�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆä�HŠH�Q˜gÑ&ˆà�‹6Ø�9Ðá˜DØ Ø ØØ ŸK™KØØŸH™Hóˆô 	.¨aÔ0ô 	˜dŸi™i¨¯©Ð0Ô1ØˆyÐr%   ©
r0   r¢  rG   r    Ú
np_supportÚas_dtyper`   rs   rÄ   r$   )r  Úw_typer  r  r  r"   rs   r  s      @@@@@r#   r  r  ô  sŠ   ü€ ä„Oä˜˜FÔ#ô �Q—W‘WÐ0°!·'±'Ó:€FÜ×!Ò! &Ó)€Gä“i×/Ñ/°·±Ó8€OäŒ}˜QŸW™W fÓ-Ó.€Däˆs‹8€DÜˆs‹8€D÷ñ ð< Ðr%   c                 ón  ^^^^^• [        5         [        U S5        [        U R                  SU R                  5      n[        R
                  " U5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      m[        S5      m[        S5      mUUUUU4S jnU$ )NÚeigvalshrD   rÞ  rÔ  c           	      ó�  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      e[	        U 5        [        U 5      n[        R                  " UT
S9nUS:X  a  U$ T	" TTTUUR                  UUR                  5      n[        U5        [        UR                  UR                  /5        U$ r  r  r  s         €€€€€r#   Úeigvalsh_implÚ$eigvalsh_impl.<locals>.eigvalsh_impl6  s´   ø€ Ø�G‰G�B‰Kˆà�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,ä˜QÔä% aÓ(ˆä�HŠH�Q˜gÑ&ˆà�‹6ØˆHá˜DØ Ø ØØ ŸK™KØØŸH™Hóˆô 	.¨aÔ0ô 	˜dŸi™i¨¯©Ð0Ô1Øˆr%   r	  )r  r  r  r  r  r"   rs   r  s      @@@@@r#   r  r  %  sŠ   ü€ ä„Oä˜˜JÔ'ô �Q—W‘WÐ0°!·'±'Ó:€FÜ×!Ò! &Ó)€Gä“i×/Ñ/°·±Ó8€OäŒ}˜QŸW™W jÓ1Ó2€Däˆs‹8€DÜˆs‹8€D÷ñ ð< Ðr%   c                 ór  ^^^^^• [        5         [        U S5        [        U R                  SU R                  5      n[        R
                  " U5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      m[        S5      m[        S5      mSUUUUU4S jjnU$ )NÚsvdrD   r©  ÚSc                 óÖ  >• U R                   S   nU R                   S   nUS:X  d  US:X  a  [        R                  R                  S5      e[	        U 5        [        U 5      nUn[        X25      nU(       a  TnUnUn	OTnUnUn	[        R                  " X…4U R                  S9n
[        R                  " UTS9n[        R                  " X)4U R                  S9nT" TUUUUR                  UUR                  U
R                  UUR                  U	5      n[        U5        [        UR                  UR                  U
R                  UR                  /5        U
R                  X¼R                  4$ )NrÀ  rÁ  r   úArrays cannot be emptyrÃ  )rÿ   r   r‘  r’  r”  r§  Úminr  r    rÅ  rÌ  r¼  rÆ  r­  )r  Úfull_matricesr£   rÝ   r¯  ÚlduÚminmnr  ÚucolÚldvtÚur   Úvtr¸  ÚJOBZ_AÚJOBZ_Sr"   rz   Ús_dtypes                 €€€€€r#   Úsvd_implÚsvd_impl.<locals>.svd_implg  s7  ø€ Ø�G‰G�B‰KˆØ�G‰G�B‰Kˆà�‹6�Q˜!“VÜ—)‘)×'Ñ'Ð(@ÓAÐAä˜QÔä% aÓ(ˆàˆÜ�A“	ˆæØˆDØˆDØ‰DàˆDØˆDØˆDä�HŠH�d�[¨¯©Ñ0ˆÜ�HŠH�U 'Ñ*ˆÜ�XŠX�q�i q§w¡wÑ/ˆáØØØØØ�K‰KØØ�H‰HØ�H‰HØØ�I‰IØó
ˆô 	.¨aÔ0ô 	˜dŸi™i¨¯©°!·&±&¸!¿&¹&ÐAÔBØ—‘�QŸ™ˆ~Ðr%   ©r   )
r0   r¢  rG   r    r
  r  r`   rz   rÄ   r$   )	r  r  Ús_typer"  r  r   r"   rz   r!  s	       @@@@@r#   r"  r"  V  sŠ   ü€ ä„Oä˜˜EÔ"ô �Q—W‘WÐ0°!·'±'Ó:€FÜ×!Ò! &Ó)€Gä“Y×-Ñ-¨a¯g©gÓ6€NäŒ}˜QŸW™W eÓ,Ó-€Dä�‹X€FÜ�‹X€F÷,ó ,ð\ €Or%   c                 ó  ^^^• [        5         [        U S5        [        5       R                  U R                  5      m[        5       R                  U R                  5      m[        [        U R                  S5      5      mUUU4S jnU$ )NÚqrc           	      óF  >• U R                   S   nU R                   S   nUS:X  d  US:X  a  [        R                  R                  S5      e[	        U 5        [        U 5      nUn[        X!5      n[        R                  " XPR                  S9nT" TUUUR                  UUR                  5      nUS:  a  [        5          e[        R                  " X4U R                  S9R                  n[        U5       H"  n	[        U	S-   5       H  n
X:U	4   XŠU	4'   M     M$     [        XQ5       H  n	[        U5       H  n
X:U	4   XŠU	4'   M     M!     T" TUUUUR                  UUR                  5      n[        U5        [        UR                   UR                   /5        US S 2S U24   U4$ )NrÀ  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Ý   ÚqrÞ   r  ÚtauÚretr¸  ÚiÚjr"   r~   r�   s              €€€r#   Úqr_implÚqr_impl.<locals>.qr_impl©  s�  ø€ Ø�G‰G�B‰KˆØ�G‰G�B‰Kˆà�‹6�Q˜!“VÜ—)‘)×'Ñ'Ð(@ÓAÐAä˜QÔô # 1Ó%ˆàˆä�A“	ˆÜ�hŠh˜§g¡gÑ.ˆáØØØØ�H‰HØØ�J‰Jó
ˆð �‹7ÜÔØ�1ô �HŠH�a�Z q§w¡wÑ/×1Ñ1ˆô �u–ˆAÜ˜1˜q™5–\�Ø˜q˜D™'��Q�$“ó "ñ ô
 �u–ˆAÜ˜5–\�Ø˜q˜D™'��Q�$“ó "ñ !ñ ØØØØØ�H‰HØØ�J‰Jó
ˆô 	.¨cÔ2ô 	˜cŸh™h¨¯©Ð/Ô0Ø’!�V�e�V�)‘˜aÐ Ð r%   )r0   r¢  r`   r~   r    r�   rÄ   r$   )r  r.  r"   r~   r�   s     @@@r#   r.  r.  ˜  sb   ú€ ä„Oä˜˜DÔ!ô “Y×-Ñ-¨a¯g©gÓ6€NÜ“Y×-Ñ-¨a¯g©gÓ6€NäŒ}˜QŸW™W dÓ+Ó,€D÷7!ðr €Nr%   c                 ó   • [         e)z3
Correctly copy 'b' into the 'bcpy' scratch space.
©ÚNotImplementedError©Úbcpyr  Únrhss      r#   Ú_system_copy_in_br6  é  ó
   € ô Ðr%   c                 ó6   • UR                   S:X  a  S nU$ S nU$ )Nr   c                 ó.   • XS UR                   S   2S4'   g )NrÀ  r   ©rÿ   r3  s      r#   Ú	oneD_implÚ)_system_copy_in_b_impl.<locals>.oneD_impló  s   € Ø$%��!—'‘'˜"‘+�˜q�Ò!r%   c                 ó2   • XS UR                   S   2S U24'   g )NrÁ  r:  r3  s      r#   Ú	twoD_implÚ)_system_copy_in_b_impl.<locals>.twoD_impl÷  s   € Ø()��!—'‘'˜"‘+�˜u ˜uÐ$Ò%r%   r�  )r4  r  r5  r;  r>  s        r#   Ú_system_copy_in_b_implr@  ð  s#   € à‡v�v�ƒ{ò	&àÐò	*àÐr%   c                 ó   • [         e)zC
Compute the number of right hand sides in the system of equations
r1  ©r  s    r#   Ú_system_compute_nrhsrC  ü  r7  r%   c                 ó6   • U R                   S:X  a  S nU$ S nU$ )Nr   c                 ó   • g©Nr   rW   rB  s    r#   r;  Ú,_system_compute_nrhs_impl.<locals>.oneD_impl  s   € Ør%   c                 ó    • U R                   S   $ )NrÀ  r:  rB  s    r#   r>  Ú,_system_compute_nrhs_impl.<locals>.twoD_impl
  s   € Ø—7‘7˜2‘;Ðr%   r�  )r  r;  r>  s      r#   Ú_system_compute_nrhs_implrJ    s#   € à‡v�v�ƒ{ò	àÐò	àÐr%   c                 ó   • [         e)z<
Check that AX=B style system input is dimensionally valid.
r1  ©r  r  s     r#   Ú!_system_check_dimensionally_validrM    r7  r%   c                 ó:   • UR                   nUS:X  a  S nU$ S nU$ )Nr   c                 óˆ   • U R                   S   nUR                   S   nX#:w  a  [        R                  R                  S5      eg )NrÁ  rÀ  ú<Incompatible array sizes, system is not dimensionally valid.©rÿ   r   r‘  r’  ©r  r  ÚamÚbms       r#   r;  Ú9_system_check_dimensionally_valid_impl.<locals>.oneD_impl  óB   € Ø—‘˜‘ˆBØ—‘˜‘ˆBØ‹xÜ—i‘i×+Ñ+ØRóTð Tð r%   c                 óˆ   • U R                   S   nUR                   S   nX#:w  a  [        R                  R                  S5      eg )NrÁ  rP  rQ  rR  s       r#   r>  Ú9_system_check_dimensionally_valid_impl.<locals>.twoD_impl"  rV  r%   r�  ©r  r  r;  r;  r>  s        r#   Ú&_system_check_dimensionally_valid_implrZ    s.   € à�6‰6€DØˆqƒyò	Tð Ðò	Tð Ðr%   c                 ó   • [         e)z2
Check that AX=B style system input is not empty.
r1  rL  s     r#   Ú_system_check_non_emptyr\  +  r7  r%   c                 ó:   • UR                   nUS:X  a  S nU$ S nU$ )Nr   c                 óÀ   • U R                   S   nU R                   S   nUR                   S   nUS:X  d  US:X  d  US:X  a  [        R                  R                  S5      eg ©NrÁ  rÀ  r   r  rQ  )r  r  rS  ÚanrT  s        r#   r;  Ú/_system_check_non_empty_impl.<locals>.oneD_impl6  sW   € Ø—‘˜‘ˆBØ—‘˜‘ˆBØ—‘˜‘ˆBØ�Q‹w˜" ›' R¨1£WÜ—i‘i×+Ñ+Ð,DÓEÐEð &-r%   c                 óê   • U R                   S   nU R                   S   nUR                   S   nUR                   S   nUS:X  d  US:X  d  US:X  d  US:X  a  [        R                  R                  S5      eg r_  rQ  )r  r  rS  r`  rT  Úbns         r#   r>  Ú/_system_check_non_empty_impl.<locals>.twoD_impl>  sj   € Ø—‘˜‘ˆBØ—‘˜‘ˆBØ—‘˜‘ˆBØ—‘˜‘ˆBØ�Q‹w˜" ›' R¨1£W°°a³Ü—i‘i×+Ñ+Ð,DÓEÐEð 18r%   r�  rY  s        r#   Ú_system_check_non_empty_implre  2  s.   € à�6‰6€DØˆqƒyò	Fð Ðò	Fð Ðr%   c                 ó   • [         e)z2
Compute the residual from the 'b' scratch space.
r1  )r  r£   r5  s      r#   Ú_lstsq_residualrg  H  r7  r%   c                 óN  ^• U R                   nU R                  n[        R                  " [	        USU5      5      mUS:X  a/  [        U[        R                  5      (       a  U4S jnU$ U4S jnU$ US:X  d   e[        U[        R                  5      (       a  U4S jnU$ U4S jnU$ )NrD   r   c                 óž   >• [         R                  " STS9n[         R                  " [         R                  " XS 2S4   5      S-  5      US'   U$ ©Nr$  rÃ  r   r1  )r   r  ÚsumÚabs©r  r£   r5  r´   Ú
real_dtypes       €r#   Ú
cmplx_implÚ(_lstsq_residual_impl.<locals>.cmplx_implW  s@   ø€ Ü—h’h˜t¨:Ñ6�ÜŸš¤§¢ q©¨Q¨¡xÓ 0°!Ñ 3Ó4��A‘Ø�
r%   c                 óv   >• [         R                  " STS9n[         R                  " XS 2S4   S-  5      US'   U$ rj  )r   r  rk  rm  s       €r#   Ú	real_implÚ'_lstsq_residual_impl.<locals>.real_impl]  s6   ø€ Ü—h’h˜t¨:Ñ6�ÜŸš ¡" a %¡¨!¡Ó,��A‘Ø�
r%   r1  c                 óÀ   >• [         R                  " UTS9n[        U5       H8  n[         R                  " [         R                  " XS 2U4   5      S-  5      X4'   M:     U$ ©NrÃ  r1  )r   r  rÖ  rk  rl  ©r  r£   r5  r´   rð   rn  s        €r#   ro  rp  e  sL   ø€ Ü—h’h ¨ZÑ8�Ü˜tž�AÜŸVšV¤B§F¢F¨1©R°¨U©8Ó$4°aÑ$7Ó8�C“Fñ %à�
r%   c                 ó˜   >• [         R                  " UTS9n[        U5       H$  n[         R                  " XS 2U4   S-  5      X4'   M&     U$ ru  )r   r  rÖ  rk  rv  s        €r#   rr  rs  l  sB   ø€ Ü—h’h ¨ZÑ8�Ü˜tž�AÜŸVšV A¡b¨! e¡H¨a¡KÓ0�C“Fñ %à�
r%   )r;  r    r
  r  rG   r‘   r   r�  )r  r£   r5  r;  r    ro  rr  rn  s          @r#   Ú_lstsq_residual_implrx  O  s˜   ø€ à�6‰6€DØ�G‰G€EÜ×$Ò$¤W¨UÐ4FÈÓ%NÓO€JàˆqƒyÜ�eœeŸm™m×-Ñ-õð Ðõð Ðà�q‹yÐˆyÜ�eœeŸm™m×-Ñ-õð
 Ðõð
 Ðr%   c                 ó   • [         e)z~
Extract 'x' (the lstsq solution) from the 'bcpy' scratch space.
Note 'b' is only used to check the system input dimension...
r1  ©r  r4  r£   s      r#   Ú_lstsq_solutionr{  t  ó
   € ô
 Ðr%   c                 ó6   • U R                   S:X  a  S nU$ S nU$ )Nr   c                 ó<   • UR                   R                  5       S U $ r2   ©r­  Úravelrz  s      r#   r;  Ú'_lstsq_solution_impl.<locals>.oneD_impl  s   € Ø—6‘6—<‘<“> " 1Ð%Ð%r%   c                 ó4   • US U2S S 24   R                  5       $ r2   ©r“   rz  s      r#   r>  Ú'_lstsq_solution_impl.<locals>.twoD_implƒ  s   € Ø˜˜˜šA˜‘;×#Ñ#Ó%Ð%r%   r�  )r  r4  r£   r;  r>  s        r#   Ú_lstsq_solution_implr…  |  s#   € à‡v�v�ƒ{ò	&àÐò	&àÐr%   c                 óŽ  ^^^^	• [        5         [        U S5        [        US5        [        SX5        [        R
                  " U R                  5      mU R                  n[        USU5      n[        R
                  " U5      m	[        5       R                  U R                  5      m[        [        US5      5      mSUUUU	4S jjnU$ )NÚlstsqrD   c                 ó8  >• U R                   S   nU R                   S   n[        U5      n[        U 5        [        U5        [        X5        [	        X5        [        XC5      n[        XC5      n[        U 5      n[        R                  " XW4TS9R                  n	[        X‘U5        [        R                  " UTS9n
[        R                  " S[        R                  S9nT" TUUUUR                  UU	R                  UU
R                  UUR                  5      n[        U5        US   nXÓ:  d  XC::  a  [        R                  " STS9nO[        X“U5      n[!        XU5      n[#        UR$                  U	R$                  U
R$                  UR$                  /5        XþXÚS U 4$ )NrÀ  rÁ  rÃ  r   r   )rÿ   rC  r”  r\  rM  r  Úmaxr§  r   r  r­  r6  Úint32rÅ  rÌ  rg  r{  r¼  rÆ  )r  r  Úrcondr£   rÝ   r5  r  Úmaxmnr¯  r4  r   Úrank_ptrr¸  Úrankr´   rd  r"   Únp_dtr„   rn  s                   €€€€r#   Ú
lstsq_implÚlstsq_impl.<locals>.lstsq_impl¥  sp  ø€ Ø�G‰G�B‰KˆØ�G‰G�B‰KˆÜ# AÓ&ˆô 	˜QÔÜ˜QÔô 	  Ô%ô 	*¨!Ô/ä�A“	ˆÜ�A“	ˆô & aÓ(ˆô �xŠx˜˜¨UÑ3×5Ñ5ˆä˜$ 4Ô(ô �HŠH�U *Ñ-ˆÜ—8’8˜A¤R§X¡XÑ.ˆáØØØØØ�K‰KØØ�K‰KØØ�H‰HØØ�O‰Oó
ˆô 	.¨aÔ0ð ˜‰{ˆð ‹8�q“vÜ—(’(˜A jÑ1‰Cô " $¨4Ó0ˆCô ˜A QÓ'ˆô 	˜dŸi™i¨¯©°A·F±F¸H¿M¹MÐJÔKØ˜  ˜iÐ(Ð(r%   ©g      ð¿)r0   r¢  rÐ  r¥  r
  r  r    rG   r`   r„   rÄ   r$   )
r  r  r‹  Únb_dtÚr_typer�  r"   r�  r„   rn  s
         @@@@r#   r�  r�  ˆ  s¢   û€ ä„Oä˜˜GÔ$ô !  GÔ,ä˜W aÔ+ä×Ò §¡Ó(€EØ�G‰G€Eô �UÐ.°Ó6€FÜ×$Ò$ VÓ,€Jô “Y×-Ñ-¨a¯g©gÓ6€NäŒ}˜U GÓ,Ó-€D÷=)ò =)ð~ Ðr%   c                 ó   • [         e)zx
Extract 'x' (the solution) from the 'bcpy' scratch space.
Note 'b' is only used to check the system input dimension...
r1  ©r  r4  s     r#   Ú_solve_compute_returnr—  ç  r|  r%   c                 ó6   • U R                   S:X  a  S nU$ S nU$ )Nr   c                 ó6   • UR                   R                  5       $ r2   r  r–  s     r#   r;  Ú-_solve_compute_return_impl.<locals>.oneD_implò  s   € Ø—6‘6—<‘<“>Ð!r%   c                 ó   • U$ r2   rW   r–  s     r#   r>  Ú-_solve_compute_return_impl.<locals>.twoD_implö  s   € ØˆKr%   r�  )r  r4  r;  r>  s       r#   Ú_solve_compute_return_implr�  ï  s#   € à‡v�v�ƒ{ò	"àÐò	àÐr%   c                 ó@  ^^^• [        5         [        U S5        [        US5        [        SX5        [        R
                  " U R                  5      mU R                  n[        5       R                  U R                  5      m[        [        US5      5      mUUU4S jnU$ )NÚsolvec           
      ó  >• U R                   S   n[        U5      n[        U 5        [        U5        [        X5        [	        U 5      n[
        R                  " X24T	S9R                  nUS:X  a  [        X5      $ [        XQU5        [
        R                  " U[        S9nT
" TUUUR                  UUR                  UR                  U5      n[        U5        [        UR                  UR                  UR                  /5        [        X5      $ )NrÀ  rÃ  r   )rÿ   rC  r”  rM  r§  r   r  r­  r—  r6  rÄ  rÅ  r¹  r¼  rÆ  )r  r  r£   r5  r¯  r4  rÇ  r¸  r"   r�  rˆ   s           €€€r#   Ú
solve_implÚsolve_impl.<locals>.solve_impl  sì   ø€ Ø�G‰G�B‰KˆÜ# AÓ&ˆô 	˜QÔÜ˜QÔô 	*¨!Ô/ô & aÓ(ˆô �xŠx˜˜	¨Ñ/×1Ñ1ˆØ�‹6Ü(¨Ó1Ð1ô 	˜$ 4Ô(ô �xŠx˜¤Ñ.ˆáØØØØ�K‰KØØ�K‰KØ�K‰KØó	
ˆô 	˜Ôô 	˜dŸi™i¨¯©°D·I±IÐ>Ô?Ü$ QÓ-Ð-r%   )r0   r¢  rÐ  r¥  r
  r  r    r`   rˆ   rÄ   r$   )r  r  r“  r¡  r"   r�  rˆ   s       @@@r#   r¡  r¡  û  sz   ú€ ä„Oä˜˜GÔ$Ü   GÔ,ä˜W aÔ+ä×Ò §¡Ó(€EØ�G‰G€Eô “)×'Ñ'¨¯©Ó0€KäŒ}˜U GÓ,Ó-€D÷'.ðR Ðr%   c           
      óv  ^^^^^	^
^^^• [        5         [        U S5        [        U R                  SU R                  5      n[        R
                  " U5      m[        5       R                  U R                  5      m	[        5       R                  U R                  5      m
[        [        U R                  S5      5      m[        S5      m[        S5      m[        S5      m[        R
                  " U R                  5      n[        R                  " S/US9m[        R                  " S/US9mS	UUUUU	U
UUU4	S jjnU$ )
NÚpinvrD   r  rŒ   rÓ   rÃ  rÒ   c                 ó2  >	• U R                   S   nU R                   S   n[        U 5        [        U 5      nUS:X  d  US:X  a=  UR                  R	                  5       R                  U R                   5      R                  $ [        X25      n[        R                  " XS4U R                  S9n[        R                  " UTS9n[        R                  " X%4U R                  S9nT" TTUUUR                  UUR                  UR                  UUR                  U5      n	[        U	5        US   U-  n
Sn[        U5       H  nX|   U
:”  d  M  SX|   -  X|'   UnM     US-  nX2:¼  a4  [        U5       H$  n[        U5       H  nX�U4   X~   -  X�U4'   M     M&     O5[        U5       H&  nX}   n[        U5       H  nXmU4   U-  XmU4'   M     M(     T" TTTUUUTR                  UR                  UUR                  UTR                  UR                  U5      n	[        UR                  UR                  UR                  UR                  TR                  TR                  /5        UR                  R	                  5       R                  U R                   5      R                  $ )NrÀ  rÁ  r   rÃ  rÒ   r   )rÿ   r”  r§  r­  r€  Úreshaper  r   r  r    rÅ  rÌ  rÖ  r¼  rÆ  )r  r‹  r£   rÝ   r¯  r  r  r   r  r¸  Úcut_atÚcut_idxrð   r,  r-  Ús_localÚJOBÚTRANSAÚTRANSBr"   rz   rS   rs  r!  rh  s                   €€€€€€€€€r#   Ú	pinv_implÚpinv_impl.<locals>.pinv_implR  sN  ø€ ðN �G‰G�B‰KˆØ�G‰G�B‰Kˆä˜QÔä% aÓ(ˆà�‹6�Q˜!“VØ—6‘6—<‘<“>×)Ñ)¨!¯'©'Ó2×4Ñ4Ð4ä�A“	ˆä�HŠH�e�Z q§w¡wÑ/ˆÜ�HŠH�U 'Ñ*ˆÜ�XŠX�q�j¨¯©Ñ0ˆáØØØØØ�K‰KØØ�H‰HØ�H‰HØØ�I‰IØó
ˆô 	.¨aÔ0ð �1‘˜‘ˆØˆÜ�u–ˆAØ‰t�f�}Ø˜A™D‘y�‘Ø’ñ ð 	�1‰ˆð ‹6ä˜1–X�Ü˜wž�AØ! Q $™x¨!©$™�B˜!�t“Hó (ò ô
 ˜7–^�Ø™$�Ü˜už�AØ 1 ™g¨Ñ/�A˜�d“Gó &ñ $ñ ØØØØØØØ�J‰JØ�I‰IØØ�H‰HØØ�K‰KØ�K‰KØó
ˆô0 	˜dŸi™i¨¯©°!·&±&¸!¿&¹&À#Ç(Á(Ø�I‰Iðô 	à�v‰v�|‰|‹~×%Ñ% a§g¡gÓ.×0Ñ0Ð0r%   ©gVçž¯Ò<)r0   r¢  rG   r    r
  r  r`   rz   r<   rS   rÄ   r$   r   Úarray)r  r‹  r%  Údtr­  rª  r«  r¬  r"   rz   rS   rs  r!  rh  s        @@@@@@@@@r#   r­  r­  8  sé   ÿø€ ä„Oä˜˜FÔ#ô �Q—W‘WÐ0°!·'±'Ó:€FÜ×!Ò! &Ó)€Gä“Y×-Ñ-¨a¯g©gÓ6€Nä“7×'Ñ'¨¯©Ó0€LäŒ}˜QŸW™W fÓ-Ó.€DÜ
ˆc‹(€Cô �‹X€FÜ�‹X€Fô 
×	Ò	˜QŸW™WÓ	%€BÜ�8Š8�R�D Ñ#€DÜ
�(Š(�B�4˜rÑ
"€C÷E1÷ E1ðN Ðr%   c                 óŒ   • [        U R                  [        R                  5      (       a  [        S 5       nU$ [        S 5       nU$ )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                 ó¶   • US-   nSn[        U 5       HA  n[        R                  " XU4   5      nX1XU4   U-  -  nU[        R                  " U5      -   nMC     X44$ )Ny                rÓ   )rÖ  r   rl  Úlog)r£   r  ÚsgnÚcsgnÚaccrð   Úabsels          r#   Úcmplx_diag_walkerÚ3_get_slogdet_diag_walker.<locals>.cmplx_diag_walkerå  sa   € ð ˜‘9ˆDØˆCÜ˜1–X�ÜŸš˜q A ™w›�Ø  ™w¨™Ñ/�ØœBŸFšF 5›MÑ)’ñ ð �;Ðr%   c                 óŽ   • Sn[        U 5       H.  nXU4   nUS:  a  U* nU* nU[        R                  " U5      -   nM0     US-   U4$ )NrÓ   )rÖ  r   r´  )r£   r  rµ  r·  rð   r“  s         r#   Úreal_diag_walkerÚ2_get_slogdet_diag_walker.<locals>.real_diag_walkerñ  sX   € ð ˆCÜ˜1–X�Ø˜�d‘G�Ø�r“6Ø˜$�CØ˜�AØœBŸFšF 1›I‘o’ñ ð ˜"‘H˜c�?Ð"r%   )r‘   r    r   r�  r   )r  r¹  r¼  s      r#   Ú_get_slogdet_diag_walkerr¾  Ü  sM   € ô �!—'‘'œ5Ÿ=™=×)Ñ)Ü	ñ	ó 
ð	ð !Ð ä	ñ
	#ó 
ð
	#ð  Ðr%   c                 óZ  ^^^^^• [        5         [        U S5        [        5       R                  U R                  5      m[        [        U R                  S5      5      m[        U 5      mU R	                  S5      m[        U R                  SU R                  5      " S5      mUUUUU4S jnU$ )NÚslogdetr   rD   r   c                 ó  >• U R                   S   nU R                   S   U:w  a!  Sn[        R                  R                  U5      eUS:X  a  TT	4$ [	        U 5        [        U 5      n[        R                  " U[        S9nT" TXUR                  XR                  5      nUS:”  a  S[        R                  * 4$ [        U5        Sn[        U5       H  nXdU   US-   :g  -   nM     US-  nUS:X  a  Sn[        UR                  /5        T
" XU5      $ )NrÀ  rÁ  rÂ  r   rÃ  rÓ   r   )rÿ   r   r‘  r’  r”  r§  r  rÄ  rÅ  Úinfr¹  rÖ  r¼  rÆ  )r  r£   r¡  r¯  rÇ  r¸  rµ  rð   ÚONEÚZEROÚdiag_walkerr"   re   s           €€€€€r#   Úslogdet_implÚ"slogdet_impl.<locals>.slogdet_impl  s  ø€ Ø�G‰G�B‰KˆØ�7‰7�2‰;˜!ÓØBˆCÜ—)‘)×'Ñ'¨Ó,Ð,à�‹6Ø˜�;Ðä˜QÔä% aÓ(ˆä�xŠx˜¤Ñ.ˆá˜$  d§k¡k°1·k±kÓBˆàˆq‹5àœŸ™˜�=Ð Ü˜Ôð ˆÜ�q–ˆAØ˜a™ Q¨¡UÑ+Ñ,ŠCñ ð �A‰gˆØ�!‹8ØˆCô 	˜dŸi™i˜[Ô)Ù˜1 CÓ(Ð(r%   )	r0   r¢  r`   re   r    rÄ   r$   r¾  rG   )r  rÆ  rÃ  rÄ  rÅ  r"   re   s     @@@@@r#   rÆ  rÆ     sƒ   ü€ ä„Oä˜˜IÔ&ä“I×+Ñ+¨A¯G©GÓ4€MäŒ}˜QŸW™W iÓ0Ó1€Dä*¨1Ó-€Kà
�'‰'�!‹*€CÜ�1—7‘7Ð.°·±Ô8¸Ó;€D÷')ñ ')ðR Ðr%   c                 ó8   • [        5         [        U S5        S nU$ )NÚdetc                 óv   • [         R                  R                  U 5      u  pU[         R                  " U5      -  $ r2   )r   r‘  rÀ  Úexp)r  rµ  rÀ  s      r#   Údet_implÚdet_impl.<locals>.det_implB  s+   € ÜŸ™×*Ñ*¨1Ó-‰ˆØ”R—V’V˜G“_Ñ$Ð$r%   ©r0   r¢  )r  rÌ  s     r#   rÌ  rÌ  ;  s   € ô „Oä˜˜EÔ"ò%ð €Or%   c                 ó   • [         e)z!
Compute singular values of *a*.
r1  r»  s    r#   Ú_compute_singular_valuesrÐ  I  r7  r%   c                 óÄ  ^^^^^^	• [        5       R                  U R                  5      m[        [	        U R                  S5      5      m[        S5      m[        U R                  SU R                  5      n[        R                  " U5      m[        R                  " U R                  5      n[        R                  " SUS9m[        R                  " SUS9m	UUUUUU	4S jnU$ )z6
Returns a function to compute singular values of `a`
r  rÞ  rD   r4  rÃ  c                 ó
  >• U R                   S   nU R                   S   nUS:X  d  US:X  a  [        R                  R                  S5      e[	        U 5        Un[        X!5      nSnSn[        U 5      n[        R                  " UTS9nT" TT
UUUR                  UUR                  TR                  UTR                  U5      n	[        U	5        [        UR                  TR                  TR                  UR                  /5        U$ )z
Computes singular values.
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¸  ÚJOBZ_Nr"   Únp_ret_typerz   r  r  s             €€€€€€r#   Úsv_functionÚ2_compute_singular_values_impl.<locals>.sv_functione  sí   ø€ ð �G‰G�B‰KˆØ�G‰G�B‰KˆØ�‹6�Q˜!“VÜ—)‘)×'Ñ'Ð(@ÓAÐAÜ˜QÔàˆÜ�A“	ˆð ˆØˆä% aÓ(ˆô
 �HŠH�U +Ñ.ˆáØØØØØ�K‰KØØ�H‰HØ�H‰HØØ�I‰IØó
ˆô 	.¨aÔ0ô 	˜dŸi™i¨¯©°!·&±&¸!¿&¹&ÐAÔBØˆr%   )
r`   rz   r    rÄ   r$   rG   r
  r  r   r  )
r  Únb_ret_typeÚnp_dtyperÕ  rÓ  r"   rÔ  rz   r  r  s
       @@@@@@r#   Ú_compute_singular_values_implrÙ  P  s«   ý€ ô
 “Y×-Ñ-¨a¯g©gÓ6€NäŒ}˜QŸW™W eÓ,Ó-€Dô �‹X€Fä˜!Ÿ'™'Ð#5°q·w±wÓ?€KÜ×%Ò% kÓ2€KÜ×"Ò" 1§7¡7Ó+€Hô 	�Š�˜xÑ(€AÜ	�Š�& Ñ	)€B÷-ò -ð^ Ðr%   c                 ó   • [         e)z&
Compute the L2-norm of 1D-array *a*.
r1  r»  s    r#   Ú_oneD_norm_2rÛ  —  r7  r%   c                 ó  ^^^• [        U R                  SU R                  5      n[        R                  " U5      m[	        5       R                  U R                  5      m[        [        U R                  S5      5      mUUU4S jnU$ )NrD   Únormc                 ó>  >• [        U 5      n[        R                  " STS9n[        U R                  S   U R
                  -  5      nT" TUU R                  UUR                  5      nUS:  a  [        5          e[        UR                  U R                  /5        US   $ )Nr$  rÃ  r   )
Úlenr   r  rÅ   Ústridesr^  rÅ  r¶  r¼  rÆ  )r  r£   r+  Újmpr¸  r"   rÔ  Úxxnrm2s        €€€r#   r¥   Ú_oneD_norm_2_impl.<locals>.impl§  sŽ   ø€ ô �‹Fˆä�hŠh�t ;Ñ/ˆÜ�!—)‘)˜A‘, §¡Ñ+Ó,ˆÙØØØ�H‰HØØ�J‰Jó
ˆð ˆq‹5ÜÔØ�1ô
 	˜cŸh™h¨¯©Ð/Ô0Ø�1‰vˆr%   )rG   r    r
  r  r<   rE   rÄ   r$   )r  r×  r¥   r"   rÔ  râ  s      @@@r#   Ú_oneD_norm_2_implrä  ž  sa   ú€ ä˜!Ÿ'™'Ð#5°q·w±wÓ?€KÜ×%Ò% kÓ2€Kä‹W×!Ñ! !§'¡'Ó*€FäŒ}˜QŸW™W fÓ-Ó.€D÷ð0 €Kr%   c                 óø  ^	^
• [        U R                  SU R                  5      n[        R                  " U5      n[        R                  " U R                  5      n[	        5       R                  U R                  5      n[        [        U R                  S5      5      nU R                  S:X  a$  US [        R                  4;   a  SS jnU$ SS jnU$ U R                  S:X  aš  US [        R                  4;   aP  U R                  S:X  a  [        S 5       m	O)U R                  S	:X  a  [        S
 5       m	O[        S 5       m	SU	4S jjnU$ [        R                  " UR                  5      R                   m
SU
4S jjnU$  e)NrD   rÝ  r   c                 ó   • [        U 5      $ r2   )rÛ  ©rd  rÄ   s     r#   r;  Ú!_get_norm_impl.<locals>.oneD_implß  s   € Ü# A“Ð&r%   c                 óŠ  • [        U 5      nUS:X  a  gUS:X  a  [        U 5      $ U[        R                  :X  a9  [	        U S   5      n[        SU5       H  n[	        X   5      nXS:”  d  M  UnM     U$ U[        R                  * :X  a9  [	        U S   5      n[        SU5       H  n[	        X   5      nXS:  d  M  UnM     U$ US:X  a%  Sn[        U5       H  nX   S:w  d  M  US-  nM     U$ US:X  a&  Sn[        U5       H  nU[	        X   5      -  nM     U$ Sn[        U5       H  nU[	        X   5      U-  -  nM     USU-  -  $ )Nr   rÓ   r1  r   rÒ   )rß  rÛ  r   rÂ  rl  rÖ  )rd  rÄ   r£   r+  rð   r8   s         r#   r;  rè  â  sM  € Ü˜“F�ð ˜“6Øð ˜!“8Ü'¨›?Ð*ØœBŸF™F“]ä˜a ™d›)�CÜ" 1 až[˜Ü! !¡$›i˜Ø�9Ø"%šCñ )ð �JàœRŸV™V˜G“^ä˜a ™d›)�CÜ" 1 až[˜Ü! !¡$›i˜Ø�9Ø"%šCñ )ð �Jà˜A“Xà�CÜ" 1žX˜Ø™4 2�:Ø 2™IšCñ &ð �Jà˜A“Xà�CÜ" 1žX˜Øœs 1¡4›yÑ(šñ &à�Jð �CÜ" 1žX˜Øœs 1¡4›y¨#™~Ñ-šñ &à  c¡™?Ð*r%   r1  rŒ   c                 ó   • U $ r2   rW   ©rd  s    r#   Úarray_prepareÚ%_get_norm_impl.<locals>.array_prepare%	  s   € à�Hr%   rÔ   c                 ó   • U R                   $ r2   )r­  rë  s    r#   rì  rí  )	  s   € ð Ÿ3™3�Jr%   c                 ó"   • U R                  5       $ r2   rƒ  rë  s    r#   rì  rí  .	  s   € àŸ6™6›8�Or%   c                 ón   >• U R                   nUS:X  a  gT" U 5      n[        UR                  U5      5      $ )Nr   rÓ   )rÆ  rÛ  r¦  )rd  rÄ   r£   Úx_crì  s       €r#   r>  Ú!_get_norm_impl.<locals>.twoD_impl4	  s3   ø€ Ø—F‘F�Ø˜“6àÙ# AÓ&�Ü# C§K¡K°£NÓ3Ð3r%   c                 óZ  >• U R                   S   nU R                   S   nU R                  S:X  a  gU[        R                  :X  aE  Sn[	        U5       H2  nSn[	        U5       H  nU[        XU4   5      -  nM     Xd:”  d  M0  UnM4     U$ U[        R                  * :X  aE  T	n[	        U5       H2  nSn[	        U5       H  nU[        XU4   5      -  nM     Xh:  d  M0  UnM4     U$ US:X  aE  Sn[	        U5       H2  nSn[	        U5       H  nU[        XU4   5      -  nM     Xd:”  d  M0  UnM4     U$ US:X  aE  T	n[	        U5       H2  nSn[	        U5       H  nU[        XU4   5      -  nM     Xh:  d  M0  UnM4     U$ US:X  a  [        U 5      S   $ US:X  a  [        U 5      S   $ [        S5      e)NrÀ  rÁ  r   rÓ   r   r1  z Invalid norm order for matrices.)rÿ   rÆ  r   rÂ  rÖ  rl  rÐ  r  )
rd  rÄ   r£   rÝ   Ú
global_maxÚiiÚtmpÚjjÚ
global_minÚmax_vals
            €r#   r>  rò  ?	  sÍ  ø€ Ø—G‘G˜B‘K�Ø—G‘G˜B‘K�ð —6‘6˜Q“;Øàœ"Ÿ&™&“=ð "$�JÜ# Ažh˜Ø ˜Ü"'¨¦(˜BØ¤3 q¨R¨¡y£>Ñ1šCñ #+àÕ+Ø),šJñ 'ð &Ð%àœRŸV™V˜G“^ð ")�JÜ# Ažh˜Ø ˜Ü"'¨¦(˜BØ¤3 q¨R¨¡y£>Ñ1šCñ #+àÕ+Ø),šJñ 'ð &Ð%Ø˜A“Xð "$�JÜ# Ažh˜Ø ˜Ü"'¨¦(˜BØ¤3 q¨R¨¡y£>Ñ1šCñ #+àÕ+Ø),šJñ 'ð &Ð%à˜B“Yð ")�JÜ# Ažh˜Ø ˜Ü"'¨¦(˜BØ¤3 q¨R¨¡y£>Ñ1šCñ #+àÕ+Ø),šJñ 'ð &Ð%ð ˜A“Xä3°AÓ6°qÑ9Ð9Ø˜B“Yä3°AÓ6°rÑ:Ð:ô %Ð%GÓHÐHr%   r2   )rG   r    r
  r  r<   rE   rÄ   r$   r;  r   r¨   rŽ   r   r   Úfinfor›  r‰  )rd  Úord_flagr×  rÔ  rØ  râ  r"   r;  r>  rì  rù  s            @@r#   Ú_get_norm_implrü  Â  sT  ù€ ô ˜!Ÿ'™'Ð#5°q·w±wÓ?€KÜ×%Ò% kÓ2€Kä×"Ò" 1§7¡7Ó+€Hä‹W×!Ñ! !§'¡'Ó*€FäŒ}˜QŸW™W fÓ-Ó.€Dà‡v�v�ƒ{ð ˜œeŸj™jÐ)Ó)ô'ðx Ðôs8+ðr Ðà	
�‰�1‹ð ˜œeŸj™jÐ)Ó)ð �x‰x˜3‹Ü!ñó "ñà—‘˜S“Ü!ñó "ñô "ñ$ó "ð$÷
4ð` ÐôO —h’h˜{×/Ñ/Ó0×4Ñ4ˆG÷DIðJ Ðàˆqr%   c                 óD   • [        5         [        U S5        [        X5      $ )NrÝ  )r0   rÐ  rü  rç  s     r#   Ú	norm_implrþ  ‰	  s   € ä„Oä   FÔ+ä˜!Ó!Ð!r%   c                 ó<   • [        5         [        U S5        SS jnU$ )NÚcondc                 óÚ  • US:X  d	  US:X  d  UcP  [        U 5      nUS:X  d  Uc  [        R                  " US   US   5      nO~[        R                  " US   US   5      nO`[        R                  R	                  X5      n[        R                  R	                  [        R                  R                  U 5      U5      nXE-  n[        R                  " U5      (       a  [        R                  $ U$ )Nr1  rÁ  r   rÀ  )rÐ  r   Údivider‘  rÝ  r¾  ÚisnanrÂ  )rd  Úpr   r¸  Únorm_xÚ
norm_inv_xs         r#   r¥   Úcond_impl.<locals>.impl˜	  s²   € ð& �‹6�Q˜"“W ¡	Ü(¨Ó+ˆAØ�A‹v˜™Ü—I’I˜a ™d A b¡EÓ*‘ä—I’I˜a ™e Q q¡TÓ*‘ä—Y‘Y—^‘^ AÓ)ˆFÜŸ™Ÿ™¬¯	©	¯©°aÓ(8¸!Ó<ˆJØÑ#ˆAô �8Š8�A�;‰;Ü—6‘6ˆMàˆHr%   r2   rÎ  )rd  r  r¥   s      r#   Ú	cond_implr  ’	  s   € ä„Oä˜˜FÔ#ô#ðH €Kr%   c                 ó`   • Sn[        [        U 5      5       H  nX   U:”  a  US-   nM    U$    U$ )zB
Gets rank from singular values with cut-off at a given tolerance
r   r   ©rÖ  rß  )ÚsvrÕ   rŽ  rð   s       r#   Ú_get_rank_from_singular_valuesr  ¿	  s<   € ð
 €DÜ”3�r“7Ž^ˆØ‰5�1‹9Ø˜!‘8ŠDàØ€Kñ ð
 €Kr%   c                 óR   ^• [        5         [        U S5        S mU4S jnU" X5      $ )aL  
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                 ó   ^• US [         R                  4;   aa  [        U R                  SU R                  5      n[        R
                  " U5      n[        R                  " U5      R                  mSU4S jjnU$ SS jnU$ )NrD   c                 ó˜   >• [        U 5      nU R                  S   nU R                  S   n[        X45      nUS   U-  T-  n[        X&5      $ )Nr   r   )rÐ  rÿ   r‰  r  )r©  Útolr   r¸  r   ÚlrÕ   Úeps_vals          €r#   Ú_2d_tol_none_implÚImatrix_rank_impl.<locals>._2d_matrix_rank_impl.<locals>._2d_tol_none_implã	  sM   ø€ Ü,¨QÓ/�à—G‘G˜A‘J�Ø—G‘G˜A‘J�Ü˜“I�Ø�a‘D˜1‘H˜wÑ&�Ü5°aÓ;Ð;r%   c                 ó.   • [        U 5      n[        X!5      $ r2   )rÐ  r  )r©  r  r   s      r#   Ú_2d_tol_not_none_implÚMmatrix_rank_impl.<locals>._2d_matrix_rank_impl.<locals>._2d_tol_not_none_implí	  s   € Ü,¨QÓ/�Ü5°aÓ=Ð=r%   r2   )	r   r¨   rG   r    r
  r  r   rú  Úeps)r©  r  Únb_typeÚnp_typer  r  r  s         @r#   Ú_2d_matrix_rank_implÚ.matrix_rank_impl.<locals>._2d_matrix_rank_implÛ	  sk   ø€ ð �4œŸ™Ð$Ó$Ü˜aŸg™gÐ'9¸1¿7¹7ÓCˆGÜ ×)Ò)¨'Ó2ˆGÜ—h’h˜wÓ'×+Ñ+ˆG÷<ð %Ð$ô>ð )Ð(r%   c                 óV   >• U R                   nUS:X  a  SS jnU$ US:X  a  T" X5      $  e)Nr   c                 óN   • [        [        U 5      5       H  nX   S:w  d  M    g   g)NrÓ   r   r   r
  )r©  r  rð   s      r#   Ú_1d_matrix_rank_implÚMmatrix_rank_impl.<locals>._get_matrix_rank_impl.<locals>._1d_matrix_rank_impl
  s%   € Üœs 1›vž�AØ‘t˜r•zÙ ñ 'ð r%   r1  r2   r�  )r©  r  r;  r   r  s       €r#   Ú_get_matrix_rank_implÚ/matrix_rank_impl.<locals>._get_matrix_rank_implò	  s7   ø€ Ø�v‰vˆØ�1‹9ôð
 (Ð'Ø�Q‹YÙ'¨Ó/Ð/à�1r%   )r0   rÐ  )r©  r  r"  r  s      @r#   Úmatrix_rank_implr$  Í	  s+   ø€ ô „Oä   MÔ2ò)õ.ñ4 ! Ó(Ð(r%   c                 óÚ   ^• [        U S5        [        R                  " U R                  5      m[	        USU5      n[        U[        R                  5      (       d  [        S5      eU4S jnU$ )zD
Computes matrix power. Only integer powers are supported in numpy.
Úmatrix_powerr    zExponent must be an integer.c                 ó6  >• US:X  aF  [         R                  " U R                  T
S9n[        U R                  S   5       H	  nSX#U4'   M     U$ U R                  S   U R                  S   pTXE:w  a  [	        S5      eUS:X  a  U R                  5       $ US:  a9  [         R                  R                  U 5      R                  5       nUS:X  a  U$ U* nOUS:X  a  U R                  5       $ U nUS:  aN  US	:X  a  [         R                  " X"5      $ US
:X  a+  [         R                  " [         R                  " X"5      U5      $ g UnUnUnSn	US:w  aO  US-  (       a"  U	(       a  UnSn	O[         R                  " X†5      n[         R                  " Xf5      nUS-	  nUS:w  a  MO  U$ )Nr   rÃ  rÒ   rÀ  rÁ  zinput must be a square arrayr   é   r1  é   TF)	r   r  rÿ   rÖ  r  r“   r‘  r¾  r  )r  r£   r©  rð   rS  r`  r·  rË  r+  ÚflagrØ  s             €r#   Úmatrix_power_implÚ,matrix_power_impl.<locals>.matrix_power_impl
  s|  ø€ à�‹6ô —’˜Ÿ™¨Ñ1ˆAÜ˜1Ÿ7™7 1™:Ö&�Ø��Q�$“ñ 'àˆHà—‘˜‘˜aŸg™g b™kˆBØ‹8ÜÐ;Ó<Ð<ð �‹7Ø—6‘6“8ˆOð ˆq‹5Ü—	‘	—‘˜aÓ ×%Ñ%Ó'ˆAØ�B‹wØ�Ø�‰Aà�A‹vØ—v‘v“x�ØˆAàˆq‹5Ø�A‹vÜ—v’v˜a“|Ð#Ø�A‹vÜ—v’vœbŸfšf Q›l¨AÓ.Ð.ð ð ˆCØˆCð ˆCð ˆDØ˜“(Ø˜—7ÞØ!˜Ø$™ä Ÿfšf SÓ.˜Ü—f’f˜SÓ&�Ø˜Q‘h�ð ˜•(ð ˆJr%   )	r¢  r
  r  r    rG   r‘   r   ÚIntegerr   )r  r£   Úntr+  rØ  s       @r#   r+  r+  
  s\   ø€ ô ˜˜NÔ+Ü×"Ò" 1§7¡7Ó+€Hä	��G˜QÓ	€BÜ�bœ%Ÿ-™-×(Ñ(ÜÐ;Ó<Ð<õ=ð~ Ðr%   c                 óŒ   • [        U SSS9  [        U[        [        R                  45      (       d  [        SU-  5      eSS jnU$ )z!
Computes the trace of an array.
ÚtraceF©rž  z!integer argument expected, got %sc                 ó   • U R                   u  p#UnUS:  a  X$-   nUS:”  a  X4-
  n[        [        X#5      S5      nSnUS:¼  a  [        U5       H  nX`XtU-   4   -  nM     U$ [        U5       H  nX`Xt-
  U4   -  nM     U$ rý   )rÿ   r‰  r  rÖ  )r  ÚoffsetÚrowsÚcolsrð   r£   r+  r,  s           r#   Úmatrix_trace_implÚ,matrix_trace_impl.<locals>.matrix_trace_implk
  s˜   € Ø—W‘W‰
ˆØˆØˆq‹5Ø‘8ˆDØˆq‹5Ø‘8ˆDÜ”�D“ Ó#ˆØˆØ�‹6Ü˜1–X�Ø˜ ™E˜‘{Ñ"’ñ ð
 ˆ
ô ˜1–X�Ø˜™ ˜‘{Ñ"’ñ àˆ
r%   ©r   )r¢  r‘   rÅ   r   r-  r   )r  r3  r6  s      r#   r6  r6  `
  sD   € ô ˜˜G¨uÒ5ä�fœs¤E§M¡MÐ2×3Ñ3ÜÐ@À6ÑIÓJÐJôð" Ðr%   c                 óš   • U(       a  SOSnX14n[        U [        R                  5      (       a  U R                  S::  d  [	        SU-  SS9eg g )Nr–  r   r1  rÎ  Fr—  )r‘   r   r’   r;  r   rÏ  s        r#   Ú_check_scalar_or_lt_2d_matr:  
  sT   € Þ%‰[¨4€FØÐ €Fä�!”U—[‘[×!Ñ!Ø�v‰v˜‹{ÜÐKØ &ñ'Ø5:ñ<ð <ð ð "r%   c                 ó,  • [         R                  " U 5      n[         R                  " U5      n[         R                  " UR                  5       R	                  UR
                  S45      UR                  5       R	                  SUR
                  45      5      $ rF  ©r   ÚasarrayÚmultiplyr€  r¦  rÆ  ©r  r  r  ÚaaÚbbs        r#   Úouter_impl_nonerB  ‰
  sd   € ä	�Š�A‹€BÜ	�Š�A‹€BÜ�;Š;�r—x‘x“z×)Ñ)¨2¯7©7°A¨,Ó7ØŸ™›
×*Ñ*¨A¨r¯w©w¨<Ó8ó:ð :r%   c                 ó2  • [         R                  " U 5      n[         R                  " U5      n[         R                  " UR                  5       R	                  UR
                  S45      UR                  5       R	                  SUR
                  45      U5        U$ rF  r<  r?  s        r#   Úouter_impl_arrrD  ‘
  si   € ä	�Š�A‹€BÜ	�Š�A‹€BÜ‡K‚K�—‘“
×"Ñ" B§G¡G¨Q <Ó0Ø—‘“
×"Ñ" A r§w¡w <Ó0Øôð €Jr%   c                 óF   • US [         R                  4;   a  [        $ [        $ r2   )r   r¨   rB  rD  )r  r  r  s      r#   Ú_get_outer_implrF  ›
  s   € Ø
ˆt”U—Z‘ZÐ Ó ÜÐäÐr%   c                 ó\   ^• [        U SSS9  [        USSS9  [        XU5      mSU4S jjnU$ )NÚouterFr1  c                 ó   >• T" XU5      $ r2   rW   )r  r  r  r¥   s      €r#   Ú
outer_implÚouter_impl.<locals>.outer_implª
  s   ø€ Ù�A˜#‹Ðr%   r2   )r:  rF  )r  r  r  rJ  r¥   s       @r#   rJ  rJ  ¢
  s6   ø€ ô ˜q '°UÒ;Ü˜q '°UÒ;ä˜1 Ó%€D÷ð Ðr%   c                 ó  • [        U [        R                  5      (       a`  U R                  S;  a$  [	        SR                  U R                  5      5      eU R                  S:X  a  [        S 5       nU$ [        S 5       nU$ [        S 5       nU$ )N)rŒ   rÔ   z^np.linalg.kron only supports 'C' or 'F' layout input arrays. Received an input of layout '{}'.r1  c                 ó`   • U R                   S   nU R                   S   nU R                  X!5      $ )NrÀ  rÁ  ©rÿ   r¦  )rd  ÚxnÚxms      r#   Ú	nrm_shapeÚ(_kron_normaliser_impl.<locals>.nrm_shape¸
  s+   € à—W‘W˜R‘[�Ø—W‘W˜R‘[�Ø—y‘y Ó(Ð(r%   c                 óD   • U R                   S   nU R                  SU5      $ )NrÀ  r   rN  )rd  rO  s     r#   rQ  rR  ¿
  s    € à—W‘W˜R‘[�Ø—y‘y  BÓ'Ð'r%   c                 óN   • [         R                  " S[        U 5      5      nXS'   U$ )Nr4  r   )r   r  r›  )rd  r  s     r#   rQ  rR  Å
  s"   € ä—’˜¤ a£Ó)ˆAØˆa‰DØˆHr%   )r‘   r   r’   rŽ   r   Úformatr;  r   )rd  rQ  s     r#   Ú_kron_normaliser_implrV  °
  sš   € ä�!”U—[‘[×!Ñ!Ø�8‰8˜:Ó%Üð -ç-3©V°A·H±HÓ-=ó?ð ?ð �V‰V�q‹[Üñ)ó ð)ð Ðäñ(ó ð(ð Ðä	ñ	ó 
ð	ð Ðr%   c                 ón  • [        U [        R                  5      n[        U[        R                  5      nU(       aC  U(       a<  U R                  S:X  d  UR                  S:X  a  [        S 5       nU$ [        S 5       nU$ U(       a  [        S 5       nU$ U(       a  [        S 5       nU$ [        S 5       nU$ )Nr1  c                 ó   • U$ r2   rW   ©r  r  r   s      r#   r+  Ú_kron_return.<locals>.retÔ
  s   € à�r%   c                 ó8   • UR                  UR                  5      $ r2   )r¦  rÆ  rY  s      r#   r+  rZ  Ù
  s   € à—y‘y §¡Ó(Ð(r%   c                 ó8   • UR                  U R                  5      $ r2   ©r¦  rÿ   rY  s      r#   r+  rZ  ß
  ó   € à—y‘y §¡Ó)Ð)r%   c                 ó8   • UR                  UR                  5      $ r2   r]  rY  s      r#   r+  rZ  ä
  r^  r%   c                 ó   • US   $ rý   rW   rY  s      r#   r+  rZ  é
  s   € à˜‘t�r%   )r‘   r   r’   r;  r   )r  r  Úa_is_arrÚb_is_arrr+  s        r#   Ú_kron_returnrc  Í
  s·   € ô ˜!œUŸ[™[Ó)€HÜ˜!œUŸ[™[Ó)€HÞ–HØ�6‰6�Q‹;˜!Ÿ&™& A›+Üñó ðàˆJäñ)ó ð)àˆJæÜñ*ó ð*àˆJÞÜñ*ó ð*àˆJäñó ðàˆJr%   c                 ó¨   ^^^^• [        U SSS9  [        USSS9  [        U 5      m[        U5      m[        X5      m[        U SU 5      mUUUU4S jnU$ )NÚkronFr1  r    c           	      ó¤  >• T" U 5      nT" U5      nUR                   S   nUR                   S   nUR                   S   nUR                   S   nXF-  nXW-  n	[        R                  " X‰4TS9n
[        U5       HN  nX¶-  n[        U5       H8  nXÍ-   nX=S S 24   n[        U5       H  nUU-  nX+U4   U-  X®UUU-   24'   M     M:     MP     T" XU
5      $ )NrÁ  rÀ  rÃ  )rÿ   r   r  rÖ  )r  r  r@  rA  rS  r`  rT  rc  ÚcmÚcnrŒ   r,  Úrjmprð   ÚirjmpÚslcr-  Úcjmpr±  Úfix_aÚfix_bÚret_cs                     €€€€r#   Ú	kron_implÚkron_impl.<locals>.kron_implý
  sè   ø€ á�1‹XˆÙ�1‹Xˆà�X‰X�b‰\ˆØ�X‰X�b‰\ˆØ�X‰X�b‰\ˆØ�X‰X�b‰\ˆà‰WˆØ‰Wˆô �HŠH�b�X RÑ(ˆô �r–ˆAà‘6ˆDä˜2–Y�à™�àšA˜‘h�ä˜rž�Að ˜r™6�DØ/1°Q°$©x¸#©~�A˜T $¨¡)˜^Ð+Ó,ó #ó ñ	 ñ" �Q˜1‹~Ðr%   )r:  rV  rc  rG   )r  r  rp  r±  rm  rn  ro  s      @@@@r#   rp  rp  ï
  s^   û€ ô ˜q &°EÒ:Ü˜q &°EÒ:ä! !Ó$€EÜ! !Ó$€EÜ˜Ó€Eô 
��G˜QÓ	€B÷&ð &ðP Ðr%   )z<BLAS function>)F)Tr$  r’  r¯  r2   r8  )§r\   Ú
contextlibrF  Úllvmliter   Únumpyr   ÚoperatorÚnumba.core.imputilsr   r   r   r   Únumba.core.typingr   Únumba.core.extendingr	   r
   r   Ú
numba.corer   r   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_prŠ  rÄ  ÚUSE_LEGACY_TYPE_SYSTEMrg   Úfloat32r…   Ú	complex64Ú
complex128r   Únp_int32Ú
np_float32Ú
np_float64Únp_complex64Únp_complex128r$   r,   r0   r:   r<   r`   ÚcontextmanagerrŸ   r©   r¶   r¹   rÏ   rà   rú   r  r  r  r#  r  r*  Úmatmulr,  r&  rQ  rS  rU  rm  r|  r‹  rL   rH   r¶  Úc_intpr”  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.  r6  r@  rC  rJ  rM  rZ  r\  re  rg  rx  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+  r0  r6  r:  rB  rD  rF  rH  rJ  rV  rc  re  rp  rW   r%   r#   Ú<module>rŽ     s%  ðñó
 Û å ã Û ÷Jó Jå 'ß FÑ Fß -Ñ -÷ñ ç <Ñ <Ý 0à
�*Š*�Q‹-€Ø×ÑÓ €	Ø€	Ø
�*Š*�R‹.€Ø×ÑÓ €	Ø	�‰€Ø×ÑÓ€	ð �x‰x€Ø	× × Ø—;‘;€Lð 	�‰�sØ�‰�sØ�‰˜Ø×Ñ˜#ð	�Kð —>‘>€Lð 	×Ñ˜#Ø×Ñ˜#Ø×Ñ˜CØ×Ñ˜Sð	€KôòHòHò5÷
&;ñ &;÷R`:ñ `:ðF ×Ññ-ó ð-ò0Fò	Aò	Cò-ò,"-òJ/-òdDò Dò Dô ñ6 
ˆ"�&‰&Óñ/ó ð/ñ 
ˆ(�/‰/Óñ*ó ð*ò)6ñX 
ˆ"�'‰'Óñ6ó ð6ò<@ò@ò6.òrV.ñr 
ˆ"�&‰&Óñ @ó ð @ðF 
× × Ø×-Ò-Ð.AÀ5Ç:Â:Ã<ÓPÑà×-Ò-Ð.AÀ5Ç<Â<Ã>ÓRÐð ñ8ó ð8ô3ò*7ò	ñ 
Ð
 Ó!ñó "ðð6 ñ<ó ð<ð ñó ðñ
 
ˆ"�)‰)�-‰-Óñ$ó ð$ðN ñGó ðGô@ñ$ 
ˆ"�)‰)×
Ñ
Óñ)ó ð)ñV 
ˆ"�)‰)�-‰-Óñpó ðpñd 
ˆ"�)‰)×
Ñ
Óñt!ó ðt!ñl 
ˆ"�)‰)�.‰.Óñ.ó ð.ñ` 
ˆ"�)‰)×
Ñ
Óñ.ó ð.ñ` 
ˆ"�)‰)�-‰-Óó>ó ð>ñB 
ˆ"�)‰)�,‰,ÓñIó ðIò`ñ 
Ð
Óñó ðòñ 
Ð
Óñó  ðòñ 
Ð
+Ó,ñó -ðò(ñ 
Ð
!Ó"ñó #ðò*ñ 
ˆ/Óñ!ó ð!òHñ 
ˆ/Óñó ðñ 
ˆ"�)‰)�/Š/Óó[ó ð[ò|ñ 
Ð
Ó ñó !ðñ 
ˆ"�)‰)�/Š/Óñ9ó ð9ñx 
ˆ"�)‰)�.Š.Óó`ó ð`òF! ñH 
ˆ"�)‰)×
Ò
Óñ7ó ð7ñt 
ˆ"�)‰)�-Š-Óñ
ó ð
òñ 
Ð
"Ó#ñCó $ðCòLñ 
ˆ,Óñ ó ð òFDñN 
ˆ"�)‰)�.Š.Óó"ó ð"ñ 
ˆ"�)‰)�.Š.Óó)ó ð)ðX ñ
ó ð
ñ 
ˆ"�)‰)×
Ò
Ó ó>)ó !ð>)ñB 
ˆ"�)‰)×
 Ò
 Ó!ñKó "ðKñ` 
ˆ"�(Š(Óóó ðô<<ð ñ:ó ð:ð ñó ðòñ 
ˆ"�(Š(Óó
ó ð
òò:ñD 
ˆ"�'Š'Óñ5ó ñ5r%   