
    (ph                        S r SSKrSSKrSSKJrJrJrJr  SSKJ	r	J
r
JrJrJrJr  SSKrSSKrSSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!  SSKJ"r"  SSK#J$r$  SSK%J&r&  SSK'rSS	K(J)r)  S
 r* " S S5      r+ " S S5      r, " S S5      r- " S S5      r. " S S5      r/ " S S5      r0S r1S r2S r3 " S S5      r4 " S S5      r5g)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                  P    [         R                  " / SQ/ SQ/ SQ/ SQ/[        S9n U $ )a3  
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   gQI?r"   )r   r   r   g^?dtype)npr   float)As    S/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_matfuncs.py%_get_al_mohy_higham_2012_experiment_1r)      s/     	" 	 &+		,A
 H    c                   ,    \ rS rSrS rS rS rS rSrg)	TestSignM0   c                     [        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ S	Q/ S
Q/5      n[        U5      n[        X25        g )Ng333333=@g3333338g     `Q@gfffffH@g      @gffffff"g@      2g0       g      $g      @g      4r1   r2   g333333#g333333#@g     9g.r2   g#@g333333g      2@g3333332@       @)g'@'Rqgy.@ge@5@r7   )g@ȽUЛ'?g9\g+%r8   )gRQQ?gGzgffffffr9   )gר#w?î?gk#egC,Nr:   )g@42
gF(@gcs@@r;   )r   r   r   )selfacrrs       r(   	test_nilsTestSignM.test_nils2   sU    00.1-	/ 0
 QO0ON	P Q
 !H!!'r*   c                 F    [        / SQ/ SQ/ SQ/ SQ/5      n[        USS9  g )N)           r   r   )rD   r   rD   r   r   r   r   rD   )r   r   rD   r   Fdispr   r   r<   r=   s     r(   test_defective1TestSignM.test_defective1@   s    ;y9=>aer*   c                 L    [        / SQ/ SQ/ SQ/ SQ/ SQ45      n[        USS9  g )Nr/   r0   r3   r4   r5   FrF   rH   rI   s     r(   test_defective2TestSignM.test_defective2E   s,    &'('$& ' 	aer*   c           
      X    [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        USS	9  g )
Nr2         9@rC   rC   rC   rC   rC   rC               $@      @rU   rU   rC   rC   rC   r6         .@rU   rU   rC   rC   rC   rC   rC   rW   rU   rC   rC   rC   rC   rC   rU   rT   rC   rC   rC   rC   rC   rC   r2   rQ   rC   rC   rC   rC   rC   rC   rS   FrF   rH   rI   s     r(   test_defective3TestSignM.test_defective3O   s2    11000102 3 	aer*    N)	__name__
__module____qualname____firstlineno__r@   rJ   rM   r\   __static_attributes__r^   r*   r(   r,   r,   0   s    (
r*   r,   c            	          \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
 5       r\R                  R                  S 5       rS rS r\R                  R'                  SS9\R                  R)                  S\\\R0                  \\R4                  /5      S 5       5       r\R                  R                  \R                  R)                  S\\\R0                  \\R4                  /5      S 5       5       rSrg)TestLogM[   c           
          [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        S5      S	-  S
-   U-
  n[        USS9  g )NrP   rR   rV   rX   rY   rZ   r[      g@y                FrF   )r   r   r   )r<   r=   ms      r(   r@   TestLogM.test_nils]   sI    11000102 3 a[_R"QUr*   c                 \    [        5       n[        USS9u  p#[        U5      n[        XASSS9  g )NFrF   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_logm3TestLogM.test_al_mohy_higham_2012_experiment_1_logmi   s/     23AE*F|d?r*   c           	          [        5       n[        U[        R                  SS9u  p#[	        U5      n[        [        R                  " XASSS9(       + 5        g )NFrF   h㈵>rl   rm   )r)   r   r%   logr   r	   allclose)r<   r'   
A_funm_logrq   rr   s        r(   .test_al_mohy_higham_2012_experiment_1_funm_log7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logq   sC     232666
J'BKKdGGHr*   c                    [         R                  R                  S5        [        SS5       H  n[         R                  R	                  X5      n[         R
                  " SSS5       Hw  nX#-  n[         R                  R                  U5      nSU SU 3n[        US	S
9u  pxUR                  U5      n	[        X5        [        US	S
9u  p[        U
5      n[        XUS9  My     M     g )N  rD         	   zM:z eivals:FrF   )err_msg)r%   randomseedrangerandnlogspacelinalgeigvalsr   r   r   r   r   )r<   n
M_unscaledscaleMWr   M_sqrtmrq   M_sqrtm_round_tripM_logmM_logm_round_trips               r(   test_round_trip_random_float%TestLogM.test_round_trip_random_floaty   s    
		tq!A.JRA.& II%%a(qc!- !&ae 4%,[[%9" 26  $AE2$(L! 1gF / r*   c                 v   [         R                  R                  S5        [        SS5       H  n[         R                  R	                  X5      S[         R                  R	                  X5      -  -   n[         R
                  " SSS5       H)  nX#-  n[        USS	9u  pV[        U5      n[        Xt5        M+     M     g 
Nr}   rD   r~                 ?r   r   r   FrF   )	r%   r   r   r   r   r   r   r   r   )r<   r   r   r   r   r   rq   M_round_trips           r(   test_round_trip_random_complex'TestLogM.test_round_trip_random_complex   s    
		tq!A.biiooa6K1KKJRA.&#AE2#F|0	 / r*   c                    SnSS/SS//SS/SS//SS/SS//SS/SS//4 GH  n[         R                  R                  U5      n[        [	        S U 5       5      (       + 5        [
        R                  " U[        S9n[        USS	9u  pV[        UR                  R                  U;  5        [
        R                  " U[        S9n[        USS	9u  pV[        UR                  R                  U;   5        [
        R                  " U[        S9* n[        USS	9u  pV[        UR                  R                  U;   5        GM     g )
NFDGrD   r         c              3   d   #    U  H&  oR                   =(       d    UR                  S :  v   M(     g7fr   Nimagreal.0ws     r(   	<genexpr>FTestLogM.test_logm_type_preservation_and_conversion.<locals>.<genexpr>   "     <!QFF0affqj0!   .0r#   FrF   )scipyr   r   r	   anyr%   r   r&   r   r$   charcomplex)r<   complex_dtype_charsmatrix_as_listr   r'   rp   rq   s          r(   *test_logm_type_preservation_and_conversion3TestLogM.test_logm_type_preservation_and_conversion   s-    .Q!Q Q!Q Q!Q Q!Q 	"N $$^4A<!<<<= u5A.LFFLL%%-@@A w7A.LFFLL%%)<<= .66A.LFFLL%%)<<=/"r*   c                    / SQ/ SQ/ SQ/n[         [        4 H  n[        R                  " XS9n[        R
                  R                  U5      n[        S[        R                  " UR                  5      R                  5       :  5        [        USS9u  pV[        [        R                  " UR                  [        R                  5      5        [        [!        U5      U5        M     g )N)rD   rD   r   )r   rD   rD   )rD   r   rD   r#   {Gz?FrF   )r&   r   r%   r   r   r   r   r	   absoluter   sumr   
issubdtyper$   inexactr   r   )r<   r   dtXr   Yrq   s          r(   test_complex_spectrum_real_logm(TestLogM.test_complex_spectrum_real_logm   s     	9-.B%A$$Q'AD2;;qvv.2244515)GABMM!''2::67DGQ' !r*   c                    SS/SS//SS/SS//4 Hn  n[         [        4 H[  n[        R                  " XS9n[	        USS9u  pE[        [        R                  " UR                  [        R                  5      5        M]     Mp     g )NrD   r   r#   FrF   )	r&   r   r%   r   r   r	   r   r$   complexfloating)r<   r   r   r'   rp   rq   s         r(   test_real_mixed_sign_spectrum&TestLogM.test_real_mixed_sign_spectrum   sy     Q!R!Q!Q "A WnHHQ)#AE2fllB4F4FGH %"r*   c                     [         R                  " SS/SS//5      n[         R                  " SS/SS//5      nXR                  X"R                  4 H:  n[        R
                  n[        U[        USS9u  pV[        U5      n[        XsSS9  M<     g )Nr   r   rD   FrF   rl   ro   )
r%   r   asarrayTr   r   r   r   r   r   )r<   r'   Br   expected_warningLrq   Es           r(   test_exactly_singularTestLogM.test_exactly_singular   s    HHq!fr2h'(JJAA'(CCCCA0KK"#3T15IGAQAAu-	  r*   c                     [         R                  " S//5      n[        R                  n[	        U[
        USS9u  p4[        U5      n[        XQSS9  g )Ng0.++FrF   rl   r   )r%   r   r   LogmNearlySingularWarningr   r   r   r   )r<   r   r   r   rq   r   s         r(   test_nearly_singularTestLogM.test_nearly_singular   sF    HHvhZ ,FF/quEG5)r*   c                 \   SS/SS//nS[         R                  S-  /[         R                  * S-  S//n[        [        U5      USS9  [        [	        U5      USS9  SS/SS	//nS[         R                  -  S-  S
[         R                  -  /SS	[         R                  -  S-  //n[        [        U5      USS9  [        [	        U5      USS9  SS/SS	//nS[         R                  -  S-  S/SS	[         R                  -  S-  //n[        [        U5      USS9  [        [	        U5      USS9  g )Nr   rD   r         ?rl   r   r   r   y             r   )r%   pir   r   r   )r<   r   r   s      r(   &test_opposite_sign_complex_eigenvalues/TestLogM.test_opposite_sign_complex_eigenvalues   s   Vb!Ws^ruufSj!_-Q/Q/!Wq#hhslAbeeG$q#bee)C-&89Q/Q/!Wq#hhslACIcM 23Q/Q/r*   c                     Sn[         R                  " X45      [         R                  " U5      -   nSUR                  l        [        U5        g )N   F)r%   onesr   flags	writeabler   r<   r   r=   s      r(   test_readonlyTestLogM.test_readonly   s6    GGQFObkk!n,!Qr*   z6ValueError: attempt to get argmax of an empty sequencereasonr   c                     [         R                  " SUS9n[        U5      n[         R                  " SUS9n[        U5      nUR                  S:X  d   eUR
                  UR
                  :X  d   eg Nr   r   r#   r   )r%   emptyr   eyeshaper$   )r<   r   r=   log_aa0log_a0s         r(   
test_emptyTestLogM.test_empty   s^     HHV2&QVVAR b{{f$$${{fll***r*   r$   c           	         [         R                  " [        SS9   [         R                  " [        5         [	        [
        R                  " SUS95        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzlogm result may be inaccurate)matchr   r   r#   )pytestwarnsRuntimeWarningr   r   r%   zeros)r<   r$   s     r(   test_no_ZeroDivisionError"TestLogM.test_no_ZeroDivisionError   sR     ll>1PQll56&./ 7 RQ66 RQs"   A6A%A6%
A3	/A66
Br^   N)r_   r`   ra   rb   r@   rs   rz   r   r   r   r   r   r   markthread_unsafer   r   r   r   xfailparametrizeintr&   r%   float32r   	complex64r   r   rc   r^   r*   r(   re   re   [   s   	@IG*1><
(	I [[. . [[* *0 [[VW[[TC

GR\\#RS+ T X+ [[[[WsE2::w&UV0 W 0r*   re   c                   @   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS r\R&                  R)                  SS9S 5       rS rS rS rS rS rS r\R&                  R9                  S\\\R@                  \!\RD                  /5      S 5       r#Sr$g)	TestSqrtMi
  c                     [         R                  R                  S5      n[        SS5       H_  nUR	                  X"5      n[         R
                  " SSS5       H/  nX4-  n[        USS9u  pgUR                  U5      n[        X5        M1     Ma     g )	Nr}   rD   r~   r   r   r   FrF   	r%   r   RandomStater   r   r   r   r   r   	r<   rngr   r   r   r   r   rq   r   s	            r(   r   &TestSqrtM.test_round_trip_random_float  sx    ii##D)q!A1JRA.& %ae 4%,[[%9" 26	 / r*   c                 J   [         R                  R                  S5      n[        SS5       Ht  nUR	                  X"5      SUR	                  X"5      -  -   n[         R
                  " SSS5       H/  nX4-  n[        USS	9u  pgUR                  U5      n[        X5        M1     Mv     g r   r  r  s	            r(   r   (TestSqrtM.test_round_trip_random_complex  s    ii##D)q!A12		!+??JRA.& %ae 4%,[[%9" 26	 / r*   c                 ^   Sn[        U5      n[        / SQSUSS/SSUS// SQ/5      n[        / SQSUSS/SSUS// SQ/5      nUR                  S   n[        [	        XD5      U5        [        USUS9S   n[        [	        Xf5      U5        [        USSS9S   n[        [	        Xf5      U5        g )	Ng      ?)g      ?r   r   rD   r   rE   )rD   r   r   r   FrG   	blocksizer   )r   r   r   r   r   r   )r<   eser=   sar   esas          r(   test_badTestSqrtM.test_bad  s    !W;a!9a!9  Kr!AJqAJ   GGAJ!#b*Q/AEQ/2!#c,q1AEQ/2!#c,q1r*   c                    SnSS/SS//SS/SS//SS/SS//SS/SS//SS/SS//4 GH  n[         R                  R                  U5      n[        [	        S U 5       5      (       + 5        [
        R                  " U[        S9n[        USS	9u  pV[        UR                  R                  U;  5        [
        R                  " U[        S9n[        USS	9u  pV[        UR                  R                  U;   5        [
        R                  " U[        S9* n[        USS	9u  pV[        UR                  R                  U;   5        GM     g )
Nr   rD   r   r   r   c              3   d   #    U  H&  oR                   =(       d    UR                  S :  v   M(     g7fr   r   r   s     r(   r   HTestSqrtM.test_sqrtm_type_preservation_and_conversion.<locals>.<genexpr>B  r   r   r#   FrF   )r   r   r   r	   r   r%   r   r&   r   r$   r   r   r<   r   r   r   r'   A_sqrtmrq   s          r(   +test_sqrtm_type_preservation_and_conversion5TestSqrtM.test_sqrtm_type_preservation_and_conversion4  s=    .Q!Q Q!Q Q!Q Q!Q Q!Q "N $$^4A<!<<<= u5A!!%0MGGMM&&.AAB w7A!!%0MGGMM&&*==> .66A!!%0MGGMM&&*==>1"r*   c                    SnSS/SS//SS/SS/// SQ/ SQ/ SQ/4 H  n[         R                  R                  U5      n[        [	        S U 5       5      5        [
        R                  " U[        S	9n[        US
S9u  pV[        UR                  R                  U;   5        [
        R                  " U[        S	9n[        US
S9u  pV[        UR                  R                  U;   5        M     g )Nr   rD   r   r   r   rD   r   r   r   rD   rD   r   r   c              3   d   #    U  H&  oR                   =(       d    UR                  S :  v   M(     g7fr   r   r   s     r(   r   VTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>\  "     8a,!&&1*,ar   r#   FrF   )r   r   r   r	   r   r%   r   r   r   r$   r   r&   r  s          r(   9test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumCTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumS  s    -Q!R!Q!Q Iy13N $$^4AC8a889 w7A!!%0MGGMM&&*==> u5A!!%0MGGMM&&*==>#3r*   c                    [         R                  R                  S5        [        SS5       H  n[         R                  R	                  X5      S[         R                  R                  X5      -  -   n[        USUS9u  p4[        U[         R                  R                  US5      5        [        SS5       H  n[        USUS9u  pd[        X65        M     M     g )	Nr}   rD      r   Fr	  r   
   )
r%   r   r   r   randr   r   r   r   matrix_power)r<   r   r'   A_sqrtm_defaultrq   r
  A_sqrtm_news          r(   test_blocksizesTestSqrtM.test_blocksizesh  s    
		tq!A		q$r"))//!*?'??A$)!%1$E!OAryy55oqIJ"1b\	$)!%9$M!= *	 r*   c                     [        5       n[        USS9u  p#UR                  U5      n[        XASS9  [        [        R
                  " U5      [        R
                  " U5      5        g )NFrF   rv   rn   )r)   r   r   r   r%   tril)r<   r'   r  rq   rr   s        r(   %test_al_mohy_higham_2012_experiment_1/TestSqrtM.test_al_mohy_higham_2012_experiment_1s  sK    13ae,{{7+d3-rwwqz:r*   c                     [         [        4 H]  n[        R                  " / SQ/ SQ/ SQ/ SQ/US9n[	        USS9u  p4[        [        R                  " U5      R                  5       5        M_     g )N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r#   FrF   )r   r&   r%   r   r   r	   isnanall)r<   r   r'   r  rq   s        r(   test_strict_upper_triangular&TestSqrtM.test_strict_upper_triangular{  s^    u*B	 &(	)A
 "!%0MGBHHW%))+, r*   c                 H   [         [        4 H  n[        R                  " / SQ/ SQ/ SQ/US9n[        R                  " / SQ/ SQ/ SQ/US9n[	        X2R                  U5      5        [        USS9u  pE[        [        R                  " U5      R                  5       5        M     g )Nr  r   r   r   r  r#   FrF   )
r   r&   r%   r   r   r   r   r	   r1  r2  )r<   r   r'   r   B_sqrtmrq   s         r(   test_weird_matrixTestSqrtM.test_weird_matrix  s    u*B #%&A  #%&A q%%(+ "!%0MGBHHW%))+, r*   c                     [         R                  R                  S5        [         R                  R                  SS5      n[	        USS9n[        UR                  U5      U5        g )Nr}   r   TrF   )r%   r   r   r$  r   r   r   )r<   r'   r   s      r(   	test_dispTestSqrtM.test_disp  sD    
		tIINN1a !$a!$r*   c                     SS/SS//nSS/SS//n[        [        R                  " X"5      USS	9  [        [        U5      USS	9  g )
N               @r   r                       ?      ?r         ?      rl   r   )r   r%   r   r   r<   r   Rs      r(   r   0TestSqrtM.test_opposite_sign_complex_eigenvalues  sJ    !Wq#hAYD	"qae4a!%0r*   c                 B   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " [        S5      SS[        S5      // SQ/ SQ[        S5      SS[        S5      //5      n[        [         R                  " X"5      USS9  [        [        U5      USS9  g )N)rD   r   r   rD   r0  r   r   rl   r   )r%   r   r   r   r   r   rB  s      r(   test_gh4866TestSqrtM.test_gh4866  s    HHl"""$ % HHtCy!QS	2""Cy!QS	24 5 	qae4a!%0r*   c                     [         R                  " / SQ5      n[         R                  " [        S5      SS/5      n[        [         R                  " X"5      USS9  [        [        U5      USS9  g )N)r   rD   r   r   rD   r   rl   r   )r%   diagr   r   r   r   rB  s      r(   test_gh5336TestSqrtM.test_gh5336  sL    GGIGGT!WaO$qae4a!%0r*   c                     [         R                  " S5      n[         R                  " S5      n[        [         R                  " X"5      USS9  [        [	        U5      USS9  g )Nr   rl   r   )r%   r   r   r   r   rB  s      r(   test_gh7839TestSqrtM.test_gh7839  sB    HHVHHVqae4a!%0r*   zfailing on macOS after gh-20212r   c                     [         R                  " S5      nUR                  S5        [         R                  " US5        [         R                  " [        U5      5      (       d   eg )N)   rP  gGz?rD   )r%   r   fillfill_diagonal	isrealobjr   r<   r   s     r(   test_gh17918TestSqrtM.test_gh17918  sD    HHX	t
A||E!H%%%%r*   c                 d   [         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   eg Nr#  r#  r#   )	r%   r   uint8r   r$   float64uint16uint32uint64rT  s     r(   -test_data_size_preservation_uint_in_float_out7TestSqrtM.test_data_size_preservation_uint_in_float_out  s    HHXRXX.Qx~~+++HHXRYY/Qx~~+++HHXRYY/Qx~~+++HHXRYY/Qx~~+++r*   c                 d   [         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   eg rX  )	r%   r   int8r   r$   r[  int16int32int64rT  s     r(   ,test_data_size_preservation_int_in_float_out6TestSqrtM.test_data_size_preservation_int_in_float_out  s    HHXRWW-Qx~~+++HHXRXX.Qx~~+++HHXRXX.Qx~~+++HHXRXX.Qx~~+++r*   c                    [         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   eg )Nr   r   r   r#   )	r%   r   rb  r   r$   
complex128rc  rd  re  rT  s     r(   +test_data_size_preservation_int_in_comp_out5TestSqrtM.test_data_size_preservation_int_in_comp_out  s    HHq!fq"g&bgg6Qx~~...HHq!fq"g&bhh7Qx~~...HHq!fq"g&bhh7Qx~~...HHq!fq"g&bhh7Qx~~...r*   c                    [         R                  " S[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R
                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " S[         R                  S9n[        U5      R                  [         R                  :X  d   e[        [         S5      (       aM  [         R                  " S[         R                  S9n[        U5      R                  [         R                  :X  d   eg g )NrY  r#   float128)	r%   r   float16r   r$   r   r[  hasattrrn  rT  s     r(   .test_data_size_preservation_float_in_float_out8TestSqrtM.test_data_size_preservation_float_in_float_out  s    HHXRZZ0Qx~~+++HHXRZZ0Qx~~+++HHXRZZ0Qx~~+++2z""5A8>>RZZ/// #r*   c                    [         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   e[         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R                  :X  d   e[        [         S5      (       ai  [        [         S5      (       aS  [         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R                  :X  d   eg g g )Nr   r   r   ri  r#   rn  
complex256)r%   r   ro  r   r$   r   r   r[  rj  rp  rn  rT  s     r(   -test_data_size_preservation_float_in_comp_out7TestSqrtM.test_data_size_preservation_float_in_comp_out  s   HHq!fq"g&bjj9Qx~~---HHq!fq"g&bjj9Qx~~---HHq!fq"g&bjj9Qx~~...2z""wr<'@'@1a&1b'*"++>A8>>R]]222 (A"r*   c                    [         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R                  :X  d   e[         R                  " SS/SS//[         R
                  S9n[        U5      R                  [         R
                  :X  d   e[        [         S5      (       aS  [         R                  " SS/SS//[         R                  S9n[        U5      R                  [         R
                  :X  d   eg g )Nr>  r   r   r?  r#   rt  )r%   r   r   r   r$   rj  rp  rt  rT  s     r(   ,test_data_size_preservation_comp_in_comp_out6TestSqrtM.test_data_size_preservation_comp_in_comp_out  s    HHr1g3x(=Qx~~---HHr1g3x(>Qx~~...2|$$2q'As8,BMMBA8>>R]]222 %r*   r   c                     [         R                  " SUS9n[        U5      n[         R                  " SUS9n[        U5      nUR                  S:X  d   eUR
                  UR
                  :X  d   eg r   )r%   r   r   r   r   r$   )r<   r   r=   sr   s0s         r(   r   TestSqrtM.test_empty   s\    HHV2&!HVVAR 2Yww&   ww"(("""r*   r^   N)%r_   r`   ra   rb   r   r   r  r  r  r(  r-  r3  r8  r;  r   rF  rJ  rM  r   r   r   rU  r_  rf  rk  rq  ru  rx  r   r   r&   r%   r   r   r   r   rc   r^   r*   r(   r   r   
  s    772*?>?*	>;	--"%1
111 [[?@& A&,,/	0	33 [[TC

GR\\#RS# T#r*   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
S9S 5       rS rSrg)TestFractionalMatrixPoweri  c                    [         R                  R                  S5        [        SS5       H  n[        SS5       H  n[         R                  R	                  X"5      S[         R                  R	                  X"5      -  -   n[         R
                  " SSS5       H@  nX4-  n[        USU-  5      n[         R                  R                  Xa5      n[        Xu5        MB     M     M     g )Nr}   rD   r   r   r   r   r   
r%   r   r   r   r   r   r   r   r%  r   r<   pr   r   r   r   M_rootr   s           r(   r   8TestFractionalMatrixPower.test_round_trip_random_complex  s    
		tq!A1a[YY__Q2R"))//!:O5OO
[[Q2E"*A4Q!<F#%99#9#9&#DL#L4	 3 ! r*   c                    [         R                  R                  S5        [        SS5       H  n[        SS5       H~  n[         R                  R	                  X"5      n[         R
                  " SSS5       H@  nX4-  n[        USU-  5      n[         R                  R                  Xa5      n[        Xu5        MB     M     M     g )Nr}   rD   r   r   r   r   r  r  s           r(   r   6TestFractionalMatrixPower.test_round_trip_random_float  s    
 			tq!A1a[YY__Q2
[[Q2E"*A4Q!<F#%99#9#9&#DL#L4	 3 ! r*   c                 F   [         R                  R                  S5        S H  n[        S5       H  n[         R                  R	                  X5      S[         R                  R	                  X5      -  -   n[        US5      n[         R                  R                  US5      n[        X55        [        US5      n[         R                  R                  US5      n[        Xg5        [        US	5      n[         R                  R                  US
5      n[        Xg5        M     M     g )Nr}   )r   r   r   r#  r   皙?r   gigffffff@rP  )	r%   r   r   r   r   r   r   r%  r   )r<   r   ir   M_one_fifthr   r   r   s           r(   (test_larger_abs_fractional_matrix_powersBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powers&  s    
		tA2YIIOOA)B1F,FF5a=!yy55k1E0+At4II**;<%+As3II**;;%  r*   c                    [         R                  R                  S5      nSn[        U5       H  nUR	                  SS5      nUR                  5       n[         R
                  " UR	                  SS5      5      nUR                  XD/S9nSS/UR                  S	5         (       a  US
UR                  XD/S9-  -   nXv-  n[        Xu5      n[        USS9u  p[        X-  5      n[        X5        M     g )Nl   fm1    rD   r   r   sizeTFr   r   rF   )r%   r   default_rngr   integersexpchoicer   r   r   r   )r<   r  nsamplesr  r   r  matrix_scaler'   A_powerrp   rq   A_power_expm_logms               r(   test_random_matrices_and_powers9TestFractionalMatrixPower.test_random_matrices_and_powers8  s     ii##$45xAQ"A

A 66#,,r1"56L


'Ae}SZZ]+SZZaVZ444 A
 .a3G.LF $VZ 0G7% !r*   c                    [        5       n[        U[        R                  SS9u  p#[	        USS9u  pC[
        R                  " US5      n[        US5      n[        XVSS9  [        XF5        [        XB5        S H]  n[        X5      n[        USU-  5      n[        XSS9  [        [        R                  " US5      [        R                  " US5      5        M_     g )	NFrF   r   gdy=r+  )r   g?rD   r   )
r)   r   r%   r   r   r   _remainder_matrix_powerr   r   r,  )	r<   r'   A_funm_sqrtrq   r  A_rem_powerr  r  rr   s	            r(   r-  ?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1Q  s    13 !BGG%8ae,'??3G)!S159)- A-a3G27AaC@LL$7BGGL!4bggamD	 r*   c                 t   [         R                  R                  S5        [         R                  R                  S5      S[         R                  R                  S5      -  -    HS  n[	        S5       HA  n[
        R                  " X5      nU[         R                  " U* 5      -  S-
  n[        X45        MC     MU     g )Nr}   r#  r   r   rD   )	r%   r   r   r   r   r   _briggs_helper_functionexp2r   )r<   r=   k
x_observed
x_expecteds        r(   test_briggs_helper_function5TestFractionalMatrixPower.test_briggs_helper_functione  s    
		t$rBIIOOB,?'??A1X.FFqL
"''1"+-1

7  @r*   c                    SnSS/SS//SS/SS//SS/SS//SS/SS//4 GH  n[         R                  R                  U5      n[        [	        S U 5       5      (       + 5        S H  n[
        R                  " U[        S9n[        XT5      n[        UR                  R                  U;  5        [
        R                  " U[        S9n[        XT5      n[        UR                  R                  U;   5        [
        R                  " U[        S9* n[        XT5      n[        UR                  R                  U;   5        M     GM"     g )	Nr   rD   r   r   r   c              3   d   #    U  H&  oR                   =(       d    UR                  S :  v   M(     g7fr   r   r   s     r(   r   RTestFractionalMatrixPower.test_type_preservation_and_conversion.<locals>.<genexpr>{  r   r   333333r  gffffff
@r#   )r   r   r   r	   r   r%   r   r&   r   r$   r   r   r<   r   r   r   r  r'   r  s          r(   %test_type_preservation_and_conversion?TestFractionalMatrixPower.test_type_preservation_and_conversionm  s-   
 .Q!Q Q!Q Q!Q Q!Q 	"N $$^4A<!<<<= , HH^591!7**2EEF HH^7;1!7**.AAB XXnE::1!7**.AAB ,"r*   c                    SnSS/SS//SS/SS/// SQ/ SQ/ SQ/4 H  n[         R                  R                  U5      n[        [	        S U 5       5      5        S	 H  n[
        R                  " U[        S
9n[        XT5      n[        UR                  R                  U;   5        [
        R                  " U[        S
9n[        XT5      n[        UR                  R                  U;   5        M     M     g )Nr   rD   r   r   r  r  r  c              3   d   #    U  H&  oR                   =(       d    UR                  S :  v   M(     g7fr   r   r   s     r(   r   `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_spectrumMTestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrum  s    -Q!R!Q!Q Iy13N $$^4AC8a889 , HH^7;1!7**.AAB HH^591!7**.AAB ,3r*   zToo unstable across LAPACKs.r   c                    SS/SS//SS/SS//SS/SS/// SQ/ SQ/ SQ/4 H  n[         [        4 H  n[        R                  " XS	9nS
 H;  n[	        X45      n[        [        R                  " U5      R                  5       5        M=     S H(  n[	        X45      n[	        USU-  5      n[        Xc5        M*     M     M     g )Nr   rD   r   r   r~   r6  )r   rD   rD   )r   r   rD   r#   )gffffffr  r  g)r  gzG?)	r&   r   r%   r   r   r	   r1  r2  r   )r<   r   newtyper'   r  r  rr   s          r(   test_singular'TestFractionalMatrixPower.test_singular  s     Q!Q Q!Q Q!Q Iz2	4N "7+HH^;1A5a;GBHHW-1134 2 %A5a;G#:7AaC#HL#L4 % ,4r*   c                     SS/SS//nSS/SS//n[        [        R                  " X"5      USS	9  [        [        US
5      USS	9  g )Nr>  r   r   r?  r@  r   rA  rl   r   r   )r   r%   r   r   rB  s      r(   r   @TestFractionalMatrixPower.test_opposite_sign_complex_eigenvalues  sN    !Wq#hAYD	"qae4/37Gr*   r^   N)r_   r`   ra   rb   r   r   r  r  r-  r  r  r  r   r   r   r  r   rc   r^   r*   r(   r  r    s[    	55&$82E(8!CFC2 [[<=5 >5&Hr*   r  c            
          \ rS rSrS rS r\R                  R                  S\	\
\\\\\/5      \R                  R                  S\\\R&                  \\R*                  /5      \R                  R                  SSS/5      S	 5       5       5       rS
 rS rS r\R                  R4                  \R                  R7                  S5      S 5       5       rSrg)TestExpMi  c                 \    [        SS/SS//5      n[        [        U5      SS/SS//5        g )NrC   r   rD   )r   r   r   rI   s     r(   	test_zeroTestExpM.test_zero  s2    Bq61Q%.!!$q'Aa5!A-8r*   c                 z    [        S5      n[        U[        R                  " [        R                  //5      5        g )NrD   )r   r   r%   r   r  )r<   elts     r(   test_single_eltTestExpM.test_single_elt  s&    1gRXXvh/0r*   funcr   r   r   )rD   rD   c                     [         R                  " X2S9n[         R                  " SUS9nU" U5      nU" U5      nUR                  U:X  d   eUR                  UR                  :X  d   eg )Nr#   rY  )r%   r   r   r$   )r<   r  r   r   r'   A0resultresult0s           r(   test_small_empty_matrix_input&TestExpM.test_small_empty_matrix_input  s\     HHU%XXhb)ar(||u$$$||w}},,,r*   c                    [         R                  n[        SS/SS//5      nUS-  S-   SU-  -  nUS-  S-
  U-  n[        [	        U5      [        X4/US-  U//5      5        [	        UR                  [         R                  5      5      R                  R                  S:X  d   e[	        UR                  [         R                  5      5      R                  R                  S:X  d   eg )NrD   r   r   r   f)
r%   r  r   r   r   astyper   r$   r   r   )r<   r   r=   aabbs        r(   test_2x2_inputTestExpM.test_2x2_input  s    DDAq6Aq6"#dQh1dQh\Q2a4*'=!>?AHHR\\*+1166#===AHHRZZ()//44;;;r*   c                    [         R                  n[         R                  " SS/SS//SS/SS//SS/SS//SS/SS//SS/SS///SS	9n[         R                  " US-  S-   S
U-  -  US-  S-
  U-  /US-  S-
  S-  U-  US-  S-   S
U-  -  //SSUS
-  -  -  SUS
-  -  S-  -   SUS
-  -  S-  SSUS
-  -  -  -
  /US
-  S-  SSUS
-  -  -  -
  SSUS
-  -  -  US
-  S-  -   //SSU-  -  US-  S-  -   SSU-  -  SUS-  -  S-  -   /SS
U-  -  US-  S
-  -   SSU-  -  SUS-  -  S-  -   //SSUS
-  -  -  SUS-  -  S-  -   SSUS
-  -  -  SUS-  -  S-  -   /SSUS
-  -  -  SUS-  -  S-  -   SSUS
-  -  -  SUS-  -  S-  -   //SS
U-  -  SU-  S
-  -   SS
U-  -  SU-  S
-  -   /SS
U-  -  SU-  S
-  -
  SS
U-  -  SU-  S
-  -
  ///5      n[        [	        U5      U5        g )NrD   r   r   r   r   r   r   )orderr   rh   r"  r~   )r%   r  r   r   r   )r<   r   r=   a_ress       r(   test_nx2x2_inputTestExpM.test_nx2x2_input  s   DDHH1v1v&1v2w'1v1v&1v1v&1vBx(	* 25	6 T!VacNQT!VQJ7T!VQJqL1a46AaC.9;qAvJ!Q$z1AadFA:a1a4j3HIqDF1a1f:-q!AqD&z!Q$q&/@ACqsGAqDFNB!Ha1faZ,?@!HQT!VOQ!Wa1faZ-?@BqAvJ!Q$z12qAv;!Q$z3IJ!Q$K1a4
2AqAvJ!Q$z4IJL!Hac1W,b!A#h!Qw.>?qsGQqS!GOQ!Wac1W_=?  	Q'r*   c                 n    Sn[         R                  " X45      nSUR                  l        [	        U5        g )Nrh   F)r%   r   r   r   r   r   s      r(   r   TestExpM.test_readonly  s)    GGQFO!Qr*   r   c                 L   [         R                  " S[        S9n[         R                  R	                  S5      nUR                  SSS5      nUR                  SSS5      nUR                  S5      XU4'   [         R                  " S[        S9nUR                  5       US'   [        U5      u  pgUS:X  d   e[        U5      n[         R                  R                  [        U5      U5        [        S	5       H-  n[        U5      n	[         R                  R                  X5        M/     g )
N)  r  r#   d   r   i  i  )r   r  r  r   r   )r%   r   r&   r   r  r  r   copyr   r   testingr   r   r   )
r<   r'   r  r  jAmri   r{  	first_resnext_ress
             r(   test_gh18086TestExpM.test_gh18086   s     HHZu-ii##C(LLC%LLC%**S/Q$XXm511"2&AvvG	


,,T)_a@qAAwHJJ00E r*   r^   N)r_   r`   ra   rb   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  rc   r^   r*   r(   r  r    s    91 [[VdD$eUE%RS[[T3rzz7BLL"QR[[Wvv&67- 8 S T-<(. [[[[1F  Fr*   r  c                       \ rS rSrS rS rS rS r\R                  R                  \R                  R                  SS9S 5       5       rS	rg
)TestExpmFrecheti  c                    [         R                  " / SQ/ SQ/ SQ/ SQ/[        S9n[         R                  " SS/SS	//[        S9n[         R                  " S
S/SS//[        S9n[        R                  R                  U5      n[        R                  R                  U5      S S2SS 24   n0 SS0SS04 H'  n[        X#40 UD6u  px[        XG5        [        XX5        M)     g )NrD   r   r   r   r   r~   rh   r"  r   r   rD   r   r   r   r   r~   r#   rD   r   r   r~   r   r   rh   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_frechet!TestExpmFrechet.test_expm_frechet  s    HH	
  HHFF  HHFF  ))!, <<,,Q/AB7HU+h~-FGF.:1.J6.J+MM9,? Hr*   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/[        S9n[         R                  " SS/SS	//[        S9n[         R                  " S
S/SS//[        S9n[        R                  R                  US5      n/ SQn[        US S USS  5      nU H  u  px[        R                  R                  R                  U   n	[        R                  R                  R                  U   n
SX-   -  nX-  nX-  nX-  nX-  n[        R                  R                  U5      n[        R                  R                  U5      S S2SS 24   n[        X5      u  nn[        UU5        [        UU5        M     g )Nr  r  r  r  r#   rD   r   r   r~   r   r   rh   r"  )rD   r   r   rh   r            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_frechet,TestExpmFrechet.test_small_norm_expm_frechet/  sy   XX	
 
 XXFF 
 XXFF 
 "LL--j!<5s3_QR5HI&FBLL..;;B?ELL..;;B?E5=1M!5E"A"A"A!LL--a0M$||003BQBF;.:1.@+M+M=9,.>? 'r*   c           	         [         R                  R                  S5      n[         R                  R                  [         R                  R                  [         R                  R
                  [         R                  R                  4nSn[        U5       GH5  nX!R                  S5         nUR                  5       nUR                  SS5      nU" Xw4S9nU" Xw4S9n	[        R                  R                  US5      n
Xj-  nX-  nX-  n[         R                  " [         R                  " X/5      [         R                  " [         R                  " U5      U/5      /5      n[        R                  R!                  U5      n[        R                  R!                  U5      S U2US 24   n[#        X5      u  nn[%        UUSS	9  [%        UUS
S	9  GM8     g )Nl   ]"1 r  r   r      r  rD   gHj>r   gHz>)r%   r   r  uniformnormalstandard_cauchyexponentialr   r  r  r   r   r   vstackhstack
zeros_liker   r   r   )r<   r  rfuncsntestsr  rfuncr  r   r  r  r  r   r'   r   r   r  r  r  r  s                      r(   	test_fuzzTestExpmFrechet.test_fuzzP  s{   ii##$45 		!!		  		))		%%	'
 vA::a=)EOO-MQ#AQE*JQE*J % 1 1*a @!5E"A"A				1&!		2==+Q/02 3A "LL--a0M$||003BQBF;.:1.@+M+M=tD,.>TJ# r*   c                    [         R                  " SS/SS//[        S9n[         R                  " SS/SS	//[        S9n[        R                  R                  US
5        [        XSS9u  p4[        XSS9u  pV[        X55        [        XF5        g )Ng]؉??gvP?g^?guÝ?r#   gS,?g| @gJt?g~3?rD   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_matrix'TestExpmFrechet.test_problematic_matrixl  s    HHZ(Z(   HHZ(Z(   	!Q ,U!$2>^3-/4:r*   zthis test is deliberately slowr   c                     Sn[         R                  R                  X4S9n[         R                  R                  X4S9n[        X#SS9u  pE[        X#SS9u  pg[	        XF5        [	        XW5        g )Ni  r  r  r  r  )r%   r   r  r   r   )r<   r   r'   r   r  r  r   r!  s           r(   test_medium_matrix"TestExpmFrechet.test_medium_matrix~  sp     II!!v!.II!!v!. ,U!$2>^3-/4:r*   r^   N)r_   r`   ra   rb   r  r  r  r"  r   r   slowskipr%  rc   r^   r*   r(   r  r    sS    @.@BK8;$ [[[[=>
; ? 
;r*   r  c                     [         R                  " XPR                  5      n[        U5      nXE-  X-  -  n[	        X-   5      n[        X-
  5      X4-  -  n	U	* $ N)r%   reshaper   r   r   )
r'   A_normr   X_normepsr  p_normperturbationX_primescaled_relative_errors
             r(   _help_expm_cond_searchr3    sU    


1ggA!WF7fo.L1#$G ->!!!r*   c                     U [         R                  R                  U5      [         R                  R                  U 5      -  -  $ r*  )r   r   r   )r'   r   s     r(   _normalized_liker5    s0    !!!$u||'8'8';;<<r*   c                 X    U " U5      nU " X-   5      n[        XC-
  5      [        U5      -  $ r*  )r   )r  r'   r0  r   r1  s        r(   _relative_errorr7    s.    	!A !GtAw&&r*   c                   ^    \ rS rSrS rS rS r\R                  R                  S 5       r
Srg)TestExpmConditionNumberi  c                     [         R                  R                  S5        [        SS5       H9  n[         R                  R	                  X5      n[        U5      n[        SU5        M;     g )Nr}   rD   r   r   )r%   r   r   r   r   r   r
   )r<   r   r'   kappas       r(   test_expm_cond_smoke,TestExpmConditionNumber.test_expm_cond_smoke  sG    
		tq!A		%AaLEa' r*   c                 v    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        U5      n[        SU5        g )N)g(gٙBgx@g  =g ZdB)r   gzNV7g@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_number6TestExpmConditionNumber.test_expm_bad_condition_number  s6    HHI</#	  !$&r*   c                 J   [         R                  R                  S5        [         R                  " SSSS9 H9  n[         R                  " U//5      n[        [        U5      [        U5      5        M;     [         R                  " SSSS9 H9  n[         R                  " U//5      n[        [        U5      [        U5      5        M;     [        S5       HO  n[         R                  R                  S	S	5      n[        [        U5      [         R                  " U5      S
   5        MQ     g )N90  r  r   r  )numri  r   r#  rD   r   )r%   r   r   linspacer   r   r   absr   r   r   r   )r<   xr'   r  s       r(   test_univariate'TestExpmConditionNumber.test_univariate  s    
		uR+A1#AIaL#a&1 , R+A1#AIaL#a&1 , rA		1%AIaL"++a.*>? r*   c           	         [         R                  R                  S5      nSnSn[        U5       GH  nUR	                  SS5      nUR                  XU5      n[        R                  R                  U5      n[        U5      n[        R                  R                  U5      n	[        U5      n
[        R                  " [        XgXU5      n[         R                  " XU-  5      n[        XSS9nUR                   nU" U5      nU[#        [         R$                  " XR&                  5      U5      -  n[)        [        UU5      n[+        UU* U-  5        [        S5       Hd  nU[#        UR
                  " UR&                  6 U5      -  n[+        [        U5      [        U5      5        [)        [        UU5      n[-        UU5        Mf     [-        USSU-  -   U-  U
-  5        GM     g )	NrB  rv   r#  r   r   zL-BFGS-Br  rD   )r%   r   r  r   randintr   r   r   r   r   r   	functoolspartialr3  r   r    rF  r5  r+  r   r7  r   r
   )r<   r  r.  r  r  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_fuzz+TestExpmConditionNumber.test_expm_cond_fuzz  s   ii##E*xAAq!A		!A\\&&q)FQA\\&&q)FaLE !!"8q#/AGGACLE1J7C55DT7D+BJJtWW,EqIIF+D!V<MMD53;7 1X/		1770CQGGVd6l; /a @!-?	  ma!C%i3->-FG? !r*   r^   N)r_   r`   ra   rb   r<  r?  rG  r   r   r'  rU  rc   r^   r*   r(   r9  r9    s2    ('
@ [[#H #Hr*   r9  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestKhatriRaoi  c           
      6   [        [        SS/SS//5      [        SS/SS//5      5      n[        U[        SS	/SS
/SS/SS//5      5        [        [        R                  " SS/5      [        R                  " SS/5      5      n[        UR
                  S5        g )NrD   r   r   r   r   r~   rh   r"     r  r            )r   r   )r   r   r   r%   r   r   r<   r=   bs      r(   
test_basicTestKhatriRao.test_basic  s    uq!fq!f-.q!fq!f-.0 	1eaW&'W&("X&("X%/ 0 	1
 rxxA'1a&)9:177F+r*   c                     [         R                  " [        5         [        / SQ/ SQ/5      n[        SS/SS//5      n[	        X5        S S S 5        g ! , (       d  f       g = f)NrD   r   r   r   r   r~   rD   r   r   r   r   raises
ValueErrorr   r   r^  s      r(   test_number_of_columns_equality-TestKhatriRao.test_number_of_columns_equality  sR    ]]:&y " #A1v1v  Aq '&&s   .A
A c                 *   [         R                  " [        5         [        / SQ5      n[        / SQ5      n[	        X5        S S S 5        [         R                  " [        5         [        / SQ5      n[        / SQ/ SQ/5      n[	        X5        S S S 5        [         R                  " [        5         [        / SQ/ SQ/5      n[        / SQ5      n[	        X5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       g = f)Nrc  rd  )rh   r"  r   re  r^  s      r(   test_to_assure_2d_array%TestKhatriRao.test_to_assure_2d_array  s    ]]:&i Ai Aq	 ' ]]:&i A A q ' ]]:& A i Aq '& '& '& '&s#   &C"#*C3/*D"
C03
D
Dc                 R   [        SS/SS//5      n[        SS/SS//5      n[        X5      n[        R                  " [	        UR
                  S   5       Vs/ s H(  n[        R                  " US S 2U4   US S 2U4   5      PM*     sn5      R                  n[        X55        g s  snf )	NrD   r   r   r   r   r~   rh   r"  )	r   r   r%   r  r   r   kronr   r   )r<   r=   r_  res1r  res2s         r(   test_equality_of_two_equations,TestKhatriRao.test_equality_of_two_equations  s    Aq6Aq6"#Aq6Aq6"#!yy#(#46#4a ''!AqD'1QT73#46 778q 	 	4&6s   /B$c                 `   [         R                  " S5      n[         R                  " S5      n[        X5      n[        U[         R                  " S5      5        [         R                  " S5      n[         R                  " S5      n[        X5      n[        U[         R                  " S5      5        g )N)r   r   )r   r   )r   r   )r   r   )r  r   )r%   r   r   r   )r<   r=   r_  ress       r(   r   TestKhatriRao.test_empty  st    HHVHHVRXXf-.HHVHHVRXXg./r*   r^   N)
r_   r`   ra   rb   r`  rh  rk  rq  r   rc   r^   r*   r(   rX  rX    s    
,2'	0r*   rX  )6__doc__rK  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,   re   r   r  r  r  r3  r5  r7  r9  rX  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*   