Ë
    qwjŒ«  ã                   óô  — d Z ddlZddlZddlZddlZddlmZmZmZ ddl	m
Z
mZmZmZmZ ddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  ddlm!Z! ddl"m#Z# ddl$m%Z% ddl&Zdd	lm'Z' dd
l(m)Z) d„ Z* G d„ d«      Z+ G d„ d«      Z, G d„ d«      Z- G d„ d«      Z. G d„ d«      Z/ G d„ d«      Z0d„ Z1d„ Z2d„ Z3 G d„ d«      Z4 G d„ d«      Z5ejl                  jo                  deeeg«      d „ «       Z8d!„ Z9y)"z, Test functions for linalg.matfuncs module

é    N)ÚarrayÚidentityÚsqrt)Úassert_array_almost_equalÚassert_allcloseÚassert_Úassert_array_lessÚassert_array_equal)ÚfunmÚsignmÚlogmÚsqrtmÚfractional_matrix_powerÚexpmÚexpm_frechetÚ	expm_condÚnormÚ
khatri_raoÚcosmÚsinmÚtanmÚcoshmÚsinhmÚtanhm)Ú_matfuncs_inv_ssq)Úpick_pade_structure)ÚLogmExactlySingularWarning)ÚLinAlgWarning)Úminimizec                  óT   — t        j                  g d¢g d¢g d¢g d¢gt        ¬«      } | S )aW  
    Return the test matrix from Experiment (1) of [1]_.

    References
    ----------
    .. [1] Awad H. Al-Mohy and Nicholas J. Higham (2012)
           "Improved Inverse Scaling and Squaring Algorithms
           for the Matrix Logarithm."
           SIAM Journal on Scientific Computing, 34 (4). C152-C169.
           ISSN 1095-7197

    )g3d’‘³Ô?ç     LÝ@r!   r!   )r   gRal!ÈAÓ?r!   r!   )r   r   g“©‚QI�Ô?r!   )r   r   r   gÝ^Ò­Ó?©Údtype)Únpr   Úfloat)ÚAs    úe/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_matfuncs.pyÚ%_get_al_mohy_higham_2012_experiment_1r(      s/   € ô 	�‰Ú"Ú ÚÚð	ô &+ô		,€Að
 €Hó    c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú	TestSignMc                 óš   — t        g d¢g d¢g d¢g d¢g d¢g«      }t        g d¢g d¢g d¢g d	¢g d
¢g«      }t        |«      }t        ||«       y )N©g333333=@g3333338Àg     `Q@gfffffæH@g      @©gffffff"ÀgÍÌÌÌÌÌ@ç      2ÀgÍÌÌÌÌÌ0Àç       À©g      $Àg      @g      4Àr/   r0   ©g333333#Àg333333#@g     €9ÀgÍÌÌÌÌÌ.Àr0   ©gš™™™™™#@g333333Àg      2@g3333332@ç       @)gŸ´ªæ'@çÀ'RqöÀgÂ�¤ƒy¢.@g�¼eÚ@§5@r5   )g@¢èÈ½Àç˜UÐ›'êß?gëò9¹×\Àgçœ+Œ%¿Àr6   )gR¸…ëQÀçìQ¸…ëá?g®Gáz®ÀgffffffÀr7   )g¥×¨#Àç´w?Ã®ð?gÀk#àeÀgC,î�NÀr8   )gà®ý¡@ç4Õ2ì
à¿gÆF(£@gcÔsÚ@@r9   )r   r   r   )ÚselfÚaÚcrÚrs       r'   Ú	test_nilszTestSignM.test_nils4   sW   € ÜÒ0Ú0Ú.Ú1Ú-ð	/ó 0ˆô
 ÒQÚOÚ0ÚOÚNð	Pó Qˆô
 �!‹HˆÜ! ! BÕ'r)   c                 óH   — t        g d¢g d¢g d¢g d¢g«      }t        |«       y )N)ç        é   r   r   )rA   r   rA   r   ©r   r   r   rA   )r   r   rA   r   ©r   r   ©r:   r;   s     r'   Útest_defective1zTestSignM.test_defective1B   s   € Ü’;šyª²9Ð=Ó>ˆÜˆa�r)   c                 óN   — t        g d¢g d¢g d¢g d¢g d¢f«      }t        |«       y )Nr-   r.   r1   r2   r3   rC   rD   s     r'   Útest_defective2zTestSignM.test_defective2G   s)   € ÜÚ&Ú'Ú(Ú'Ú$ð&ó 'ˆô 	ˆa�r)   c           
      óZ   — t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |«       y )N©r0   ç      9@r@   r@   r@   r@   r@   ©r@   ç      Àç      $@ç      @rN   rN   r@   ©r@   r@   r4   ç      .@rN   rN   r@   ©r@   r@   r@   r@   rP   rN   r@   ©r@   r@   r@   r@   rN   rM   r@   ©r@   r@   r@   r@   r@   r0   rJ   ©r@   r@   r@   r@   r@   r@   rL   rC   rD   s     r'   Útest_defective3zTestSignM.test_defective3Q   s/   € ÜÒ1Ú1Ú0Ú0Ú0Ú1Ú0ð2ó 3ˆô 	ˆa�r)   N)Ú__name__Ú
__module__Ú__qualname__r>   rE   rG   rU   © r)   r'   r+   r+   2   s   „ ò(òò
ór)   r+   c            	       óö  — e Zd Zej                  j                  d«      d„ «       Zej                  j                  d«      d„ «       Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zej                  j%                  d¬«      ej                  j'                  deeej.                  eej2                  g«      d„ «       «       Zej                  j'                  deeej.                  eej2                  g«      d„ «       Zy)ÚTestLogMz$ignore:.*inaccurate.*:RuntimeWarningc           
      ó‚   — t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        d«      d	z  d
z   |z
  }t        |«       y )NrI   rK   rO   rQ   rR   rS   rT   é   gÍÌÌÌÌÌ@y                )r   r   r   )r:   r;   Úms      r'   r>   zTestLogM.test_nils^   sF   € äÒ1Ú1Ú0Ú0Ú0Ú1Ú0ð2ó 3ˆô �a‹[˜‰_˜RÑ Ñ"ˆÜˆQ�r)   c                 ób   — t        «       }t        |«      }t        |«      }t        ||dd¬«       y )Ng-Cëâ6
?ç›+¡†›„=©ÚrtolÚatol)r(   r   r   r   )r:   r&   ÚA_logmÚA_round_trips       r'   Ú*test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmk   s,   € ô 2Ó3ˆÜ�a“ˆÜ˜F“|ˆÜ˜ a¨d¸Ö?r)   c                 ó¨   — t        «       }t        |t        j                  «      }t	        |«      }t        t        j                  ||dd¬«       «       y )Nçñhãˆµøä>r`   ra   )r(   r   r$   Úlogr   r   Úallclose)r:   r&   Ú
A_funm_logre   s       r'   Ú.test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logt   s?   € ô 2Ó3ˆÜ˜!œRŸV™V“_ˆ
Ü˜JÓ'ˆÜ”B—K‘K ¨a°dÀÔGÐGÕHr)   c                 ó"  — t         j                  j                  d«      }t        dd«      D ]Õ  }|j	                  ||f¬«      }t        j
                  ddd«      D ]¥  }||z  }t         j                  j                  |«      }d|› d	|› �}t        |«      }||z  }	t        |	|«       t        j                  «       5  t        j                  d
t        «       t        |«      }
t        |
«      }t        |||¬«       d d d «       Œ§ Œ× y # 1 sw Y   Œ´xY w)Nì   >gO*31 rA   é   ©Úsizeéüÿÿÿé   é	   zM:z eivals:Úignore)Úerr_msg)r$   ÚrandomÚdefault_rngÚrangeÚuniformÚlogspaceÚlinalgÚeigvalsr   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   r   )r:   ÚrngÚnÚ
M_unscaledÚscaleÚMÚWrv   ÚM_sqrtmÚM_sqrtm_round_tripÚM_logmÚM_logm_round_trips               r'   Útest_round_trip_random_floatz%TestLogM.test_round_trip_random_float|   sô   € Ü�i‰i×#Ñ#Ð$4Ó5ˆÜ�q˜!–ˆAØŸ™¨1¨a¨&˜Ó1ˆJÜŸ™ R¨¨AÖ.�Ø Ñ&�ô —I‘I×%Ñ% aÓ(�Ø˜q˜c ¨!¨Ð-�ô   ›(�Ø%,¨wÑ%6Ð"ÜÐ 2°AÔ6ô ×,Ñ,Õ.Ü×)Ñ)¨(´NÔCä! !›W�FÜ(,¨V«Ð%Ü#Ð$5°qÀ'ÕJ÷ /Ð.ñ /ñ ÷ /Ð.ús   Â9?DÄDc                 ó>  — t         j                  j                  d«      }t        dd«      D ]o  }|j	                  ||f«      d|j	                  ||f«      z  z   }t        j
                  ddd«      D ])  }||z  }t        |«      }t        |«      }t        ||«       Œ+ Œq y )Nrn   rA   ro   ù              ð?rr   rs   rt   )	r$   rw   rx   ry   Ústandard_normalr{   r   r   r   )r:   r‚   rƒ   r„   r…   r†   rŠ   ÚM_round_trips           r'   Útest_round_trip_random_complexz'TestLogM.test_round_trip_random_complex”   s”   € Ü�i‰i×#Ñ#Ð$4Ó5ˆÜ�q˜!–ˆAØ×-Ñ-¨q°!¨fÓ5Ø˜S×0Ñ0°!°Q°Ó8Ñ8ñ9ˆJäŸ™ R¨¨AÖ.�Ø Ñ&�Ü˜a›�Ü# F›|�Ü ¨aÕ0ñ	 /ñ r)   c                 ót  — d}ddgddggddgddggddgddggddgddggfD �]  }t         j                  j                  |«      }t        t	        d„ |D «       «       «       t        j                  |t        ¬«      }t        |«      }t        |j                  j                  |v«       t        j                  |t        ¬«      }t        |«      }t        |j                  j                  |v «       t        j                  |t        ¬«       }t        |«      }t        |j                  j                  |v «       �Œ y )N©ÚFÚDÚGrA   r   é   é   c              3   óV   K  — | ]!  }|j                   xs |j                  d k  –— Œ# y­w©r   N©ÚimagÚreal©Ú.0Úws     r'   Ú	<genexpr>zFTestLogM.test_logm_type_preservation_and_conversion.<locals>.<genexpr>¬   ó%   è ø€ Ð<¹!°Q˜AŸF™FÒ0 a§f¡f¨q¡jÓ0¹!ùó   ‚')r"   )Úscipyr|   r}   r   Úanyr$   r   r%   r   r#   ÚcharÚcomplex)r:   Úcomplex_dtype_charsÚmatrix_as_listr‡   r&   rd   s         r'   Ú*test_logm_type_preservation_and_conversionz3TestLogM.test_logm_type_preservation_and_conversionŸ   s  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ô	"ˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¹!Ó<Ó<Ð<Ô=ô —‘˜¬uÔ5ˆAÜ˜!“WˆFÜ�F—L‘L×%Ñ%Ð-@Ð@ÔAô —‘˜¬wÔ7ˆAÜ˜!“WˆFÜ�F—L‘L×%Ñ%Ð)<Ð<Ô=ô —‘˜.´Ô6Ð6ˆAÜ˜!“WˆFÜ�F—L‘L×%Ñ%Ð)<Ð<Ö=ñ/"r)   c                 óÈ  — g d¢g d¢g d¢g}t         t        fD ]È  }t        j                  ||¬«      }t        j
                  j                  |«      }t        dt        j                  |j                  «      j                  «       k  «       t        |«      }t        t        j                  |j                  t        j                  «      «       t        t!        |«      |«       ŒÊ y )N)rA   rA   r—   )r—   rA   rA   )rA   r—   rA   r"   ç{®Gáz„?)r%   r§   r$   r   r¤   r|   r}   r   Úabsoluterœ   Úsumr   Ú
issubdtyper#   Úinexactr   r   )r:   r†   ÚdtÚXr    ÚYs         r'   Útest_complex_spectrum_real_logmz(TestLogM.test_complex_spectrum_real_logm½   s—   € ò š	¢9Ð-ˆÜœ“.ˆBÜ—‘˜ "Ô%ˆAÜ—‘×$Ñ$ QÓ'ˆAÜ�Dœ2Ÿ;™; q§v¡vÓ.×2Ñ2Ó4Ñ4Ô5Ü�Q“ˆAÜ”B—M‘M !§'¡'¬2¯:©:Ó6Ô7ÜœD ›G QÕ'ñ !r)   c                 ó  — ddgddggddgddggfD ]o  }t         t        fD ]^  }t        j                  ||¬«      }t	        |«      \  }}t        t        j                  |j                  t        j                  «      «       Œ` Œq y )NrA   r   éÿÿÿÿr"   )	r%   r§   r$   r   r   r   r¯   r#   Úcomplexfloating)r:   r†   r±   r&   rd   Úinfos         r'   Útest_real_mixed_sign_spectrumz&TestLogM.test_real_mixed_sign_spectrumÉ   sz   € ð �Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð ó"ˆAô œW“n�Ü—H‘H˜Q bÔ)�Ü# A›w‘�˜ÜœŸ™ f§l¡l´B×4FÑ4FÓGÕHñ %ñ"r)   c                 óf  — t        j                  ddgddgg«      }t        j                  ddgddgg«      }||j                  ||j                  fD ]R  }t	        j
                  t        j                  «      5  t        |«      }d d d «       t        «      }t        ||d¬«       ŒT y # 1 sw Y   Œ%xY w)Nr   rŽ   rA   r`   ©rc   )r$   r   ÚasarrayÚTÚpytestÚwarnsr   r   r   r   r   )r:   r&   ÚBr†   ÚLÚEs         r'   Útest_exactly_singularzTestLogM.test_exactly_singularÔ   s�   € Ü�H‰H�q˜!�f˜r 2˜hÐ'Ó(ˆÜ�J‰J˜˜A˜  A Ð'Ó(ˆØ�A—C‘C˜˜AŸC™C“ˆAÜ—‘Ô/×JÑJÕKÜ˜“G�÷ Lä�Q“ˆAÜ˜A˜q uÖ-ñ	  ßKÐKús   Á7B'Â'B0	c                 óê   — t        j                  dgg«      }t        j                  t        j
                  «      5  t        |«      }d d d «       t        «      }t        ||d¬«       y # 1 sw Y   Œ#xY w)Ng0Žä.ÿ++r`   r»   )	r$   r   r¾   r¿   r   ÚLogmNearlySingularWarningr   r   r   )r:   r†   rÁ   rÂ   s       r'   Útest_nearly_singularzTestLogM.test_nearly_singularÝ   sU   € Ü�H‰H�v�h�ZÓ ˆÜ�\‰\Ô+×EÑEÕFÜ�Q“ˆA÷ Gä�‹GˆÜ˜˜1 5Ö)÷ GÐFús   »A)Á)A2c                 ó€  — ddgddgg}dt         j                  dz  gt         j                   dz  dgg}t        t        |«      |d¬«       t        t	        |«      |d¬«       ddgdd	gg}dt         j                  z  dz  d
t         j                  z  gdd	t         j                  z  dz  gg}t        t        |«      |d¬«       t        t	        |«      |d¬«       ddgdd	gg}dt         j                  z  dz  dgdd	t         j                  z  dz  gg}t        t        |«      |d¬«       t        t	        |«      |d¬«       y )Nr   rA   r¶   ç      à?r`   r»   rŽ   rs   ù       €      ð¿r—   )r$   Úpir   r   r   )r:   rÂ   rÁ   s      r'   Ú&test_opposite_sign_complex_eigenvaluesz/TestLogM.test_opposite_sign_complex_eigenvaluesä   s  € à�ˆV�b˜!�WÐˆØ”—‘�s‘ˆ^œrŸu™u˜f S™j¨!˜_Ð-ˆÜœ˜Q› ¨Õ/Üœ˜Q› ¨Õ/Ø�!ˆW�q˜#�hÐˆØ”—‘‰h�s‰l˜AœbŸe™e™GÐ$ q¨#¬b¯e©e©)°C©-Ð&8Ð9ˆÜœ˜Q› ¨Õ/Üœ˜Q› ¨Õ/Ø�!ˆW�q˜#�hÐˆØ”—‘‰h�s‰l˜AÐ  C¬¯©¡I¨c¡MÐ 2Ð3ˆÜœ˜Q› ¨Õ/Üœ˜Q› ¨Ö/r)   c                 óš   — d}t        j                  ||f«      t        j                  |«      z   }d|j                  _        t        |«       y )Né   F)r$   Úonesr   ÚflagsÚ	writeabler   ©r:   rƒ   r;   s      r'   Útest_readonlyzTestLogM.test_readonlyó   s8   € ØˆÜ�G‰G�Q˜�F‹OœbŸk™k¨!›nÑ,ˆØ!ˆ�‰ÔÜˆQ�r)   z6ValueError: attempt to get argmax of an empty sequence©Úreasonr±   c                 óä   — t        j                  d|¬«      }t        |«      }t        j                  d|¬«      }t        |«      }|j                  dk(  sJ ‚|j
                  |j
                  k(  sJ ‚y ©N©r   r   r"   r—   )r$   Úemptyr   ÚeyeÚshaper#   )r:   r±   r;   Úlog_aÚa0Úlog_a0s         r'   Ú
test_emptyzTestLogM.test_emptyù   s^   € ô �H‰H�V 2Ô&ˆÜ�Q“ˆÜ�V‰V�A˜RÔ ˆÜ�b“ˆà�{‰{˜fÒ$Ð$Ð$Ø�{‰{˜fŸl™lÒ*Ð*Ñ*r)   r#   c                 ó   — t        j                  t        d¬«      5  t        j                  t        «      5  t	        t        j                  d|¬«      «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nzlogm result may be inaccurate)Úmatch©r—   r—   r"   )r¾   r¿   r�   r   r   r$   Úzeros)r:   r#   s     r'   Útest_no_ZeroDivisionErrorz"TestLogM.test_no_ZeroDivisionError  sR   € ô
 �l‰lœ>Ð1PÖQÜ�l‰lÔ5Õ6Ü”—‘˜&¨Ô.Ô/÷ 7÷ RÐQß6Ð6ú÷ RÐQús"   œA4¶!A(ÁA4Á(A1	Á-A4Á4A=N)rV   rW   rX   r¾   ÚmarkÚfilterwarningsr>   rf   rl   rŒ   r‘   rª   r´   r¹   rÃ   rÆ   rË   rÒ   ÚxfailÚparametrizeÚintr%   r$   Úfloat32r§   Ú	complex64rÞ   rã   rY   r)   r'   r[   r[   ]   s  „ Ø‡[�[×ÑÐ FÓGñ	ó Hð	ð ‡[�[×ÑÐ FÓGñ@ó Hð@òIòKò0	1ò>ò<
(ò	Iò.ò*ò0òð ‡[�[×ÑÐVÐÓWØ‡[�[×Ñ˜T C¨°·
±
¸GÀRÇ\Á\Ð#RÓSñ+ó Tó Xð+ð ‡[�[×Ñ˜W s¨E°2·:±:¸wÈÏÉÐ&UÓVñ0ó Wñ0r)   r[   c                   ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z		 d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej.                  j1                  deeej8                  eej<                  g«      d„ «       Zd„ Z d„ Z!d„ Z"y)Ú	TestSqrtMc                 ó  — t         j                  j                  d«      }t        dd«      D ]^  }|j	                  ||f«      }t        j
                  ddd«      D ]/  }||z  }t        |«      }|j                  |«      }t        ||«       Œ1 Œ` y )Nl   ¿&Û\31 rA   ro   rr   rs   rt   ©	r$   rw   rx   ry   r�   r{   r   Údotr   ©r:   r‚   rƒ   r„   r…   r†   rˆ   r‰   s           r'   rŒ   z&TestSqrtM.test_round_trip_random_float  s   € Ü�i‰i×#Ñ#Ð$4Ó5ˆÜ�q˜!–ˆAØ×,Ñ,¨a°¨VÓ4ˆJÜŸ™ R¨¨AÖ.�Ø Ñ&�Ü ›(�Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÕ6ñ	 /ñ r)   c                 óJ  — t         j                  j                  d«      }t        dd«      D ]u  }|j	                  ||f«      d|j	                  ||f«      z  z   }t        j
                  ddd«      D ]/  }||z  }t        |«      }|j                  |«      }t        ||«       Œ1 Œw y )Nl   À&Û\31 rA   ro   rŽ   rr   rs   rt   rî   rð   s           r'   r‘   z(TestSqrtM.test_round_trip_random_complex  s›   € Ü�i‰i×#Ñ#Ð$4Ó5ˆÜ�q˜!–ˆAØ×-Ñ-¨q°!¨fÓ5Ø˜s×2Ñ2°A°q°6Ó:Ñ:ñ;ˆJäŸ™ R¨¨AÖ.�Ø Ñ&�Ü ›(�Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÕ6ñ	 /ñ r)   c                 óÜ   — d}t        |«      }t        g d¢d|ddgdd|dgg d¢g«      }t        g d¢d|ddgdd|dgg d¢g«      }t        ||z  |«       t        |«      }t        ||z  |«       y )Ng       ?)ç      ð?r   r   rA   r   rB   )rA   r   r   rÈ   )r   r   r   r   )r:   ÚeÚser;   ÚsaÚesas         r'   Útest_badzTestSqrtM.test_bad%  s�   € àˆÜ�!‹WˆÜ’;Ø�a˜˜!�9Ø�a˜˜!�9Úðó ˆô ’KØ�r˜!˜A�JØ�q˜˜A�JÚðó  ˆô 	" " r¡'¨1Ô-ä�A‹hˆÜ! #¨¡)¨QÕ/r)   c                 ó
  — d}ddgddggddgddggddgddggddgddggddgddggfD �]K  }t         j                  j                  |«      }t        t	        d„ |D «       «       «       t        j                  «       5  t        j                  dt        «       t        j                  |t        ¬«      }t        |«      }t        |j                  j                  |v«       t        j                  |t        ¬«      }t        |«      }t        |j                  j                  |v «       t        j                  |t        ¬«       }t        |«      }t        |j                  j                  |v «       d d d «       �ŒN y # 1 sw Y   �ŒZxY w)	Nr“   rA   r   r—   r˜   c              3   óV   K  — | ]!  }|j                   xs |j                  d k  –— Œ# y­wrš   r›   rž   s     r'   r¡   zHTestSqrtM.test_sqrtm_type_preservation_and_conversion.<locals>.<genexpr>D  r¢   r£   ru   r"   )r¤   r|   r}   r   r¥   r~   r   r€   r   r$   r   r%   r   r#   r¦   r§   ©r:   r¨   r©   r‡   r&   ÚA_sqrtms         r'   Ú+test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion6  s]  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ô"ˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¹!Ó<Ó<Ð<Ô=ô ×(Ñ(Õ*Ü×%Ñ% h´Ô>ô —H‘H˜^´5Ô9�Ü ›(�Ü˜Ÿ™×*Ñ*Ð2EÐEÔFô —H‘H˜^´7Ô;�Ü ›(�Ü˜Ÿ™×*Ñ*Ð.AÐAÔBô —X‘X˜n´EÔ:Ð:�Ü ›(�Ü˜Ÿ™×*Ñ*Ð.AÐAÔB÷! +Ñ*ñ"÷ +Ñ*ús   Á;C1E8Å8F	c                 óÖ  — d}ddgddggddgddggg d¢g d¢g d¢gfD ]Ê  }t         j                  j                  |«      }t        t	        d„ |D «       «      «       t        j                  |t        ¬	«      }t        |«      }t        |j                  j                  |v «       t        j                  |t        ¬	«      }t        |«      }t        |j                  j                  |v «       ŒÌ y )
Nr“   rA   r   r¶   ©r   rA   r   )r   r   r¶   ©rA   r   r   c              3   óV   K  — | ]!  }|j                   xs |j                  d k  –— Œ# y­wrš   r›   rž   s     r'   r¡   zVTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>b  ó%   è ø€ Ð8±a°˜Ÿ™Ò, !§&¡&¨1¡*Ó,±aùr£   r"   )r¤   r|   r}   r   r¥   r$   r   r§   r   r#   r¦   r%   rû   s         r'   Ú9test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumzCTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumY  sÍ   € Ø-Ðà�Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð ÚšJª	Ð2ó4ˆNô —‘×$Ñ$ ^Ó4ˆAÜ”CÑ8±aÓ8Ó8Ô9ô —‘˜¬wÔ7ˆAÜ˜A“hˆGÜ�G—M‘M×&Ñ&Ð*=Ð=Ô>ô —‘˜¬uÔ5ˆAÜ˜A“hˆGÜ�G—M‘M×&Ñ&Ð*=Ð=Õ>ñ#4r)   c                 ó¸   — t        «       }t        |«      }||z  }t        ||d¬«       t        t        j                  |«      t        j                  |«      «       y )Nrh   ©rb   )r(   r   r   r$   Útril)r:   r&   rü   re   s       r'   Ú%test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1n  sD   € ä1Ó3ˆÜ˜“(ˆØ Ñ(ˆÜ˜ a¨dÕ3ÜœŸ™ Ó-¬r¯w©w°q«zÕ:r)   c                 ó  — t         t        fD ]ä  }t        j                  g d¢g d¢g d¢g d¢g|¬«      }t	        j
                  «       5  t	        j                  dt        «       t        |«      }t        t        j                  |«      t        j                  d«      «       t        j                  |«      j                  «       sJ ‚t        j                  |«      j                  «       sJ ‚	 d d d «       Œæ y # 1 sw Y   ŒñxY w)N)r   r˜   r   r   )r   r   r˜   r   )r   r   r   r˜   ©r   r   r   r   r"   ru   )rs   rs   )rè   r%   r$   r   r~   r   r€   r   r   r   r  râ   Úisnanr¥   Úisinf)r:   r±   r&   rü   s       r'   Útest_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangularv  sÀ   € ô ”u“*ˆBÜ—‘ÚÚÚÚð	ð &(ô	)ˆAô
 ×(Ñ(Õ*Ü×%Ñ% h´Ô>ä ›(�Ü¤§¡¨Ó 0´"·(±(¸6Ó2BÔCÜ—x‘x Ó(×,Ñ,Ô.Ð.Ð.Ü—x‘x Ó(×,Ñ,Ô.Ð.Ñ.÷ +Ð*ñ ÷ +Ð*ús   ÁB"C5Ã5C>	c                 ó–   — ddgddgg}ddgddgg}t        t        j                  ||«      |d¬	«       t        t        |«      |d¬	«       y )
Nù               @rs   r   ù       €       Àù      ð?      ð?r—   ù      ð?      ð¿r`   r»   )r   r$   rï   r   ©r:   r†   ÚRs      r'   rË   z0TestSqrtM.test_opposite_sign_complex_eigenvaluesž  sL   € Ø�!ˆW�q˜#�hÐˆØ�AˆY˜˜D˜	Ð"ˆÜœŸ™˜q !› a¨eÕ4Üœ˜a› !¨%Ö0r)   c                 ó®  — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  t        d«      ddt        d«      gg d¢g d¢t        d«      ddt        d«      gg«      }t        ||z  |d¬«       t	        j
                  «       5  t	        j                  dt        «       t        t        |«      |d¬«       d d d «       y # 1 sw Y   y xY w)N)rA   r   r   rA   r	  rÈ   r   r`   r»   ru   )	r$   r   r   r   r~   r   r€   r   r   r  s      r'   Útest_gh4866zTestSqrtM.test_gh4866¤  s¬   € Ü�H‰H’lÚ"Ú"Ú"ð$ó %ˆô �H‰H”t˜C“y ! Q¬¨S«	Ð2Ú"Ú"Ü˜C“y ! Q¬¨S«	Ð2ð4ó 5ˆô 	˜˜A™˜q uÕ-Ü×$Ñ$Õ&Ü×!Ñ! (¬MÔ:äœE !›H a¨eÕ4÷ '×&Ñ&ús   Â2CÃCc                 óL  — t        j                  g d¢«      }t        j                  t        d«      ddg«      }t        ||z  |d¬«       t	        j
                  «       5  t	        j                  dt        ¬«       t        t        |«      |d¬«       d d d «       y # 1 sw Y   y xY w)	N)r—   rA   r   r—   rA   r   r`   r»   ru   ©Úcategory)	r$   Údiagr   r   r~   r   rå   r   r   r  s      r'   Útest_gh5336zTestSqrtM.test_gh5336³  sp   € Ü�G‰G’IÓˆÜ�G‰G”T˜!“W˜a �OÓ$ˆÜ˜˜A™˜q uÕ-Ü×$Ñ$Õ&Ü×#Ñ# H´}ÕEÜœE !›H a¨eÕ4÷ '×&Ñ&ús   Á3BÂB#c                 ó  — t        j                  d«      }t        j                  d«      }t        j                  «       5  t        j                  dt
        ¬«       t        t        |«      |d¬«       d d d «       y # 1 sw Y   y xY w)Nrá   ru   r  r`   r»   )r$   râ   r~   r   rå   r   r   r   r  s      r'   Útest_gh7839zTestSqrtM.test_gh7839»  sV   € Ü�H‰H�VÓˆÜ�H‰H�VÓˆä×$Ñ$Õ&Ü×#Ñ# H´}ÕEäœE !›H a¨eÕ4÷ '×&Ñ&ús   ¿3A;Á;Bc                 ó¼   — t        j                  d«      }|j                  d«       t        j                  |d«       t        j                  t        |«      «      sJ ‚y )N)é   r  g®Gázî?rA   )r$   rØ   ÚfillÚfill_diagonalÚ	isrealobjr   ©r:   r†   s     r'   Útest_gh17918zTestSqrtM.test_gh17918Ä  sA   € Ü�H‰H�XÓˆØ	�‰ˆtŒÜ
×Ñ˜˜AÔÜ�|‰|œE !›HÔ%Ð%Ñ%r)   c                 óê   — t        j                  g d¢g d¢g d¢g«      }t        |«      }t        ||z  |d¬«       t        |j	                  t         j
                  «      «      }t        ||z  |d¬«       y )N)ró   r@   r@   )r   rA   rÉ   )r   rŽ   r—   r`   r»   g�íµ ÷Æ°>)r$   r   r   r   Úastyperê   )r:   r†   Úsqs      r'   Útest_gh23278zTestSqrtM.test_gh23278Ê  sW   € Ü�H‰H’l¢K²Ð<Ó=ˆÜ�1‹XˆÜ˜˜R™ ¨Õ/Ü�1—8‘8œBŸL™LÓ)Ó*ˆÜ˜˜R™ ¨Ö.r)   c                 ól  — t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚y ©Né
   r"   )	r$   rÙ   Úuint8r   r#   Úfloat64Úuint16Úuint32Úuint64r"  s     r'   Ú-test_data_size_preservation_uint_in_float_outz7TestSqrtM.test_data_size_preservation_uint_in_float_outÑ  sº   € Ü�F‰F�2œRŸX™XÔ&ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸY™YÔ'ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸY™YÔ'ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸY™YÔ'ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ñ+r)   c                 ól  — t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚y r)  )	r$   rÙ   Úint8r   r#   r,  Úint16Úint32Úint64r"  s     r'   Ú,test_data_size_preservation_int_in_float_outz6TestSqrtM.test_data_size_preservation_int_in_float_outÛ  sº   € Ü�F‰F�2œRŸW™WÔ%ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸX™XÔ&ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸX™XÔ&ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸX™XÔ&ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ñ+r)   c                 óœ  — t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚y )Nr—   rs   r   éþÿÿÿr"   )	r$   r   r2  r   r#   Ú
complex128r3  r4  r5  r"  s     r'   Ú+test_data_size_preservation_int_in_comp_outz5TestSqrtM.test_data_size_preservation_int_in_comp_outå  sî   € Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯g©gÔ6ˆÜ�Q‹x�~‰~¤§¡Ò.Ð.Ð.Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯h©hÔ7ˆÜ�Q‹x�~‰~¤§¡Ò.Ð.Ð.Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯h©hÔ7ˆÜ�Q‹x�~‰~¤§¡Ò.Ð.Ð.Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯h©hÔ7ˆÜ�Q‹x�~‰~¤§¡Ò.Ð.Ñ.r)   c                 óŽ  — t        j                  dt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j
                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  dt         j                  ¬«      }t        |«      j                  t         j                  k(  sJ ‚t        t         d«      rNt        j                  dt         j                  ¬«      }t        |«      j                  t         j                  k(  sJ ‚y y )Nr*  r"   Úfloat128)	r$   rÙ   Úfloat16r   r#   ré   r,  Úhasattrr<  r"  s     r'   Ú.test_data_size_preservation_float_in_float_outz8TestSqrtM.test_data_size_preservation_float_in_float_outï  sÉ   € Ü�F‰F�2œRŸZ™ZÔ(ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸZ™ZÔ(ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�F‰F�2œRŸZ™ZÔ(ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü”2�zÔ"Ü—‘�r¤§¡Ô-ˆAÜ˜“8—>‘>¤R§Z¡ZÒ/Ð/Ñ/ð #r)   c                 óà  — t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j                  k(  sJ ‚t        t         d«      ret        t         d«      rTt        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j                  k(  sJ ‚y y y )Nr—   rs   r   r8  r"   r<  Ú
complex256)r$   r   r=  r   r#   rê   ré   r,  r9  r>  r<  r"  s     r'   Ú-test_data_size_preservation_float_in_comp_outz7TestSqrtM.test_data_size_preservation_float_in_comp_outú  s
  € Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯j©jÔ9ˆÜ�Q‹x�~‰~¤§¡Ò-Ð-Ð-Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯j©jÔ9ˆÜ�Q‹x�~‰~¤§¡Ò-Ð-Ð-Ü�H‰H�q˜!�f˜q "˜gÐ&¬b¯j©jÔ9ˆÜ�Q‹x�~‰~¤§¡Ò.Ð.Ð.Ü”2�zÔ"¤w¬r°<Ô'@Ü—‘˜1˜a˜& 1 b 'Ð*´"·+±+Ô>ˆAÜ˜“8—>‘>¤R§]¡]Ò2Ð2Ñ2ð (AÐ"r)   c                 ó  — t        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j                  k(  sJ ‚t        j                  ddgddggt         j
                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚t        t         d«      rTt        j                  ddgddggt         j                  ¬«      }t        |«      j                  t         j
                  k(  sJ ‚y y )Nr  rs   r   r  r"   rA  )r$   r   rê   r   r#   r9  r>  rA  r"  s     r'   Ú,test_data_size_preservation_comp_in_comp_outz6TestSqrtM.test_data_size_preservation_comp_in_comp_out  sÂ   € Ü�H‰H�r˜1�g  3˜xÐ(´·±Ô=ˆÜ�Q‹x�~‰~¤§¡Ò-Ð-Ð-Ü�H‰H�r˜1�g  3˜xÐ(´·±Ô>ˆÜ�Q‹x�~‰~¤§¡Ò.Ð.Ð.Ü”2�|Ô$Ü—‘˜2˜q˜' A s 8Ð,´B·M±MÔBˆAÜ˜“8—>‘>¤R§]¡]Ò2Ð2Ñ2ð %r)   r±   c                 óä   — t        j                  d|¬«      }t        |«      }t        j                  d|¬«      }t        |«      }|j                  dk(  sJ ‚|j
                  |j
                  k(  sJ ‚y rÖ   )r$   rØ   r   rÙ   rÚ   r#   )r:   r±   r;   ÚsrÜ   Ús0s         r'   rÞ   zTestSqrtM.test_empty  s\   € ä�H‰H�V 2Ô&ˆÜ�!‹HˆÜ�V‰V�A˜RÔ ˆÜ�2‹Yˆà�w‰w˜&Ò Ð Ð Ø�w‰w˜"Ÿ(™(Ò"Ð"Ñ"r)   c           
      ó&  — t         j                  j                  d«      }d}|j                  dd|z  d|z  f¬«      }t        j                  |d¬«      t        j
                  d|z  «      z   t        j                  |«      }}||z  }|d d …d d d…d d d…f   }t        j                  |«      d d …dd d…dd d…f   }t        t        |d d …d d d…d d d…f   «      t        |«      «       t        t        |d d …dd d…dd d…f   «      t        |«      «       y )	Nl   Á&Û\31 é   r˜   r—   rp   r¶   )ÚkrA   )
r$   rw   rx   rz   r  rÙ   ÚtriuÚasfortranarrayr   r   )r:   r‚   rƒ   r&   rÁ   ÚUÚA_noncontig_cÚA_noncontig_fs           r'   Útest_cf_noncontig_nd_inputsz%TestSqrtM.test_cf_noncontig_nd_inputs  s  € ô �i‰i×#Ñ#Ð$4Ó5ˆØˆØ�K‰K˜a  1¡ a¨¡c˜]ˆKÓ+ˆÜ�w‰w�q˜BÔ¤"§&¡&¨¨1©£+Ñ-¬r¯w©w°q«zˆ1ˆØ�‰Eˆàš!™S˜q˜S¡# A #˜+™ˆÜ×)Ñ)¨!Ó,ªQ°°°1°°a°d¸°d¨]Ñ;ˆÜœ˜a¢¡3 Q 3©¨!¨ ™nÓ-¬u°]Ó/CÔDÜœ˜a¢ 1 4 a 4¨¨¨A¨ Ñ.Ó/´°}Ó1EÕFr)   c                 óh   — t        j                  g d¢t        ¬«      }t        t	        |«      |«       y )N)rs   r   rÍ   rÍ   )rÚ   r#   )r$   rØ   r%   r
   r   )r:   r&   s     r'   Útest_empty_sizeszTestSqrtM.test_empty_sizes&  s    € Ü�H‰Hš<¬uÔ5ˆÜœ5 ›8 QÕ'r)   c                 ó&  — t         j                  j                  d«      }|j                  d¬«      }|d d …d d d…d d d…f   }|d d …d d d…d d d…f   j	                  «       }t        t        |«      t        |«      «       |d d …d d …d d d…f   }|d d …d d …d d d…f   j	                  «       }t        t        |«      t        |«      «       |d d …d d d…d d …f   }|d d …d d d…d d …f   j	                  «       }t        t        |«      t        |«      «       y )Nl   Â&Û\31 )r˜   rÍ   rÍ   rp   r¶   )r$   rw   rx   rz   Úcopyr   r   )	r:   r‚   r&   ÚA_negneg_origÚA_negneg_copyÚA_posneg_origÚA_posneg_copyÚA_negpos_origÚA_negpos_copys	            r'   Útest_negative_strideszTestSqrtM.test_negative_strides*  sú   € Ü�i‰i×#Ñ#Ð$4Ó5ˆØ�K‰K˜YˆKÓ'ˆØš!™T˜r˜T¡4 R 4˜-Ñ(ˆØš!™T˜r˜T¡4 R 4˜-Ñ(×-Ñ-Ó/ˆÜœ˜mÓ,¬e°MÓ.BÔCàš!šQ¡ " ˜*™ˆØš!šQ¡ " ˜*™×*Ñ*Ó,ˆÜœ˜mÓ,¬e°MÓ.BÔCàš!™T˜r˜T¢1˜*™ˆØš!™T˜r˜T¢1˜*™×*Ñ*Ó,ˆÜœ˜mÓ,¬e°MÓ.BÕCr)   N)#rV   rW   rX   rŒ   r‘   rø   rý   r  r  r  rË   r  r  r  r#  r'  r0  r6  r:  r?  rB  rD  r¾   rä   rç   rè   r%   r$   ré   r§   rê   rÞ   rP  rR  r[  rY   r)   r'   rì   rì     s²   „ ò7ò	7ò0ò"!CòF?ò*;ò/ð*ò&1ò5ò5ò5ò&ò/ò,ò,ò/ò	0ò	3ò3ð ‡[�[×Ñ˜T C¨°·
±
¸GÀRÇ\Á\Ð#RÓSñ#ó Tð#òGò(óDr)   rì   c                   ó†   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ej                  j                  d	¬
«      d„ «       Zd„ Zy)ÚTestFractionalMatrixPowerc                 ó’  — t         j                  j                  d«      }t        dd«      D ]™  }t        dd«      D ]ˆ  }|j	                  ||f«      d|j	                  ||f«      z  z   }t        j
                  ddd«      D ]B  }||z  }t        |d|z  «      }t         j                  j                  ||«      }t        ||«       ŒD ŒŠ Œ› y )NéÒ  rA   rÍ   rŽ   rr   rs   rt   ©
r$   rw   rx   ry   r�   r{   r   r|   Úmatrix_powerr   ©	r:   r‚   Úprƒ   r„   r…   r†   ÚM_rootr�   s	            r'   r‘   z8TestFractionalMatrixPower.test_round_trip_random_complex;  s·   € Ü�i‰i×#Ñ# DÓ)ˆÜ�q˜!–ˆAÜ˜1˜a–[�Ø!×1Ñ1°1°a°&Ó9Ø  3×#6Ñ#6¸¸1°vÓ#>Ñ>ñ?�
äŸ[™[¨¨Q°Ö2�EØ" UÑ*�AÜ4°Q¸¸!¹Ó<�FÜ#%§9¡9×#9Ñ#9¸&À!Ó#D�LÜ# L°!Õ4ñ	 3ñ !ñ r)   c                 ód  — t         j                  j                  d«      }t        dd«      D ]‚  }t        dd«      D ]q  }|j	                  ||f«      }t        j
                  ddd«      D ]B  }||z  }t        |d|z  «      }t         j                  j                  ||«      }t        ||«       ŒD Œs Œ„ y )Nr_  rA   rÍ   rr   rs   rt   r`  rb  s	            r'   rŒ   z6TestFractionalMatrixPower.test_round_trip_random_floatG  s�   € ô
 �i‰i×#Ñ# DÓ)ˆÜ�q˜!–ˆAÜ˜1˜a–[�Ø ×0Ñ0°!°Q°Ó8�
ÜŸ[™[¨¨Q°Ö2�EØ" UÑ*�AÜ4°Q¸¸!¹Ó<�FÜ#%§9¡9×#9Ñ#9¸&À!Ó#D�LÜ# L°!Õ4ñ	 3ñ !ñ r)   c                 ó  — t         j                  j                  d«      }dD ]ä  }t        d«      D ]Ô  }|j	                  ||f«      d|j	                  ||f«      z  z   }t        |d«      }t         j                  j                  |d«      }t        ||«       t        |d«      }t         j                  j                  |d«      }t        ||«       t        |d	«      }t         j                  j                  |d
«      }t        ||«       ŒÖ Œæ y )Nr_  )r—   r˜   rÍ   r*  rŽ   çš™™™™™É?rÍ   gš™™™™™Àiåÿÿÿgffffff@r  )	r$   rw   rx   ry   r�   r   r|   ra  r   )	r:   r‚   rƒ   Úir†   ÚM_one_fifthr�   r²   r³   s	            r'   Ú(test_larger_abs_fractional_matrix_powerszBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powersV  sß   € Ü�i‰i×#Ñ# DÓ)ˆÛˆAÜ˜2–Y�Ø×'Ñ'¨¨A¨Ó/°"°s×7JÑ7JÈAÈqÈ6Ó7RÑ2RÑR�Ü5°a¸Ó=�ä!Ÿy™y×5Ñ5°kÀ1ÓE�Ü  <Ô0ä+¨A¨tÓ4�Ü—I‘I×*Ñ*¨;¸Ó<�Ü  1Ô%ä+¨A¨sÓ3�Ü—I‘I×*Ñ*¨;¸Ó;�Ü  1Õ%ñ ñ r)   c                 óè  — t         j                  j                  d«      }d}t        |«      D ]Ã  }|j	                  dd«      }|j                  «       }t        j
                  |j	                  dd«      «      }|j                  ||g¬«      }ddg|j                  d	«         r|d
|j                  ||g¬«      z  z   }||z  }t        ||«      }t        |«      }	t        |	|z  «      }
t        ||
«       ŒÅ y )Nl   ½fmø1 é   rA   rÍ   rr   rp   TFr—   rŽ   )r$   rw   rx   ry   ÚintegersÚexpÚchoicer   r   r   r   )r:   r‚   Únsamplesrh  rƒ   rc  Úmatrix_scaler&   ÚA_powerrd   ÚA_power_expm_logms              r'   Útest_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powersh  sã   € ô �i‰i×#Ñ#Ð$4Ó5ˆØˆÜ�x–ˆAà—‘˜Q Ó"ˆAØ—
‘
“ˆAô Ÿ6™6 #§,¡,¨r°1Ó"5Ó6ˆLØ—
‘
  A �
Ó'ˆAØ�eˆ}˜SŸZ™Z¨›]Ò+Ø˜˜SŸZ™Z¨a°¨V˜ZÓ4Ñ4Ñ4�Ø�LÑ ˆAô
 .¨a°Ó3ˆGÜ˜!“WˆFÜ $ V¨a¡ZÓ 0ÐÜ˜GÐ%6Õ7ñ% !r)   c                 óº  — t        «       }t        |t        j                  «      }t	        |«      }t        j                  |d«      }t        |d«      }t        ||d¬«       t        ||«       t        ||«       dD ]_  }t        ||«      }t        |d|z  «      }t        ||d¬«       t        t        j                  |d«      t        j                  |d«      «       Œa y )NrÈ   g•dyáý¥=r  )rÈ   g«ªªªªªú?rA   r¬   )
r(   r   r$   r   r   r   Ú_remainder_matrix_powerr   r   r  )r:   r&   ÚA_funm_sqrtrü   ÚA_rem_powerrr  rc  re   s           r'   r  z?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1�  s¶   € ä1Ó3ˆô ˜1œbŸg™gÓ&ˆÜ˜“(ˆÜ'×?Ñ?ÀÀ3ÓGˆÜ)¨!¨SÓ1ˆÜ˜ W°5Õ9Ü˜ Ô)Ü˜ Ô-ó ˆAÜ-¨a°Ó3ˆGÜ2°7¸A¸a¹CÓ@ˆLÜ˜L¨!°$Õ7ÜœBŸG™G L°!Ó4´b·g±g¸aÀ³mÕDñ	 r)   c                 ó4  — t         j                  j                  d«      }|j                  d«      d|j                  d«      z  z   D ]P  }t	        d«      D ]@  }t        j                  ||«      }|t        j                  | «      z  dz
  }t        ||«       ŒB ŒR y )Nr_  r*  rŽ   rÍ   rA   )	r$   rw   rx   r�   ry   r   Ú_briggs_helper_functionÚexp2r   )r:   r‚   r;   rJ  Ú
x_observedÚ
x_expecteds         r'   Útest_briggs_helper_functionz5TestFractionalMatrixPower.test_briggs_helper_function•  s„   € Ü�i‰i×#Ñ# DÓ)ˆØ×$Ñ$ RÓ(¨2°×0CÑ0CÀBÓ0GÑ+GÔGˆAÜ˜1–X�Ü.×FÑFÀqÈ!ÓL�
Ø¤"§'¡'¨1¨"£+Ñ-°Ñ1�
Ü 
¨JÕ7ñ ñ Hr)   c                 óˆ  — d}ddgddggddgddggddgddggddgddggfD �]  }t         j                  j                  |«      }t        t	        d„ |D «       «       «       dD ]Û  }t        j                  |t        ¬«      }t        ||«      }t        |j                  j                  |v«       t        j                  |t        ¬«      }t        ||«      }t        |j                  j                  |v «       t        j                  |t        ¬«       }t        ||«      }t        |j                  j                  |v «       ŒÝ �Œ! y )	Nr“   rA   r   r—   r˜   c              3   óV   K  — | ]!  }|j                   xs |j                  d k  –— Œ# y­wrš   r›   rž   s     r'   r¡   zRTestFractionalMatrixPower.test_type_preservation_and_conversion.<locals>.<genexpr>«  r¢   r£   ©ç333333ÀçÍÌÌÌÌÌì¿rg  gffffff
@r"   )r¤   r|   r}   r   r¥   r$   r   r%   r   r#   r¦   r§   ©r:   r¨   r©   r‡   rc  r&   rr  s          r'   Ú%test_type_preservation_and_conversionz?TestFractionalMatrixPower.test_type_preservation_and_conversion�  s3  € ð
 .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ô	"ˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¹!Ó<Ó<Ð<Ô=ó ,�ô —H‘H˜^´5Ô9�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð2EÐEÔFô —H‘H˜^´7Ô;�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð.AÐAÔBô —X‘X˜n´EÔ:Ð:�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð.AÐAÕBò ,ñ"r)   c                 óè  — d}ddgddggddgddggg d¢g d¢g d¢gfD ]Ó  }t         j                  j                  |«      }t        t	        d„ |D «       «      «       d	D ]’  }t        j                  |t        ¬
«      }t        ||«      }t        |j                  j                  |v «       t        j                  |t        ¬
«      }t        ||«      }t        |j                  j                  |v «       Œ” ŒÕ y )Nr“   rA   r   r¶   rÿ   )r   r   rA   r   c              3   óV   K  — | ]!  }|j                   xs |j                  d k  –— Œ# y­wrš   r›   rž   s     r'   r¡   z`TestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>É  r  r£   r�  r"   )r¤   r|   r}   r   r¥   r$   r   r§   r   r#   r¦   r%   r„  s          r'   Ú3test_type_conversion_mixed_sign_or_complex_spectrumzMTestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrumÀ  sß   € Ø-Ðà�Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð ÚšI¢yÐ1ó3ˆNô —‘×$Ñ$ ^Ó4ˆAÜ”CÑ8±aÓ8Ó8Ô9ó ,�ô —H‘H˜^´7Ô;�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð.AÐAÔBô —H‘H˜^´5Ô9�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð.AÐAÕBñ ,ñ3r)   zToo unstable across LAPACKs.rÓ   c                 óz  — ddgddggddgddggddgddggg d¢g d¢g d¢gfD ]—  }t         t        fD ]†  }t        j                  ||¬	«      }d
D ]:  }t	        ||«      }t        t        j                  |«      j                  «       «       Œ< dD ])  }t	        ||«      }t	        |d|z  «      }t        ||«       Œ+ Œˆ Œ™ y )Nr   rA   r—   r˜   ro   )r   r   r   )r   rA   rA   )r   r¶   rA   r"   )gffffffæ¿rƒ  r‚  gÍÌÌÌÌÌô¿)rg  gáz®Gáö?)	r%   r§   r$   r   r   r   r
  Úallr   )r:   r©   Únewtyper&   rc  rr  re   s          r'   Útest_singularz'TestFractionalMatrixPower.test_singularÙ  sÍ   € ð �Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ÚšI¢zÐ2ó	4ˆNô "¤7Ó+�Ü—H‘H˜^°7Ô;�Û1�AÜ5°a¸Ó;�GÜœBŸH™H WÓ-×1Ñ1Ó3Õ4ð 2ó %�AÜ5°a¸Ó;�GÜ#:¸7ÀAÀaÁCÓ#H�LÜ# L°!Õ4ñ %ñ ,ñ4r)   c                 ó˜   — ddgddgg}ddgddgg}t        t        j                  ||«      |d¬	«       t        t        |d
«      |d¬	«       y )Nr  rs   r   r  r  r—   r  r`   r»   rÈ   )r   r$   rï   r   r  s      r'   rË   z@TestFractionalMatrixPower.test_opposite_sign_complex_eigenvaluesí  sP   € Ø�!ˆW�q˜#�hÐˆØ�AˆY˜˜D˜	Ð"ˆÜœŸ™˜q !› a¨eÕ4ÜÔ/°°3Ó7¸ÀÖGr)   N)rV   rW   rX   r‘   rŒ   rj  rt  r  r~  r…  rˆ  r¾   rä   ræ   rŒ  rË   rY   r)   r'   r]  r]  :  s[   „ ò
5ò5ò&ò$8ò2Eò(8ò!CòFCð2 ‡[�[×ÑÐ<ÐÓ=ñ5ó >ð5ó&Hr)   r]  c            
       óp  — e Zd Zd„ Zd„ Zej                  j                  dee	e
eeeeg«      ej                  j                  deeej$                  eej(                  g«      ej                  j                  dddg«      d„ «       «       «       Zd	„ Zd
„ Zd„ Zej                  j3                  d«      d„ «       Zy)ÚTestExpMc                 ó\   — t        ddgddgg«      }t        t        |«      ddgddgg«       y )Nr@   r   rA   )r   r   r   rD   s     r'   Ú	test_zerozTestExpM.test_zeroõ  s2   € Ü�B�q�6˜1˜Q˜%�.Ó!ˆÜ!¤$ q£'¨A¨a¨5°!°A°¨-Õ8r)   c                 óx   — t        d«      }t        |t        j                  t        j                  gg«      «       y )NrA   )r   r   r$   r   rô   )r:   Úelts     r'   Útest_single_eltzTestExpM.test_single_eltù  s&   € Ü�1‹gˆÜ˜œRŸX™X¬¯© v hÓ/Õ0r)   Úfuncr±   rÚ   r×   ©rA   rA   c                 óØ   — t        j                  ||¬«      }t        j                  d|¬«      } ||«      } ||«      }|j                  |k(  sJ ‚|j                  |j                  k(  sJ ‚y )Nr"   )r*  r*  )r$   râ   rÚ   r#   )r:   r•  r±   rÚ   r&   ÚA0ÚresultÚresult0s           r'   Útest_small_empty_matrix_inputz&TestExpM.test_small_empty_matrix_inputý  s^   € ô �H‰H�U "Ô%ˆÜ�X‰X�h bÔ)ˆÙ�a“ˆÙ�r“(ˆØ�|‰|˜uÒ$Ð$Ð$Ø�|‰|˜wŸ}™}Ò,Ð,Ñ,r)   c                 óÊ  — t         j                  }t        ddgddgg«      }|dz  dz   d|z  z  }|dz  dz
  |z  }t        t	        |«      t        ||g|dz  |gg«      «       t	        |j                  t         j                  «      «      j                  j                  dk(  sJ ‚t	        |j                  t         j                  «      «      j                  j                  dk(  sJ ‚y )NrA   rs   r—   r”   Úf)
r$   rô   r   r   r   r%  rê   r#   r¦   ré   )r:   rÂ   r;   ÚaaÚbbs        r'   Útest_2x2_inputzTestExpM.test_2x2_input
  sÅ   € Ü�D‰DˆÜ�A�q�6˜A˜q˜6Ð"Ó#ˆØ�‰d�Q‰h˜˜1™ÑˆØ�‰d�Q‰h˜‰\ˆÜœ˜Q›¤¨¨R¨°2°a±4¸°*Ð'=Ó!>Ô?Ü�A—H‘HœRŸ\™\Ó*Ó+×1Ñ1×6Ñ6¸#Ò=Ð=Ð=Ü�A—H‘HœRŸZ™ZÓ(Ó)×/Ñ/×4Ñ4¸Ò;Ð;Ñ;r)   c                 óÌ  — t         j                  }t        j                  ddgddggddgddggddgddggddgddggddgddgggd¬	«      }t        j                  |dz  dz   d
|z  z  |dz  dz
  |z  g|dz  dz
  dz  |z  |dz  dz   d
|z  z  ggdd|d
z  z  z  d|d
z  z  dz  z   d|d
z  z  dz  dd|d
z  z  z  z
  g|d
z  dz  dd|d
z  z  z  z
  dd|d
z  z  z  |d
z  dz  z   ggdd|z  z  |dz  dz  z   dd|z  z  d|dz  z  dz  z   gdd
|z  z  |dz  d
z  z   dd|z  z  d|dz  z  dz  z   ggdd|d
z  z  z  d|dz  z  dz  z   dd|d
z  z  z  d|dz  z  dz  z   gdd|d
z  z  z  d|dz  z  dz  z   dd|d
z  z  z  d|dz  z  dz  z   ggdd
|z  z  d|z  d
z  z   dd
|z  z  d|z  d
z  z   gdd
|z  z  d|z  d
z  z
  dd
|z  z  d|z  d
z  z
  ggg«      }t        t	        |«      |«       y )NrA   rs   r˜   r¶   rÍ   éýÿÿÿrr   r”   )Úorderr—   r]   é   ro   éûÿÿÿ)r$   rô   r   r   r   )r:   rÂ   r;   Úa_ress       r'   Útest_nx2x2_inputzTestExpM.test_nx2x2_input  sË  € Ü�D‰Dˆä�H‰H˜˜1�v  1˜vÐ&Ø˜1�v  2˜wÐ'Ø˜1�v  1˜vÐ&Ø˜1�v  1˜vÐ&Ø˜1�v  B˜xÐ(ð	*ð 25ô	6ˆô —‘Ø ™T !™V a¨¡c™N¨Q°©T°!©V°Q©JÐ7Ø ™T !™V Q™J q™L¨1¨a©4°©6°A°a±C©.Ð9ð;à˜q  A¡™v™J¨¨!¨Q©$©°¡zÑ1°A°a¸±d±F¸A±:¸aÀÀ1ÀaÁ4Á¹jÑ3HÐIØ˜q™D ™F 1 a¨¨1©¡f¡:Ñ-¨q°!°A°q±D±&©z¸!¸Q¹$¸q¹&Ñ/@ÐAðCà˜q ™s™G A q¡D¨¡F™N¨B°°!±©H°a¸¸1¹±f¸a±ZÑ,?Ð@Ø  !¡™H Q¨¡T¨!¡V™O¨Q°°!±©W°a¸¸1¹±f¸a±ZÑ-?Ð@ðBà˜q  A¡™v™J¨¨!¨Q©$©°¡zÑ1°2°q¸¸A¹±v±;ÀÀ!ÀQÁ$ÁÈ¹zÑ3IÐJØ  ! Q¡$¡™K¨¨1¨a©4©°©
Ñ2°A°q¸¸A¹±v±JÀÀ!ÀQÁ$ÁÈ¹zÑ4IÐJðLà  !¡™H a¨¡c¨1¡WÑ,¨b°!°A±#©h¸¸!¹¸Q±wÑ.>Ð?Ø˜q ™s™G Q q¡S¨!¡G™O¨Q°°!±©W°a¸±c¸1±W©_Ð=ð?ðó ˆô 	œ˜Q› Õ'r)   c                 ón   — d}t        j                  ||f«      }d|j                  _        t	        |«       y )Nr]   F)r$   rÎ   rÏ   rÐ   r   rÑ   s      r'   rÒ   zTestExpM.test_readonly*  s+   € ØˆÜ�G‰G�Q˜�F‹OˆØ!ˆ�‰ÔÜˆQ�r)   rÍ   c                 óT  — t        j                  dt        ¬«      }t         j                  j	                  d«      }|j                  ddd«      }|j                  ddd«      }|j                  d«      |||f<   t        j                  dt        ¬«      }|j                  «       |d<   t        |«      \  }}|dk(  sJ ‚t        |«      }t         j                  j                  t        |«      |«       t        d	«      D ]-  }t        |«      }	t         j                  j                  ||	«       Œ/ y )
N)é�  rª  r"   éd   r   i�  iô  )rÍ   rª  rª  rt   rÍ   )r$   râ   r%   rw   rx   rm  rØ   rT  r   r   Útestingr   r   ry   )
r:   r&   r‚   rh  ÚjÚAmr^   rF  Ú	first_resÚnext_ress
             r'   Útest_gh18086zTestExpM.test_gh180860  sã   € ä�H‰H�Z¤uÔ-ˆÜ�i‰i×#Ñ# CÓ(ˆØ�L‰L˜˜C Ó%ˆØ�L‰L˜˜C Ó%ˆØ—*‘*˜S“/ˆˆ!ˆQˆ$‰ä�X‰X�m¬5Ô1ˆØ—‘“ˆˆ1‰Ü" 2Ó&‰ˆˆ1Ø�AŠvˆˆvä˜“Gˆ	Ü
�
‰
×,Ñ,¬T°)«_¸aÔ@ä�q–ˆAÜ˜A“wˆHÜ�J‰J×0Ñ0°¸HÕEñ r)   N)rV   rW   rX   r‘  r”  r¾   rä   rç   r   r   r   r   r   r   r   rè   r%   r$   ré   r§   rê   r›  r   r§  rÒ   Ú	fail_slowr±  rY   r)   r'   r�  r�  ô  sÀ   „ ò9ò1ð ‡[�[×Ñ˜V d¨D°$¸¸eÀUÈEÐ%RÓSØ‡[�[×Ñ˜T 3¨¨r¯z©z¸7ÀBÇLÁLÐ"QÓRØ‡[�[×Ñ˜W v¨vÐ&6Ó7ñ-ó 8ó Só Tð-ò<ò(ò.ð ‡[�[×Ñ˜1ÓñFó ñFr)   r�  c                   óš   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  ej                  j                  d¬«      d„ «       «       Zy)	ÚTestExpmFrechetc                 óÐ  — t        j                  g d¢g d¢g d¢g d¢gt        ¬«      }t        j                  ddgdd	ggt        ¬«      }t        j                  d
dgddggt        ¬«      }t        j                  j                  |«      }t        j                  j                  |«      d d…dd …f   }i ddiddifD ]*  }t        ||fi |¤Ž\  }}t        ||«       t        ||«       Œ, y )N©rA   r—   r˜   rs   ©rÍ   ro   r]   r¤  ©r   r   rA   r—   ©r   r   rÍ   ro   r"   rA   r—   rÍ   ro   r˜   rs   r]   r¤  ÚmethodÚSPSÚblockEnlarge)r$   r   r%   r¤   r|   r   r   r   )	r:   r†   r&   rÂ   Úexpected_expmÚexpected_frechetÚkwargsÚobserved_expmÚobserved_frechets	            r'   Útest_expm_frechetz!TestExpmFrechet.test_expm_frechetG  sù   € ä�H‰HÚÚÚÚð	ô
 ôˆô �H‰HØ�ˆFØ�ˆFðô ôˆô �H‰HØ�ˆFØ�ˆFðô ôˆô Ÿ™×)Ñ)¨!Ó,ˆÜ Ÿ<™<×,Ñ,¨QÓ/°°°°A±B°Ñ7ÐØ˜H UÐ+¨h°~Ð-FÓGˆFÜ.:¸1¸aÑ.JÀ6Ñ.JÑ+ˆMÐ+Ü˜M¨=Ô9ÜÐ,Ð.>Õ?ñ Hr)   c                 ó  — t        j                  g d¢g d¢g d¢g d¢gt        ¬«      }t        j                  ddgdd	ggt        ¬«      }t        j                  d
dgddggt        ¬«      }t        j                  j                  |d«      }g d¢}t        |d d |dd  «      }|D ]Ý  \  }}t        j                  j                  j                  |   }	t        j                  j                  j                  |   }
d|	|
z   z  }||z  }||z  }||z  }||z  }t        j                  j                  |«      }t        j                  j                  |«      d d…dd …f   }t        ||«      \  }}t        ||«       t        ||«       Œß y )Nr¶  r·  r¸  r¹  r"   rA   r—   rÍ   ro   r˜   rs   r]   r¤  )rA   r˜   rÍ   r]   rt   é   rI  é   r¶   rÈ   )r$   r   r%   r¤   r|   r   ÚzipÚ_expm_frechetÚell_table_61r   r   r   )r:   Ú
M_originalÚ
A_originalÚ
E_originalÚA_original_norm_1Úselected_m_listÚm_neighbor_pairsÚmaÚmbÚell_aÚell_bÚtarget_norm_1r…   r†   r&   rÂ   r½  r¾  rÀ  rÁ  s                       r'   Útest_small_norm_expm_frechetz,TestExpmFrechet.test_small_norm_expm_frechet^  sˆ  € ä—X‘XÚÚÚÚð	ô
 ôˆ
ô —X‘XØ�ˆFØ�ˆFðô ôˆ
ô —X‘XØ�ˆFØ�ˆFðô ôˆ
ô "ŸL™L×-Ñ-¨j¸!Ó<ÐÚ5ˆÜ˜¨s°Ð3°_ÀQÀRÐ5HÓIÐÛ&‰FˆB�Ü—L‘L×.Ñ.×;Ñ;¸BÑ?ˆEÜ—L‘L×.Ñ.×;Ñ;¸BÑ?ˆEØ 5¨5¡=Ñ1ˆMØ!Ð$5Ñ5ˆEØ˜
Ñ"ˆAØ˜
Ñ"ˆAØ˜
Ñ"ˆAÜ!ŸL™L×-Ñ-¨aÓ0ˆMÜ$Ÿ|™|×0Ñ0°Ó3°B°Q°B¸¹°FÑ;ÐÜ.:¸1¸aÓ.@Ñ+ˆMÐ+Ü˜M¨=Ô9ÜÐ,Ð.>Õ?ñ 'r)   c           	      óH  — t         j                  j                  d«      }|j                  |j                  |j
                  |j                  f}d}t        |«      D �]D  }||j                  d«         }|j                  «       }|j                  dd«      } |||f¬«      } |||f¬«      }	t        j                  j                  |d«      }
||
z  }||z  }||	z  }t        j                  t        j                  ||g«      t        j                  t        j                  |«      |g«      g«      }t        j                  j!                  |«      }t        j                  j!                  |«      d |…|d …f   }t#        ||«      \  }}t%        ||d¬	«       t%        ||d
¬	«       �ŒG y )Nl   ñ]±"ù1 r«  rs   r—   é   rp   rA   gH¯¼šò×j>r»   gH¯¼šò×z>)r$   rw   rx   rz   ÚnormalÚstandard_cauchyÚexponentialry   ro  rm  r¤   r|   r   ÚvstackÚhstackÚ
zeros_liker   r   r   )r:   r‚   ÚrfuncsÚntestsrh  ÚrfuncrÓ  rƒ   rÊ  rË  rÌ  r…   r&   rÂ   r†   r½  r¾  rÀ  rÁ  s                      r'   Ú	test_fuzzzTestExpmFrechet.test_fuzz  sv  € Ü�i‰i×#Ñ#Ð$4Ó5ˆð —‘Ø—
‘
Ø×#Ñ#Ø—‘ð	!ˆð
 ˆÜ�v—ˆAØ˜3Ÿ:™: a›=Ñ)ˆEØŸO™OÓ-ˆMØ—‘˜Q Ó#ˆAÙ Q q EÔ*ˆJÙ Q q EÔ*ˆJÜ %§¡× 1Ñ 1°*¸aÓ @ÐØ!Ð$5Ñ5ˆEØ˜
Ñ"ˆAØ˜
Ñ"ˆAÜ—	‘	Ü—	‘	˜1˜a˜&Ó!Ü—	‘	œ2Ÿ=™=¨Ó+¨QÐ/Ó0ð2ó 3ˆAô "ŸL™L×-Ñ-¨aÓ0ˆMÜ$Ÿ|™|×0Ñ0°Ó3°B°Q°B¸¹°FÑ;ÐÜ.:¸1¸aÓ.@Ñ+ˆMÐ+Ü˜M¨=¸tÕDÜÐ,Ð.>ÀT×Jñ# r)   c                 ó<  — t        j                  ddgddggt        ¬«      }t        j                  ddgdd	ggt        ¬«      }t        j                  j                  |d
«       t        ||d¬«      \  }}t        ||d¬«      \  }}t        ||«       t        ||«       y )Ng]±Ø‰?ø?gîvÿP÷þ?g¯¾^Ú?guÃ�¨øÎ?r"   gîðS,éþ?g�¶·|� @gJ»Ùtõ?g~3µ•Œå?rA   r»  ©rº  r¼  )r$   r   r%   r¤   r|   r   r   r   )r:   r&   rÂ   Úsps_expmÚsps_frechetÚblockEnlarge_expmÚblockEnlarge_frechets          r'   Útest_problematic_matrixz'TestExpmFrechet.test_problematic_matrix›  s®   € ä�H‰HØ˜ZÐ(Ø˜ZÐ(ðô ô ˆô �H‰HØ˜ZÐ(Ø˜ZÐ(ðô ô ˆô 	�‰×Ñ˜!˜QÔÜ ,Ø�1˜Uô!$Ñˆ�+ä2>Ø�1˜^ô3-Ñ/ÐÐ/ä˜Ð"3Ô4Ü˜Ð%9Õ:r)   zthis test is deliberately slowrÓ   c                 ó
  — d}t         j                  j                  d«      }|j                  ||f¬«      }|j                  ||f¬«      }t	        ||d¬«      \  }}t	        ||d¬«      \  }}t        ||«       t        ||«       y )Niè  r_  rp   r»  râ  r¼  )r$   rw   rx   rÙ  r   r   )	r:   rƒ   r‚   r&   rÂ   rã  rä  rå  ræ  s	            r'   Útest_medium_matrixz"TestExpmFrechet.test_medium_matrix­  s‰   € ð ˆÜ�i‰i×#Ñ# DÓ)ˆØ�O‰O ! Q ˆOÓ(ˆØ�O‰O ! Q ˆOÓ(ˆÜ ,Ø�1˜Uô!$Ñˆ�+ä2>Ø�1˜^ô3-Ñ/ÐÐ/ä˜Ð"3Ô4Ü˜Ð%9Õ:r)   N)rV   rW   rX   rÂ  rÔ  rà  rç  r¾   rä   ÚslowÚskipré  rY   r)   r'   r´  r´  E  sS   „ ò@ò.@òBKò8;ð$ ‡[�[×ÑØ‡[�[×ÑÐ=ÐÓ>ñ;ó ?ó ñ;r)   r´  c                 ó¸   — t        j                  || j                  «      }t        |«      }||z  ||z  z  }t	        | |z   «      }t        ||z
  «      ||z  z  }	|	 S ©N)r$   ÚreshaperÚ   r   r   )
r&   ÚA_normr²   ÚX_normÚepsrc  Úp_normÚperturbationÚX_primeÚscaled_relative_errors
             r'   Ú_help_expm_cond_searchrö  ½  sa   € Ü
�
‰
�1�a—g‘gÓ€AÜ�!‹W€FØ˜‘7˜f v™oÑ.€LÜ�1�|Ñ#Ó$€GÜ  ¨1¡Ó-°¸#±Ñ>ÐØ!Ð!Ð!r)   c                 ó†   — | t         j                  j                  |«      t         j                  j                  | «      z  z  S rí  )r¤   r|   r   )r&   rÀ   s     r'   Ú_normalized_likerø  Æ  s0   € Ø”—‘×!Ñ! !Ó$¤u§|¡|×'8Ñ'8¸Ó';Ñ;Ñ<Ð<r)   c                 ó\   —  | |«      } | ||z   «      }t        ||z
  «      t        |«      z  S rí  )r   )r�  r&   ró  r²   rô  s        r'   Ú_relative_errorrú  Ê  s2   € Ù	ˆ!‹€AÙ��LÑ Ó!€GÜ�˜!‘Óœt A›wÑ&Ð&r)   c                   óV   — e Zd Zd„ Zd„ Zd„ Zej                  j                  d„ «       Z	y)ÚTestExpmConditionNumberc                 ó¸   — t         j                  j                  d«      }t        dd«      D ],  }|j	                  ||f«      }t        |«      }t        d|«       Œ. y )Nr_  rA   rs   r   )r$   rw   rx   ry   r�   r   r	   )r:   r‚   rƒ   r&   Úkappas        r'   Útest_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smokeÑ  sM   € Ü�i‰i×#Ñ# DÓ)ˆÜ�q˜!–ˆAØ×#Ñ# Q¨ FÓ+ˆAÜ˜a“LˆEÜ˜a Õ'ñ r)   c                 ót   — t        j                  g d¢g d¢g d¢g d¢g«      }t        |«      }t        d|«       y )N)göá(’ò¿gÙ™BgÝx÷@g  °=ÛðÁg ¾Zd ðB)r   gzNÑV7ó¿gðŠà¯…÷@g  2pñÁ)r   r   gá™¥¤T ò¿g?W[±ÎE÷@)r   r   r   gT–†!ßò¿gã yÏùhG)r$   r   r   r	   )r:   r&   rþ  s      r'   Útest_expm_bad_condition_numberz6TestExpmConditionNumber.test_expm_bad_condition_numberØ  s6   € Ü�H‰HÚIÚ<Ú/Ú#ð	ó ˆô ˜!“ˆÜ˜$ Õ&r)   c                 ó"  — t         j                  j                  d«      }t        j                  ddd¬«      D ]7  }t        j                  |gg«      }t        t        |«      t        |«      «       Œ9 t        j                  ddd¬«      D ]7  }t        j                  |gg«      }t        t        |«      t        |«      «       Œ9 t        d«      D ]>  }|j                  d	«      }t        t        |«      t        j                  |«      d
   «       Œ@ y )Nr_  r¥  rÍ   rÄ  )Únumr8  r—   r*  r–  r×   )r$   rw   rx   Úlinspacer   r   r   Úabsr{   ry   r�   r­   )r:   r‚   Úxr&   rh  s        r'   Útest_univariatez'TestExpmConditionNumber.test_univariateâ  sÇ   € Ü�i‰i×#Ñ# DÓ)ˆÜ—‘˜R ¨×+ˆAÜ—‘˜1˜#˜“ˆAÜœI a›L¬#¨a«&Õ1ð ,ô —‘˜R ¨×+ˆAÜ—‘˜1˜#˜“ˆAÜœI a›L¬#¨a«&Õ1ð ,ô �r–ˆAØ×#Ñ# FÓ+ˆAÜœI a›L¬"¯+©+°a«.¸Ñ*>Õ?ñ r)   c           	      ó¼  — t         j                  j                  d«      }d}d}t        |«      D �]ª  }|j	                  dd«      }|j                  ||«      }t        j                  j                  |«      }t        |«      }t        j                  j                  |«      }	t        |«      }
t        j                  t        ||||	|«      }t        j                  ||z  «      }t        ||d¬«      }|j                   } ||«      }|t#        t        j$                  ||j&                  «      |«      z  }t)        t        ||«      }t+        || |z  «       t        d«      D ]c  }|t#         |j
                  |j&                  Ž |«      z  }t+        t        |«      t        |«      «       t)        t        ||«      }t-        ||«       Œe t-        |dd|z  z   |z  |
z  «       �Œ­ y )	Ni90  rh   r*  r—   rÍ   zL-BFGS-Brâ  rA   )r$   rw   ÚRandomStatery   ÚrandintÚrandnr¤   r|   r   r   r   Ú	functoolsÚpartialrö  rÎ   r   r  rø  rî  rÚ   rú  r   r	   )r:   r‚   rñ  rp  rh  rƒ   r&   rï  r²   rð  rþ  r�  ÚguessÚoutÚxoptÚyoptÚp_bestÚp_best_relerrr­  Úp_randÚp_rand_relerrs                        r'   Útest_expm_cond_fuzzz+TestExpmConditionNumber.test_expm_cond_fuzzî  s�  € ä�i‰i×#Ñ# EÓ*ˆØˆØˆÜ�x—ˆAØ—‘˜A˜qÓ!ˆAØ—	‘	˜!˜Q“ˆAÜ—\‘\×&Ñ& qÓ)ˆFÜ�Q“ˆAÜ—\‘\×&Ñ& qÓ)ˆFÜ˜a“LˆEô ×!Ñ!Ô"8Ø�v˜q &¨#ó/ˆAä—G‘G˜A˜a™C“LˆEÜ˜1˜e¨JÔ7ˆCØ—5‘5ˆDÙ�T“7ˆDØÔ+¬B¯J©J°t¸Q¿W¹WÓ,EÀqÓIÑIˆFÜ+¬D°!°VÓ<ˆMÜ˜M¨D¨5°3©;Ô7ô ˜1–X�ØÔ/°	°·	±	¸1¿7¹7Ð0CÀQÓGÑG�Ü¤ V£¬d°6«lÔ;Ü /´°a¸Ó @�Ü! -°Õ?ð	 ô ˜m¨a°!°C±%©i¸3Ñ->ÀÑ-FÖGñ? !r)   N)
rV   rW   rX   rÿ  r  r  r¾   rä   rê  r  rY   r)   r'   rü  rü  Ð  s2   „ ò(ò'ò
@ð ‡[�[×Ññ#Hó ñ#Hr)   rü  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestKhatriRaoc           
      ó2  — t        t        ddgddgg«      t        ddgddgg«      «      }t        |t        dd	gdd
gddgddgg«      «       t        t        j                  ddg«      t        j                  ddg«      «      }t        |j
                  d«       y )NrA   r—   r˜   rs   rÍ   ro   r]   r¤  é   rÖ  rÅ  é   é   é    )rs   r—   )r   r   r
   r$   rØ   rÚ   ©r:   r;   Úbs      r'   Ú
test_basiczTestKhatriRao.test_basic  sž   € Ü”u˜q !˜f q¨! fÐ-Ó.Ü˜q !˜f q¨! fÐ-Ó.ó0ˆô 	˜1œe a¨ WØ&'¨ WØ&(¨" XØ&(¨" Xð%/ó 0ô 	1ô
 ”r—x‘x  A Ó'¬¯©°1°a°&Ó)9Ó:ˆÜ˜1Ÿ7™7 FÕ+r)   c                 ó¼   — t        j                  t        «      5  t        g d¢g d¢g«      }t        ddgddgg«      }t	        ||«       d d d «       y # 1 sw Y   y xY w)N©rA   r—   r˜   ©rs   rÍ   ro   rA   r—   r˜   rs   ©r¾   ÚraisesÚ
ValueErrorr   r   r  s      r'   Útest_number_of_columns_equalityz-TestKhatriRao.test_number_of_columns_equality#  sT   € Ü�]‰]œ:Õ&Ü’yÚ ð"ó #ˆAä˜˜1�vØ˜1�vðó  ˆAä�q˜!Ô÷ '×&Ñ&ús   š/AÁAc                 ó  — t        j                  t        «      5  t        g d¢«      }t        g d¢«      }t	        ||«       d d d «       t        j                  t        «      5  t        g d¢«      }t        g d¢g d¢g«      }t	        ||«       d d d «       t        j                  t        «      5  t        g d¢g d¢g«      }t        g d¢«      }t	        ||«       d d d «       y # 1 sw Y   Œ¢xY w# 1 sw Y   ŒbxY w# 1 sw Y   y xY w)Nr"  r#  )r]   r¤  rt   r$  r  s      r'   Útest_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_array+  sË   € Ü�]‰]œ:Õ&ä’iÓ ˆAÜ’iÓ ˆAÜ�q˜!Ô÷	 'ô �]‰]œ:Õ&ä’iÓ ˆAÜÚÚðó ˆAô �q˜!Ô÷ 'ô �]‰]œ:Õ&äÚÚðó ˆAô ’iÓ ˆAÜ�q˜!Ô÷ 'Ð&÷ 'Ð&ú÷ 'Ð&ú÷ 'Ð&ús#   š'C"Á"+C.Â.+C:Ã"C+Ã.C7Ã:Dc                 óL  — t        ddgddgg«      }t        ddgddgg«      }t        ||«      }t        j                  t	        |j
                  d   «      D �cg c]&  }t        j                  |d d …|f   |d d …|f   «      ‘Œ( c}«      j                  }t        ||«       y c c}w )	NrA   r—   r˜   rs   rÍ   ro   r]   r¤  )	r   r   r$   rÚ  ry   rÚ   Úkronr½   r
   )r:   r;   r  Úres1rJ  Úres2s         r'   Útest_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equationsD  s¦   € Ü�A�q�6˜A˜q˜6Ð"Ó#ˆÜ�A�q�6˜A˜q˜6Ð"Ó#ˆä˜!˜QÓˆÜ�y‰yÜ#(¨¯©°©Ô#4ó6Ù#4˜aô Ÿ'™' !¢A q D¡'¨1ªQ°¨T©7Õ3Ø#4ñ6ó 7ß78±qð 	ô 	˜4 Õ&ùò6s   Á+B!c                 óX  — t        j                  d«      }t        j                  d«      }t        ||«      }t        |t        j                  d«      «       t        j                  d«      }t        j                  d«      }t        ||«      }t        |t        j                  d«      «       y )N)r   r—   )r˜   r—   )r˜   r   )rÍ   r   )rÅ  r   )r$   rØ   r   r   )r:   r;   r  Úress       r'   rÞ   zTestKhatriRao.test_emptyN  sx   € Ü�H‰H�VÓˆÜ�H‰H�VÓˆÜ˜˜AÓˆÜ˜œRŸX™X fÓ-Ô.ä�H‰H�VÓˆÜ�H‰H�VÓˆÜ˜˜AÓˆÜ˜œRŸX™X gÓ.Õ/r)   N)rV   rW   rX   r   r'  r)  r.  rÞ   rY   r)   r'   r  r    s   „ ò
,òòò2'ó	0r)   r  r•  c                 ó�   — t        j                  «       5   | t        j                  d«      d¬«       d d d «       y # 1 sw Y   y xY w)Nr—   F)Údisp)r¾   Údeprecated_callr$   rÙ   )r•  s    r'   Útest_disp_depr4  Y  s.   € ô 
×	Ñ	Õ	!ÙŒR�V‰V�A‹Y˜UÕ#÷ 
"×	!Ñ	!ús	   •<¼Ac                  ó–   — t        j                  «       5  t        t        j                  d«      d¬«       d d d «       y # 1 sw Y   y xY w)Nr—   r*  )Ú	blocksize)r¾   r3  r   r$   rÙ   rY   r)   r'   Útest_blocksize_depr7  _  s,   € Ü	×	Ñ	Õ	!ÜŒb�f‰f�Q‹i 2Õ&÷ 
"×	!Ñ	!ús	   •!?¿A):Ú__doc__r  r¾   r~   Únumpyr$   r   r   r   Únumpy.testingr   r   r   r	   r
   Úscipy.linalgr¤   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úscipy.linalg._matfuncsr   Úscipy.linalg._matfuncs_inv_ssqr   Úscipy.linalg._expm_frechetr   Úscipy.optimizer   r(   r+   r[   rì   r]  r�  r´  rö  rø  rú  rü  r  rä   rç   r4  r7  rY   r)   r'   Ú<module>r@     s  ðñó Û Û ã ß 'Ñ '÷Bõ Bó ÷A÷ A÷ A÷ Aó Aõ +Ý 6Ý EÛ !Ý &Ý #ò÷*'ñ '÷Vn0ñ n0÷biDñ iD÷X	wHñ wH÷tNFñ NF÷bu;ñ u;òp"ò=ò'÷BHñ BH÷JB0ñ B0ðH ‡�×Ñ˜Ø  uÐ-ó/ñ$ó/ð$ó'r)   