
    doi                        S r SSK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  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      r/ " S S5      r0S r1S r2S r3 " S S5      r4 " S S5      r5\Rl                  Ro                  S\\\/5      S  5       r8S! r9g)"z+Test functions for linalg.matfuncs module

    N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equal)funmsignmlogmsqrtmfractional_matrix_powerexpmexpm_frechet	expm_condnorm
khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)pick_pade_structure)LogmExactlySingularWarning)LinAlgWarning)minimizec                  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    \/var/www/html/land-ocr/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      4r0   r1   g333333#g333333#@g     9g.r1   g#@g333333g      2@g3333332@       @)g'@'Rqgy.@ge@5@r6   )g@ȽUЛ'?g9\g+%r7   )gRQQ?gGzgffffffr8   )gר#w?î?gk#egC,Nr9   )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   )rC   r   rC   r   r   r   r   rC   )r   r   rC   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 )Nr.   r/   r2   r3   r4   rE   rF   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r1         9@rB   rB   rB   rB   rB   rB               $@      @rR   rR   rB   rB   rB   r5         .@rR   rR   rB   rB   rB   rB   rB   rT   rR   rB   rB   rB   rB   rB   rR   rQ   rB   rB   rB   rB   rB   rB   r1   rN   rB   rB   rB   rB   rB   rB   rP   rE   rF   s     r'   test_defective3TestSignM.test_defective3Q   s/    11000102 3 	ar)    N)	__name__
__module____qualname____firstlineno__r?   rG   rJ   rY   __static_attributes__r[   r)   r'   r+   r+   2   s    (
r)   r+   c            	          \ 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S rS rS rS r\R
                  R'                  SS9\R
                  R)                  S\\\R0                  \\R4                  /5      S 5       5       r\R
                  R)                  S\\\R0                  \\R4                  /5      S 5       rSrg)TestLogM]   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 )NrM   rO   rS   rU   rV   rW   rX      g@y                )r   r   r   )r;   r<   ms      r'   r?   TestLogM.test_nils^   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_logmk   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㈵>ri   rj   )r(   r   r$   logr   r   allclose)r;   r&   
A_funm_logrn   s       r'   .test_al_mohy_higham_2012_experiment_1_funm_log7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logt   s=     23!RVV_
J'BKKdGGHr)   c           	      &   [         R                  R                  S5      n[        SS5       H  nUR	                  X"4S9n[         R
                  " SSS5       H  nX4-  n[         R                  R                  U5      nSU S	U 3n[        U5      nX-  n	[        X5        [        R                  " 5          [        R                  " S
[        5        [        U5      n
[        U
5      n[        XUS9  S S S 5        M     M     g ! , (       d  f       M  = f)N   >gO*31 rC      size   	   zM:z eivals:ignore)err_msg)r$   randomdefault_rngrangeuniformlogspacelinalgeigvalsr   r   warningscatch_warningssimplefilterRuntimeWarningr   r   )r;   rngn
M_unscaledscaleMWr   M_sqrtmM_sqrtm_round_tripM_logmM_logm_round_trips               r'   test_round_trip_random_float%TestLogM.test_round_trip_random_float|   s    ii##$45q!A1&1JRA.& II%%a(qc!-  (%,%6" 26 ,,.))(NC!!WF(,V%#$5'J /. /  /.s   4<D
Dc                 @   [         R                  R                  S5      n[        SS5       Ho  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5      n[        Xu5        M*     Mq     g )Nry   rC   rz                 ?r}   r~   r   )	r$   r   r   r   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    ii##$45q!A--qf5S00!889J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GrC   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&   rm   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)rC   rC   r   )r   rC   rC   )rC   r   rC   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 )NrC   r   r"   )	r%   r   r$   r   r   r   r   r#   complexfloating)r;   r   r   r&   rm   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                 n   [         R                  " SS/SS//5      n[         R                  " SS/SS//5      nXR                  X"R                  4 HP  n[        R
                  " [        R                  5         [        U5      nS S S 5        [        W5      n[        XSSS9  MR     g ! , (       d  f       N(= f)Nr   r   rC   ri   rl   )r$   r   asarrayTpytestwarnsr   r   r   r   r   )r;   r&   Br   LEs         r'   test_exactly_singularTestLogM.test_exactly_singular   s    HHq!fr2h'(JJAA'(CCCCA/JJKG LQAAu-	  KKs   8B&&
B4	c                     [         R                  " S//5      n[        R                  " [        R
                  5         [        U5      nS S S 5        [        W5      n[        X1SS9  g ! , (       d  f       N$= f)Ng0.++ri   r   )	r$   r   r   r   r   LogmNearlySingularWarningr   r   r   )r;   r   r   r   s       r'   test_nearly_singularTestLogM.test_nearly_singular   sS    HHvhZ \\+EEFQA GG5) GFs   A''
A5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   rC   r         ?ri   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"   )r   r   r   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r[   N)r\   r]   r^   r_   r   markfilterwarningsr?   ro   rv   r   r   r   r   r   r   r   r   r   xfailparametrizeintr%   r$   float32r   	complex64r   r   r`   r[   r)   r'   rb   rb   ]   s   [[ FG	 H	 [[ FG@ H@IK0	1><
(	I.*0 [[VW[[TC

GR\\#RS+ T X+ [[WsE2::w&UV0 W0r)   rb   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 rC   rz   r}   r~   r   	r$   r   r   r   r   r   r   dotr   r;   r   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 rC   rz   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   rC   r   rD   )rC   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HO  n[         R                  R                  U5      n[        [	        S U 5       5      (       + 5        [
        R                  " 5          [
        R                  " S[        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        S S S 5        GMR     g ! , (       d  f       GMe  = f)	Nr   rC   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>D  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_conversion6  s]    .Q!Q Q!Q Q!Q Q!Q Q!Q "N $$^4A<!<<<= ((*%%h> HH^59(**2EEF HH^7;(**.AAB XXnE::(**.AAB! +*" +*s    C/E==
F	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   rC   r   r   r   rC   r   )r   r   r   rC   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>b  "     8a,!&&1*,ar   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_spectrumY  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 )Nrr   rk   )r(   r   r   r$   tril)r;   r&   r  rn   s       r'   %test_al_mohy_higham_2012_experiment_1/TestSqrtM.test_al_mohy_higham_2012_experiment_1n  s@    13((d3-rwwqz:r)   c                 0   [         [        4 H  n[        R                  " / SQ/ SQ/ SQ/ SQ/US9n[        R
                  " 5          [        R                  " S[        5        [        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       G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$  r   isnanr   isinf)r;   r   r&   r  s       r'   test_strict_upper_triangular&TestSqrtM.test_strict_upper_triangularv  s     u*B	 &(	)A
 ((*%%h>( 0"((62BCxx(,,....xx(,,.... +*  +*s   B1D
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         ?      ri   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  [        R
                  " 5          [        R                  " S[        5        [        [        U5      USS9  S S S 5        g ! , (       d  f       g = f)N)rC   r   r   rC   r(  r   r   ri   r   r   )	r$   r   r   r   r   r   r   r   r   r2  s      r'   test_gh4866TestSqrtM.test_gh4866  s    HHl"""$ % HHtCy!QS	2""Cy!QS	24 5 	qu-$$&!!(M:E!Hae4 '&&s   0C
Cc                 J   [         R                  " / SQ5      n[         R                  " [        S5      SS/5      n[        X"-  USS9  [        R
                  " 5          [        R                  " S[        S9  [        [        U5      USS9  S S S 5        g ! , (       d  f       g = f)	N)r   rC   r   r   rC   r   ri   r   r   category)	r$   diagr   r   r   r   r   r   r   r2  s      r'   test_gh5336TestSqrtM.test_gh5336  sn    GGIGGT!WaO$qu-$$&##H}EE!Hae4 '&&s   .B
B"c                    [         R                  " S5      n[         R                  " S5      n[        R                  " 5          [        R                  " S[
        S9  [        [        U5      USS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r9  ri   r   )r$   r   r   r   r   r   r   r   r2  s      r'   test_gh7839TestSqrtM.test_gh7839  sV    HHVHHV$$&##H}EE!Hae4 '&&s   .A99
Bc                     [         R                  " S5      nUR                  S5        [         R                  " US5        [         R                  " [        U5      5      (       d   eg )N)   rB  gGz?rC   )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  rB   rB   )r   rC   r   )r   r   r   ri   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uint64rF  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 rO  )	r$   r   int8r   r#   rR  int16int32int64rF  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   rY  r   r#   
complex128rZ  r[  r\  rF  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 )NrP  r"   float128)	r$   r   float16r   r#   r   rR  hasattrre  rF  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   r`  r"   re  
complex256)r$   r   rf  r   r#   r  r   rR  ra  rg  re  rF  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"   rk  )r$   r   r  r   r#   ra  rg  rk  rF  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   )krC   )
r$   r   r   r   r$  r   triuasfortranarrayr   r   )r;   r   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$   r   r   r   copyr   r   )	r;   r   r&   A_negneg_origA_negneg_copyA_posneg_origA_posneg_copyA_negpos_origA_negpos_copys	            r'   test_negative_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^   r_   r   r   r  r  r   r%  r+  r   r6  r<  r?  rG  rL  rV  r]  rb  rh  rl  ro  r   r   r   r   r%   r$   r   r   r  r   r}  r  r  r`   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      n[        SS5       H  n[        SS5       H  nUR	                  X345      SUR	                  X345      -  -   n[         R
                  " SSS5       H@  nXE-  n[        USU-  5      n[         R                  R                  Xr5      n[        X5        MB     M     M     g )N  rC   r   r   r}   r~   r   
r$   r   r   r   r   r   r   r   matrix_powerr   	r;   r   pr   r   r   r   M_rootr   s	            r'   r   8TestFractionalMatrixPower.test_round_trip_random_complex;  s    ii##D)q!A1a[!111&9 3#6#6v#>>?
[[Q2E"*A4Q!<F#%99#9#9&#DL#L4	 3 ! r)   c                 j   [         R                  R                  S5      n[        SS5       H  n[        SS5       Hq  nUR	                  X345      n[         R
                  " SSS5       H@  nXE-  n[        USU-  5      n[         R                  R                  Xr5      n[        X5        MB     Ms     M     g )Nr  rC   r   r}   r~   r   r  r  s	            r'   r   6TestFractionalMatrixPower.test_round_trip_random_floatG  s    
 ii##D)q!A1a[ 00!8
[[Q2E"*A4Q!<F#%99#9#9&#DL#L4	 3 ! r)   c                    [         R                  R                  S5      nS H  n[        S5       H  nUR	                  X"45      SUR	                  X"45      -  -   n[        US5      n[         R                  R                  US5      n[        XF5        [        US5      n[         R                  R                  US5      n[        Xx5        [        US	5      n[         R                  R                  US
5      n[        Xx5        M     M     g )Nr  )r   r   r   rP  r   皙?r   gigffffff@rB  )	r$   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_powersV  s    ii##D)A2Y''/"s7J7JA67R2RR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    rC   r   r}   r{   TFr   r   )r$   r   r   r   integersexpchoicer   r   r   r   )r;   r   nsamplesr  r   r  matrix_scaler&   A_powerrm   A_power_expm_logms              r'   test_random_matrices_and_powers9TestFractionalMatrixPower.test_random_matrices_and_powersh  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?rC   r   )
r(   r   r$   r   r   r   _remainder_matrix_powerr   r   r$  )r;   r&   A_funm_sqrtr  A_rem_powerr  r  rn   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                 <   [         R                  R                  S5      nUR                  S5      SUR                  S5      -  -    HS  n[	        S5       HA  n[
        R                  " X#5      nU[         R                  " U* 5      -  S-
  n[        XE5        MC     MU     g )Nr  rP  r   r   rC   )	r$   r   r   r   r   r   _briggs_helper_functionexp2r   )r;   r   r<   rw  
x_observed
x_expecteds         r'   test_briggs_helper_function5TestFractionalMatrixPower.test_briggs_helper_function  s    ii##D)$$R(20C0CB0G+GGA1X.FFqL
"''1"+-1

7  H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   rC   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   rC   r   r   r  )r   r   rC   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   rC   r   r   rz   )r   r   r   )r   rC   rC   )r   r   rC   r"   )gffffffr  r  g)r  gzG?)	r%   r   r$   r   r   r   r)  allr   )r;   r   newtyper&   r  r  rn   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/  r0  r   r1  ri   r   r   )r   r$   r  r   r2  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^   r_   r   r   r  r  r%  r  r  r  r   r   r   r  r   r`   r[   r)   r'   r  r  :  s[    
55&$82E(8!CFC2 [[<=5 >5&Hr)   r  c            
       x   \ 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                  R5                  S5      S 5       rSrg)TestExpMi  c                 \    [        SS/SS//5      n[        [        U5      SS/SS//5        g )NrB   r   rC   )r   r   r   rF   s     r'   	test_zeroTestExpM.test_zero  s2    Bq61Q%.!!$q'Aa5!A-8r)   c                 z    [        S5      n[        U[        R                  " [        R                  //5      5        g )NrC   )r   r   r$   r   r  )r;   elts     r'   test_single_eltTestExpM.test_single_elt  s&    1gRXXvh/0r)   funcr   r   r   rC   rC   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"   )rP  rP  )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 )NrC   r~   r   r   f)
r$   r  r   r   r   rJ  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 )NrC   r~   r   r   r   r}   r   )orderr   re      rz   )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 )Nre   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   r  r   r   testingr   r   r   )
r;   r&   r   r  jAmrf   rr  	first_resnext_ress
             r'   test_gh18086TestExpM.test_gh180860  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^   r_   r  r  r   r   r   r   r   r   r   r   r   r   r   r%   r$   r   r   r  r  r  r  r   	fail_slowr  r`   r[   r)   r'   r  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
)TestExpmFrechetiE  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rC   r   r   r~   r   rz   re   r  r   r   rC   r   r   r   r   rz   r"   rC   r   r   rz   r   r~   re   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_frechetG  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"   rC   r   r   rz   r   r~   re   r  )rC   r   r   re   r      rv     r   r   )r$   r   r%   r   r   r   zip_expm_frechetell_table_61r   r   r   )r;   
M_original
A_original
E_originalA_original_norm_1selected_m_listm_neighbor_pairsmambell_aell_btarget_norm_1r   r   r&   r   r   r  r  r  s                       r'   test_small_norm_expm_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UR                  UR                  UR
                  U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{   rC   gHj>r   gHz>)r$   r   r   r   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_fuzz  se   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?rC   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                  S5      nUR                  X4S9nUR                  X4S9n[	        X4SS9u  pV[	        X4SS9u  px[        XW5        [        Xh5        g )Ni  r  r{   r  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  sv     ii##D)OO!O(OO!O( ,U!$2>^3-/4:r)   r[   N)r\   r]   r^   r_   r  r  r%  r-  r   r   slowskipr0  r`   r[   r)   r'   r  r  E  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_searchr>    sU    


1ggA!WF7fo.L1#$G ->!!!r)   c                     U [         R                  R                  U5      [         R                  R                  U 5      -  -  $ r5  )r   r   r   )r&   r   s     r'   _normalized_liker@    s0    !!!$u||'8'8';;<<r)   c                 X    U " U5      nU " X-   5      n[        XC-
  5      [        U5      -  $ r5  )r   )r  r&   r;  r   r<  s        r'   _relative_errorrB    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      n[        SS5       H,  nUR	                  X"45      n[        U5      n[        SU5        M.     g )Nr  rC   r~   r   )r$   r   r   r   r   r   r	   )r;   r   r   r&   kappas        r'   test_expm_cond_smoke,TestExpmConditionNumber.test_expm_cond_smoke  sK    ii##D)q!A##QF+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&   rF  s      r'   test_expm_bad_condition_number6TestExpmConditionNumber.test_expm_bad_condition_number  s6    HHI</#	  !$&r)   c                 ,   [         R                  R                  S5      n[         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       H@  nUR                  S	5      n[        [        U5      [         R                  " U5      S
   5        MB     g )Nr  r  r   r  )numr`  r   rP  r  r   )r$   r   r   linspacer   r   r   absr   r   r   r   )r;   r   xr&   r  s        r'   test_univariate'TestExpmConditionNumber.test_univariate  s    ii##D)R+A1#AIaL#a&1 , R+A1#AIaL#a&1 , rA##F+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 )	Ni90  rr   rP  r   r   zL-BFGS-Br(  rC   )r$   r   RandomStater   randintrandnr   r   r   r   r   	functoolspartialr>  r   r   rP  r@  r6  r   rB  r   r	   )r;   r   r9  r  r  r   r&   r7  r   r8  rF  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^   r_   rG  rJ  rQ  r   r   r2  ra  r`   r[   r)   r'   rD  rD    s2    ('
@ [[#H #Hr)   rD  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 )NrC   r   r   r~   r   rz   re   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rC   r   r   r~   r   rz   rC   r   r   r~   r   raises
ValueErrorr   r   rj  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)Nro  rp  )re   r  r   rq  rj  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 )	NrC   r   r   r~   r   rz   re   r  )	r   r   r$   r  r   r   kronr   r
   )r;   r<   rk  res1rw  res2s         r'   test_equality_of_two_equations,TestKhatriRao.test_equality_of_two_equationsD  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<   rk  ress       r'   r   TestKhatriRao.test_emptyN  st    HHVHHVRXXf-.HHVHHVRXXg./r)   r[   N)
r\   r]   r^   r_   rl  rt  rw  r}  r   r`   r[   r)   r'   rd  rd    s    
,2'	0r)   rd  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  Y  s.     
			!RVVAYU# 
"	!	!s	   ;
A	c                      [         R                  " 5          [        [        R                  " S5      SS9  S S S 5        g ! , (       d  f       g = f)Nr   rP  )	blocksize)r   r  r   r$   r   r[   r)   r'   test_blocksize_depr  _  s,    				!bffQi2& 
"	!	!s	   >
A):__doc__rW  r   r   numpyr$   r   r   r   numpy.testingr   r   r   r	   r
   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.linalg._matfuncsr   scipy.linalg._matfuncs_inv_ssqr   scipy.linalg._expm_frechetr   scipy.optimizer   r(   r+   rb   r  r  r  r  r>  r@  rB  rD  rd  r   r   r  r  r[   r)   r'   <module>r     s       ' 'B B A A A A A + 6 E ! & #*' 'Vn0 n0biD iDX	wH wHtNF NFbu; u;p"='BH BHJB0 B0H u-/$/$'r)   