+
    nDjM                        R t ^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^ RI	H
t
HtHtHtHt ^ RIt^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t  ^ RIH!t! ^ RI"H#t# ^ RI$t^ RIH%t% ^ RI&H't' R	 t( ! R
 R4      t) ! R R4      t* ! R R4      t+ ! R R4      t, ! R R4      t- ! R R4      t.R t/R t0R t1 ! R R4      t2 ! R R4      t3R# )z+Test functions for linalg.matfuncs module

N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equal)funmsignmlogmsqrtmfractional_matrix_powerexpmexpm_frechet	expm_condnorm
khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)LogmExactlySingularWarning)LinAlgWarning)minimizec                 V    \         P                  ! . RO. RO. RO. RO.\        R7      p V # )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

dtype)g3d?     L@r!   r!   )    gRal!A?r!   r!   )r"   r"   gQI?r!   )r"   r"   r"   g^?)npr   float)As    Z/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/linalg/tests/test_matfuncs.py%_get_al_mohy_higham_2012_experiment_1r'      s/     	" 	 &+		,A
 H    c                   8   a  ] tR t^1t o R tR tR tR tRtV t	R# )	TestSignMc                    \        . RO. RO. RO. RO. RO.4      p\        . RO. RO. R	O. R
O. RO.4      p\        V4      p\        W24       R# )333333=@Nr,   g3333338g     `Q@gfffffH@g      @gffffff"g@      2g0       g      $g      @g      4r/   r0   g333333#g333333#@g     9g.r0   g#@g333333g      2@g3333332@       @)g'@'Rqgy.@ge@5@r5   )g@ȽUЛ'?g9\g+%r6   )gRQQ?gGzgffffffr7   )gר#w?î?gk#egC,Nr8   )g@42
gF(@gcs@@r9   )r   r   r   )selfacrrs   &   r&   	test_nilsTestSignM.test_nils3   sU    00.1-	/ 0
 QO0ON	P Q
 !H!!'r(   c                J    \        . RO. RO. RO. RO.4      p\        V4       R# )        N)rA      r"   r"   )rB   r"   rB   r"   r"   r"   r"   rB   )r"   r"   rB   r"   r   r   r:   r;   s   & r&   test_defective1TestSignM.test_defective1A   s    ;y9=>ar(   c                P    \        . RO. RO. RO. RO. RO34      p\        V4       R# )r,   Nr-   r.   r1   r2   r3   rD   rE   s   & r&   test_defective2TestSignM.test_defective2F   s)    &'('$& ' 	ar(   c           
     \    \        . RO. RO. RO. RO. RO. RO. RO.4      p\        V4       R# )	r4   Nr0         9@rA   rA   rA   rA   rA   rA               $@      @rQ   rQ   rA   rA   rA   r4         .@rQ   rQ   rA   rA   rA   rA   rA   rS   rQ   rA   rA   rA   rA   rA   rQ   rP   rA   rA   rA   rA   rA   rA   r0   rM   rA   rA   rA   rA   rA   rA   rO   rD   rE   s   & r&   test_defective3TestSignM.test_defective3P   s/    11000102 3 	ar(    N)
__name__
__module____qualname____firstlineno__r>   rF   rI   rX   __static_attributes____classdictcell____classdict__s   @r&   r*   r*   1   s     (
 r(   r*   c            	       
  a  ] tR t^\t o ]P
                  P                  R4      R 4       t]P
                  P                  R4      R 4       tR t	R t
R tR tR tR	 tR
 tR tR tR t]P
                  P'                  RR7      ]P
                  P)                  R]]]P0                  ]]P4                  .4      R 4       4       t]P
                  P)                  R]]]P0                  ]]P4                  .4      R 4       tRtV tR# )TestLogMz$ignore:.*inaccurate.*:RuntimeWarningc           
         \        . RO. RO. RO. RO. RO. R	O. R
O.4      p\        ^4      R,          R,           V,
          p\        V4       R# )r4   g@y                NrL   rN   rR   rT   rU   rV   rW   )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                b    \        4       p\        V4      p\        V4      p\        W1R RR7       R# )g-C6
?+=rtolatolN)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_logmj   s*     23aF|d?r(   c           	         \        4       p\        V\        P                  4      p\	        V4      p\        \        P                  ! W1R RR7      '       * 4       R# )h㈵>ri   rj   N)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_logs   s=     23!RVV_
J'BKKdGGHr(   c           
     X   \         P                  P                  R 4      p\        ^^4       F  pVP	                  W"3R7      p\         P
                  ! R^^	4       F  pW4,          p\         P                  P                  V4      pRV RV 2p\        V4      pW,          p	\        W4       \        P                  ! 4       ;_uu_ 4        \        P                  ! R\        4       \        V4      p
\        V
4      p\        WVR7       RRR4       K  	  K  	  R#   + '       g   i     K  ; i)   >gO*31 sizezM:z eivals:ignore)err_msgN)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   ?D	D)c                Z   \         P                  P                  R 4      p\        ^^4       F{  pVP	                  W"34      RVP	                  W"34      ,          ,           p\         P
                  ! R^^	4       F,  pW4,          p\        V4      p\        V4      p\        Wu4       K.  	  K}  	  R# )ry                 ?Nr~   )	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                   Rp^^ .^ ^..^^ .^^..^^.^^..^^.^^..3 EFA  p\         P                  P                  V4      p\        \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       * 4       \
        P                  ! V\        R7      p\        V4      p\        VP                  P                  V9  4       \
        P                  ! V\        R7      p\        V4      p\        VP                  P                  V9   4       \
        P                  ! V\        R7      ) p\        V4      p\        VP                  P                  V9   4       EKD  	  R# )Fc              3   f   "   T F'  qP                   ;'       g    VP                  ^ 8  x  K)  	  R# 5ir"   Nimagreal.0ws   & r&   	<genexpr>FTestLogM.test_logm_type_preservation_and_conversion.<locals>.<genexpr>   %     <!QFF00affqj0!   11TFr   Nr   DG)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                   . RO. RO. RO.p\         \        3 F  p\        P                  ! WR7      p\        P
                  P                  V4      p\        R\        P                  ! VP                  4      P                  4       8  4       \        V4      p\        \        P                  ! VP                  \        P                  4      4       \        \!        V4      V4       K  	  R# )rB   r   {Gz?N)rB   rB      )r   rB   rB   )rB   r   rB   )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                   ^^ .^ R..^ ^.^^ ..3 Fr  p\         \        3 F_  p\        P                  ! WR7      p\	        V4      w  rE\        \        P                  ! VP                  \        P                  4      4       Ka  	  Kt  	  R# )rB   r   N)	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                   \         P                  ! ^ ^ .RR..4      p\         P                  ! ^^.^ ^ ..4      pWP                  W"P                  3 F[  p\        P
                  ! \        P                  4      ;_uu_ 4        \        V4      pRRR4       \        X4      p\        WSRR7       K]  	  R#   + '       g   i     L.; i)r"   r   Nri   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KG LQAAu-	  KKs    B22Cc                   \         P                  ! R ..4      p\        P                  ! \        P
                  4      ;_uu_ 4        \        V4      pRRR4       \        X4      p\        W1RR7       R#   + '       g   i     L*; i)g0.++Nri   r   )	r#   r   r   r   r   LogmNearlySingularWarningr   r   r   )r:   r   r   r   s   &   r&   test_nearly_singularTestLogM.test_nearly_singular   sV    HHvhZ \\+EEFFQA GG5) GFs   A33B	c                   ^ ^.R^ ..p^ \         P                  R,          .\         P                  ) R,          ^ ..p\        \        V4      VRR7       \        \	        V4      VRR7       R^.^ R..pR\         P                  ,          R,          ^\         P                  ,          .^ R\         P                  ,          R,          ..p\        \        V4      VRR7       \        \	        V4      VRR7       R^ .^ R..pR\         P                  ,          R,          ^ .^ R\         P                  ,          R,          ..p\        \        V4      VRR7       \        \	        V4      VRR7       R# )r"         ?ri   r   r   Nr                )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                    ^p\         P                  ! W34      \         P                  ! V4      ,           pRVP                  n        \        V4       R# )   FN)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                    \         P                  ! RVR7      p\        V4      p\         P                  ! ^VR7      p\        V4      pVP                  R8X  g   Q hVP
                  VP
                  8X  g   Q hR# r"   r   N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                F   \         P                  ! \        R R7      ;_uu_ 4        \         P                  ! \        4      ;_uu_ 4        \	        \
        P                  ! RVR7      4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zlogm result may be inaccuratematchr   Nr   r   )r   r   r   r   r   r#   zeros)r:   r    s   &&r&   test_no_ZeroDivisionError"TestLogM.test_no_ZeroDivisionError  s[    
 ll>1PQQll566&./ 7 RQ66 RQQs#   #B"A<	*B<BBB 	rZ   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`   ra   s   @r&   rd   rd   \   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(   rd   c                   l  a  ] tR tRt o R tR tR tR tR tR t	R t
 R	 tR
 tR tR tR tR tR tR tR t]P*                  P-                  R4      R 4       t]P*                  P-                  R4      R 4       t]P*                  P-                  R4      R 4       t]P*                  P5                  R]]]P<                  ]]P@                  .4      R 4       t!R t"R t#R t$]P*                  P5                  R]P<                  ]PJ                  ]P@                  ]PL                  .4      R 4       t'Rt(V t)R# )	TestSqrtMi  c                *   \         P                  P                  R 4      p\        ^^4       Fc  pVP	                  W"34      p\         P
                  ! R^^	4       F2  pW4,          p\        V4      pVP                  V4      p\        Wu4       K4  	  Ke  	  R# )l   &\31 Nr~   	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                f   \         P                  P                  R 4      p\        ^^4       F  pVP	                  W"34      RVP	                  W"34      ,          ,           p\         P
                  ! R^^	4       F2  pW4,          p\        V4      pVP                  V4      p\        Wu4       K4  	  K  	  R# )l   &\31 r   Nr~   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                    Rp\        V4      p\        . RO^ V^ ^ .^ ^ V^ .. RO.4      p\        . RO^ V^ ^ .^ ^ V^ .. RO.4      p\        WD,          V4       \        V4      p\        WU,          V4       R# )r   Ng      ?)      ?r"   r"   rB   rC   )rB   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                   Rp^^ .^ ^..^^ .^^..^^.^^..^^.^^..^^.^^..3 EF  p\         P                  P                  V4      p\        \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       * 4       \
        P                  ! 4       ;_uu_ 4        \
        P                  ! R\        4       \        P                  ! V\        R7      p\        V4      p\        VP                  P                  V9  4       \        P                  ! V\        R7      p\        V4      p\        VP                  P                  V9   4       \        P                  ! V\        R7      ) p\        V4      p\        VP                  P                  V9   4       RRR4       EK  	  R#   + '       g   i     EK  ; i)r   c              3   f   "   T F'  qP                   ;'       g    VP                  ^ 8  x  K)  	  R# 5ir   r   r   s   & r&   r   HTestSqrtM.test_sqrtm_type_preservation_and_conversion.<locals>.<genexpr>C  r   r   TFr|   r   Nr   )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_conversion5  ss    .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   *C8F11Gc                (   Rp^^ .^ R..^ ^.^^ ... RO. R	O. R
O.3 F  p\         P                  P                  V4      p\        \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      4       \
        P                  ! V\        R7      p\        V4      p\        VP                  P                  V9   4       \
        P                  ! V\        R7      p\        V4      p\        VP                  P                  V9   4       K  	  R# )r   c              3   f   "   T F'  qP                   ;'       g    VP                  ^ 8  x  K)  	  R# 5ir   r   r   s   & r&   r   VTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>a  %     8a,,!&&1*,ar   TFr   Nr   r   r"   rB   r"   )r"   r"   r   rB   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_spectrumX  s    -Q!R!Q!Q J	24N $$^4ACC8a8CCC8a889 w7AAhGGMM&&*==> u5AAhGGMM&&*==>#4r(   c                    \        4       p\        V4      pW",          p\        W1R R7       \        \        P                  ! V4      \        P                  ! V4      4       R# )rr   rk   N)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_1m  s@    13((d3-rwwqz:r(   c           	     T   \         \        3 EF  p\        P                  ! . RO. RO. RO. RO.VR7      p\        P
                  ! 4       ;_uu_ 4        \        P                  ! R\        4       \        V4      p\        \        P                  ! V4      \        P                  ! R4      4       \        P                  ! V4      P                  4       '       g   Q h\        P                  ! V4      P                  4       '       g   Q h RRR4       EK  	  R#   + '       g   i     EK  ; i)	r"   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   r!  r   isnanr   isinf)r:   r   r%   r  s   &   r&   test_strict_upper_triangular&TestSqrtM.test_strict_upper_triangularu  s     u*B	 &(	)A
 ((**%%h>( 0"((62BCxx(,,....xx(,,.... +*  +**s   B0DDD'c                    R ^.^ R..pR^.^ R..p\        \        P                  ! W"4      VRR7       \        \        V4      VRR7       R# )               @ri   r   N                    ?      ?      ?      )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                   \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! \        R4      ^ ^ \        R4      .. RO. RO\        R4      ^ ^ \        R4      ..4      p\        W",          VRR7       \        P
                  ! 4       ;_uu_ 4        \        P                  ! R\        4       \        \        V4      VRR7       RRR4       R#   + '       g   i     R# ; i)rB   r   ri   r   r|   N)rB   r"   r"   rB   r&  )	r#   r   r   r   r   r   r   r   r   r1  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   3CC,	c                |   \         P                  ! . RO4      p\         P                  ! \        ^4      ^^ .4      p\        W",          VRR7       \        P
                  ! 4       ;_uu_ 4        \        P                  ! R\        R7       \        \        V4      VRR7       RRR4       R#   + '       g   i     R# ; i)r   ri   r   r|   categoryN)r   rB   r"   )	r#   diagr   r   r   r   r   r   r   r1  s   &  r&   test_gh5336TestSqrtM.test_gh5336  st    GGIGGT!WaO$qu-$$&&##H}EE!Hae4 '&&&s   ,4B**B;	c                8   \         P                  ! R4      p\         P                  ! R4      p\        P                  ! 4       ;_uu_ 4        \        P                  ! R\
        R7       \        \        V4      VRR7       RRR4       R#   + '       g   i     R# ; i)r   r|   r8  ri   r   Nr   )r#   r   r   r   r   r   r   r   r1  s   &  r&   test_gh7839TestSqrtM.test_gh7839  s\    HHVHHV$$&&##H}EE!Hae4 '&&&s   
4BB	c                    \         P                  ! R4      pVP                  R4       \         P                  ! V^4       \         P                  ! \        V4      4      '       g   Q hR# )   gGz?N)rA  rA  )r#   r   fillfill_diagonal	isrealobjr   r:   r   s   & r&   test_gh17918TestSqrtM.test_gh17918  sD    HHX	t
A||E!H%%%%r(   c                    \         P                  ! . RO. RO. RO.4      p\        V4      p\        W",          VRR7       \        VP	                  \         P
                  4      4      p\        W",          VRR7       R# )r	  ri   r   gư>N)r	  rA   rA   )r"   rB   r   )r"   r   r   )r#   r   r   r   astyper   )r:   r   sqs   &  r&   test_gh23278TestSqrtM.test_gh23278  sS    HHlK<=1X/188BLL)*.r(   c                   \         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q hR# 
   r   N)	r#   r   uint8r   r    float64uint16uint32uint64rE  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                   \         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q hR# rN  )	r#   r   int8r   r    rQ  int16int32int64rE  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                   \         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q hR# )r   r   N)	r#   r   rX  r   r    
complex128rY  rZ  r[  rE  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(   zignore::DeprecationWarningc                   \         P                  ! ^
\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P
                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^
\         P                  R7      p\        V4      P                  \         P                  8X  g   Q h\        \         R4      '       dS   \         P                  ! ^
\         P                  R7      p\        V4      P                  \         P                  8X  g   Q hR# R# )rO  r   float128N)	r#   r   float16r   r    r   rQ  hasattrrd  rE  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                   \         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q h\         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P                  8X  g   Q h\        \         R4      '       dq   \        \         R4      '       dY   \         P                  ! ^^.^ R..\         P                  R7      p\        V4      P                  \         P                  8X  g   Q hR# R# R# )r   r   rd  
complex256Nr_  )r#   r   re  r   r    r   r   rQ  r`  rf  rd  rE  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                :   \         P                  ! R ^.^ R..\         P                  R7      p\        V4      P                  \         P                  8X  g   Q h\         P                  ! R ^.^ R..\         P
                  R7      p\        V4      P                  \         P
                  8X  g   Q h\        \         R4      '       dY   \         P                  ! R ^.^ R..\         P                  R7      p\        V4      P                  \         P
                  8X  g   Q hR# R# )r-  r   rj  Nr.  )r#   r   r   r   r    r`  rf  rj  rE  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                    \         P                  ! RVR7      p\        V4      p\         P                  ! ^VR7      p\        V4      pVP                  R8X  g   Q hVP
                  VP
                  8X  g   Q hR# 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                   \         P                  P                  R 4      p^pVP                  ^^V,          ^V,          3R7      p\         P                  ! VRR7      \         P
                  ! ^V,          4      ,           \         P                  ! V4      rTWE,          pVR,          p\         P                  ! V4      R,          p\        \        VR,          4      \        V4      4       \        \        VR,          4      \        V4      4       R# )l   &\31 rz   )kNr   )NNNNNr   rw  )rv  rB   Nr   rx  )
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+))!,];an-u]/CDa./}1EFr(   c                l    \         P                  ! . RO\        R7      p\        \	        V4      V4       R# )r'  )r   r    N)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                0   \         P                  P                  R 4      pVP                  RR7      pVRRRR1RRR13,          pVRRRR1RRR13,          P	                  4       p\        \        V4      \        V4      4       VRRRRR13,          pVRRRRR13,          P	                  4       p\        \        V4      \        V4      4       VRRRR1R3,          pVRRRR1R3,          P	                  4       p\        \        V4      \        V4      4       R# )l   &\31 rz   rv  N)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(   dtypc                H   \         P                  ! . RO. RO. RO.VR7      p\        P                  ! \        RR7      ;_uu_ 4        \        V4      p\         P                  ! VR,          4      P                  4       '       g   Q h RRR4       R#   + '       g   i     R# ; i)r"   r   zMatrix is singular.r   N)r"   r   r   r"   r"   r"   )r"   rB   NN)r#   r   r   r   r   r   r)  all)r:   r  r;   ress   &&  r&   test_gh24508TestSqrtM.test_gh24508;  sh    
 HHiI6dC\\-/DEE(C88CJ'++---- FEEEs   ?BB!	rZ   N)*r[   r\   r]   r^   r   r   r  r  r  r"  r*  r   r5  r;  r>  rF  rK  rU  r\  ra  r   r   r   rg  rk  rn  r   r   r$   r#   r   r   r   r   r~  r  r  rQ  r`  r  r_   r`   ra   s   @r&   r   r     sX    7	70"!CF?*;/*&1555&/,,/ [[ <=	0 >	0 [[ <=	3 >	3 [[ <=3 >3 [[TC

GR\\#RS# T#G(D [[Vbjj"**&(llBMM&C D.D.r(   r   c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 t]P                  P                  R
R7      R 4       tR tRtV tR# )TestFractionalMatrixPoweriF  c                   \         P                  P                  R 4      p\        ^^4       F  p\        ^^4       F  pVP	                  W334      RVP	                  W334      ,          ,           p\         P
                  ! R^^	4       FH  pWE,          p\        V^V,          4      p\         P                  P                  Wr4      p\        W4       KJ  	  K  	  K  	  R# )  r   Nr~   
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_complexG  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                |   \         P                  P                  R 4      p\        ^^4       F  p\        ^^4       Fy  pVP	                  W334      p\         P
                  ! R^^	4       FH  pWE,          p\        V^V,          4      p\         P                  P                  Wr4      p\        W4       KJ  	  K{  	  K  	  R# )r  Nr~   r  r  s	   &        r&   r   6TestFractionalMatrixPower.test_round_trip_random_floatS  s    
 ii##D)q!A1a[ 00!8
[[Q2E"*A4Q!<F#%99#9#9&#DL#L4	 3 ! r(   c                $   \         P                  P                  R 4      pR F  p\        ^
4       F  pVP	                  W"34      RVP	                  W"34      ,          ,           p\        VR4      p\         P                  P                  V^4      p\        WF4       \        VR4      p\         P                  P                  VR4      p\        Wx4       \        VR4      p\         P                  P                  V^4      p\        Wx4       K  	  K  	  R# )r  r   皙?gffffff@N)r   r%  r   gi)	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_powersb  s    ii##D)A2Y''/"s7J7JA67R2RR5a=!yy55k1E0+At4II**;<%+As3II**;;%  r(   c                   \         P                  P                  R 4      p^p\        V4       F  pVP	                  ^^4      pVP                  4       p\         P
                  ! VP	                  R^4      4      pVP                  WD.R7      pRR.VP                  ^4      ,          '       d"   VRVP                  WD.R7      ,          ,           pWv,          p\        Wu4      p\        V4      p	\        W,          4      p
\        W4       K  	  R# )l   fm1 rz   TFr   Nr~   )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_powerst  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                   \        4       p\        V\        P                  4      p\	        V4      p\
        P                  ! VR 4      p\        VR 4      p\        WERR7       \        W54       \        W24       R Fd  p\        W4      p\        V^V,          4      p\        WqRR7       \        \        P                  ! V^4      \        P                  ! V^4      4       Kf  	  R# )r   gdy=r   r   N)r   g?)
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                ^   \         P                  P                  R 4      pVP                  ^
4      RVP                  ^
4      ,          ,            F[  p\	        ^4       FI  p\
        P                  ! W#4      pV\         P                  ! V) 4      ,          ^,
          p\        WE4       KK  	  K]  	  R# )r  r   N)	r#   r   r   r   r   r   _briggs_helper_functionexp2r   )r:   r   r;   ru  
x_observed
x_expecteds   &     r&   test_briggs_helper_function5TestFractionalMatrixPower.test_briggs_helper_function  s    ii##D)$$R(20C0CB0G+GGGA1X.FFqL
"''1"+-1

7  Hr(   c                   Rp^^ .^ ^..^^ .^^..^^.^^..^^.^^..3 EFJ  p\         P                  P                  V4      p\        \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       * 4       R F  p\
        P                  ! V\        R7      p\        WT4      p\        VP                  P                  V9  4       \
        P                  ! V\        R7      p\        WT4      p\        VP                  P                  V9   4       \
        P                  ! V\        R7      ) p\        WT4      p\        VP                  P                  V9   4       K  	  EKM  	  R# )r   c              3   f   "   T F'  qP                   ;'       g    VP                  ^ 8  x  K)  	  R# 5ir   r   r   s   & r&   r   RTestFractionalMatrixPower.test_type_preservation_and_conversion.<locals>.<genexpr>  r   r   TFr   Nr   333333r  gffffff
@)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                :   Rp^^ .^ R..^ ^.^^ ... RO. R	O. R
O.3 F  p\         P                  P                  V4      p\        \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      4       R F  p\
        P                  ! V\        R7      p\        WT4      p\        VP                  P                  V9   4       \
        P                  ! V\        R7      p\        WT4      p\        VP                  P                  V9   4       K  	  K  	  R# )r   c              3   f   "   T F'  qP                   ;'       g    VP                  ^ 8  x  K)  	  R# 5ir   r   r   s   & r&   r   `TestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>  r  r   TFr   Nr   r   r  )r"   r"   rB   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CC8a8CCC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                   ^ ^ .^ ^ ..^^.^^..^^.^^... RO. RO. RO.3 F  p\         \        3 F  p\        P                  ! WR7      pR F;  p\	        W44      p\        \        P                  ! V4      P                  4       4       K=  	  R F,  p\	        W44      p\	        V^V,          4      p\        Wc4       K.  	  K  	  K  	  R# )r"   r   Nr  )r"   rB   rB   )r"   r   rB   )gffffffr  r  g)r  gzG?)	r$   r   r#   r   r   r   r(  r  r   )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                    R ^.^ R..pR^.^ R..p\        \        P                  ! W"4      VRR7       \        \        VR4      VRR7       R# )r-  ri   r   r   Nr.  r/  r0  )r   r#   r  r   r1  s   &  r&   r   @TestFractionalMatrixPower.test_opposite_sign_complex_eigenvalues  sN    !Wq#hAYD	"qae4/37Gr(   rZ   N)r[   r\   r]   r^   r   r   r  r  r"  r  r  r  r   r   r   r  r   r_   r`   ra   s   @r&   r  r  F  sd     
55&$82E(8!CFC2 [[<=5 >5&H Hr(   r  c            
         a  ] tR tRt o R tR t]P                  P                  R]	]
]]]]].4      ]P                  P                  R]]]P&                  ]]P*                  .4      ]P                  P                  RRR.4      R 4       4       4       tR tR	 tR
 t]P                  P5                  ^4      R 4       tRtV tR# )TestExpMi   c                ^    \        R ^ .^ ^ ..4      p\        \        V4      ^^ .^ ^..4       R# )rA   N)r   r   r   rE   s   & r&   	test_zeroTestExpM.test_zero  s2    Bq61Q%.!!$q'Aa5!A-8r(   c                |    \        ^4      p\        V\        P                  ! \        P                  ..4      4       R# )rB   N)r   r   r#   r   r
  )r:   elts   & r&   test_single_eltTestExpM.test_single_elt  s&    1gRXXvh/0r(   funcr   r   c                    \         P                  ! W2R 7      p\         P                  ! RVR 7      pV! V4      pV! V4      pVP                  V8X  g   Q hVP                  VP                  8X  g   Q hR# )r   N)rO  rO  )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                   \         P                  p\        ^^.^^..4      pV^,          ^,           ^V,          ,          pV^,          ^,
          V,          p\        \	        V4      \        W4.V^,          V..4      4       \	        VP                  \         P                  4      4      P                  P                  R8X  g   Q h\	        VP                  \         P                  4      4      P                  P                  R8X  g   Q hR# )rB   r   fN)
r#   r
  r   r   r   rI  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                J   \         P                  p\         P                  ! ^^.^^..^^.^R..^^.^^..^^.^^..^^.RR...RR7      p\         P                  ! V^,          ^,           ^V,          ,          V^,          ^,
          V,          .V^,          ^,
          ^,          V,          V^,          ^,           ^V,          ,          ..^^V^,          ,          ,          ^V^,          ,          ^,          ,           ^V^,          ,          ^,          ^^V^,          ,          ,          ,
          .V^,          ^,          ^^V^,          ,          ,          ,
          ^^V^,          ,          ,          V^,          ^,          ,           ..^^V,          ,          V^,          ^,          ,           R^V,          ,          ^V^,          ,          ^,          ,           .R^V,          ,          V^,          ^,          ,           ^^V,          ,          ^V^,          ,          ^,          ,           ..^^V^,          ,          ,          ^V^,          ,          ^,          ,           R^V^,          ,          ,          ^V^,          ,          ^,          ,           .R^V^,          ,          ,          ^V^,          ,          ^,          ,           ^^V^,          ,          ,          ^V^,          ,          ^,          ,           ..R^V,          ,          ^V,          ^,          ,           R^V,          ,          ^V,          ^,          ,           .^^V,          ,          ^V,          ^,          ,
          ^^V,          ,          ^V,          ^,          ,
          ...4      p\        \	        V4      V4       R# )rB   r   )orderNr   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                p    ^p\         P                  ! W34      pRVP                  n        \	        V4       R# )   FN)r#   r   r   r   r   r   s   &  r&   r   TestExpM.test_readonly6  s)    GGQFO!Qr(   c                   \         P                  ! R\        R7      p\         P                  P	                  ^d4      pVP                  ^ RR4      pVP                  ^ RR4      pVP                  R4      WV3&   \        V4      p\         P                  P                  \        V4      V4       \        ^4       F-  p\        V4      p\         P                  P                  WV4       K/  	  R# )  r   i  i  N)r  r  )r#   r   r$   r   r   r  r   testingr   r   r   )r:   r%   r   r  j	first_resnext_ress   &      r&   test_gh18086TestExpM.test_gh18086<  s    HHZu-ii##C(LLC%LLC%**S/Q$G	


,,T)_a@qAAwHJJ00E r(   rZ   Nr   rB   rB   )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`   ra   s   @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                      a  ] tR tRt o R tR tR tR t]P                  P                  ]P                  P                  RR7      R 4       4       tR	tV tR
# )TestExpmFrechetiL  c                   \         P                  ! . RO. RO. RO. R	O.\        R7      p\         P                  ! ^^.^^..\        R7      p\         P                  ! ^^.^^..\        R7      p\        P                  P                  V4      p\        P                  P                  V4      R
,          p/ RR/RR/3 F'  p\        W#3/ VB w  rx\        WG4       \        WX4       K)  	  R# )rB   r   methodSPSblockEnlargeNrB   r   r%  r'  r      r     r"   r"   rB   r   r"   r"   r   r  :Nr   N:r   NN)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_frechetN  s    HH	
  HHFF  HHFF  ))!, <<,,Q/7HU+h~-FGF.:1.J6.J+MM9,? Hr(   c                H   \         P                  ! . RO. RO. RO. RO.\        R7      p\         P                  ! ^^.^^..\        R7      p\         P                  ! ^^.^^..\        R7      p\        P                  P                  V^4      p. R	Op\        VRR
 VR,          4      pV F  w  rx\        P                  P                  P                  V,          p	\        P                  P                  P                  V,          p
RW,           ,          pW,          pW,          pW,          pW,          p\        P                  P                  V4      p\        P                  P                  V4      R,          p\        W4      w  pp\        VV4       \        VV4       K  	  R# )rB   r   Nr  r   r  r  r  r  )rB   r%  r   r  	            r   r  )r#   r   r$   r   r   r   zip_expm_frechetell_table_61r   r   r   )r:   
M_original
A_original
E_originalA_original_norm_1selected_m_listm_neighbor_pairsmambell_aell_btarget_norm_1r   r   r%   r   r  r	  r  r  s   &                   r&   test_small_norm_expm_frechet,TestExpmFrechet.test_small_norm_expm_frechete  sm   XX	
 
 XXFF 
 XXFF 
 "LL--j!<5s3_R5HI&FBLL..;;B?ELL..;;B?E5=1M!5E"A"A"A!LL--a0M$||003F;.:1.@+M+M=9,.>? 'r(   c           	     n   \         P                  P                  R 4      pVP                  VP                  VP
                  VP                  3p^dp\        V4       EFU  pW!P                  ^4      ,          pVP                  4       pVP                  ^^4      pV! Ww3R7      pV! Ww3R7      p	\        P                  P                  V^4      p
Wj,          pW,          pW,          p\         P                  ! \         P                  ! W.4      \         P                  ! \         P                  ! V4      V.4      .4      p\        P                  P!                  V4      p\        P                  P!                  V4      RV1VR13,          p\#        W4      w  pp\%        VVRR7       \%        VVRR7       EKX  	  R# )l   ]"1 rz   NgHj>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  sh   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J# r(   c                6   \         P                  ! R R.RR..\        R7      p\         P                  ! RR.RR..\        R7      p\        P                  P                  V^4       \        WR	R
7      w  r4\        WRR
7      w  rV\        W54       \        WF4       R# )g]؉??gvP?g^?guÝ?r   gS,?g| @gJt?g~3?r  r  r   N)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                    R p\         P                  P                  R4      pVP                  W3R7      pVP                  W3R7      p\	        W4RR7      w  rV\	        W4RR7      w  rx\        WW4       \        Wh4       R# )i  r  rz   r  r1  r   N)r#   r   r   r'  r   r   )	r:   r   r   r%   r   r2  r3  r4  r5  s	   &        r&   test_medium_matrix"TestExpmFrechet.test_medium_matrix  sv     ii##D)OO!O(OO!O( ,U!$2>^3-/4:r(   rZ   N)r[   r\   r]   r^   r  r"  r.  r6  r   r   slowskipr9  r_   r`   ra   s   @r&   r  r  L  sV     @.@BK8;$ [[[[=>; ? ;r(   r  c                     \         P                  ! WPP                  4      p\        V4      pWE,          W,          ,          p\	        W,           4      p\        W,
          4      W4,          ,          p	V	) # N)r#   reshaper   r   r   )
r%   A_normr   X_normepsr  p_normperturbationX_primescaled_relative_errors
   &&&&&&    r&   _help_expm_cond_searchrG    sU    


1ggA!WF7fo.L1#$G ->!!!r(   c                     V \         P                  P                  V4      \         P                  P                  V 4      ,          ,          # r>  )r   r   r   )r%   r   s   &&r&   _normalized_likerI    s0    !!!$u||'8'8';;<<r(   c                 p    V ! V4      pV ! W,           4      p\        WC,
          4      \        V4      ,          # r>  )r   )r  r%   rD  r   rE  s   &&&  r&   _relative_errorrK    s.    	!A !GtAw&&r(   c                   j   a  ] tR tRt o R tR tR t]P                  P                  R 4       t
RtV tR# )TestExpmConditionNumberi  c                    \         P                  P                  R 4      p\        ^^4       F,  pVP	                  W"34      p\        V4      p\        ^ V4       K.  	  R# )r  N)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                x    \         P                  ! . RO. RO. RO. RO.4      p\        V4      p\        RV4       R# )g(?g yhGN)g(gٙBgx@g  =g ZdB)r"   gzNV7g@g  2p)r"   r"   gᙥT g?W[E@)r"   r"   r"   gT!)r#   r   r   r   )r:   r%   rO  s   &  r&   test_expm_bad_condition_number6TestExpmConditionNumber.test_expm_bad_condition_number  s6    HHI</#	  !$&r(   c                B   \         P                  P                  R 4      p\         P                  ! R^^R7       F9  p\         P                  ! V..4      p\        \        V4      \        V4      4       K;  	  \         P                  ! R^^R7       F9  p\         P                  ! V..4      p\        \        V4      \        V4      4       K;  	  \        ^
4       FD  pVP                  R4      p\        \        V4      \         P                  ! V4      R,          4       KF  	  R# )r  )numNr  r_  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           	        \         P                  P                  R 4      pRp^
p\        V4       EF  pVP	                  ^^4      pVP                  WU4      p\        P                  P                  V4      p\        V4      p\        P                  P                  V4      p	\        V4      p
\        P                  ! \        WgWV4      p\         P                  ! WU,          4      p\        WRR7      pVP                   pV! V4      pV\#        \         P$                  ! WP&                  4      V4      ,          p\)        \        VV4      p\+        VV) V,          4       \        ^4       Fi  pV\#        VP
                  ! VP&                  !  V4      ,          p\+        \        V4      \        V4      4       \)        \        VV4      p\-        VV4       Kk  	  \-        V^^V,          ,           V,          V
,          4       EK  	  R# )i90  rr   zL-BFGS-Br1  N)r#   r   RandomStater   randintrandnr   r   r   r   r   	functoolspartialrG  r   r   rY  rI  r?  r   rK  r   r   )r:   r   rB  r  r  r   r%   r@  r   rA  rO  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(   rZ   N)r[   r\   r]   r^   rP  rS  rZ  r   r   r;  rj  r_   r`   ra   s   @r&   rM  rM    s5     ('
@ [[#H #Hr(   rM  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TestKhatriRaoi  c           
     8   \        \        ^^.^^..4      \        ^^.^^..4      4      p\        V\        ^^.^^.^^.^^ ..4      4       \        \        P                  ! ^^.4      \        P                  ! ^^.4      4      p\        VP
                  R4       R# )rB   N)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                    \         P                  ! \        4      ;_uu_ 4        \        . RO. RO.4      p\        ^^.^^..4      p\	        W4       RRR4       R#   + '       g   i     R# ; i)rB   NrB   r   r%  r'  r   r  r   raises
ValueErrorr   r   ro  s   &  r&   test_number_of_columns_equality-TestKhatriRao.test_number_of_columns_equality*  sX    ]]:&&y " #A1v1v  Aq '&&&s   .AA,	c                j   \         P                  ! \        4      ;_uu_ 4        \        . RO4      p\        . RO4      p\	        W4       RRR4       \         P                  ! \        4      ;_uu_ 4        \        . RO4      p\        . RO. RO.4      p\	        W4       RRR4       \         P                  ! \        4      ;_uu_ 4        \        . RO. RO.4      p\        . RO4      p\	        W4       RRR4       R#   + '       g   i     L; i  + '       g   i     Ly; i  + '       g   i     R# ; i)rB   Nrt  ru  )r  r  r  rv  ro  s   &  r&   test_to_assure_2d_array%TestKhatriRao.test_to_assure_2d_array2  s    ]]:&&i Ai Aq	 ' ]]:&&i A A q ' ]]:&& A i Aq '& '& '& '&&s#   &C;3*D*D!;D	D	!D2	c                b   \        ^^.^^..4      p\        ^^.^^..4      p\        W4      p\        P                  ! \	        VP
                  ^,          4       Uu. uF,  p\        P                  ! VRV3,          VRV3,          4      NK.  	  up4      P                  p\        W54       R# u upi )rB   rv  N)	r   r   r#   r(  r   r   kronr   r	   )r:   r;   rp  res1ru  res2s   &     r&   test_equality_of_two_equations,TestKhatriRao.test_equality_of_two_equationsK  s    Aq6Aq6"#Aq6Aq6"#!yy#(#46#4a ''!AqD'1QT73#46 778q 	 	4&6s   2B,c                b   \         P                  ! R4      p\         P                  ! R4      p\        W4      p\        V\         P                  ! R4      4       \         P                  ! R4      p\         P                  ! R4      p\        W4      p\        V\         P                  ! R4      4       R# )r"   N)r"   r   )r%  r   )r%  r"   )r   r"   )r  r"   )r#   r   r   r   )r:   r;   rp  r  s   &   r&   r   TestKhatriRao.test_emptyU  st    HHVHHVRXXf-.HHVHHVRXXg./r(   rZ   N)r[   r\   r]   r^   rq  ry  r|  r  r   r_   r`   ra   s   @r&   rm  rm    s#     
,2'	0 	0r(   rm  )4__doc__r`  r   r   numpyr#   r   r   r   numpy.testingr   r   r   r   r	   scipy.linalgr   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.linalg._matfuncs_inv_ssqr   scipy.linalg._expm_frechetr   scipy.optimizer   r'   r*   rd   r   r  r  r  rG  rI  rK  rM  rm  rZ   r(   r&   <module>r     s        ' 'B B A A A A A + E ! & #*' 'Vn0 n0bv. v.r	wH wHtIF IFXu; u;p"='BH BHJB0 B0r(   