ó
    Û“,j·   ã                   ó¾   • S r SSKrSSKrSSKJr   " S S\R                  5      r\R                  " 5       R                  \5      r
\S:X  a  \R                  " 5         gg)zR
Author(s): Matthew Loper

See LICENCE.txt for licensing and contact information.
é    Né   )ÚChc                   óš   • \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  " \R                  S
:  S5      S 5       rSS jrSrg)Ú
TestLinalgé   c                 óB   • [         R                  R                  S5        g )Nr   )ÚnpÚrandomÚseed)Úselfs    Ú C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\chumpy/test_linalg.pyÚsetUpÚTestLinalg.setUp   s   € Ü
�	‰	�‰�qÕó    c                 ó¦  • SSK Jn  UR                  R                  S5      R	                  S5      n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   -
  nUR                  R                  U5      S   R                  U5      R                  U5      nXg-
  nU R                  [
        R                  " [
        R                  " U5      5      S:  5        [
        R                  R                  UR                  5      S   nUR                  R                  U5      S   n	X‰R                  -
  nU R                  [
        R                  " [
        R                  " U5      5      S:  5        g )Nr   )Úchéd   ©é
   r   g»½×Ùß|Û=çê-�™—q=r   )Ú r   r
   ÚrandnÚreshaper	   ÚrandÚlinalgÚslogdetÚrÚdr_wrtÚdotÚ
assertTrueÚmaxÚabs)
r   r   ÚtmpÚepsÚdiffÚdiff_reshapedÚgtÚpredÚsgn_gtÚsgn_preds
             r   Útest_slogdetÚTestLinalg.test_slogdet   sN  € ÝØ�i‰i�o‰o˜cÓ"×*Ñ*¨7Ó3ˆð ˆÜ�y‰y�~‰~˜cÓ" SÑ(ˆØŸ™ WÓ-ˆÜ�Y‰Y×Ñ˜sŸu™u ]Ñ2Ó3°AÑ6¼¿¹×9JÑ9JÈ3Ï5É5Ó9QÐRSÑ9TÑTˆØ�y‰y× Ñ  Ó% aÑ(×/Ñ/°Ó4×8Ñ8¸Ó>ˆð ‰yˆà�‰œŸšœrŸvšv d›|Ó,¨uÑ4Ô5ä—‘×"Ñ" 3§5¡5Ó)¨!Ñ,ˆØ—9‘9×$Ñ$ SÓ)¨!Ñ,ˆð Ÿ
™
Ñ"ˆØ�‰œŸšœrŸvšv d›|Ó,¨uÑ4Õ5r   c           
      ó  • SSK Jn  SS/SS/4nU GHr  nS GHg  n[        R                  R	                  [        R
                  " U5      5      S-
  R                  U5      nU(       a$  [        R                  R                  US   S5      nO"[        R                  R                  US   5      nU" XV5      u  pxpš[        R                   R                  XV5      u  p¼pÞU R                  [        R                  " [        R                  " UR                  U-
  5      5      S	:  5        [        U5      S:”  d  GM  U R                  [        R                  " [        R                  " UR                  U-
  5      5      S	:  5        GMj     GMu     g )
Nr   )Úlstsqr   é   )TFç      à?r   é   ç›+¡†›„=)r   r.   r	   r
   r   Úprodr   r   r    r!   r"   r   Úlen)r   r.   ÚshapesÚshapeÚb2dÚAÚbÚx1Ú
residuals1Úrank1Ús1Úx2Ú
residuals2Úrank2Ús2s                  r   Ú
test_lstsqÚTestLinalg.test_lstsq1   s  € Ý!à�q�'˜A˜r˜7Ð#ˆäˆEÜ"�Ü—Y‘Y—^‘^¤B§G¢G¨E£NÓ3°BÑ6×?Ñ?ÀÓF�ÞÜŸ	™	Ÿ™¨¨a©°Ó3‘AäŸ	™	Ÿ™¨¨a©Ó1�Aá,1°!«KÑ)� Ü,.¯I©I¯O©O¸AÓ,AÑ)� ð —‘¤§¢¤r§v¢v¨b¯d©d°2©g£Ó 7¸%Ñ ?Ô@Ü�z“? QÖ&Ø—O‘O¤B§F¢F¬2¯6ª6°*·,±,¸zÑ2IÓ+JÓ$KÈeÑ$S×Tô! #ò r   c                 ób  • SSK Jn  [        R                  R	                  S5      S-
  R                  S5      nU" U5      nU" UR                  5      n[        R                   R                  U5      n[        R                   R                  UR                  5      n[        R                  " [        R                  " UR                  U-
  5      5      S:  n[        R                  " [        R                  " UR                  U-
  5      5      S:  nU R                  U5        U R                  U5        g )Nr   )ÚPinvé   r0   )r/   é   r   )r   rE   r	   r
   r   r   ÚTÚpinvr!   r"   r   r    ÚchkdÚmtxÚpdbÚ	set_trace)r   rE   ÚdataÚpc_tallÚpc_wideÚpn_tallÚpn_wideÚtall_correctÚwide_correctÚpcrL   s              r   Ú	test_pinvÚTestLinalg.test_pinvL   sÌ   € Ý ä—	‘	—‘˜rÓ" 2Ñ%×.Ñ.¨vÓ6ˆÙ�t“*ˆÙ�t—v‘v“,ˆä—)‘)—.‘. Ó&ˆÜ—)‘)—.‘. §¡Ó(ˆä—v’vœbŸfšf W§Y¡Y°Ñ%8Ó9Ó:¸UÑBˆÜ—v’vœbŸfšf W§Y¡Y°Ñ%8Ó9Ó:¸UÑBˆð
 	�‰˜Ô%Ø�‰˜Ô%àr   c                 óò  • SSK Jn  SnSn[        R                  " [        R                  " S5      S-  S-   5      R                  S5      nUSS S 24   S	-  S-   USS S 24'   US S 2S4==   S
-  ss'   US S 2S
4==   S-  ss'   UR                  5       n[        R                   R                  USS9u  pVn[        U5      nUR                  R                  5       nUR                  5       U==   U-  ss'   [        R                   R                  USS9u  pšnU" US9u  pÍnX¦-
  U-  nUR                  U5      S S 2U4   nUU-  nU R                  [        R                  " [        R                  " US-
  5      5      S:  5        X·-
  U-  nUR                  U5      S S 2U4   R                  UR                  5      nUU-  nU R                  [        R                  " [        R                  " US-
  5      5      S:  5        X•-
  U-  nUR                  U5      S S 2U4   R                  UR                  5      nUU-  nU R                  [        R                  " [        R                  " US-
  5      5      S:  5        g )Nr   )ÚSvdçü©ñÒMbP?r   i,  r   )éÿÿÿÿr/   r/   r   r1   rG   F)Úfull_matrices)Úxg      ð?ç-Cëâ6?g{®Gáz„?)r   rY   r	   ÚsinÚaranger   ÚcopyÚsvdr   r   Úravelr   r    r!   r"   r6   )r   rY   r$   ÚidxrN   ÚuÚsÚvÚdata2Úu2rA   Úv2ÚsvduÚsvddÚsvdvÚdiff_empÚ	diff_predÚratios                     r   Útest_svdÚTestLinalg.test_svdh   s  € ÝØˆØˆä�vŠv”b—i’i “n SÑ(¨Ñ+Ó,×4Ñ4°VÓ<ˆØ˜š1˜‘I˜a‘K ‘NˆˆQŠqˆS‰	ØŠQˆqˆS‹	�Q‰‹	ØŠQˆqˆS‹	�Q‰‹	Ø�y‰y‹{ˆÜ—	‘	—‘˜d°%�Ð8‰ˆˆAÜ�$‹xˆØ—‘—‘“ˆØ�‰‹�cÓ˜cÑ!ÓÜ—9‘9—=‘= °e�=Ð<‰ˆˆbñ  ™;Ñˆ�Dð ‘D˜C‘<ˆØ—K‘K Ó%¢a¨ eÑ,ˆ	ð ˜9Ñ$ˆà�‰œŸšœrŸvšv e¨b¡jÓ1Ó2°TÑ9Ô:ð ‘F˜c‘>ˆØ—K‘K Ó%¢a¨ eÑ,×4Ñ4°X·^±^ÓDˆ	Ø˜9Ñ$ˆà�‰œŸšœrŸvšv e¨b¡jÓ1Ó2°TÑ9Ô:ð ‘F˜c‘>ˆØ—K‘K Ó%¢a¨ eÑ,×4Ñ4°X·^±^ÓDˆ	Ø˜9Ñ$ˆà�‰œŸšœrŸvšv e¨b¡jÓ1Ó2°TÑ9Õ:r   c           
      óP  • SSK Jn  [        [        R                  " S[        R
                  " S5      -  5      R                  S5      5      nU" U5      nUR                  U5      nSnUR                  R                  5       n[        R                  " [        R
                  " UR                  5      5      R                  UR                  5      U-  nXg-  nU" U5      n[        R                   R                  U5      [        R                   R                  UR                  5      -
  R                  5       n	U" U5      R                  U5      R                  UR                  5       5      n
U R                  [        R                   " [        R"                  " Xš-
  5      5      US-  :  5        U R                  [        R                   " [        R"                  " UR                  [        R                   R                  UR                  5      -
  5      R                  5       5      S:H  5        g )	Nr   )ÚDetr1   é	   ©r/   r/   çñhãˆµøä>r^   r   )r   rt   r   r	   r_   r`   r   r   r   ra   Úsizer6   Údetrc   r   r    r!   r"   )r   rt   Úmtx1Úmtx1_detÚdrr$   Úmtx2Ú
input_diffÚmtx2_detÚoutput_diff_empÚoutput_diff_preds              r   Útest_detÚTestLinalg.test_det“   sh  € Ýä”"—&’&˜œBŸIšI a›L™Ó)×1Ñ1°%Ó8Ó9ˆÙ�t“9ˆØ�_‰_˜TÓ"ˆàˆØ�v‰v�{‰{‹}ˆÜ—V’VœBŸIšI d§i¡iÓ0Ó1×9Ñ9¸$¿*¹*ÓEÈÑKˆ
ØÑˆÙ�t“9ˆäŸ9™9Ÿ=™=¨Ó.´·±·±¸t¿v¹vÓ1FÑF×MÑMÓOˆá˜t›9×+Ñ+¨DÓ1×5Ñ5°j×6FÑ6FÓ6HÓIÐð
 	�‰œŸšœrŸvšv oÑ&HÓIÓJÈSÐQUÉXÑUÔVØ�‰œŸšœrŸvšv h§j¡j´2·9±9·=±=ÀÇÁÓ3HÑ&HÓI×OÑOÓQÓRÐVWÑWÕXr   c           
      óP  • SSK Jn  [        [        R                  " S[        R
                  " S5      -  5      R                  S5      5      nU" U5      nUR                  U5      nSnUR                  R                  5       n[        R                  " [        R
                  " UR                  5      5      R                  UR                  5      U-  nXg-  nU" U5      n[        R                   R                  U5      [        R                   R                  UR                  5      -
  R                  5       n	U" U5      R                  U5      R                  UR                  5       5      n
U R                  [        R                   " [        R"                  " Xš-
  5      5      US-  :  5        U R                  [        R                   " [        R"                  " UR                  [        R                   R                  UR                  5      -
  5      R                  5       5      S:H  5        g )	Nr   ©ÚInvr1   ru   rv   rw   r^   r   ©r   r†   r   r	   r_   r`   r   r   r   ra   rx   r6   Úinvrc   r   r    r!   r"   ©r   r†   rz   Úmtx1_invr|   r$   r}   r~   Úmtx2_invr€   r�   s              r   Ú	test_inv1ÚTestLinalg.test_inv1¬   sh  € Ýä”"—&’&˜œBŸIšI a›L™Ó)×1Ñ1°%Ó8Ó9ˆÙ�t“9ˆØ�_‰_˜TÓ"ˆàˆØ�v‰v�{‰{‹}ˆÜ—V’VœBŸIšI d§i¡iÓ0Ó1×9Ñ9¸$¿*¹*ÓEÈÑKˆ
ØÑˆÙ�t“9ˆäŸ9™9Ÿ=™=¨Ó.´·±·±¸t¿v¹vÓ1FÑF×MÑMÓOˆÙ˜t›9×+Ñ+¨DÓ1×5Ñ5°j×6FÑ6FÓ6HÓIÐð
 	�‰œŸšœrŸvšv oÑ&HÓIÓJÈSÐQUÉXÑUÔVØ�‰œŸšœrŸvšv h§j¡j´2·9±9·=±=ÀÇÁÓ3HÑ&HÓI×OÑOÓQÓRÐVWÑWÕXr   c           	      óˆ  • SSK Jn  SnSn[        R                  R	                  S5      R                  S5      nUR                  5       nUR                  5       U==   U-  ss'   [        R                   R                  U5      [        R                   R                  U5      -
  U-  n[        U5      nU" U5      R                  U5      S S 2S4   R                  UR                  5      nU R                  [        R                  " [        R                  " UR                  5       UR                  5       -
  5      5      S:  5        g )Nr   r…   g:Œ0âŽyE>é   r   r   r^   )r   r†   r	   r
   r   r   ra   rc   rˆ   r   r   r6   r    r!   r"   )r   r†   r$   rd   rz   r}   rn   ro   s           r   Ú	test_inv2ÚTestLinalg.test_inv2Â   sã   € ÝàˆØˆä�y‰y�~‰~˜cÓ"×*Ñ*¨7Ó3ˆØ�y‰y‹{ˆØ�
‰
‹�SÓ˜SÑ Óä—I‘I—M‘M $Ó'¬"¯)©)¯-©-¸Ó*=Ñ=ÀÑDˆä�$‹xˆÙ˜“I×$Ñ$ TÓ*ª1¨R¨4Ñ0×8Ñ8¸¿¹ÓHˆ	ð 	�‰œŸšœrŸvšv i§o¡oÓ&7¸¿¹Ó8HÑ&HÓIÓJÈTÑQÕRr   z1.8z<broadcasting for matrix inverse not supported in numpy < 1.8c           
      óŠ  • SSK Jn  [        [        R                  " S[        R
                  " S5      -  5      R                  S5      5      nU" U5      nUR                  U5      nSnUR                  R                  5       n[        R                  " [        R
                  " UR                  5      5      R                  UR                  5      U-  nXg-  nU" U5      n[        R                   R                  U5      [        R                   R                  UR                  5      -
  R                  5       n	U" U5      R                  U5      R                  UR                  5       5      n
U R                  [        R                   " [        R"                  " U	R                  5       U
R                  5       -
  5      5      US-  :  5        U R                  [        R                   " [        R"                  " UR                  [        R                   R                  UR                  5      -
  5      R                  5       5      S:H  5        g	)
z*Test linalg.inv with broadcasting support.r   r…   r1   rF   )r/   r1   r1   rw   rZ   r   Nr‡   r‰   s              r   Ú	test_inv3ÚTestLinalg.test_inv3Õ   s‚  € õ
 	 ä”"—&’&˜œBŸIšI b›MÑ)Ó*×2Ñ2°7Ó;Ó<ˆÙ�t“9ˆØ�_‰_˜TÓ"ˆàˆØ�v‰v�{‰{‹}ˆÜ—V’VœBŸIšI d§i¡iÓ0Ó1×9Ñ9¸$¿*¹*ÓEÈÑKˆ
ØÑˆÙ�t“9ˆäŸ9™9Ÿ=™=¨Ó.´·±·±¸t¿v¹vÓ1FÑF×MÑMÓOˆÙ˜t›9×+Ñ+¨DÓ1×5Ñ5°j×6FÑ6FÓ6HÓIÐð
 	�‰œŸšœrŸvšv o×&;Ñ&;Ó&=Ð@P×@VÑ@VÓ@XÑ&XÓYÓZÐ]`ÐaeÑ]eÑeÔfØ�‰œŸšœrŸvšv h§j¡j´2·9±9·=±=ÀÇÁÓ3HÑ&HÓI×OÑOÓQÓRÐVWÑWÕXr   c                 óî  • UR                   n [        R                  R                  UR                  5      S-
  R                  UR                  5      nUR                  U5      nXEU-  -
  Ul         UR                  nXEU-  -   Ul         UR                  nX‡-
  US-  -  n	UR                  UR                  5       5      R                  U	R                  5      n
[        Xš-  5        [        Xš-
  5        XBl         g )Nr0   g       @)r]   r	   r
   r   rx   r   r6   Úzerosrc   r   r   r   Úprint)r   ÚobjÚparmr$   Ú	backed_upr%   r|   Úr_lowerÚr_upperrn   ro   s              r   rJ   ÚTestLinalg.chkdï   sÇ   € Ø—F‘Fˆ	àÜ—I‘I—N‘N 4§9¡9Ó-¨bÑ0×9Ñ9¸$¿*¹*ÓEˆDð
 �Z‰Z˜Óˆà #™XÑ%ˆŒØ—%‘%ˆà #™XÑ%ˆŒØ—%‘%ˆàÑ%¨#¨b©&Ñ1ˆØ—F‘F˜4Ÿ:™:›<Ó(×0Ñ0°·±Ó@ˆ	ô 	ˆhÑ"Ô#ÜˆhÑ"Ô#à�r   © N)r2   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r+   rB   rV   rq   r‚   rŒ   r�   ÚunittestÚskipIfr	   Ú__version__r“   rJ   Ú__static_attributes__rž   r   r   r   r      sc   † òò6ò4Uò6(ò8(;òVYò2Yò,Sð& ‡_‚_�R—^‘^ eÑ+ØSóUñYóUðY÷0r   r   Ú__main__)Ú__doc__Únumpyr	   r£   r   r   ÚTestCaser   Ú
TestLoaderÚloadTestsFromTestCaseÚsuiterŸ   Úmainrž   r   r   Ú<module>r¯      s[   ðñó Û å ô
w�×"Ñ"ô wðv 	×ÒÓ×3Ñ3°JÓ?€àˆzÓØ‡M‚M…Oð r   