ó
    Û“,j3   ã                   óL  • S r / SQrSSKrSSKJr  SSKJrJ	r	  SSK
Jr  SSK
Jr  SSK
Jr  SS	K
Jr  SS
KJr  SSKJr  SSKJrJr   \rSSKr\" SR;                  \R<                  " \R>                  R@                  5      S   5      5        \RC                  S5        S%S jr"S&S jr#S'S jr$ " S S\5      r% " S S\5      r& " S S\5      r' " S S\5      r( " S S\5      r) " S S\5      r* " S S\5      r+ " S  S!\5      r,\)r-\$r.\(r/\%r0S" r1S# r2\3S$:X  a  \2" 5         gg!    Nˆ= f)(zR
Author(s): Matthew Loper

See LICENCE.txt for licensing and contact information.
)ÚinvÚsvdÚdetÚslogdetÚpinvÚlstsqÚnormé    Né   )ÚChÚ
depends_on)Ú	NanDivide)Úasarray)Úsqrt)Úsum)Úconcatenate)Úrandn)ÚrowÚcolÚ Ú	tensorinvc                 óR   • Uc  Ub  [        S5      e[        [        U S-  5      5      $ )Nz('ord' and 'axis' should be None for now.é   )ÚNotImplementedErrorÚch_sqrtÚch_sum)ÚxÚordÚaxiss      Ú›C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\chumpy/linalg.pyr   r       s+   € Ø
�˜$Ñ*Ü!Ð"LÓMÐMä”6˜!˜Q™$“<Ó Ð ó    c                 óÚ   • US:w  a  [        S5      e[        S 5      nXl        Xl        [	        UR                  R                  U5      UR                  -
  S-  SS9n[        n[        nX4XV4$ )Néÿÿÿÿz%non-default rcond not yet implementedc                 ó6   • [        U 5      R                  U5      $ ©N)r   Údot)ÚaÚbs     r   Ú<lambda>Úlstsq.<locals>.<lambda>3   s   € œ˜a›Ÿ™ Qœr    r   r	   )r   )Ú	Exceptionr   r&   r'   r   r%   r   )r&   r'   Úrcondr   Ú	residualsÚrankÚss          r   r   r   /   se   € Ø�ƒ{ÜÐ?Ó@Ð@ä
Ñ'Ó(€AØ
„CØ
„CÜ˜!Ÿ#™#Ÿ'™' !›* q§s¡sÑ*¨aÑ/°qÑ9€IÜ€DÜ€Aà˜Ð Ð r    c                 ó(  • US:w  a  [        S5      eUS:w  a  [        S5      eU R                  S   U R                  S   :  nU(       a  U R                  n [        U S9n[	        XS9n[        XUS9nU(       a  XTUR                  4$ XdUR                  4$ )Nr	   zfull_matrices must be 0r
   zcompute_uv must be 1©r   )r   Úsvd_d)r   r1   Úsvd_v)r*   ÚshapeÚTÚSvdDÚSvdVÚSvdU)r   Úfull_matricesÚ
compute_uvÚneed_transposer1   r2   Úsvd_us          r   ÚSvdr<   <   s�   € à˜ÓÜÐ1Ó2Ð2Ø�QƒÜÐ.Ó/Ð/à—W‘W˜Q‘Z !§'¡'¨!¡*Ñ,€NæØ�C‰Cˆä�1‰I€EÜ�1Ñ"€EÜ�1¨Ñ/€EæØ˜UŸW™WÐ$Ð$à˜UŸW™WÐ$Ð$r    c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚPinvéR   Úmtxc                 ó^  • U R                   nUR                  S   UR                  S   :”  a>  UR                  R                  [	        UR                  UR                  5      5      5      nO=[	        UR                  R                  U5      5      R                  UR                  5      nX0l        g )Nr
   r	   )r@   r3   r4   r%   ÚInvÚ_result)ÚselfÚwhichr@   Úresults       r   Ú
on_changedÚPinv.on_changedU   sp   € Ø�h‰hˆØ�9‰9�Q‰<˜#Ÿ)™) A™,Ó&Ø—U‘U—Y‘Yœs 3§7¡7¨3¯5©5£>Ó2Ó3‰Fä˜Ÿ™Ÿ™ 3›Ó(×,Ñ,¨S¯U©UÓ3ˆFØ�r    c                 ó.   • U R                   R                  $ r$   )rC   Úr©rD   s    r   Ú	compute_rÚPinv.compute_r]   s   € Ø�|‰|�~‰~Ðr    c                 ój   • XR                   L a%  U R                  R                  U R                   5      $ g r$   )r@   rC   Údr_wrt©rD   Úwrts     r   Úcompute_dr_wrtÚPinv.compute_dr_wrt`   s)   € Ø—(‘(Š?Ø—<‘<×&Ñ& t§x¡xÓ0Ð0ð r    )rC   N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚdtermsrG   rL   rR   Ú__static_attributes__© r    r   r>   r>   R   s   † Ø€Fòòõ1r    r>   c                   ó*   • \ rS rSrSrS rS rS rSrg)Ú	LogAbsDetéw   r   c                 ó„   • [         R                  R                  U R                  R                  5      u  U l        U l        g r$   )ÚnpÚlinalgr   r   rJ   Úsign)rD   rE   s     r   rG   ÚLogAbsDet.on_changedz   s'   € Ü"$§)¡)×"3Ñ"3°D·F±F·H±HÓ"=ÑˆŒ	�4•<r    c                 ó   • U R                   $ r$   )r   rK   s    r   rL   ÚLogAbsDet.compute_r}   s   € Ø�|‰|Ðr    c                 ó¬   • XR                   L aF  [        [        R                  R	                  U R                   R
                  5      R                  5      $ g r$   )r   r   r`   ra   r   rJ   r4   rP   s     r   rR   ÚLogAbsDet.compute_dr_wrt€   s6   € Ø—&‘&Š=Ü”r—y‘y—}‘} T§V¡V§X¡XÓ.×0Ñ0Ó1Ð1ð r    )rb   r   NrT   r[   r    r   r]   r]   w   s   † Ø€Fò>òõ2r    r]   c                   ó$   • \ rS rSrSrS rS rSrg)ÚSignLogAbsDeté„   )Ú	logabsdetc                 óZ   • U R                   R                  nU R                   R                  $ r$   )rk   rJ   rb   )rD   Ú_s     r   rL   ÚSignLogAbsDet.compute_r‡   s!   € Ø�N‰N×ÑˆØ�~‰~×"Ñ"Ð"r    c                 ó   • g r$   r[   rP   s     r   rR   ÚSignLogAbsDet.compute_dr_wrt‹   s   € Ør    r[   N©rU   rV   rW   rX   rY   rL   rR   rZ   r[   r    r   ri   ri   „   s   † Ø€Fò#õr    ri   c                   ó$   • \ rS rSrSrS rS rSrg)ÚDeté�   r   c                 óh   • [         R                  R                  U R                  R                  5      $ r$   )r`   ra   r   r   rJ   rK   s    r   rL   ÚDet.compute_r’   ó   € Ü�y‰y�}‰}˜TŸV™VŸX™XÓ&Ð&r    c                 óÆ   • XR                   L aS  [        U R                  [        R                  R                  U R                   R                  5      R                  -  5      $ g r$   )r   r   rJ   r`   ra   r   r4   rP   s     r   rR   ÚDet.compute_dr_wrt•   s?   € Ø—&‘&Š=Ü�t—v‘v¤§	¡	§¡¨d¯f©f¯h©hÓ 7× 9Ñ 9Ñ9Ó:Ð:ð r    r[   Nrq   r[   r    r   rs   rs   �   s   † Ø€Fò'õ;r    rs   c                   ó$   • \ rS rSrSrS rS rSrg)rB   éš   r&   c                 óh   • [         R                  R                  U R                  R                  5      $ r$   )r`   ra   r   r&   rJ   rK   s    r   rL   ÚInv.compute_r�   rw   r    c           
      óª  • XR                   La  g U R                  nUR                  S::  a!  [        R                  " X"R
                  5      * $ [        R                  " USUR                  S   UR                  S   45      n[        R                  " USS5      n[        R                  " USUR                  S   UR                  S   45      n[        R                  " [        UR                  S   5       Vs/ s H)  n[        R                  " X$   X4   5      R
                  * PM+     sn5      R
                  n[        R                  " U5      nU$ s  snf )Nr   r"   éþÿÿÿr	   )r&   rJ   Úndimr`   Úkronr4   Úreshaper3   ÚrollaxisÚdstackÚrangeÚspÚ
block_diag)rD   rQ   ÚAinvÚAinvTÚirF   s         r   rR   ÚInv.compute_dr_wrt    sý   € Ø—f‘fÒØà�v‰vˆà�9‰9˜‹>Ü—G’G˜D§&¡&Ó)Ð)Ð)ä—:’:˜d b¨$¯*©*°R©.¸$¿*¹*ÀR¹.Ð%IÓJˆDÜ—K’K  b¨"Ó-ˆEÜ—J’J˜u r¨5¯;©;°r©?¸E¿K¹KÈ¹OÐ&LÓMˆEÜ—Y’YÄuÈTÏZÉZÐXYÉ]ÔG[Ó\ÒG[À!¤§¢¨©°%±(Ó!;×!=Ñ!=Ó =ÑG[Ñ\Ó]×_Ñ_ˆFÜ—]’] 6Ó*ˆFàˆùò  ]s   Ã70Er[   Nrq   r[   r    r   rB   rB   š   s   † Ø€Fò'õr    rB   c                   ó@   • \ rS rSrSr\" S5      S 5       rS rS rSr	g)r5   é²   r   c                 ó  • [         R                  R                  U R                  R                  SS9nUS   US   US   R
                  /nSUS   [         R                  " US   5      [         R                  " S5      :  '   U$ )NF)r8   r	   r
   r   g        )r`   ra   r   r   rJ   r4   ÚabsÚspacing)rD   rF   s     r   ÚUDVÚSvdD.UDVµ   si   € ä—‘—‘˜tŸv™vŸx™x°u�Ð=ˆØ˜‘)˜V A™Y¨¨q©	¯©Ð4ˆØ79ˆˆq‰	”"—&’&˜ ™Ó#¤b§j¢j°£mÑ3Ñ4Øˆr    c                 ó    • U R                   S   $ )Nr
   )r‘   rK   s    r   rL   ÚSvdD.compute_r¼   s   € Ø�x‰x˜‰{Ðr    c                 óB  • XR                   La  g U R                  u  p#nU R                   R                  R                  nUS US   2S US   24   nUS US   2S UR                  24   n[
        R                  " SX$5      nUR                  UR                  S   S45      nU$ )Nr	   r
   z
ik,jk->kijr"   )r   r‘   rJ   r3   Úsizer`   Úeinsumr‚   )rD   rQ   ÚuÚdÚvÚshprF   s          r   rR   ÚSvdD.compute_dr_wrt¿   s›   € Ø—f‘fÒØà—(‘(‰ˆˆaØ�f‰f�h‰h�n‰nˆØˆgˆs�1‰vˆg�w˜˜A™�wÐÑˆØˆgˆs�1‰vˆg�w˜Ÿ™�wÐÑˆä—’˜<¨Ó.ˆØ—‘ §¡¨a¡°"Ð 5Ó6ˆØˆr    r[   N)
rU   rV   rW   rX   rY   r   r‘   rL   rR   rZ   r[   r    r   r5   r5   ²   s'   † Ø€Fá�ƒ_ñó ðòõr    r5   c                   ó(   • \ rS rSrSrSrS rS rSrg)r6   éÍ   r1   r   c                 ó4   • U R                   R                  S   $ )Nr   ©r1   r‘   rK   s    r   rL   ÚSvdV.compute_rÑ   ó   € Ø�z‰z�~‰~˜aÑ Ð r    c                 ó  • XR                   La  g U R                  R                  u  p#nU R                  R                   R                  R                  n[        US   US   5      n[        R                  " U5      nX7S UR                  & [        R                  " US   US   US   US   45      nUS   n	US   n
Xš:¼  d   e[        US   5       HÈ  n[        US   5       H³  n[        U
5       H¡  n[        US-   U
5       H‹  n[        R                  " X~   X}   /X}   X~   //5      n[        R                  " X+U4   XLU4   -  X+U4   * XLU4   -  /5      n[        R                  R                  UU5      nUS   X‹XÍU4'   US   * X‹XÎU4'   M�     M£     Mµ     MÊ     UR                  S   UR                  S   :X  d   e[        R                  " SU* U5      R                  U R                  R                  UR                  R                  45      $ )Nr	   r
   r   zak,ijkl->alij)r   r1   r‘   rJ   r3   Úmaxr`   Úzerosr–   r…   Úarrayra   Úsolver—   r‚   )rD   rQ   ÚUÚ_DÚVr›   ÚmxszÚDÚomegaÚMÚNrŠ   ÚjÚkÚlr@   ÚrhsrF   s                     r   rR   ÚSvdV.compute_dr_wrtÔ   sÚ  € Ø—f‘fÒØà—‘—‘‰ˆˆQà�j‰j�l‰l�n‰n×"Ñ"ˆÜ�3�q‘6˜3˜q™6Ó"ˆä�HŠH�T‹NˆØˆ(ˆ2�7‰7ˆä—’˜#˜a™& # a¡&¨#¨a©&°#°a±&Ð9Ó:ˆà�‰FˆØ�‰Fˆà‹vˆˆvä�s˜1‘v–ˆAÜ˜3˜q™6–]�Ü˜qž�AÜ" 1 Q¡3¨ž]˜Ü ŸhšhØ™T !¡$˜KØ™T !¡$˜Kð()ó *˜ô !Ÿhšh¨¨A¨#©¨q°1°©v©¸¸A¸#¹°w¸qÀ1À¹v±~Ð'FÓG˜Ü!#§¡§¡°°cÓ!:˜à*0°©)˜  A˜g™Ø*0°©)¨˜  A˜g›ó +ó "ó #ñ ð  �w‰w�q‰z˜UŸ[™[¨™^Ó+Ð,Ð+Ü�yŠy˜¨1¨"¨eÓ4×<Ñ<¸d¿f¹f¿k¹kÈ3Ï5É5Ï:É:Ð=VÓWÐWr    r[   N)	rU   rV   rW   rX   ÚtermsrY   rL   rR   rZ   r[   r    r   r6   r6   Í   s   † Ø€EØ€Fò!õ$Xr    r6   c                   ó(   • \ rS rSrSrSrS rS rSrg)r7   éû   r   )r1   r2   c                 ó4   • U R                   R                  S   $ )Nr	   r    rK   s    r   rL   ÚSvdU.compute_rÿ   r¢   r    c                 ó
  • XR                   L au  [        U R                  R                   R                  U R                  5      U R                  R                  S5      5      R                  U R                  R                   5      $ g )N)r
   r"   )r   r   r1   r%   r2   r‚   rO   rP   s     r   rR   ÚSvdU.compute_dr_wrt  s_   € Ø—&‘&Š=ô Ø—J‘J—L‘L×$Ñ$ T§Z¡ZÓ0Ø—J‘J×&Ñ& vÓ.ó0÷ ‘&˜Ÿ™Ÿ™Ó&ð	'ð r    r[   N)	rU   rV   rW   rX   rY   rµ   rL   rR   rZ   r[   r    r   r7   r7   û   s   † Ø€FØ€Eò!õ'r    r7   c                  óð   • [        U 5      nUS:X  a  [        U S   S9n[        U5      nX24$ U  Vs/ s H  n[        US9PM     nnU Vs/ s H  n[        U5      PM     nn[        U5      nX24$ s  snf s  snf )Nr
   r	   r0   )Úlenr]   ri   Úch_concatenate)ÚargsÚnÚr2Úr1ÚargrJ   s         r   r   r     s|   € ÜˆD‹	€AØˆAƒvÜ˜˜a™Ñ!ˆÜ˜2ÓˆØˆvˆá*.Ó/ª$ 3Œi˜#Ô©$ˆÐ/Ù(*Ó+ª 1Œm˜AÖ©ˆÐ+Ü˜BÓˆØˆvˆùò 0ùÚ+s   °A.Á	A3c                  óJ  • [        S5      R                  S5      n [        S[        [	        U 5      S   R
                  5      -   5        [        S[        [        R                  R	                  U R
                  5      S   5      -   5        Sn[        R                  R                  S5      U-  nUR                  S5      n[        [        R                  R	                  U R
                  U-   5      S   [        R                  R	                  U R
                  5      S   -
  5        [        [	        U 5      S   R                  U 5      R                  U5      5        [        [        R                  R	                  U R
                  5      S   5        [        [	        U 5      S   5        g )Néd   )é
   rÆ   zchumpy version: r
   zold version:g»½×Ùß|Û=r	   )Úch_random_randnr‚   ÚprintÚstrr   rJ   r`   ra   ÚrandomÚrandrO   r%   )ÚtmpÚepsÚdiffÚdiff_reshapeds       r   ÚmainrÐ   !  s$  € ä
˜#Ó
×
&Ñ
& wÓ
/€CÜ	Ð
œs¤7¨3£<°¡?×#4Ñ#4Ó5Ñ
5Ô6Ü	ˆ.œ3œrŸy™y×0Ñ0°·±Ó7¸Ñ:Ó;Ñ
;Ô<à
€CÜ�9‰9�>‰>˜#Ó Ñ$€DØ—L‘L Ó)€MÜ	Œ"�)‰)×
Ñ
˜CŸE™E -Ñ/Ó
0°Ñ
3´b·i±i×6GÑ6GÈÏÉÓ6NÈqÑ6QÑ
QÔRÜ	Œ'�#‹,�q‰/×
 Ñ
  Ó
%×
)Ñ
)¨$Ó
/Ô0ä	Œ"�)‰)×
Ñ
˜CŸE™EÓ
" 1Ñ
%Ô&Ü	Œ'�#‹,�q‰/Õr    Ú__main__)NN)r"   )r	   r
   )4Ú__doc__Ú__all__Únumpyr`   Úscipy.sparseÚsparser†   Úchr   r   Úch_opsr   r   Ú
ch_asarrayr   r   r   r   Ú
reorderingr   r¾   Ú	ch_randomr   rÇ   Úutilsr   r   ÚinspectÚexecÚjoinÚgetsourcelinesra   r   Úappendr   r   r<   r>   r]   ri   rs   rB   r5   r6   r7   r   r   r   r   r   rÐ   rU   r[   r    r   Ú<module>râ      s%  ðñò D€ã Ý ß Ý Ý )Ý #Ý !Ý 5Ý /ß ðØ€GÛÙˆ�‰�×'Ò'¨¯	©	×(;Ñ(;Ó<¸QÑ?Ó	@ÔAØ‡N�N�;Ôô!ô!ô%ô,1ˆ2ô 1ôJ2�ô 2ô�Bô ô;ˆ"ô ;ôˆ"ô ô0ˆ2ô ô6+Xˆ2ô +Xô\'ˆ2ô 'ð* 
€Ø	€Ø	€Ø€ò
òð ˆzÓÙ…Fð øðe ‰ús   ÁAD ÄD#