Ë
    âQ(h¤  ã                   ó˜  — d Z ddlZddlZddlmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZ ddl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
„ 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«      Z5y)z, Test functions for linalg.matfuncs module

é    N)ÚarrayÚidentityÚdotÚsqrt)Úassert_array_almost_equalÚassert_allcloseÚassert_Úassert_array_lessÚassert_array_equalÚassert_warns)Ú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)Ú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    ú^/var/www/skyplay_api_hub/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Àr0   r1   ©g333333#Àg333333#@g     €9ÀgÍÌÌÌÌÌ.Àr1   ©gš™™™™™#@g333333Àg      2@g3333332@ç       @)gŸ´ªæ'@çÀ'RqöÀgÂ�¤ƒy¢.@g�¼eÚ@§5@r6   )g@¢èÈ½Àç˜UÐ›'êß?gëò9¹×\Àgçœ+Œ%¿Àr7   )gR¸…ëQÀçìQ¸…ëá?g®Gáz®ÀgffffffÀr8   )g¥×¨#Àç´w?Ã®ð?gÀk#àeÀgC,î�NÀr9   )gà®ý¡@ç4Õ2ì
à¿gÆF(£@gcÔsÚ@@r:   )r   r   r   )ÚselfÚaÚcrÚrs       r(   Ú	test_nilszTestSignM.test_nils2   sW   € ÜÒ0Ú0Ú.Ú1Ú-ð	/ó 0ˆô
 ÒQÚOÚ0ÚOÚNð	Pó Qˆô
 �!‹HˆÜ! ! BÕ'r*   c                 óL   — t        g d¢g d¢g d¢g d¢g«      }t        |d¬«       y )N)ç        é   r   r   )rB   r   rB   r   ©r   r   r   rB   )r   r   rB   r   F©Údisp©r   r   ©r;   r<   s     r(   Útest_defective1zTestSignM.test_defective1@   s   € Ü’;šyª²9Ð=Ó>ˆÜˆa�eÖr*   c                 óR   — t        g d¢g d¢g d¢g d¢g d¢f«      }t        |d¬«       y )Nr.   r/   r2   r3   r4   FrD   rF   rG   s     r(   Útest_defective2zTestSignM.test_defective2E   s,   € ÜÚ&Ú'Ú(Ú'Ú$ð&ó 'ˆô 	ˆa�eÖr*   c           
      ó^   — t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |d¬	«       y )
N©r1   ç      9@rA   rA   rA   rA   rA   ©rA   ç      Àç      $@ç      @rQ   rQ   rA   ©rA   rA   r5   ç      .@rQ   rQ   rA   ©rA   rA   rA   rA   rS   rQ   rA   ©rA   rA   rA   rA   rQ   rP   rA   ©rA   rA   rA   rA   rA   r1   rM   ©rA   rA   rA   rA   rA   rA   rO   FrD   rF   rG   s     r(   Útest_defective3zTestSignM.test_defective3O   s2   € ÜÒ1Ú1Ú0Ú0Ú0Ú1Ú0ð2ó 3ˆô 	ˆa�eÖr*   N)Ú__name__Ú
__module__Ú__qualname__r?   rH   rJ   rX   © r*   r(   r,   r,   0   s   „ ò(òò
ó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	„ «       Zej                  j                  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                  ej                  j'                  deeej.                  eej2                  g«      d„ «       «       Zy)ÚTestLogMc           
      ó†   — t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        d«      d	z  d
z   |z
  }t        |d¬«       y )NrL   rN   rR   rT   rU   rV   rW   é   gÍÌÌÌÌÌ@y                FrD   )r   r   r   )r;   r<   Úms      r(   r?   zTestLogM.test_nils]   sI   € ÜÒ1Ú1Ú0Ú0Ú0Ú1Ú0ð2ó 3ˆô �a‹[˜‰_˜RÑ Ñ"ˆÜˆQ�UÖr*   c                 ól   — t        «       }t        |d¬«      \  }}t        |«      }t        ||dd¬«       y )NFrD   g-Cëâ6
?ç›+¡†›„=©ÚrtolÚatol)r)   r   r   r   )r;   r'   ÚA_logmÚinfoÚA_round_trips        r(   Ú*test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmi   s3   € ô 2Ó3ˆÜ˜A EÔ*‰ˆ�Ü˜F“|ˆÜ˜ a¨d¸Ö?r*   c                 ó²   — t        «       }t        |t        j                  d¬«      \  }}t	        |«      }t        t        j                  ||dd¬«       «       y )NFrD   çñhãˆµøä>rc   rd   )r)   r   r%   Úlogr   r	   Úallclose)r;   r'   Ú
A_funm_logrh   ri   s        r(   Ú.test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logq   sG   € ô 2Ó3ˆÜ ¤2§6¡6°Ô6Ñˆ
�DÜ˜JÓ'ˆÜ”B—K‘K ¨a°dÀÔGÐGÕHr*   c                 óà  — t         j                  j                  d«       t        dd«      D ]À  }t         j                  j	                  ||«      }t        j
                  ddd«      D ]„  }||z  }t         j                  j                  |«      }d|› d|› �}t        |d	¬
«      \  }}|j                  |«      }	t        |	|«       t        |d	¬
«      \  }
}t        |
«      }t        |||¬«       Œ† ŒÂ y )NéÒ  rB   é   éüÿÿÿé   é	   zM:z eivals:FrD   )Úerr_msg)r%   ÚrandomÚseedÚrangeÚrandnÚlogspaceÚlinalgÚeigvalsr   r   r   r   r   )r;   ÚnÚ
M_unscaledÚscaleÚMÚWrw   ÚM_sqrtmrh   ÚM_sqrtm_round_tripÚM_logmÚM_logm_round_trips               r(   Útest_round_trip_random_floatz%TestLogM.test_round_trip_random_floaty   sâ   € Ü
�	‰	�‰�tÔÜ�q˜!“ò 	GˆAÜŸ™Ÿ™¨¨AÓ.ˆJÜŸ™ R¨¨AÓ.ò G�Ø Ñ&�ô —I‘I×%Ñ% aÓ(�Ø˜q˜c ¨!¨Ð-�ô !& a¨eÔ 4‘�˜Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÔ6ô  $ A¨EÔ2‘�˜Ü$(¨£LÐ!ÜÐ 1°1¸gÖFñGñ	Gr*   c                 ó|  — t         j                  j                  d«       t        dd«      D ]Ž  }t         j                  j	                  ||«      dt         j                  j	                  ||«      z  z   }t        j
                  ddd«      D ].  }||z  }t        |d¬	«      \  }}t        |«      }t        ||«       Œ0 Œ� y ©
Nrr   rB   rs   ù              ð?rt   ru   rv   FrD   )	r%   rx   ry   rz   r{   r|   r   r   r   )r;   r   r€   r�   r‚   r†   rh   ÚM_round_trips           r(   Útest_round_trip_random_complexz'TestLogM.test_round_trip_random_complexŽ   s�   € Ü
�	‰	�‰�tÔÜ�q˜!“ò 	1ˆAÜŸ™Ÿ™¨¨AÓ.°´b·i±i·o±oÀaÈÓ6KÑ1KÑKˆJÜŸ™ R¨¨AÓ.ò 1�Ø Ñ&�Ü# A¨EÔ2‘�˜Ü# F›|�Ü ¨aÕ0ñ	1ñ	1r*   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 «       «       «       t        j                  |t        ¬«      }t        |d¬	«      \  }}t        |j                  j                  |v«       t        j                  |t        ¬«      }t        |d¬	«      \  }}t        |j                  j                  |v «       t        j                  |t        ¬«       }t        |d¬	«      \  }}t        |j                  j                  |v «       �Œ& y )
N©ÚFÚDÚGrB   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#   FrD   )Úscipyr}   r~   r	   Úanyr%   r   r&   r   r$   ÚcharÚcomplex)r;   Úcomplex_dtype_charsÚmatrix_as_listrƒ   r'   rg   rh   s          r(   Ú*test_logm_type_preservation_and_conversionz3TestLogM.test_logm_type_preservation_and_conversion˜   s8  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð	"ó 	>ˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¸!Ô<Ó<Ð<Ô=ô —‘˜¬uÔ5ˆAÜ ¨Ô.‰LˆF�DÜ�F—L‘L×%Ñ%Ð-@Ð@ÔAô —‘˜¬wÔ7ˆAÜ ¨Ô.‰LˆF�DÜ�F—L‘L×%Ñ%Ð)<Ð<Ô=ô —‘˜.´Ô6Ð6ˆAÜ ¨Ô.‰LˆF�DÜ�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        |d¬«      \  }}t        t        j                  |j                  t        j                  «      «       t        t!        |«      |«       ŒÏ y )N)rB   rB   r“   )r“   rB   rB   )rB   r“   rB   r#   ç{®Gáz„?FrD   )r&   r£   r%   r   r    r}   r~   r	   Úabsoluter˜   Úsumr   Ú
issubdtyper$   Úinexactr   r   )r;   r‚   ÚdtÚXrœ   ÚYrh   s          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Ü˜1 5Ô)‰GˆAˆtÜ”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 ]q  }t         t        fD ]`  }t        j                  ||¬«      }t	        |d¬«      \  }}t        t        j                  |j                  t        j                  «      «       Œb Œs y )NrB   r   éÿÿÿÿr#   FrD   )	r&   r£   r%   r   r   r	   r«   r$   Úcomplexfloating)r;   r‚   r­   r'   rg   rh   s         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¨EÔ2‘�˜ÜœŸ™ f§l¡l´B×4FÑ4FÓGÕHñIñ	Ir*   c                 ó,  — t        j                  ddgddgg«      }t        j                  ddgddgg«      }||j                  ||j                  fD ]A  }t        j
                  }t        |t        |d¬«      \  }}t        |«      }t        ||d¬«       ŒC y )Nr   r‹   rB   FrD   rc   ©rf   )
r%   r   ÚasarrayÚTr   r   r   r   r   r   )r;   r'   ÚBr‚   Úexpected_warningÚLrh   Ú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Ü0×KÑKÐÜ"Ð#3´T¸1À5ÔI‰GˆAˆtÜ�Q“ˆAÜ˜A˜q uÖ-ñ		.r*   c                 ó°   — t        j                  dgg«      }t        j                  }t	        |t
        |d¬«      \  }}t        |«      }t        ||d¬«       y )Ng0Žä.ÿ++FrD   rc   r¶   )r%   r   r   ÚLogmNearlySingularWarningr   r   r   r   )r;   r‚   rº   r»   rh   r¼   s         r(   Útest_nearly_singularzTestLogM.test_nearly_singular×   sJ   € ä�H‰H�v�h�ZÓ ˆÜ,×FÑFÐÜÐ/´°q¸uÔE‰ˆˆ4Ü�‹GˆÜ˜˜1 5Ö)r*   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   rB   r²   ç      à?rc   r¶   r‹   ru   y       €      ð¿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#   )ÚpytestÚwarnsÚRuntimeWarningr   r   r%   Úzeros)r;   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)rY   rZ   r[   r?   rj   rp   rˆ   r�   r¦   r°   r´   rÛ   ÚmarkÚthread_unsafer½   rÀ   rÄ   rË   ÚxfailÚparametrizeÚintr&   r%   Úfloat32r£   Ú	complex64r×   rß   r\   r*   r(   r^   r^   [   s  „ ò	ò@òIòGò*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ej$                  j'                  d¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej$                  j7                  deeej>                  e ejB                  g«      d„ «       Z"y)Ú	TestSqrtMc                 ó$  — t         j                  j                  d«      }t        dd«      D ]b  }|j	                  ||«      }t        j
                  ddd«      D ]4  }||z  }t        |d¬«      \  }}|j                  |«      }t        ||«       Œ6 Œd y )	Nrr   rB   rs   rt   ru   rv   FrD   ©	r%   rx   ÚRandomStaterz   r{   r|   r   r   r   ©	r;   Úrngr   r€   r�   r‚   r„   rh   r…   s	            r(   rˆ   z&TestSqrtM.test_round_trip_random_float  sŠ   € Ü�i‰i×#Ñ# DÓ)ˆÜ�q˜!“ò 	7ˆAØŸ™ 1 a›ˆJÜŸ™ R¨¨AÓ.ò 7�Ø Ñ&�Ü % a¨eÔ 4‘�˜Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÕ6ñ	7ñ	7r*   c                 óP  — t         j                  j                  d«      }t        dd«      D ]x  }|j	                  ||«      d|j	                  ||«      z  z   }t        j
                  ddd«      D ]4  }||z  }t        |d¬	«      \  }}|j                  |«      }t        ||«       Œ6 Œz y rŠ   rê   rì   s	            r(   r�   z(TestSqrtM.test_round_trip_random_complex  sž   € Ü�i‰i×#Ñ# DÓ)ˆÜ�q˜!“ò 	7ˆAØŸ™ 1 a›¨2°·	±	¸!¸Q³Ñ+?Ñ?ˆJÜŸ™ R¨¨AÓ.ò 7�Ø Ñ&�Ü % a¨eÔ 4‘�˜Ø%,§[¡[°Ó%9Ð"ÜÐ 2°AÕ6ñ	7ñ	7r*   c                 óp  — 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«      }|j                  d   }t        t	        ||«      |«       t        |d|¬«      d   }t        t	        ||«      |«       t        |dd¬«      d   }t        t	        ||«      |«       y )	Ng       ?)g      ð?r   r   rB   r   rC   )rB   r   r   rÂ   F©rE   Ú	blocksizer“   )r   r   rÓ   r   r   r   )r;   ÚeÚser<   Úsar   Úesas          r(   Útest_badzTestSqrtM.test_bad  sË   € àˆÜ�!‹WˆÜ’;Ø�a˜˜!�9Ø�a˜˜!�9Úðó ˆô ’KØ�r˜!˜A�JØ�q˜˜A�JÚðó  ˆð �G‰G�A‰JˆÜ!¤# b¨£*¨QÔ/ä�A˜E¨QÔ/°Ñ2ˆÜ!¤# c¨#£,¨qÔ1ä�A˜E¨QÔ/°Ñ2ˆÜ!¤# c¨#£,¨qÕ1r*   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 �]#  }t         j                  j                  |«      }t        t	        d„ |D «       «       «       t        j                  |t        ¬«      }t        |d¬	«      \  }}t        |j                  j                  |v«       t        j                  |t        ¬«      }t        |d¬	«      \  }}t        |j                  j                  |v «       t        j                  |t        ¬«       }t        |d¬	«      \  }}t        |j                  j                  |v «       �Œ& y )
Nr�   rB   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>B  rž   rŸ   r#   FrD   )r    r}   r~   r	   r¡   r%   r   r&   r   r$   r¢   r£   ©r;   r¤   r¥   rƒ   r'   ÚA_sqrtmrh   s          r(   Ú+test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion4  sH  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð"ó 	?ˆNô —‘×$Ñ$ ^Ó4ˆAÜœÑ<¸!Ô<Ó<Ð<Ô=ô —‘˜¬uÔ5ˆAÜ! !¨%Ô0‰MˆG�TÜ�G—M‘M×&Ñ&Ð.AÐAÔBô —‘˜¬wÔ7ˆAÜ! !¨%Ô0‰MˆG�TÜ�G—M‘M×&Ñ&Ð*=Ð=Ô>ô —‘˜.´Ô6Ð6ˆAÜ! !¨%Ô0‰MˆG�TÜ�G—M‘M×&Ñ&Ð*=Ð=Ö>ñ1	?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 «       «      «       t        j                  |t        ¬	«      }t        |d
¬«      \  }}t        |j                  j                  |v «       t        j                  |t        ¬	«      }t        |d
¬«      \  }}t        |j                  j                  |v «       ŒÖ y )Nr�   rB   r   r²   ©r   rB   r   ©r   r   rB   ©rB   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>\  ó$   è ø€ Ò8°˜Ÿ™Ò, !§&¡&¨1¡*Ó,Ñ8ùrŸ   r#   FrD   )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_spectrumS  sà   € Ø-Ðà�Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð ÚšI¢yÐ1ð3ò 	?ˆNô —‘×$Ñ$ ^Ó4ˆAÜ”CÑ8°aÔ8Ó8Ô9ô —‘˜¬wÔ7ˆAÜ! !¨%Ô0‰MˆG�TÜ�G—M‘M×&Ñ&Ð*=Ð=Ô>ô —‘˜¬uÔ5ˆAÜ! !¨%Ô0‰MˆG�TÜ�G—M‘M×&Ñ&Ð*=Ð=Õ>ñ#	?r*   c                 ó¾  — t         j                  j                  d«       t        dd«      D ]¯  }t         j                  j	                  ||«      dt         j                  j                  ||«      z  z   }t        |d|¬«      \  }}t        |t         j                  j                  |d«      «       t        dd«      D ]  }t        |d|¬«      \  }}t        ||«       Œ! Œ± y )	Nrr   rB   é   r‹   Frð   r“   é
   )
r%   rx   ry   rz   Úrandr{   r   r   r}   Úmatrix_power)r;   r   r'   ÚA_sqrtm_defaultrh   rñ   ÚA_sqrtm_news          r(   Útest_blocksizeszTestSqrtM.test_blocksizesh  s´   € ä
�	‰	�‰�tÔÜ�q˜!“ò 	>ˆAÜ—	‘	—‘˜q !Ó$ r¬"¯)©)¯/©/¸!¸QÓ*?Ñ'?Ñ?ˆAÜ$)¨!°%À1Ô$EÑ!ˆO˜TÜ˜AœrŸy™y×5Ñ5°oÀqÓIÔJÜ" 1 b›\ò >�	Ü$)¨!°%À9Ô$MÑ!�˜TÜ °Õ=ñ>ñ		>r*   c                 óÚ   — t        «       }t        |d¬«      \  }}|j                  |«      }t        ||d¬«       t        t	        j
                  |«      t	        j
                  |«      «       y )NFrD   rl   ©re   )r)   r   r   r   r%   Útril)r;   r'   rú   rh   ri   s        r(   Ú%test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1s  sO   € ä1Ó3ˆÜ˜a eÔ,‰ˆ�Ø—{‘{ 7Ó+ˆÜ˜ a¨dÕ3ÜœŸ™ Ó-¬r¯w©w°q«zÕ:r*   c                 óä   — t         t        fD ]a  }t        j                  g d¢g d¢g d¢g d¢g|¬«      }t	        |d¬«      \  }}t        t        j                  |«      j                  «       «       Œc y )N)r   r”   r   r   )r   r   r”   r   )r   r   r   r”   ©r   r   r   r   r#   FrD   )rä   r&   r%   r   r   r	   ÚisnanÚall)r;   r­   r'   rú   rh   s        r(   Útest_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangular{  se   € ä”u�*ò 	-ˆBÜ—‘ÚÚÚÚð	ð &(ô	)ˆAô
 " !¨%Ô0‰MˆG�TÜ”B—H‘H˜WÓ%×)Ñ)Ó+Õ,ñ	-r*   c                 óT  — t         t        fD ]™  }t        j                  g d¢g d¢g d¢g|¬«      }t        j                  g d¢g d¢g d¢g|¬«      }t	        ||j                  |«      «       t        |d¬«      \  }}t        t        j                  |«      j                  «       «       Œ› y )Nrþ   ©r   r   r   rý   r#   FrD   )
rä   r&   r%   r   r   r   r   r	   r  r  )r;   r­   r'   r¹   ÚB_sqrtmrh   s         r(   Útest_weird_matrixzTestSqrtM.test_weird_matrix†  s™   € ä”u�*ò 	-ˆBÜ—‘ÚÚÚðð #%ô&ˆAô —‘ÚÚÚðð #%ô&ˆAô ˜q !§%¡%¨£(Ô+ô " !¨%Ô0‰MˆG�TÜ”B—H‘H˜WÓ%×)Ñ)Ó+Õ,ñ	-r*   c                 óÒ   — t         j                  j                  d«       t         j                  j                  dd«      }t	        |d¬«      }t        |j                  |«      |«       y )Nrr   r”   TrD   )r%   rx   ry   r  r   r   r   )r;   r'   r¹   s      r(   Ú	test_dispzTestSqrtM.test_disp—  sD   € Ü
�	‰	�‰�tÔä�I‰I�N‰N˜1˜aÓ ˆÜ�!˜$ÔˆÜ˜Ÿ™˜a› !Õ$r*   c                 ó–   — ddgddgg}ddgddgg}t        t        j                  ||«      |d¬	«       t        t        |«      |d¬	«       y )
Nù               @ru   r   ù       €       Àù      ð?      ð?r“   ù      ð?      ð¿rc   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                 óJ  — 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        t        j                  ||«      |d¬«       t        t        |«      |d¬«       y )N)rB   r   r   rB   r  rÂ   r   rc   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ˆô 	œŸ™˜q !› a¨eÕ4Üœ˜a› !¨%Ö0r*   c                 óæ   — t        j                  g d¢«      }t        j                  t        d«      ddg«      }t        t        j                  ||«      |d¬«       t        t        |«      |d¬«       y )N)r“   rB   r   r“   rB   r   rc   r¶   )r%   Údiagr   r   r   r   r  s      r(   Útest_gh5336zTestSqrtM.test_gh5336°  sN   € Ü�G‰G’IÓˆÜ�G‰G”T˜!“W˜a �OÓ$ˆÜœŸ™˜q !› a¨eÕ4Üœ˜a› !¨%Ö0r*   c                 óÊ   — t        j                  d«      }t        j                  d«      }t        t        j                  ||«      |d¬«       t        t	        |«      |d¬«       y )NrÚ   rc   r¶   )r%   rÞ   r   r   r   r  s      r(   Útest_gh7839zTestSqrtM.test_gh7839¶  sD   € Ü�H‰H�VÓˆÜ�H‰H�VÓˆÜœŸ™˜q !› a¨eÕ4Üœ˜a› !¨%Ö0r*   zfailing on macOS after gh-20212rÌ   c                 ó¼   — t        j                  d«      }|j                  d«       t        j                  |d«       t        j                  t        |«      «      sJ ‚y )N)é   r)  g®Gázî?rB   )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                 ó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#   )	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º   € Ü�H‰H�X¤R§X¡XÔ.ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤R§Y¡YÔ/ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤R§Y¡YÔ/ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤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 r0  )	r%   rÞ   Úint8r   r$   r3  Úint16Úint32Úint64r-  s     r(   Ú,test_data_size_preservation_int_in_float_outz6TestSqrtM.test_data_size_preservation_int_in_float_outÍ  sº   € Ü�H‰H�X¤R§W¡WÔ-ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤R§X¡XÔ.ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤R§X¡XÔ.ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤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“   ru   r   éþÿÿÿr#   )	r%   r   r9  r   r$   Ú
complex128r:  r;  r<  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 )Nr1  r#   Úfloat128)	r%   rÞ   Úfloat16r   r$   rå   r3  ÚhasattrrC  r-  s     r(   Ú.test_data_size_preservation_float_in_float_outz8TestSqrtM.test_data_size_preservation_float_in_float_outá  sÉ   € Ü�H‰H�X¤R§Z¡ZÔ0ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤R§Z¡ZÔ0ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü�H‰H�X¤R§Z¡ZÔ0ˆÜ�Q‹x�~‰~¤§¡Ò+Ð+Ð+Ü”2�zÔ"Ü—‘˜¬¯©Ô5ˆ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“   ru   r   r?  r#   rC  Ú
complex256)r%   r   rD  r   r$   ræ   rå   r3  r@  rE  rC  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  ru   r   r  r#   rH  )r%   r   ræ   r   r$   r@  rE  rH  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*   N)#rY   rZ   r[   rˆ   r�   rö   rû   r  r
  r  r  r  r  rÄ   r"  r%  r'  rÛ   rà   râ   r.  r7  r=  rA  rF  rI  rK  rã   rä   r&   r%   rå   r£   ræ   r×   r\   r*   r(   rè   rè   
  sÇ   „ ò7ò7ò2ò*?ò>?ò*	>ò;ò	-ò-ò"%ò1ò
1ò1ò1ð ‡[�[×ÑÐ?ÐÓ@ñ&ó Að&ò,ò,ò/ò	0ò	3ò3ð ‡[�[×Ñ˜T C¨°·
±
¸GÀRÇ\Á\Ð#RÓSñ#ó Tñ#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 ]¢  }t         j                  j	                  ||«      dt         j                  j	                  ||«      z  z   }t        j
                  ddd«      D ]B  }||z  }t        |d|z  «      }t         j                  j                  ||«      }t        ||«       ŒD Œ¤ Œµ y )Nrr   rB   rÆ   r‹   rt   ru   rv   ©
r%   rx   ry   rz   r{   r|   r   r}   r  r   ©r;   Úpr   r€   r�   r‚   ÚM_rootrŒ   s           r(   r�   z8TestFractionalMatrixPower.test_round_trip_random_complex  s¿   € Ü
�	‰	�‰�tÔÜ�q˜!“ò 	5ˆAÜ˜1˜a“[ò 5�ÜŸY™YŸ_™_¨Q°Ó2°R¼"¿)¹)¿/¹/È!ÈQÓ:OÑ5OÑO�
ÜŸ[™[¨¨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«       t        dd«      D ]�  }t        dd«      D ]~  }t         j                  j	                  ||«      }t        j
                  ddd«      D ]B  }||z  }t        |d|z  «      }t         j                  j                  ||«      }t        ||«       ŒD Œ€ Œ‘ y )Nrr   rB   rÆ   rt   ru   rv   rR  rS  s           r(   rˆ   z6TestFractionalMatrixPower.test_round_trip_random_float  s¨   € ô
 	�	‰	�‰�tÔÜ�q˜!“ò 	5ˆAÜ˜1˜a“[ò 5�ÜŸY™YŸ_™_¨Q°Ó2�
ÜŸ[™[¨¨Q°Ó2ò 5�EØ" UÑ*�AÜ4°Q¸¸!¹Ó<�FÜ#%§9¡9×#9Ñ#9¸&À!Ó#D�LÜ# L°!Õ4ñ	5ñ5ñ	5r*   c                 óJ  — t         j                  j                  d«       dD ]ÿ  }t        d«      D ]î  }t         j                  j	                  ||«      dt         j                  j	                  ||«      z  z   }t        |d«      }t         j                  j                  |d«      }t        ||«       t        |d«      }t         j                  j                  |d«      }t        ||«       t        |d	«      }t         j                  j                  |d
«      }t        ||«       Œð �Œ y )Nrr   )r“   r”   rÆ   r  r‹   çš™™™™™É?rÆ   gš™™™™™Àiåÿÿÿgffffff@r)  )	r%   rx   ry   rz   r{   r   r}   r  r   )r;   r   Úir‚   ÚM_one_fifthrŒ   r®   r¯   s           r(   Ú(test_larger_abs_fractional_matrix_powerszBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powers&  så   € Ü
�	‰	�‰�tÔØò 	&ˆAÜ˜2“Yò &�Ü—I‘I—O‘O A qÓ)¨B´·±·±ÀÀAÓ1FÑ,FÑF�Ü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        |d¬«      \  }	}
t        |	|z  «      }t        ||«       ŒÊ y )Nl   ½fmø1 é   rB   rÆ   rt   ©ÚsizeTFr“   r‹   rD   )r%   rx   Údefault_rngrz   ÚintegersÚexpÚchoicer   r   r   r   )r;   rí   ÚnsamplesrY  r   rT  Úmatrix_scaler'   ÚA_powerrg   rh   ÚA_power_expm_logms               r(   Útest_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powers8  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Ü ¨Ô.‰LˆF�DÜ $ V¨a¡ZÓ 0ÐÜ˜GÐ%6Õ7ñ%	8r*   c                 óÎ  — t        «       }t        |t        j                  d¬«      \  }}t	        |d¬«      \  }}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 )	NFrD   rÂ   g•dyáý¥=r  )rÂ   g«ªªªªªú?rB   r¨   )
r)   r   r%   r   r   r   Ú_remainder_matrix_powerr   r   r  )	r;   r'   ÚA_funm_sqrtrh   rú   ÚA_rem_powerrf  rT  ri   s	            r(   r  z?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1Q  sË   € ä1Ó3ˆô ! ¤B§G¡G°%Ô8Ñˆ�TÜ˜a eÔ,‰ˆ�Ü'×?Ñ?ÀÀ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                 ól  — t         j                  j                  d«       t         j                  j                  d«      dt         j                  j                  d«      z  z   D ]P  }t	        d«      D ]@  }t        j                  ||«      }|t        j                  | «      z  dz
  }t        ||«       ŒB ŒR y )Nrr   r  r‹   rÆ   rB   )	r%   rx   ry   r{   rz   r   Ú_briggs_helper_functionÚexp2r   )r;   r<   ÚkÚ
x_observedÚ
x_expecteds        r(   Útest_briggs_helper_functionz5TestFractionalMatrixPower.test_briggs_helper_functione  s�   € Ü
�	‰	�‰�tÔÜ—‘—‘ Ó$ r¬B¯I©I¯O©O¸BÓ,?Ñ'?Ñ?ò 	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�   rB   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ÀçÍÌÌÌÌÌì¿rX  gffffff
@r#   )r    r}   r~   r	   r¡   r%   r   r&   r   r$   r¢   r£   ©r;   r¤   r¥   rƒ   rT  r'   rf  s          r(   Ú%test_type_preservation_and_conversionz?TestFractionalMatrixPower.test_type_preservation_and_conversionm  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�   rB   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Ÿ   rv  r#   )r    r}   r~   r	   r¡   r%   r   r£   r   r$   r¢   r&   ry  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   rB   r“   r”   rs   r  )r   rB   rB   )r   r²   rB   r#   )gffffffæ¿rx  rw  gÍÌÌÌÌÌô¿)rX  gáz®Gáö?)	r&   r£   r%   r   r   r	   r  r  r   )r;   r¥   Únewtyper'   rT  rf  ri   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  ru   r   r  r  r“   r  rc   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)rY   rZ   r[   r�   rˆ   r[  rh  r  rs  rz  r}  rÛ   rà   râ   r€  rÄ   r\   r*   r(   rP  rP    s[   „ ò	5ò5ò&ò$8ò2Eò(8ò!CòFCð2 ‡[�[×ÑÐ<ÐÓ=ñ5ó >ð5ó&Hr*   rP  c            
       ó¢  — 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                  j2                  ej                  j5                  d«      d„ «       «       Zy)ÚTestExpMc                 ó\   — t        ddgddgg«      }t        t        |«      ddgddgg«       y )NrA   r   rB   )r   r   r   rG   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 )NrB   )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Ð   )rB   rB   c                 óØ   — t        j                  ||¬«      }t        j                  d|¬«      } ||«      } ||«      }|j                  |k(  sJ ‚|j                  |j                  k(  sJ ‚y )Nr#   r1  )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 )NrB   ru   r“   r�   Úf)
r%   rò   r   r   r   Úastyperæ   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 )NrB   ru   r”   r²   rÆ   éýÿÿÿrt   r�   )Úorderr“   r`   r  rs   éûÿÿÿ)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�  rv   rÆ   )r%   rÞ   r&   rx   r`  ra  rÑ   Úcopyr   r   Útestingr   r   rz   )
r;   r'   rí   rY  ÚjÚAmra   rM  Ú	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ˆ$‰ä�X‰X�m¬5Ô1ˆØ—‘“ˆˆ1‰Ü" 2Ó&‰ˆˆ1Ø�AŠvˆˆvä˜“Gˆ	Ü
�
‰
×,Ñ,¬T°)«_¸aÔ@ä�q“ò 	FˆAÜ˜A“wˆHÜ�J‰J×0Ñ0°¸HÕEñ	Fr*   N)rY   rZ   r[   r…  rˆ  rÛ   rà   rã   r   r   r   r   r   r   r   rä   r&   r%   rå   r£   ræ   rŽ  r”  rš  rË   rá   Ú	fail_slowr¥  r\   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©rB   r“   r”   ru   ©rÆ   rs   r`   r  ©r   r   rB   r“   ©r   r   rÆ   rs   r#   rB   r“   rÆ   rs   r”   ru   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_frechet  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#   rB   r“   rÆ   rs   r”   ru   r`   r  )rB   r”   rÆ   r`   rv   é   é   é   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           	      ó¸  — t         j                  j                  d«      }t         j                  j                  t         j                  j                  t         j                  j
                  t         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ž  ru   r“   é   r^  rB   gH¯¼šò×j>r¶   gH¯¼šò×z>)r%   rx   r`  ÚuniformÚnormalÚstandard_cauchyÚexponentialrz   rc  ra  r    r}   r   ÚvstackÚhstackÚ
zeros_liker   r   r   )r;   rí   ÚrfuncsÚntestsrY  ÚrfuncrÈ  r   r¿  rÀ  rÁ  r�   r'   r¼   r‚   r±  r²  r´  rµ  s                      r(   Ú	test_fuzzzTestExpmFrechet.test_fuzzP  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µ•Œå?rB   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_matrixl  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                  ||f¬«      }t         j                  j                  ||f¬«      }t        ||d¬«      \  }}t        ||d¬«      \  }}t	        ||«       t	        ||«       y )Niè  r^  r¯  rØ  r°  )r%   rx   rÏ  r   r   )r;   r   r'   r¼   rÙ  rÚ  rÛ  rÜ  s           r(   Útest_medium_matrixz"TestExpmFrechet.test_medium_matrix~  sƒ   € ð ˆÜ�I‰I×!Ñ!¨¨1 vÐ!Ó.ˆÜ�I‰I×!Ñ!¨¨1 vÐ!Ó.ˆÜ ,Ø�1˜Uô!$Ñˆ�+ä2>Ø�1˜^ô3-Ñ/ÐÐ/ä˜Ð"3Ô4Ü˜Ð%9Õ:r*   N)rY   rZ   r[   r¶  rÉ  rÖ  rÝ  rÛ   rà   ÚslowÚskiprß  r\   r*   r(   r¨  r¨    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ÚepsrT  Ú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 ]9  }t         j                  j	                  ||«      }t        |«      }t        d|«       Œ; y )Nrr   rB   ru   r   )r%   rx   ry   rz   r{   r   r
   )r;   r   r'   Úkappas       r(   Útest_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smoke¡  sN   € Ü
�	‰	�‰�tÔÜ�q˜!“ò 	(ˆAÜ—	‘	—‘  1Ó%ˆ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 ]M  }t         j                  j                  d	d	«      }t        t        |«      t        j                  |«      d
   «       ŒO y )Né90  r˜  rÆ   r¸  )Únumr?  r“   r  rB   rÐ   )r%   rx   ry   Úlinspacer   r   r   Úabsr|   rz   r{   r©   )r;   Úxr'   rY  s       r(   Útest_univariatez'TestExpmConditionNumber.test_univariate²  sØ   € Ü
�	‰	�‰�uÔÜ—‘˜R ¨Ô+ò 	2ˆAÜ—‘˜1˜#˜“ˆAÜœI a›L¬#¨a«&Õ1ð	2ô —‘˜R ¨Ô+ò 	2ˆAÜ—‘˜1˜#˜“ˆAÜœI a›L¬#¨a«&Õ1ð	2ô �r“ò 	@ˆAÜ—	‘	—‘  1Ó%ˆ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 )	Nrù  rl   r  r“   rÆ   zL-BFGS-BrØ  rB   )r%   rx   rë   rz   Úrandintr{   r    r}   r   r   r   Ú	functoolsÚpartialrì  rÇ   r    rý  rî  rä  rÓ   rð  r   r
   )r;   rí   rç  rd  rY  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)
rY   rZ   r[   rõ  r÷  rþ  rÛ   rà   rà  r  r\   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 )NrB   r“   r”   ru   rÆ   rs   r`   r  é   rË  rº  é   é   é    )ru   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©rB   r“   r”   ©ru   rÆ   rs   rB   r“   r”   ru   ©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  rv   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 )	NrB   r“   r”   ru   rÆ   rs   r`   r  )	r   r   r%   rÐ  rz   rÓ   Úkronr¸   r   )r;   r<   r  Úres1rp  Úres2s         r(   Útest_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equations  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   )r;   r<   r  Úress       r(   r×   zTestKhatriRao.test_empty  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)rY   rZ   r[   r  r  r  r#  r×   r\   r*   r(   r  r  å  s   „ ò
,òòò2'ó	0r*   r  )6Ú__doc__r  Únumpyr%   r   r   r   r   Únumpy.testingr   r   r	   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_frechetÚscipy.optimizer    r)   r,   r^   rè   rP  rƒ  r¨  rì  rî  rð  rò  r  r\   r*   r(   ú<module>r.     sØ   ðñó ã ß ,Ó ,÷P÷ Pã ã ÷A÷ A÷ A÷ Aó Aõ +Ý 6Ý EÛ !å #ò÷*'ñ '÷Vl0ñ l0÷^~#ñ ~#÷BvHñ vH÷rOFñ OF÷dt;ñ t;òn"ò=ò'÷BHñ BH÷JB0ò B0r*   