
    -ii                        S r SSKrSSKrSSKrSSKJrJrJr  SSKJ	r	J
r
JrJrJrJrJ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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      r0 " S S5      r1S r2S r3S r4 " S S5      r5 " S S5      r6\Rn                  Rq                  S\\\/5      S  5       r9S! r:g)"z+Test functions for linalg.matfuncs module

    N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equalassert_warnssuppress_warnings)funmsignmlogmsqrtmfractional_matrix_powerexpmexpm_frechet	expm_condnorm
khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)pick_pade_structure)LogmExactlySingularWarning)LinAlgWarning)minimizec                  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)	TestSignM2   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      4r2   r3   g333333#g333333#@g     9g.r3   g#@g333333g      2@g3333332@       @)g'@'Rqgy.@ge@5@r8   )g@ȽUЛ'?g9\g+%r9   )gRQQ?gGzgffffffr:   )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_nils4   sU    00.1-	/ 0
 QO0ON	P Q
 !H!!'r+   c                 H    [        / SQ/ SQ/ SQ/ SQ/5      n[        U5        g )N)           r   r   )rE   r   rE   r   r   r   r   rE   )r   r   rE   r   r   r   r=   r>   s     r)   test_defective1TestSignM.test_defective1B   s    ;y9=>ar+   c                 N    [        / SQ/ SQ/ SQ/ SQ/ SQ45      n[        U5        g )Nr0   r1   r4   r5   r6   rG   rH   s     r)   test_defective2TestSignM.test_defective2G   s)    &'('$& ' 	ar+   c           
      Z    [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        U5        g )Nr3         9@rD   rD   rD   rD   rD   rD               $@      @rT   rT   rD   rD   rD   r7         .@rT   rT   rD   rD   rD   rD   rD   rV   rT   rD   rD   rD   rD   rD   rT   rS   rD   rD   rD   rD   rD   rD   r3   rP   rD   rD   rD   rD   rD   rD   rR   rG   rH   s     r)   test_defective3TestSignM.test_defective3Q   s/    11000102 3 	ar+    N)	__name__
__module____qualname____firstlineno__rA   rI   rL   r[   __static_attributes__r]   r+   r)   r-   r-   2   s    (
r+   r-   c            	          \ rS rSrS r\R                  R                  S5      S 5       r\R                  R                  S5      S 5       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\\\R4                  \\R8                  /5      S 5       5       r\R                  R                   \R                  R-                  S\\\R4                  \\R8                  /5      S 5       5       rSrg)TestLogM]   c                 L    [         R                  R                  S5      U l        g )Nl   >gO*31 )r&   randomdefault_rngrng)r=   s    r)   setup_methodTestLogM.setup_method^   s    99(()9:r+   z$ignore:.*inaccurate.*:RuntimeWarningc           
          [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        S5      S	-  S
-   U-
  n[        U5        g )NrO   rQ   rU   rW   rX   rY   rZ      g@y                )r   r   r   )r=   r>   ms      r)   rA   TestLogM.test_nilsa   sF    11000102 3 a[_R"Qr+   c                 Z    [        5       n[        U5      n[        U5      n[        X1SSS9  g )Ng-C6
?+=rtolatol)r*   r   r   r   )r=   r(   A_logmA_round_trips       r)   *test_al_mohy_higham_2012_experiment_1_logm3TestLogM.test_al_mohy_higham_2012_experiment_1_logmn   s*     23aF|d?r+   c           	          [        5       n[        U[        R                  5      n[	        U5      n[        [        R                  " X1SSS9(       + 5        g )Nh㈵>rq   rr   )r*   r   r&   logr   r   allclose)r=   r(   
A_funm_logrv   s       r)   .test_al_mohy_higham_2012_experiment_1_funm_log7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logw   s=     23!RVV_
J'BKKdGGHr+   c           	         [        SS5       H  nU R                  R                  X4S9n[        R                  " SSS5       H  nX#-  n[        R
                  R                  U5      nSU SU 3n[        U5      nXw-  n[        X5        [        5        n	U	R                  [        S	9  [        U5      n
[        U
5      n[        XUS
9  S S S 5        M     M     g ! , (       d  f       M  = f)NrE      size   	   zM:z eivals:category)err_msg)rangeri   uniformr&   logspacelinalgeigvalsr   r   r   filterRuntimeWarningr   r   )r=   n
M_unscaledscaleMWr   M_sqrtmM_sqrtm_round_tripsupM_logmM_logm_round_trips               r)   test_round_trip_random_float%TestLogM.test_round_trip_random_float   s    q!A))v)6JRA.& II%%a(qc!-  (%,%6" 26 '(CJJJ7!!WF(,V%#$5'J )( /  )(s   4C
C(c                 *   [        SS5       H  nU R                  R                  X45      SU R                  R                  X45      -  -   n[        R                  " SSS5       H(  nX#-  n[        U5      n[        U5      n[        Xd5        M*     M     g )NrE   r                 ?r   r   r   )r   ri   standard_normalr&   r   r   r   r   )r=   r   r   r   r   r   M_round_trips          r)   test_round_trip_random_complex'TestLogM.test_round_trip_random_complex   s    q!A((22A6:TXX55qf==>JRA.&a#F|0	 / r+   c                 z   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5      n[        UR                  R                  U;  5        [
        R                  " U[        S9n[        U5      n[        UR                  R                  U;   5        [
        R                  " U[        S9* n[        U5      n[        UR                  R                  U;   5        GM     g )NFDGrE   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$   )scipyr   r   r   anyr&   r   r'   r   r%   charcomplex)r=   complex_dtype_charsmatrix_as_listr   r(   ru   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!WFFLL%%-@@A w7A!WFFLL%%)<<= .66A!WF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5      n[        [        R                  " UR                  [        R                  5      5        [        [!        U5      U5        M     g )N)rE   rE   r   )r   rE   rE   )rE   r   rE   r$   {Gz?)r'   r   r&   r   r   r   r   r   absoluter   sumr   
issubdtyper%   inexactr   r   )r=   r   dtXr   Ys         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QABMM!''2::67DGQ' !r+   c                 
   SS/SS//SS/SS//4 Ho  n[         [        4 H\  n[        R                  " XS9n[	        U5      u  pE[        [        R                  " UR                  [        R                  5      5        M^     Mq     g )NrE   r   r$   )	r'   r   r&   r   r   r   r   r%   complexfloating)r=   r   r   r(   ru   infos         r)   test_real_mixed_sign_spectrum&TestLogM.test_real_mixed_sign_spectrum   sv     Q!R!Q!Q "A WnHHQ)#AwfllB4F4FGH %"r+   c                    [         R                  " SS/SS//5      n[         R                  " SS/SS//5      nXR                  X"R                  4 H9  n[        R
                  n[        U[        U5      n[        U5      n[        XcSS9  M;     g )Nr   r   rE   rq   rt   )
r&   r   asarrayTr   r   r   r   r   r   )r=   r(   Br   expected_warningLEs          r)   test_exactly_singularTestLogM.test_exactly_singular   s|    HHq!fr2h'(JJAA'(CCCCA0KK-tQ7AQAAu-	  r+   c                     [         R                  " S//5      n[        R                  n[	        U[
        U5      n[        U5      n[        XASS9  g )Ng0.++rq   r   )r&   r   r   LogmNearlySingularWarningr   r   r   r   )r=   r   r   r   r   s        r)   test_nearly_singularTestLogM.test_nearly_singular   sB    HHvhZ ,FF)43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   rE   r         ?rq   r   r   r                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warnsr   r   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)ri   N) r^   r_   r`   ra   rj   r   markfilterwarningsrA   rw   r~   r   r   r   r   r   thread_unsafer   r   r   r   xfailparametrizeintr'   r&   float32r   	complex64r   r   rb   r]   r+   r)   rd   rd   ]   sZ   ; [[ FG	 H	 [[ FG@ H@IK.	1><
(	I [[. . [[* *0 [[VW[[TC

GR\\#RS+ T X+ [[[[WsE2::w&UV0 W 0r+   rd   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S rS rS rS rS r\R0                  R3                  S\\\R:                  \\R>                  /5      S 5       r S r!S r"S r#Sr$g)	TestSqrtMi  c                     [         R                  R                  S5      n[        SS5       H_  nUR	                  X"45      n[         R
                  " SSS5       H.  nX4-  n[        U5      nUR                  U5      n[        Xu5        M0     Ma     g )Nl   &\31 rE   r   r   r   r   	r&   rg   rh   r   r   r   r   dotr   r=   ri   r   r   r   r   r   r   s           r)   r   &TestSqrtM.test_round_trip_random_float  sy    ii##$45q!A,,aV4JRA.&(%,[[%9" 26	 / r+   c                 L   [         R                  R                  S5      n[        SS5       Hu  nUR	                  X"45      SUR	                  X"45      -  -   n[         R
                  " SSS5       H.  nX4-  n[        U5      nUR                  U5      n[        Xu5        M0     Mw     g )Nl   &\31 rE   r   r   r   r   r   r  r  s           r)   r   (TestSqrtM.test_round_trip_random_complex  s    ii##$45q!A--qf5s22A6::;JRA.&(%,[[%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[        XD-  U5        [        U5      n[        XU-  U5        g )Ng      ?)      ?r   r   rE   r   rF   )rE   r   r   r   )r   r   r   r   )r=   eser>   saesas         r)   test_badTestSqrtM.test_bad*  s    !W;a!9a!9  Kr!AJqAJ   	""'1-Ah!#)Q/r+   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        [        5        nUR                  [        S9  [        R                  " U[        S9n[        U5      n[        UR                  R                  U;  5        [        R                  " U[        S9n[        U5      n[        UR                  R                  U;   5        [        R                  " U[        S9* n[        U5      n[        UR                  R                  U;   5        S S S 5        GM?     g ! , (       d  f       GMR  = f)	Nr   rE   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>I  r   r   r   r$   )r   r   r   r   r   r   r   r    r&   r   r'   r   r%   r   r   )r=   r   r   r   r   r(   A_sqrtms          r)   +test_sqrtm_type_preservation_and_conversion5TestSqrtM.test_sqrtm_type_preservation_and_conversion;  sW    .Q!Q Q!Q Q!Q Q!Q Q!Q "N $$^4A<!<<<= #$

M
2 HH^59(**2EEF HH^7;(**.AAB XXnE::(**.AAB! %$" %$s   5C'E**
E:	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5      n[        UR                  R                  U;   5        [
        R                  " U[        S	9n[        U5      n[        UR                  R                  U;   5        M     g )
Nr   rE   r   r   r   rE   r   )r   r   r   rE   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>g  "     8a,!&&1*,ar   r$   )r   r   r   r   r   r&   r   r   r   r%   r   r'   )r=   r   r   r   r(   r  s         r)   9test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumCTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum^  s    -Q!R!Q!Q J	24N $$^4AC8a889 w7AAhGGMM&&*==> u5AAhGGMM&&*==>#4r+   c                     [        5       n[        U5      nX"-  n[        X1SS9  [        [        R                  " U5      [        R                  " U5      5        g )Nrz   rs   )r*   r   r   r&   tril)r=   r(   r  rv   s       r)   %test_al_mohy_higham_2012_experiment_1/TestSqrtM.test_al_mohy_higham_2012_experiment_1s  s@    13((d3-rwwqz:r+   c                    [         [        4 H  n[        R                  " / SQ/ SQ/ SQ/ SQ/US9n[	        5        nUR                  [        S9  [        U5      n[        [        R                  " U5      [        R                  " S5      5        [        R                  " U5      R                  5       (       d   e[        R                  " U5      R                  5       (       d   e S S S 5        M     g ! , (       d  f       M  = f)N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r$   r   )r   r   )r  r'   r&   r   r   r   r    r   r   r)  r   isnanr   isinf)r=   r   r(   r   r  s        r)   test_strict_upper_triangular&TestSqrtM.test_strict_upper_triangular{  s     u*B	 &(	)A
 #$

M
2( 0"((62BCxx(,,....xx(,,.... %$  %$s   B)C22
D	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         ?      rq   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                    [         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[        X"-  USS9  [	        5        nUR                  [        S9  [        [        U5      USS9  S S S 5        g ! , (       d  f       g = f)N)rE   r   r   rE   r-  r   r   rq   r   r   )r&   r   r   r   r   r   r    r   r=   r   r8  r   s       r)   test_gh4866TestSqrtM.test_gh4866  s    HHl"""$ % HHtCy!QS	2""Cy!QS	24 5 	qu- CJJJ.E!Hae4 !  s   (B55
Cc                 (   [         R                  " / SQ5      n[         R                  " [        S5      SS/5      n[        X"-  USS9  [	        5        nUR                  [        S9  [        [        U5      USS9  S S S 5        g ! , (       d  f       g = f)N)r   rE   r   r   rE   r   rq   r   r   )r&   diagr   r   r   r   r    r   r;  s       r)   test_gh5336TestSqrtM.test_gh5336  sh    GGIGGT!WaO$qu- CJJJ.E!Hae4 !  s   (B
Bc                     [         R                  " S5      n[         R                  " S5      n[        5        nUR                  [        S9  [        [        U5      USS9  S S S 5        g ! , (       d  f       g = f)Nr   r   rq   r   )r&   r   r   r   r    r   r   r;  s       r)   test_gh7839TestSqrtM.test_gh7839  sP    HHVHHV CJJJ.E!Hae4 !  s   (A((
A6c                     [         R                  " S5      nUR                  S5        [         R                  " US5        [         R                  " [        U5      5      (       d   eg )N)   rF  gGz?rE   )r&   r   fillfill_diagonal	isrealobjr   r=   r   s     r)   test_gh17918TestSqrtM.test_gh17918  sD    HHX	t
A||E!H%%%%r+   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      n[        X"-  USS9  [        UR	                  [         R
                  5      5      n[        X"-  USS9  g )N)r  rD   rD   )r   rE   r   )r   r   r   rq   r   gư>)r&   r   r   r   astyper  )r=   r   sqs      r)   test_gh23278TestSqrtM.test_gh23278  sS    HHlK<=1X/188BLL)*.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   uint8r   r%   float64uint16uint32uint64rJ  s     r)   -test_data_size_preservation_uint_in_float_out7TestSqrtM.test_data_size_preservation_uint_in_float_out  s    FF2RXX&Qx~~+++FF2RYY'Qx~~+++FF2RYY'Qx~~+++FF2RYY'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 rS  )	r&   r   int8r   r%   rV  int16int32int64rJ  s     r)   ,test_data_size_preservation_int_in_float_out6TestSqrtM.test_data_size_preservation_int_in_float_out  s    FF2RWW%Qx~~+++FF2RXX&Qx~~+++FF2RXX&Qx~~+++FF2RXX&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   r]  r   r%   
complex128r^  r_  r`  rJ  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 )NrT  r$   float128)	r&   r   float16r   r%   r  rV  hasattrri  rJ  s     r)   .test_data_size_preservation_float_in_float_out8TestSqrtM.test_data_size_preservation_float_in_float_out  s    FF2RZZ(Qx~~+++FF2RZZ(Qx~~+++FF2RZZ(Qx~~+++2z""r-A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   rd  r$   ri  
complex256)r&   r   rj  r   r%   r  r  rV  re  rk  ri  rJ  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 )Nr3  r   r   r4  r$   ro  )r&   r   r  r   r%   re  rk  ro  rJ  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+   c           
         [         R                  R                  S5      nSnUR                  SSU-  SU-  4S9n[         R                  " USS9[         R
                  " SU-  5      -   [         R                  " U5      pTXE-  nUS S 2S S S2S S S24   n[         R                  " U5      S S 2SS S2SS S24   n[        [        US S 2S S S2S S S24   5      [        U5      5        [        [        US S 2SS S2SS S24   5      [        U5      5        g )	Nl   &\31    r   r   r   r   )krE   )
r&   rg   rh   r   r)  r   triuasfortranarrayr   r   )r=   ri   r   r(   r   UA_noncontig_cA_noncontig_fs           r)   test_cf_noncontig_nd_inputs%TestSqrtM.test_cf_noncontig_nd_inputs  s     ii##$45KKa1ac]K+wwqB"&&1+-rwwqz1E!SqS#A#+))!,Q1add];a3Q3!n-u]/CDa14a4A./}1EFr+   c                 d    [         R                  " / SQ[        S9n[        [	        U5      U5        g )N)r   r   r   r   )r   r%   )r&   r   r'   r
   r   )r=   r(   s     r)   test_empty_sizesTestSqrtM.test_empty_sizes+  s     HH<u558Q'r+   c                     [         R                  R                  S5      nUR                  SS9nUS S 2S S S2S S S24   nUS S 2S S S2S S S24   R	                  5       n[        [        U5      [        U5      5        US S 2S S 2S S S24   nUS S 2S S 2S S S24   R	                  5       n[        [        U5      [        U5      5        US S 2S S S2S S 24   nUS S 2S S S2S S 24   R	                  5       n[        [        U5      [        U5      5        g )Nl   &\31 )r   r   r   r   r   )r&   rg   rh   r   copyr   r   )	r=   ri   r(   A_negneg_origA_negneg_copyA_posneg_origA_posneg_copyA_negpos_origA_negpos_copys	            r)   test_negative_stridesTestSqrtM.test_negative_strides/  s    ii##$45KKYK'!TrT4R4-(!TrT4R4-(--/m,eM.BC!Q"*!Q"***,m,eM.BC!TrT1*!TrT1***,m,eM.BCr+   r]   N)%r^   r_   r`   ra   r   r   r  r  r%  r*  r0  r   r<  r@  rC  rK  rP  rZ  ra  rf  rl  rp  rs  r   r   r  r  r'   r&   r  r   r  r   r  r  r  rb   r]   r+   r)   r	  r	    s    7	70"!CF?*;/*&1555&/,,/	0	33 [[TC

GR\\#RS# T#G(D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 )N  rE   r   r   r   r   r   
r&   rg   seedr   randnr   r   r   matrix_powerr   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  rE   r   r   r   r   r  r  s           r)   r   6TestFractionalMatrixPower.test_round_trip_random_floatK  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   rT  r   皙?r   gigffffff@rF  )	r&   rg   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_powersZ  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5      n	[        X-  5      n
[        X5        M     g )Nl   fm1    rE   r   r   r   TFr   r   )r&   rg   rh   r   integersexpchoicer   r   r   r   )r=   ri   nsamplesr  r   r  matrix_scaler(   A_powerru   A_power_expm_logms              r)   test_random_matrices_and_powers9TestFractionalMatrixPower.test_random_matrices_and_powersl  s     ii##$45xAQ"A

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


'Ae}SZZ]+SZZaVZ444 A
 .a3G!WF $VZ 0G7% !r+   c                    [        5       n[        U[        R                  5      n[	        U5      n[
        R                  " US5      n[        US5      n[        XESS9  [        X55        [        X25        S H]  n[        X5      n[        USU-  5      n[        XqSS9  [        [        R                  " US5      [        R                  " US5      5        M_     g )Nr   gdy=r(  )r   g?rE   r   )
r*   r   r&   r   r   r   _remainder_matrix_powerr   r   r)  )r=   r(   A_funm_sqrtr  A_rem_powerr  r  rv   s           r)   r*  ?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1  s    13 1bgg&('??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  rT  r   r   rE   )	r&   rg   r  r  r   r   _briggs_helper_functionexp2r   )r=   r>   r{  
x_observed
x_expecteds        r)   test_briggs_helper_function5TestFractionalMatrixPower.test_briggs_helper_function  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   rE   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_conversion  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   rE   r   r   r   )r   r   rE   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   rE   r   r   r   )r   r   r   )r   rE   rE   )r   r   rE   r$   )gffffffr  r  g)r  gzG?)	r'   r   r&   r   r   r   r.  allr   )r=   r   newtyper(   r  r  rv   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 )Nr3  r   r   r4  r5  r   r6  rq   r   r   )r   r&   r  r   r7  s      r)   r   @TestFractionalMatrixPower.test_opposite_sign_complex_eigenvalues  sN    !Wq#hAYD	"qae4/37Gr+   r]   N)r^   r_   r`   ra   r   r   r  r  r*  r  r  r  r   r   r  r  r   rb   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 )NrD   r   rE   )r   r   r   rH   s     r)   	test_zeroTestExpM.test_zero  s2    Bq61Q%.!!$q'Aa5!A-8r+   c                 z    [        S5      n[        U[        R                  " [        R                  //5      5        g )NrE   )r   r   r&   r   r  )r=   elts     r)   test_single_eltTestExpM.test_single_elt  s&    1gRXXvh/0r+   funcr   r   r   )rE   rE   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$   )rT  rT  )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 )NrE   r   r   r   f)
r&   r  r   r   r   rN  r  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 )NrE   r   r   r   r   r   r   )orderr   rm      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 )Nrm   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'   rg   rh   r  r   r  r   r   testingr   r   r   )
r=   r(   ri   r  jAmrn   rv  	first_resnext_ress
             r)   test_gh18086TestExpM.test_gh180864  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_   r`   ra   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  rb   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
)TestExpmFrechetiJ  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rE   r   r   r   r   r   rm   r  r   r   rE   r   r   r   r   r   r$   rE   r   r   r   r   r   rm   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_frechetL  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$   rE   r   r   r   r   r   rm   r  )rE   r   r   rm   r      rz     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_frechetc  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   rE   gHj>r   gHz>)r&   rg   rh   r   normalstandard_cauchyexponentialr   r  r  r   r   r   vstackhstack
zeros_liker   r   r   )r=   ri   rfuncsntestsr  rfuncr  r   r  r  r  r   r(   r   r   r  r  r  r	  s                      r)   	test_fuzzTestExpmFrechet.test_fuzz  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?rE   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_matrix  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&   rg   r#  r   r   )r=   r   r(   r   r.  r/  r0  r1  s           r)   test_medium_matrix"TestExpmFrechet.test_medium_matrix  sp     II!!v!.II!!v!. ,U!$2>^3-/4:r+   r]   N)r^   r_   r`   ra   r
  r  r*  r2  r   r   slowskipr5  rb   r]   r+   r)   r  r  J  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_searchrC    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_likerE    s0    !!!$u||'8'8';;<<r+   c                 X    U " U5      nU " X-   5      n[        XC-
  5      [        U5      -  $ r:  )r   )r  r(   r@  r   rA  s        r)   _relative_errorrG    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  rE   r   r   )r&   rg   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(   rK  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  )numrd  r   rT  rE   r   )r&   rg   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 )	NrR  rz   rT  r   r   zL-BFGS-Br-  rE   )r&   rg   RandomStater   randintr  r   r   r   r   r   	functoolspartialrC  r   r!   rV  rE  r;  r   rG  r   r	   )r=   ri   r>  r  r  r   r(   r<  r   r=  rK  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_   r`   ra   rL  rO  rW  r   r   r7  rf  rb   r]   r+   r)   rI  rI    s2    ('
@ [[#H #Hr+   rI  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 )NrE   r   r   r   r   r   rm   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rE   r   r   r   r   r   rE   r   r   r   r   raises
ValueErrorr   r   ro  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)Nrt  ru  )rm   r  r   rv  ro  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 )	NrE   r   r   r   r   r   rm   r  )	r   r   r&   r$  r   r   kronr   r
   )r=   r>   rp  res1r{  res2s         r)   test_equality_of_two_equations,TestKhatriRao.test_equality_of_two_equationsH  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>   rp  ress       r)   r   TestKhatriRao.test_emptyR  st    HHVHHVRXXf-.HHVHHVRXXg./r+   r]   N)
r^   r_   r`   ra   rq  ry  r|  r  r   rb   r]   r+   r)   ri  ri    s    
,2'	0r+   ri  r  c                     [         R                  " 5          U " [        R                  " S5      SS9  S S S 5        g ! , (       d  f       g = f)Nr   F)disp)r   deprecated_callr&   r   )r  s    r)   test_disp_depr  ]  s.     
			!RVVAYU# 
"	!	!s	   ;
A	c                      [         R                  " 5          [        [        R                  " S5      SS9  S S S 5        g ! , (       d  f       g = f)Nr   rT  )	blocksize)r   r  r   r&   r   r]   r+   r)   test_blocksize_depr  c  s,    				!bffQi2& 
"	!	!s	   >
A);__doc__r\  r   numpyr&   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_frechetr    scipy.optimizer!   r*   r-   rd   r	  r  r  r  rC  rE  rG  rI  ri  r   r  r  r  r]   r+   r)   <module>r     s      ' '. . . A A A A A + 6 E ! & #*' 'Vs0 s0liD iDX	vH vHrOF OFdt; t;n"='BH BHJB0 B0H u-/$/$'r+   