Ë
    ÏÍ:jM¬  ã                   ó˜  — 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$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«      Z.d„ Z/d„ Z0d„ Z1 G d„ d«      Z2 G d„ d«      Z3y)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)Ú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    úu/home/mcse/projects/srt_converter/srt-converter-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.   r/   ©g333333#Àg333333#@g     €9ÀgÍÌÌÌÌÌ.Àr/   ©gš™™™™™#@g333333Àg      2@g3333332@ç       @)gŸ´ªæ'@çÀ'RqöÀgÂ�¤ƒy¢.@g�¼eÚ@§5@r4   )g@¢èÈ½Àç˜UÐ›'êß?gëò9¹×\Àgçœ+Œ%¿Àr5   )gR¸…ëQÀçìQ¸…ëá?g®Gáz®ÀgffffffÀr6   )g¥×¨#Àç´w?Ã®ð?gÀk#àeÀgC,î�NÀr7   )gà®ý¡@ç4Õ2ì
à¿gÆF(£@gcÔsÚ@@r8   )r   r   r   )ÚselfÚaÚcrÚrs       r&   Ú	test_nilszTestSignM.test_nils3   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   )r@   r   r@   r   ©r   r   r   r@   )r   r   r@   r   ©r   r   ©r9   r:   s     r&   Útest_defective1zTestSignM.test_defective1A   s   € Ü’;šyª²9Ð=Ó>ˆÜˆa�r(   c                 óN   — t        g d¢g d¢g d¢g d¢g d¢f«      }t        |«       y )Nr,   r-   r0   r1   r2   rB   rC   s     r&   Útest_defective2zTestSignM.test_defective2F   s)   € ÜÚ&Ú'Ú(Ú'Ú$ð&ó 'ˆô 	ˆa�r(   c           
      óZ   — t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |«       y )N©r/   ç      9@r?   r?   r?   r?   r?   ©r?   ç      Àç      $@ç      @rM   rM   r?   ©r?   r?   r3   ç      .@rM   rM   r?   ©r?   r?   r?   r?   rO   rM   r?   ©r?   r?   r?   r?   rM   rL   r?   ©r?   r?   r?   r?   r?   r/   rI   ©r?   r?   r?   r?   r?   r?   rK   rB   rC   s     r&   Útest_defective3zTestSignM.test_defective3P   s/   € ÜÒ1Ú1Ú0Ú0Ú0Ú1Ú0ð2ó 3ˆô 	ˆa�r(   N)Ú__name__Ú
__module__Ú__qualname__r=   rD   rF   rT   © r(   r&   r*   r*   1   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 )NrH   rJ   rN   rP   rQ   rR   rS   é   gÍÌÌÌÌÌ@y                )r   r   r   )r9   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   )r9   r%   ÚA_logmÚA_round_trips       r&   Ú*test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmj   s,   € ô 2Ó3ˆÜ�a“ˆÜ˜F“|ˆÜ˜ a¨d¸Ö?r(   c                 ó¨   — t        «       }t        |t        j                  «      }t	        |«      }t        t        j                  ||dd¬«       «       y )Nçñhãˆµøä>r_   r`   )r'   r   r#   Úlogr   r   Úallclose)r9   r%   Ú
A_funm_logrd   s       r&   Ú.test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logs   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 r@   é   ©Úsizeéüÿÿÿé   é	   zM:z eivals:Úignore)Úerr_msg)r#   ÚrandomÚdefault_rngÚrangeÚuniformÚlogspaceÚlinalgÚeigvalsr   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   r   )r9   ÚrngÚnÚ
M_unscaledÚscaleÚMÚWru   Ú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˜!“ò 	KˆAØŸ™¨1¨a¨&˜Ó1ˆJÜŸ™ R¨¨AÓ.ò K�Ø Ñ&�ô —I‘I×%Ñ% aÓ(�Ø˜q˜c ¨!¨Ð-�ô   ›(�Ø%,¨wÑ%6Ð"ÜÐ 2°AÔ6ô ×,Ñ,Ó.ñ KÜ×)Ñ)¨(´NÔCä! !›W�FÜ(,¨V«Ð%Ü#Ð$5°qÀ'ÕJ÷Kð KñKñ	K÷Kð Kú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 )Nrm   r@   rn   ù              ð?rq   rr   rs   )	r#   rv   rw   rx   Ústandard_normalrz   r   r   r   )r9   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˜!“ò 	1ˆAØ×-Ñ-¨q°!¨fÓ5Ø˜S×0Ñ0°!°Q°Ó8Ñ8ñ9ˆJäŸ™ R¨¨AÓ.ò 1�Ø Ñ&�Ü˜a›�Ü# F›|�Ü ¨aÕ0ñ	1ñ	1r(   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ÚGr@   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)r9   Úcomplex_dtype_charsÚmatrix_as_listr†   r%   rc   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)r@   r@   r–   )r–   r@   r@   )r@   r–   r@   r!   ç{®Gáz„?)r$   r¦   r#   r   r£   r{   r|   r   Úabsoluter›   Úsumr   Ú
issubdtyper"   Úinexactr   r   )r9   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 )Nr@   r   éÿÿÿÿr!   )	r$   r¦   r#   r   r   r   r®   r"   Úcomplexfloating)r9   r…   r°   r%   rc   Úinfos         r&   Útest_real_mixed_sign_spectrumz&TestLogM.test_real_mixed_sign_spectrumÈ   sˆ   € ð �Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð ð"ò 	IˆAô œW�nò I�Ü—H‘H˜Q bÔ)�Ü# A›w‘�˜ÜœŸ™ f§l¡l´B×4FÑ4FÓGÕHñIñ	I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�   r@   r_   ©rb   )r#   r   ÚasarrayÚTÚpytestÚwarnsr   r   r   r   r   )r9   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�÷ä�Q“ˆAÜ˜A˜q uÖ-ñ		.÷ð ú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   )r9   r…   rÀ   rÁ   s       r&   Útest_nearly_singularzTestLogM.test_nearly_singularÜ   sZ   € Ü�H‰H�v�h�ZÓ ˆÜ�\‰\Ô+×EÑEÓFñ 	Ü�Q“ˆA÷	ä�‹GˆÜ˜˜1 5Ö)÷	ð 	ú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   r@   rµ   ç      à?r_   rº   r�   rr   ù       €      ð¿r–   )r#   Úpir   r   r   )r9   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   ©r9   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"   )r9   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)r9   r"   s     r&   Útest_no_ZeroDivisionErrorz"TestLogM.test_no_ZeroDivisionError  s]   € ô
 �l‰lœ>Ð1PÔQñ 	0Ü�l‰lÔ5Ó6ñ	0ä”—‘˜&¨Ô.Ô/÷	0÷ 	0÷ 	0ñ 	0ú÷ 	0ð 	0ús"   œA4¶!A(ÁA4Á(A1	Á-A4Á4A=N)rU   rV   rW   r½   ÚmarkÚfilterwarningsr=   re   rk   r‹   r�   r©   r³   r¸   rÂ   rÅ   rÊ   rÑ   ÚxfailÚparametrizeÚintr$   r#   Úfloat32r¦   Ú	complex64rÝ   rã   rX   r(   r&   rZ   rZ   \   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(   rZ   c                   óX  — 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ej(                  j+                  d«      d„ «       Zej(                  j+                  d«      d„ «       Zej(                  j+                  d«      d„ «       Zej(                  j3                  deeej:                  eej>                  g«      d„ «       Z d„ Z!d„ Z"d„ Z#ej(                  j3                  dej:                  ejH                  ej>                  ejJ                  g«      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 r@   rn   rq   rr   rs   ©	r#   rv   rw   rx   rŽ   rz   r   Údotr   ©r9   r�   r‚   rƒ   r„   r…   r‡   rˆ   s           r&   r‹   z&TestSqrtM.test_round_trip_random_float  s‰   € Ü�i‰i×#Ñ#Ð$4Ó5ˆÜ�q˜!“ò 	7ˆAØ×,Ñ,¨a°¨VÓ4ˆJÜŸ™ R¨¨AÓ.ò 7�Ø Ñ&�Ü ›(�Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÕ6ñ	7ñ	7r(   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 r@   rn   r�   rq   rr   rs   rî   rð   s           r&   r�   z(TestSqrtM.test_round_trip_random_complex  s¥   € Ü�i‰i×#Ñ#Ð$4Ó5ˆÜ�q˜!“ò 	7ˆAØ×-Ñ-¨q°!¨fÓ5Ø˜s×2Ñ2°A°q°6Ó:Ñ:ñ;ˆJäŸ™ R¨¨AÓ.ò 7�Ø Ñ&�Ü ›(�Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÕ6ñ	7ñ	7r(   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   r@   r   rA   )r@   r   r   rÇ   )r   r   r   r   )r9   Ú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’   r@   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>C  r¡   r¢   rt   r!   )r£   r{   r|   r   r¤   r}   r~   r   r   r#   r   r$   r   r"   r¥   r¦   ©r9   r§   r¨   r†   r%   ÚA_sqrtms         r&   Ú+test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion5  sr  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð"ó 	CˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¸!Ô<Ó<Ð<Ô=ô ×(Ñ(Ó*ñ CÜ×%Ñ% h´Ô>ô —H‘H˜^´5Ô9�Ü ›(�Ü˜Ÿ™×*Ñ*Ð2EÐEÔFô —H‘H˜^´7Ô;�Ü ›(�Ü˜Ÿ™×*Ñ*Ð.AÐAÔBô —X‘X˜n´EÔ:Ð:�Ü ›(�Ü˜Ÿ™×*Ñ*Ð.AÐAÔB÷!Cñ Cñ	C÷Cñ Cú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’   r@   r   rµ   ©r   r@   r   )r   r   rµ   ©r@   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>a  ó$   è ø€ Ò8°˜Ÿ™Ò, !§&¡&¨1¡*Ó,Ñ8ù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_spectrumX  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×&Ñ&Ð*=Ð=Õ>ñ#	?r(   c                 ó¸   — t        «       }t        |«      }||z  }t        ||d¬«       t        t        j                  |«      t        j                  |«      «       y )Nrg   ©ra   )r'   r   r   r#   Útril)r9   r%   rü   rd   s       r&   Ú%test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1m  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!   rt   )rr   rr   )rè   r$   r#   r   r}   r~   r   r   r   r   r  râ   Úisnanr¤   Úisinf)r9   r°   r%   rü   s       r&   Útest_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangularu  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ù               @rr   r   ù       €       Àù      ð?      ð?r–   ù      ð?      ð¿r_   rº   )r   r#   rï   r   ©r9   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)r@   r   r   r@   r	  rÇ   r   r_   rº   rt   )	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Õ-Ü×$Ñ$Ó&ñ 	5Ü×!Ñ! (¬MÔ:äœE !›H a¨eÕ4÷	5÷ 	5ñ 	5ú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–   r@   r   r–   r@   r   r_   rº   rt   ©Úcategory)	r#   Údiagr   r   r}   r~   rå   r   r   r  s      r&   Útest_gh5336zTestSqrtM.test_gh5336²  sy   € Ü�G‰G’IÓˆÜ�G‰G”T˜!“W˜a �OÓ$ˆÜ˜˜A™˜q uÕ-Ü×$Ñ$Ó&ñ 	5Ü×#Ñ# H´}ÕEÜœE !›H a¨eÕ4÷	5÷ 	5ñ 	5ú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á   rt   r  r_   rº   )r#   râ   r}   r~   rå   r   r   r   r  s      r&   Útest_gh7839zTestSqrtM.test_gh7839º  s_   € Ü�H‰H�VÓˆÜ�H‰H�VÓˆä×$Ñ$Ó&ñ 	5Ü×#Ñ# H´}ÕEäœE !›H a¨eÕ4÷	5÷ 	5ñ 	5ús   ¿3A;Á;Bc                 ó¼   — t        j                  d«      }|j                  d«       t        j                  |d«       t        j                  t        |«      «      sJ ‚y )N)é   r  g®Gázî?r@   )r#   r×   ÚfillÚfill_diagonalÚ	isrealobjr   ©r9   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   r@   rÈ   )r   r�   r–   r_   rº   g�íµ ÷Æ°>)r#   r   r   r   Úastyperê   )r9   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–   rr   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(   zignore::DeprecationWarningc                 óŽ  — 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–   rr   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  rr   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"   )r9   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–   ro   rµ   )Úkr@   )
r#   rv   rw   ry   r  rØ   ÚtriuÚasfortranarrayr   r   )r9   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)rr   r   rÌ   rÌ   )rÙ   r"   )r#   r×   r$   r
   r   )r9   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Ì   ro   rµ   )r#   rv   rw   ry   Úcopyr   r   )	r9   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(   Údtypc                 ó  — t        j                  g d¢g d¢g d¢g|¬«      }t        j                  t        d¬«      5  t        |«      }t        j                  |ddd …f   «      j                  «       sJ ‚	 d d d «       y # 1 sw Y   y xY w)N)r   r–   r–   ©r   r   r   r!   zMatrix is singular.rß   r   r@   )r#   r   r½   r¾   r   r   r  Úall)r9   r\  r:   Úress       r&   Útest_gh24508zTestSqrtM.test_gh24508;  sm   € ô
 �H‰H’i¢ªIÐ6¸dÔCˆÜ�\‰\œ-Ð/DÔEñ 	.Ü˜“(ˆCÜ—8‘8˜C  1¡2 ™JÓ'×+Ñ+Ô-Ð-Ñ-÷	.÷ 	.ñ 	.ús   ¼8A>Á>BN)'rU   rV   rW   r‹   r�   rø   rý   r  r  r  rÊ   r  r  r  r#  r'  r0  r6  r:  r½   rä   rå   r?  rB  rD  rç   rè   r$   r#   ré   r¦   rê   rÝ   rP  rR  r[  r,  r9  ra  rX   r(   r&   rì   rì     sU  „ ò7ò	7ò0ò"!CòF?ò*;ò/ð*ò&1ò5ò5ò5ò&ò/ò,ò,ò/ð ‡[�[×ÑÐ <Ó=ñ	0ó >ð	0ð ‡[�[×ÑÐ <Ó=ñ	3ó >ð	3ð ‡[�[×ÑÐ <Ó=ñ3ó >ð3ð ‡[�[×Ñ˜T C¨°·
±
¸GÀRÇ\Á\Ð#RÓSñ#ó Tð#òGò(òDð ‡[�[×Ñ˜V b§j¡j°"·*±*Ø&(§l¡l°B·M±Mð&Có Dñ.ó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éÒ  r@   rÌ   r�   rq   rr   rs   ©
r#   rv   rw   rx   rŽ   rz   r   r{   Úmatrix_powerr   ©	r9   r�   Úpr‚   rƒ   r„   r…   ÚM_rootr�   s	            r&   r�   z8TestFractionalMatrixPower.test_round_trip_random_complexG  sÆ   € Ü�i‰i×#Ñ# DÓ)ˆÜ�q˜!“ò 	5ˆAÜ˜1˜a“[ò 5�Ø!×1Ñ1°1°a°&Ó9Ø  3×#6Ñ#6¸¸1°vÓ#>Ñ>ñ?�
äŸ[™[¨¨Q°Ó2ò 5�EØ" UÑ*�AÜ4°Q¸¸!¹Ó<�FÜ#%§9¡9×#9Ñ#9¸&À!Ó#D�LÜ# L°!Õ4ñ	5ñ5ñ	5r(   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 )Nre  r@   rÌ   rq   rr   rs   rf  rh  s	            r&   r‹   z6TestFractionalMatrixPower.test_round_trip_random_floatS  s¬   € ô
 �i‰i×#Ñ# DÓ)ˆÜ�q˜!“ò 	5ˆAÜ˜1˜a“[ò 5�Ø ×0Ñ0°!°Q°Ó8�
ÜŸ[™[¨¨Q°Ó2ò 5�EØ" UÑ*�AÜ4°Q¸¸!¹Ó<�FÜ#%§9¡9×#9Ñ#9¸&À!Ó#D�LÜ# L°!Õ4ñ	5ñ5ñ	5r(   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 )Nre  )r–   r—   rÌ   r*  r�   çš™™™™™É?rÌ   gš™™™™™Àiåÿÿÿgffffff@r  )	r#   rv   rw   rx   rŽ   r   r{   rg  r   )	r9   r�   r‚   Úir…   ÚM_one_fifthr�   r±   r²   s	            r&   Ú(test_larger_abs_fractional_matrix_powerszBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powersb  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 é   r@   rÌ   rq   ro   TFr–   r�   )r#   rv   rw   rx   ÚintegersÚexpÚchoicer   r   r   r   )r9   r�   Únsamplesrn  r‚   ri  Úmatrix_scaler%   ÚA_powerrc   ÚA_power_expm_logms              r&   Útest_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powerst  sè   € ô �i‰i×#Ñ#Ð$4Ó5ˆØˆÜ�x“ò 	8ˆ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ñ%	8r(   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«ªªªªªú?r@   r«   )
r'   r   r#   r   r   r   Ú_remainder_matrix_powerr   r   r  )r9   r%   ÚA_funm_sqrtrü   ÚA_rem_powerrx  ri  rd   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Ü˜ Ô)Ü˜ Ô-ð ò 	EˆAÜ-¨a°Ó3ˆGÜ2°7¸A¸a¹CÓ@ˆLÜ˜L¨!°$Õ7ÜœBŸG™G L°!Ó4´b·g±g¸aÀ³mÕDñ		E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 )Nre  r*  r�   rÌ   r@   )	r#   rv   rw   rŽ   rx   r   Ú_briggs_helper_functionÚexp2r   )r9   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ò 	8ˆAÜ˜1“Xò 8�Ü.×FÑFÀqÈ!ÓL�
Ø¤"§'¡'¨1¨"£+Ñ-°Ñ1�
Ü 
¨JÕ7ñ8ñ	8r(   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’   r@   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ÀçÍÌÌÌÌÌì¿rm  gffffff
@r!   )r£   r{   r|   r   r¤   r#   r   r$   r   r"   r¥   r¦   ©r9   r§   r¨   r†   ri  r%   rx  s          r&   Ú%test_type_preservation_and_conversionz?TestFractionalMatrixPower.test_type_preservation_and_conversion©  sA  € ð
 .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð	"ó 	CˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¸!Ô<Ó<Ð<Ô=ð ,ò C�ô —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òCñ	C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’   r@   r   rµ   rÿ   )r   r   r@   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ò 	CˆNô —‘×$Ñ$ ^Ó4ˆAÜ”CÑ8°aÔ8Ó8Ô9ð ,ò 
C�ô —H‘H˜^´7Ô;�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð.AÐAÔBô —H‘H˜^´5Ô9�Ü1°!°QÓ7�Ü˜Ÿ™×*Ñ*Ð.AÐAÕBñ
Cñ	Cr(   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   r@   r–   r—   rn   r^  )r   r@   r@   )r   rµ   r@   r!   )gffffffæ¿r‰  rˆ  gÍÌÌÌÌÌô¿)rm  gáz®Gáö?)	r$   r¦   r#   r   r   r   r
  r_  r   )r9   r¨   Únewtyper%   ri  rx  rd   s          r&   Útest_singularz'TestFractionalMatrixPower.test_singularå  sá   € ð �Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ÚšI¢zÐ2ð	4ò 	5ˆNô "¤7Ð+ò 5�Ü—H‘H˜^°7Ô;�Ø1ò 5�AÜ5°a¸Ó;�GÜœBŸH™H WÓ-×1Ñ1Ó3Õ4ð5ð %ò 5�AÜ5°a¸Ó;�GÜ#:¸7ÀAÀaÁCÓ#H�LÜ# L°!Õ4ñ5ñ5ñ	5r(   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  rr   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)rU   rV   rW   r�   r‹   rp  rz  r  r„  r‹  rŽ  r½   rä   ræ   r‘  rÊ   rX   r(   r&   rc  rc  F  s[   „ ò
5ò5ò&ò$8ò2Eò(8ò!CòFCð2 ‡[�[×ÑÐ<ÐÓ=ñ5ó >ð5ó&Hr(   rc  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   r@   )r   r   r   rC   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 )Nr@   )r   r   r#   r   rô   )r9   Úelts     r&   Útest_single_eltzTestExpM.test_single_elt  s&   € Ü�1‹gˆÜ˜œRŸX™X¬¯© v hÓ/Õ0r(   Úfuncr°   rÙ   rÖ   ©r@   r@   c                 óØ   — t        j                  ||¬«      }t        j                  d|¬«      } ||«      } ||«      }|j                  |k(  sJ ‚|j                  |j                  k(  sJ ‚y )Nr!   )r*  r*  )r#   râ   rÙ   r"   )r9   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 )Nr@   rr   r–   r“   Úf)
r#   rô   r   r   r   r%  rê   r"   r¥   ré   )r9   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 )Nr@   rr   r—   rµ   rÌ   éýÿÿÿrq   r“   )Úorderr–   r\   é   rn   éûÿÿÿ)r#   rô   r   r   r   )r9   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_readonly6  s+   € ØˆÜ�G‰G�Q˜�F‹OˆØ!ˆ�‰ÔÜˆQ�r(   rÌ   c                 óÎ  — t        j                  dt        ¬«      }t         j                  j	                  d«      }|j                  ddd«      }|j                  ddd«      }|j                  d«      |||f<   t        |«      }t         j                  j                  t        |«      |«       t        d«      D ]-  }t        |«      }t         j                  j                  ||«       Œ/ y )N)é�  r¯  r!   éd   r   i�  iô  rÌ   )r#   râ   r$   rv   rw   rs  r   Útestingr   r   rx   )r9   r%   r�   rn  ÚjÚ	first_resÚnext_ress          r&   Útest_gh18086zTestExpM.test_gh18086<  s²   € ä�H‰H�Z¤uÔ-ˆÜ�i‰i×#Ñ# CÓ(ˆØ�L‰L˜˜C Ó%ˆØ�L‰L˜˜C Ó%ˆØ—*‘*˜S“/ˆˆ!ˆQˆ$‰ä˜“Gˆ	Ü
�
‰
×,Ñ,¬T°)«_¸aÔ@ä�q“ò 	FˆAÜ˜A“wˆHÜ�J‰J×0Ñ0°¸HÕEñ	Fr(   N)rU   rV   rW   r–  r™  r½   rä   rç   r   r   r   r   r   r   r   rè   r$   r#   ré   r¦   rê   r   r¥  r¬  rÑ   Ú	fail_slowrµ  rX   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©r@   r–   r—   rr   ©rÌ   rn   r\   r©  ©r   r   r@   r–   ©r   r   rÌ   rn   r!   r@   r–   rÌ   rn   r—   rr   r\   r©  ÚmethodÚSPSÚblockEnlarge)r#   r   r$   r£   r{   r   r   r   )	r9   r…   r%   rÁ   Úexpected_expmÚexpected_frechetÚkwargsÚobserved_expmÚobserved_frechets	            r&   Útest_expm_frechetz!TestExpmFrechet.test_expm_frechetN  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ÜÐ,Ð.>Õ?ñ	@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!   r@   r–   rÌ   rn   r—   rr   r\   r©  )r@   r—   rÌ   r\   rs   é   rI  é   rµ   rÇ   )r#   r   r$   r£   r{   r   ÚzipÚ_expm_frechetÚell_table_61r   r   r   )r9   Ú
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_frechete  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°  rr   r–   é   ro   r@   gH¯¼šò×j>rº   gH¯¼šò×z>)r#   rv   rw   ry   ÚnormalÚstandard_cauchyÚexponentialrx   ru  rs  r£   r{   r   ÚvstackÚhstackÚ
zeros_liker   r   r   )r9   r�   ÚrfuncsÚntestsrn  Úrfuncr×  r‚   rÎ  rÏ  rÐ  r„   r%   rÁ   r…   rÁ  rÂ  rÄ  rÅ  s                      r&   Ú	test_fuzzzTestExpmFrechet.test_fuzz†  s}  € Ü�i‰i×#Ñ#Ð$4Ó5ˆð —‘Ø—
‘
Ø×#Ñ#Ø—‘ð	!ˆð
 ˆÜ�v“ó 	Kˆ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ñ#	K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µ•Œå?r@   r¿  ©r¾  rÀ  )r#   r   r$   r£   r{   r   r   r   )r9   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è  re  ro   r¿  ræ  rÀ  )r#   rv   rw   rÝ  r   r   )	r9   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)rU   rV   rW   rÆ  rØ  rä  rë  r½   rä   ÚslowÚskiprí  rX   r(   r&   r¸  r¸  L  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Úepsri  Ú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 )Nre  r@   rr   r   )r#   rv   rw   rx   rŽ   r   r	   )r9   r�   r‚   r%   Úkappas        r&   Útest_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smokeØ  sR   € Ü�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	   )r9   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 )Nre  rª  rÌ   rÈ  )Únumr8  r–   r*  r›  rÖ   )r#   rv   rw   Úlinspacer   r   r   Úabsrz   rx   rŽ   r¬   )r9   r�   Úxr%   rn  s        r&   Útest_univariatez'TestExpmConditionNumber.test_univariateé  sØ   € Ü�i‰i×#Ñ# DÓ)ˆÜ—‘˜R ¨Ô+ò 	2ˆAÜ—‘˜1˜#˜“ˆAÜœI a›L¬#¨a«&Õ1ð	2ô —‘˜R ¨Ô+ò 	2ˆAÜ—‘˜1˜#˜“ˆAÜœI a›L¬#¨a«&Õ1ð	2ô �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  rg   r*  r–   rÌ   zL-BFGS-Bræ  r@   )r#   rv   ÚRandomStaterx   ÚrandintÚrandnr£   r{   r   r   r   Ú	functoolsÚpartialrú  rÍ   r   r
  rü  rò  rÙ   rþ  r   r	   )r9   r�   rõ  rv  rn  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“ó 	Hˆ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ñ?	Hr(   N)
rU   rV   rW   r  r  r  r½   rä   rî  r  rX   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 )Nr@   r–   r—   rr   rÌ   rn   r\   r©  é   rÚ  rÉ  é   é   é    )rr   r–   )r   r   r
   r#   r×   rÙ   ©r9   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©r@   r–   r—   ©rr   rÌ   rn   r@   r–   r—   rr   ©r½   ÚraisesÚ
ValueErrorr   r   r"  s      r&   Útest_number_of_columns_equalityz-TestKhatriRao.test_number_of_columns_equality*  s]   € Ü�]‰]œ:Ó&ñ 	Ü’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©  rs   r(  r"  s      r&   Útest_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_array2  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 )	Nr@   r–   r—   rr   rÌ   rn   r\   r©  )	r   r   r#   rÞ  rx   rÙ   Úkronr¼   r
   )r9   r:   r#  Úres1rJ  Úres2s         r&   Útest_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equationsK  s¡   € Ü�A�q�6˜A˜q˜6Ð"Ó#ˆÜ�A�q�6˜A˜q˜6Ð"Ó#ˆä˜!˜QÓˆÜ�y‰yÜ#(¨¯©°©Ó#4ö6Øô Ÿ'™' !¢A q D¡'¨1ªQ°¨T©7Õ3ò 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   )r9   r:   r#  r`  s       r&   rÝ   zTestKhatriRao.test_emptyU  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)rU   rV   rW   r$  r+  r-  r2  rÝ   rX   r(   r&   r  r    s   „ ò
,òòò2'ó	0r(   r  )4Ú__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._matfuncs_inv_ssqr   Úscipy.linalg._expm_frechetr   Úscipy.optimizer   r'   r*   rZ   rì   rc  r”  r¸  rú  rü  rþ  r   r  rX   r(   r&   ú<module>r;     sÝ   ðñó Û Û ã ß 'Ñ '÷Bõ Bó ÷A÷ A÷ A÷ Aó Aõ +Ý EÛ !Ý &Ý #ò÷*'ñ '÷Vn0ñ n0÷bv.ñ v.÷r	wHñ wH÷tIFñ IF÷Xu;ñ u;òp"ò=ò'÷BHñ BH÷JB0ò B0r(   