
    Џkhn                        d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZ ddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! ddlm"Z" ddl#m$Z$ ddl%m&Z& ddl'Zdd	lm(Z( dd
l)m*Z* d Z+ G d d      Z, G d d      Z- G d d      Z. G d d      Z/ G d d      Z0 G d d      Z1d Z2d Z3d Z4 G d d      Z5 G d d      Z6ejn                  jq                  deeeg      d         Z9d! Z:y)"z, Test functions for linalg.matfuncs module

    N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equalassert_warnssuppress_warnings)funmsignmlogmsqrtmfractional_matrix_powerexpmexpm_frechet	expm_condnorm
khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)pick_pade_structure)LogmExactlySingularWarning)LinAlgWarning)minimizec                  T    t        j                  g dg dg dg dgt              } | S )aW  
    Return the test matrix from Experiment (1) of [1]_.

    References
    ----------
    .. [1] Awad H. Al-Mohy and Nicholas J. Higham (2012)
           "Improved Inverse Scaling and Squaring Algorithms
           for the Matrix Logarithm."
           SIAM Journal on Scientific Computing, 34 (4). C152-C169.
           ISSN 1095-7197

    )g3d?     L@r#   r#   )r   gRal!A?r#   r#   )r   r   gQI?r#   )r   r   r   g^?dtype)npr   float)As    \/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_matfuncs.py%_get_al_mohy_higham_2012_experiment_1r*      s/     	" 	 &+		,A
 H    c                   $    e Zd Zd Zd Zd Zd Zy)	TestSignMc                     t        g dg dg dg dg dg      }t        g dg dg dg d	g d
g      }t        |      }t        ||       y )Ng333333=@g3333338g     `Q@gfffffH@g      @gffffff"g@      2g0       g      $g      @g      4r1   r2   g333333#g333333#@g     9g.r2   g#@g333333g      2@g3333332@       @)g'@'Rqgy.@ge@5@r7   )g@ȽUЛ'?g9\g+%r8   )gRQQ?gGzgffffffr9   )gר#w?î?gk#egC,Nr:   )g@42
gF(@gcs@@r;   )r   r   r   )selfacrrs       r)   	test_nilszTestSignM.test_nils4   sW    00.1-	/ 0
 QO0ON	P Q
 !H!!B'r+   c                 H    t        g dg dg dg dg      }t        |       y )N)           r   r   )rC   r   rC   r   r   r   r   rC   )r   r   rC   r   r   r   r<   r=   s     r)   test_defective1zTestSignM.test_defective1B   s    ;y9=>ar+   c                 N    t        g dg dg dg dg df      }t        |       y )Nr/   r0   r3   r4   r5   rE   rF   s     r)   test_defective2zTestSignM.test_defective2G   s)    &'('$& ' 	ar+   c           
      Z    t        g dg dg dg dg dg dg dg      }t        |       y )Nr2         9@rB   rB   rB   rB   rB   rB               $@      @rP   rP   rB   rB   rB   r6         .@rP   rP   rB   rB   rB   rB   rB   rR   rP   rB   rB   rB   rB   rB   rP   rO   rB   rB   rB   rB   rB   rB   r2   rL   rB   rB   rB   rB   rB   rB   rN   rE   rF   s     r)   test_defective3zTestSignM.test_defective3Q   s/    11000102 3 	ar+   N)__name__
__module____qualname__r@   rG   rI   rW    r+   r)   r-   r-   2   s    (
r+   r-   c            	          e Zd Zd Zej
                  j                  d      d        Zej
                  j                  d      d        Zd Z	d Z
d Zd Zd	 Zd
 Zej
                  j                  d        Zej
                  j                  d        Zd Zd Zej
                  j)                  d      ej
                  j+                  deeej2                  eej6                  g      d               Zej
                  j                  ej
                  j+                  deeej2                  eej6                  g      d               Zy)TestLogMc                 L    t         j                  j                  d      | _        y )Nl   >gO*31 )r&   randomdefault_rngrng)r<   s    r)   setup_methodzTestLogM.setup_method^   s    99(()9:r+   z$ignore:.*inaccurate.*:RuntimeWarningc           
          t        g dg dg dg dg dg dg dg      }t        d      d	z  d
z   |z
  }t        |       y )NrK   rM   rQ   rS   rT   rU   rV      g@y                )r   r   r   )r<   r=   ms      r)   r@   zTestLogM.test_nilsa   sF    11000102 3 a[_R"Qr+   c                 b    t               }t        |      }t        |      }t        ||dd       y )Ng-C6
?+=rtolatol)r*   r   r   r   )r<   r(   A_logmA_round_trips       r)   *test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmn   s,     23aF|ad?r+   c                     t               }t        |t        j                        }t	        |      }t        t        j                  ||dd              y )Nh㈵>rg   rh   )r*   r   r&   logr   r   allclose)r<   r(   
A_funm_logrl   s       r)   .test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logw   s?     23!RVV_
J'BKKadGGHr+   c                    t        dd      D ]  }| j                  j                  ||f      }t        j                  ddd      D ]  }||z  }t        j
                  j                  |      }d| d| }t        |      }||z  }t        ||       t               5 }	|	j                  t        	       t        |      }
t        |
      }t        |||
       d d d          y # 1 sw Y   xY w)NrC      size   	   zM:z eivals:category)err_msg)rangera   uniformr&   logspacelinalgeigvalsr   r   r   filterRuntimeWarningr   r   )r<   n
M_unscaledscaleMWr}   M_sqrtmM_sqrtm_round_tripsupM_logmM_logm_round_trips               r)   test_round_trip_random_floatz%TestLogM.test_round_trip_random_float   s    q! 	KA))1v)6JRA. K& II%%a(qc!-  (%,w%6" 2A6 '( KCJJJ7!!WF(,V%#$5q'JK KK	KK Ks   ;C""C+c                 (   t        dd      D ]  }| j                  j                  ||f      d| j                  j                  ||f      z  z   }t        j                  ddd      D ])  }||z  }t        |      }t        |      }t        ||       +  y )NrC   ru                 ?rx   ry   rz   )r~   ra   standard_normalr&   r   r   r   r   )r<   r   r   r   r   r   M_round_trips          r)   test_round_trip_random_complexz'TestLogM.test_round_trip_random_complex   s    q! 	1A((22Aq6:TXX55q!f==>JRA. 1&a#F|a0	1	1r+   c                 t   d}ddgddggddgddggddgddggddgddggfD ]  }t         j                  j                  |      }t        t	        d |D                      t        j                  |t              }t        |      }t        |j                  j                  |v       t        j                  |t              }t        |      }t        |j                  j                  |v        t        j                  |t               }t        |      }t        |j                  j                  |v         y )NFDGrC   r         c              3   V   K   | ]!  }|j                   xs |j                  d k   # ywr   Nimagreal.0ws     r)   	<genexpr>zFTestLogM.test_logm_type_preservation_and_conversion.<locals>.<genexpr>   $     <QAFF0affqj0<   ')r$   )scipyr   r   r   anyr&   r   r'   r   r%   charcomplex)r<   complex_dtype_charsmatrix_as_listr   r(   rk   s         r)   *test_logm_type_preservation_and_conversionz3TestLogM.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                    g dg dg dg}t         t        fD ]  }t        j                  ||      }t        j
                  j                  |      }t        dt        j                  |j                        j                         k         t        |      }t        t        j                  |j                  t        j                               t        t!        |      |        y )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_logmz(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                    ddgddggddgddggfD ]o  }t         t        fD ]^  }t        j                  ||      }t	        |      \  }}t        t        j                  |j                  t        j                               ` q y )NrC   r   r$   )	r'   r   r&   r   r   r   r   r%   complexfloating)r<   r   r   r(   rk   infos         r)   test_real_mixed_sign_spectrumz&TestLogM.test_real_mixed_sign_spectrum   s     Q!R!Q!Q " 	IA Wn IHHQb)#AwfllB4F4FGHI	Ir+   c                 "   t        j                  ddgddgg      }t        j                  ddgddgg      }||j                  ||j                  fD ]<  }t        j
                  }t        |t        |      }t        |      }t        ||d       > y )Nr   r   rC   rg   rj   )
r&   r   asarrayTr   r   r   r   r   r   )r<   r(   Br   expected_warningLEs          r)   test_exactly_singularzTestLogM.test_exactly_singular   s    HHq!fr2h'(JJAA'(ACCACC 	.A0KK-tQ7AQAAqu-		.r+   c                     t        j                  dgg      }t        j                  }t	        |t
        |      }t        |      }t        ||d       y )Ng0.++rg   r   )r&   r   r   LogmNearlySingularWarningr   r   r   r   )r<   r   r   r   r   s        r)   test_nearly_singularzTestLogM.test_nearly_singular   sD    HHvhZ ,FF)43G15)r+   c                    ddgddgg}dt         j                  dz  gt         j                   dz  dgg}t        t        |      |d       t        t	        |      |d       ddgdd	gg}dt         j                  z  dz  d
t         j                  z  gdd	t         j                  z  dz  gg}t        t        |      |d       t        t	        |      |d       ddgdd	gg}dt         j                  z  dz  dgdd	t         j                  z  dz  gg}t        t        |      |d       t        t	        |      |d       y )Nr   rC   r         ?rg   r   r   ry   y             r   )r&   pir   r   r   )r<   r   r   s      r)   &test_opposite_sign_complex_eigenvaluesz/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                     d}t        j                  ||f      t        j                  |      z   }d|j                  _        t        |       y )N   F)r&   onesr   flags	writeabler   r<   r   r=   s      r)   test_readonlyzTestLogM.test_readonly   s8    GGQFObkk!n,!Qr+   z6ValueError: attempt to get argmax of an empty sequencereasonr   c                     t        j                  d|      }t        |      }t        j                  d|      }t        |      }|j                  dk(  sJ |j
                  |j
                  k(  sJ y Nr   r   r$   r   )r&   emptyr   eyeshaper%   )r<   r   r=   log_aa0log_a0s         r)   
test_emptyzTestLogM.test_empty   s^     HHV2&QVVAR b{{f$$${{fll***r+   r%   c                     t        j                  t        d      5  t        j                  t              5  t	        t        j                  d|             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzlogm result may be inaccurate)matchr   r   r$   )pytestwarnsr   r   r   r&   zeros)r<   r%   s     r)   test_no_ZeroDivisionErrorz"TestLogM.test_no_ZeroDivisionError  s]     ll>1PQ 	0ll56	0&./	0 	0 	0 	0 	0 	0s"   A4!A(A4(A1	-A44A=N)rX   rY   rZ   rb   r   markfilterwarningsr@   rm   rs   r   r   r   r   r   thread_unsafer   r   r   r   xfailparametrizeintr'   r&   float32r   	complex64r   r   r[   r+   r)   r]   r]   ]   sZ   ; [[ FG	 H	 [[ FG@ H@IK.	1><
(	I [[. . [[* *0 [[VW[[TC

GR\\#RS+ T X+ [[[[WsE2::w&UV0 W 0r+   r]   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z		 d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zej,                  j/                  deeej6                  eej:                  g      d        Zd Zd Z d Z!y)	TestSqrtMc                    t         j                  j                  d      }t        dd      D ]^  }|j	                  ||f      }t        j
                  ddd      D ]/  }||z  }t        |      }|j                  |      }t        ||       1 ` y )Nl   &\31 rC   ru   rx   ry   rz   	r&   r_   r`   r~   r   r   r   dotr   r<   ra   r   r   r   r   r   r   s           r)   r   z&TestSqrtM.test_round_trip_random_float  s    ii##$45q! 	7A,,aV4JRA. 7&(%,[[%9" 2A6	7	7r+   c                 J   t         j                  j                  d      }t        dd      D ]u  }|j	                  ||f      d|j	                  ||f      z  z   }t        j
                  ddd      D ]/  }||z  }t        |      }|j                  |      }t        ||       1 w y )Nl   &\31 rC   ru   r   rx   ry   rz   r   r   s           r)   r   z(TestSqrtM.test_round_trip_random_complex  s    ii##$45q! 	7A--q!f5s22Aq6::;JRA. 7&(%,[[%9" 2A6	7	7r+   c                     d}t        |      }t        g dd|ddgdd|dgg dg      }t        g dd|ddgdd|dgg dg      }t        ||z  |       t        |      }t        ||z  |       y )Ng      ?)g      ?r   r   rC   r   rD   )rC   r   r   r   )r   r   r   r   )r<   eser=   saesas         r)   test_badzTestSqrtM.test_bad*  s    !W;a!9a!9  Kr!AJqAJ   	""r'1-Ah!#)Q/r+   c                    d}ddgddggddgddggddgddggddgddggddgddggfD ]=  }t         j                  j                  |      }t        t	        d |D                      t               5 }|j                  t               t        j                  |t              }t        |      }t        |j                  j                  |v       t        j                  |t              }t        |      }t        |j                  j                  |v        t        j                  |t               }t        |      }t        |j                  j                  |v        d d d        @ y # 1 sw Y   LxY w)	Nr   rC   r   r   r   c              3   V   K   | ]!  }|j                   xs |j                  d k   # ywr   r   r   s     r)   r   zHTestSqrtM.test_sqrtm_type_preservation_and_conversion.<locals>.<genexpr>I  r   r   r{   r$   )r   r   r   r   r   r   r   r    r&   r   r'   r   r%   r   r   )r<   r   r   r   r   r(   A_sqrtms          r)   +test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion;  sl    .Q!Q Q!Q Q!Q Q!Q Q!Q " 	CN $$^4A<!<<<= #$ C

M
2 HH^59(**2EEF HH^7;(**.AAB XXnE::(**.AAB!C C	CC Cs   1C-E**E4	c                    d}ddgddggddgddggg dg dg dgfD ]  }t         j                  j                  |      }t        t	        d |D                     t        j                  |t        	      }t        |      }t        |j                  j                  |v        t        j                  |t        	      }t        |      }t        |j                  j                  |v         y )
Nr   rC   r   r   r   rC   r   )r   r   r   rC   r   r   c              3   V   K   | ]!  }|j                   xs |j                  d k   # ywr   r   r   s     r)   r   zVTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>g  $     8,!&&1*,8r   r$   )r   r   r   r   r   r&   r   r   r   r%   r   r'   )r<   r   r   r   r(   r   s         r)   9test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumzCTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum^  s    -Q!R!Q!Q J	24 	?N $$^4AC8a889 w7AAhGGMM&&*==> u5AAhGGMM&&*==>#	?r+   c                     t               }t        |      }||z  }t        ||d       t        t        j                  |      t        j                  |             y )Nro   ri   )r*   r   r   r&   tril)r<   r(   r   rl   s       r)   %test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1s  sD    13((ad3-rwwqz:r+   c                    t         t        fD ]  }t        j                  g dg dg dg dg|      }t	               5 }|j                  t               t        |      }t        t        j                  |      t        j                  d             t        j                  |      j                         sJ t        j                  |      j                         sJ 	 d d d         y # 1 sw Y   xY w)N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r$   r{   )ry   ry   )r   r'   r&   r   r   r   r    r   r   r  r   isnanr   isinf)r<   r   r(   r   r   s        r)   test_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangular{  s     u* 	/B	 &(	)A
 #$ /

M
2( 0"((62BCxx(,,...xx(,,.../ /	// /s   BC''C0	c                     ddgddgg}ddgddgg}t        t        j                  ||      |d	       t        t        |      |d	       y )
N               @ry   r                       ?      ?r         ?      rg   r   )r   r&   r   r   r<   r   Rs      r)   r   z0TestSqrtM.test_opposite_sign_complex_eigenvalues  sL    !Wq#hAYD	"q!ae4a!%0r+   c                    t        j                  g dg dg dg dg      }t        j                  t        d      ddt        d      gg dg dt        d      ddt        d      gg      }t        ||z  |d       t	               5 }|j                  t               t        t        |      |d       d d d        y # 1 sw Y   y xY w)N)rC   r   r   rC   r  r   r   rg   r   r{   )r&   r   r   r   r   r   r    r   r<   r   r  r   s       r)   test_gh4866zTestSqrtM.test_gh4866  s    HHl"""$ % HHtCy!QS	2""Cy!QS	24 5 	Aqu-  	5CJJJ.E!Hae4	5 	5 	5s   .B==Cc                 .   t        j                  g d      }t        j                  t        d      ddg      }t        ||z  |d       t	               5 }|j                  t               t        t        |      |d       d d d        y # 1 sw Y   y xY w)N)r   rC   r   r   rC   r   rg   r   r{   )r&   diagr   r   r   r   r    r   r  s       r)   test_gh5336zTestSqrtM.test_gh5336  ss    GGIGGT!WaO$Aqu-  	5CJJJ.E!Hae4	5 	5 	5s   .BBc                     t        j                  d      }t        j                  d      }t               5 }|j                  t               t        t        |      |d       d d d        y # 1 sw Y   y xY w)Nr   r{   rg   r   )r&   r   r   r   r    r   r   r  s       r)   test_gh7839zTestSqrtM.test_gh7839  sY    HHVHHV  	5CJJJ.E!Hae4	5 	5 	5s   .A,,A5c                     t        j                  d      }|j                  d       t        j                  |d       t        j                  t        |            sJ y )N)   r  gGz?rC   )r&   r   fillfill_diagonal	isrealobjr   r<   r   s     r)   test_gh17918zTestSqrtM.test_gh17918  sA    HHX	t
A||E!H%%%r+   c                 l   t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ y N
   r$   )	r&   r   uint8r   r%   float64uint16uint32uint64r#  s     r)   -test_data_size_preservation_uint_in_float_outz7TestSqrtM.test_data_size_preservation_uint_in_float_out  s    FF2RXX&Qx~~+++FF2RYY'Qx~~+++FF2RYY'Qx~~+++FF2RYY'Qx~~+++r+   c                 l   t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ y r&  )	r&   r   int8r   r%   r)  int16int32int64r#  s     r)   ,test_data_size_preservation_int_in_float_outz6TestSqrtM.test_data_size_preservation_int_in_float_out  s    FF2RWW%Qx~~+++FF2RXX&Qx~~+++FF2RXX&Qx~~+++FF2RXX&Qx~~+++r+   c                    t        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ y )Nr   ry   r   r$   )	r&   r   r/  r   r%   
complex128r0  r1  r2  r#  s     r)   +test_data_size_preservation_int_in_comp_outz5TestSqrtM.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                    t        j                  dt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j
                        }t        |      j                  t         j
                  k(  sJ t        j                  dt         j                        }t        |      j                  t         j                  k(  sJ t        t         d      rNt        j                  dt         j                        }t        |      j                  t         j                  k(  sJ y y )Nr'  r$   float128)	r&   r   float16r   r%   r   r)  hasattrr9  r#  s     r)   .test_data_size_preservation_float_in_float_outz8TestSqrtM.test_data_size_preservation_float_in_float_out  s    FF2RZZ(Qx~~+++FF2RZZ(Qx~~+++FF2RZZ(Qx~~+++2z"r-A8>>RZZ/// #r+   c                    t        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ t        j                  ddgddggt         j                        }t        |      j                  t         j                  k(  sJ t        t         d      ret        t         d      rTt        j                  ddgddggt         j                        }t        |      j                  t         j                  k(  sJ y y y )Nr   ry   r   r5  r$   r9  
complex256)r&   r   r:  r   r%   r   r   r)  r6  r;  r9  r#  s     r)   -test_data_size_preservation_float_in_comp_outz7TestSqrtM.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                    t        j                  ddgddggt         j                        }t        |      j                  t         j                  k(  sJ t        j                  ddgddggt         j
                        }t        |      j                  t         j
                  k(  sJ t        t         d      rTt        j                  ddgddggt         j                        }t        |      j                  t         j
                  k(  sJ y y )Nr  ry   r   r  r$   r>  )r&   r   r   r   r%   r6  r;  r>  r#  s     r)   ,test_data_size_preservation_comp_in_comp_outz6TestSqrtM.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                     t        j                  d|      }t        |      }t        j                  d|      }t        |      }|j                  dk(  sJ |j
                  |j
                  k(  sJ y r   )r&   r   r   r   r   r%   )r<   r   r=   sr   s0s         r)   r   zTestSqrtM.test_empty  s\    HHV2&!HVVAR 2Yww&   ww"(("""r+   c           
      &   t         j                  j                  d      }d}|j                  dd|z  d|z  f      }t        j                  |d      t        j
                  d|z        z   t        j                  |      }}||z  }|d d d d dd d df   }t        j                  |      d d dd ddd df   }t        t        |d d d d dd d df         t        |             t        t        |d d dd ddd df         t        |             y )	Nl   &\31    r   r   rv   r   )krC   )
r&   r_   r`   r   r  r   triuasfortranarrayr   r   )r<   ra   r   r(   r   UA_noncontig_cA_noncontig_fs           r)   test_cf_noncontig_nd_inputsz%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                 h    t        j                  g dt              }t        t	        |      |       y )N)ry   r   r   r   )r   r%   )r&   r   r'   r
   r   )r<   r(   s     r)   test_empty_sizeszTestSqrtM.test_empty_sizes$  s     HH<u558Q'r+   c                 &   t         j                  j                  d      }|j                  d      }|d d d d dd d df   }|d d d d dd d df   j	                         }t        t        |      t        |             |d d d d d d df   }|d d d d d d df   j	                         }t        t        |      t        |             |d d d d dd d f   }|d d d d dd d f   j	                         }t        t        |      t        |             y )Nl   &\31 )r   r   r   rv   r   )r&   r_   r`   r   copyr   r   )	r<   ra   r(   A_negneg_origA_negneg_copyA_posneg_origA_posneg_copyA_negpos_origA_negpos_copys	            r)   test_negative_stridesz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+   N)"rX   rY   rZ   r   r   r   r   r  r	  r  r   r  r  r  r$  r-  r3  r7  r<  r?  rA  r   r   r   r   r'   r&   r   r   r   r   rM  rO  rX  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                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	
      d        Zd Zy)TestFractionalMatrixPowerc                    t         j                  j                  d       t        dd      D ]  }t        dd      D ]  }t         j                  j	                  ||      dt         j                  j	                  ||      z  z   }t        j
                  ddd      D ]B  }||z  }t        |d|z        }t         j                  j                  ||      }t        ||       D   y )N  rC   r   r   rx   ry   rz   
r&   r_   seedr~   randnr   r   r   matrix_powerr   r<   pr   r   r   r   M_rootr   s           r)   r   z8TestFractionalMatrixPower.test_round_trip_random_complex9  s    
		tq! 	5A1a[ 5YY__Q2R"))//!Q:O5OO
[[Q2 5E"U*A4Q!<F#%99#9#9&!#DL#L!4	55	5r+   c                 ~   t         j                  j                  d       t        dd      D ]  }t        dd      D ]~  }t         j                  j	                  ||      }t        j
                  ddd      D ]B  }||z  }t        |d|z        }t         j                  j                  ||      }t        ||       D   y )Nr\  rC   r   rx   ry   rz   r]  ra  s           r)   r   z6TestFractionalMatrixPower.test_round_trip_random_floatD  s    
 			tq! 	5A1a[ 5YY__Q2
[[Q2 5E"U*A4Q!<F#%99#9#9&!#DL#L!4	55	5r+   c                 J   t         j                  j                  d       dD ]  }t        d      D ]  }t         j                  j	                  ||      dt         j                  j	                  ||      z  z   }t        |d      }t         j                  j                  |d      }t        ||       t        |d      }t         j                  j                  |d      }t        ||       t        |d	      }t         j                  j                  |d
      }t        ||         y )Nr\  )r   r   r   r'  r   皙?r   gigffffff@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_powerszBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powersS  s    
		t 	&A2Y &IIOOAq)BA1F,FF5a=!yy55k1E<0+At4II**;<1%+As3II**;;1%&	&r+   c                    t         j                  j                  d      }d}t        |      D ]  }|j	                  dd      }|j                         }t        j
                  |j	                  dd            }|j                  ||g      }ddg|j                  d	         r|d
|j                  ||g      z  z   }||z  }t        ||      }t        |      }	t        |	|z        }
t        ||
        y )Nl   fm1    rC   r   rx   rv   TFr   r   )r&   r_   r`   r~   integersexpchoicer   r   r   r   )r<   ra   nsamplesrg  r   rb  matrix_scaler(   A_powerrk   A_power_expm_logms              r)   test_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powerse  s     ii##$45x 	8AQ"A

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

A
'Ae}SZZ]+SZZaVZ444L A
 .a3G!WF $VaZ 0G%67%	8r+   c                    t               }t        |t        j                        }t	        |      }t        j                  |d      }t        |d      }t        ||d       t        ||       t        ||       dD ]_  }t        ||      }t        |d|z        }t        ||d       t        t        j                  |d      t        j                  |d             a y )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_powerrq  rb  rl   s           r)   r	  z?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1~  s    13 1bgg&('??3G)!S1W59)-  	EA-a3G27AaC@LL!$7BGGL!4bggamD		Er+   c                 l   t         j                  j                  d       t         j                  j                  d      dt         j                  j                  d      z  z   D ]P  }t	        d      D ]@  }t        j                  ||      }|t        j                  |       z  dz
  }t        ||       B R y )Nr\  r'  r   r   rC   )	r&   r_   r^  r_  r~   r   _briggs_helper_functionexp2r   )r<   r=   rG  
x_observed
x_expecteds        r)   test_briggs_helper_functionz5TestFractionalMatrixPower.test_briggs_helper_function  s    
		t$rBIIOOB,?'?? 	8A1X 8.FFq!L
"''1"+-1

J78	8r+   c                    d}ddgddggddgddggddgddggddgddggfD ]  }t         j                  j                  |      }t        t	        d |D                      dD ]  }t        j                  |t              }t        ||      }t        |j                  j                  |v       t        j                  |t              }t        ||      }t        |j                  j                  |v        t        j                  |t               }t        ||      }t        |j                  j                  |v         ! y )	Nr   rC   r   r   r   c              3   V   K   | ]!  }|j                   xs |j                  d k   # ywr   r   r   s     r)   r   zRTestFractionalMatrixPower.test_type_preservation_and_conversion.<locals>.<genexpr>  r   r   333333rf  gffffff
@r$   )r   r   r   r   r   r&   r   r'   r   r%   r   r   r<   r   r   r   rb  r(   rq  s          r)   %test_type_preservation_and_conversionz?TestFractionalMatrixPower.test_type_preservation_and_conversion  sA   
 .Q!Q Q!Q Q!Q Q!Q 	" 	CN $$^4A<!<<<= , C HH^591!Q7**2EEF HH^7;1!Q7**.AAB XXnE::1!Q7**.AABC	Cr+   c                    d}ddgddggddgddggg dg dg dgfD ]  }t         j                  j                  |      }t        t	        d |D                     d	D ]  }t        j                  |t        
      }t        ||      }t        |j                  j                  |v        t        j                  |t        
      }t        ||      }t        |j                  j                  |v          y )Nr   rC   r   r   r  )r   r   rC   r  c              3   V   K   | ]!  }|j                   xs |j                  d k   # ywr   r   r   s     r)   r   z`TestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>  r  r   r  r$   )r   r   r   r   r   r&   r   r   r   r%   r   r'   r  s          r)   3test_type_conversion_mixed_sign_or_complex_spectrumzMTestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrum  s    -Q!R!Q!Q Iy13 	CN $$^4AC8a889 , 
C HH^7;1!Q7**.AAB HH^591!Q7**.AAB
C	Cr+   zToo unstable across LAPACKs.r   c                 z   ddgddggddgddggddgddggg dg dg dgfD ]  }t         t        fD ]  }t        j                  ||	      }d
D ]:  }t	        ||      }t        t        j                  |      j                                < dD ])  }t	        ||      }t	        |d|z        }t        ||       +   y )Nr   rC   r   r   ru   )r   r   r   )r   rC   rC   )r   r   rC   r$   )gffffffr  r  g)rf  gzG?)	r'   r   r&   r   r   r   r  allr   )r<   r   newtyper(   rb  rq  rl   s          r)   test_singularz'TestFractionalMatrixPower.test_singular  s     Q!Q Q!Q Q!Q Iz2	4 	5N "7+ 5HH^7;1 5A5a;GBHHW-11345 % 5A5a;G#:7AaC#HL#L!455	5r+   c                     ddgddgg}ddgddgg}t        t        j                  ||      |d	       t        t        |d
      |d	       y )Nr  ry   r   r  r  r   r  rg   r   r   )r   r&   r   r   r  s      r)   r   z@TestFractionalMatrixPower.test_opposite_sign_complex_eigenvalues  sP    !Wq#hAYD	"q!ae4/37Gr+   N)rX   rY   rZ   r   r   ri  rs  r	  r}  r  r  r   r   r   r  r   r[   r+   r)   rZ  rZ  8  s[    	55&$82E(8!CFC2 [[<=5 >5&Hr+   rZ  c            
          e Zd Zd Zd Zej                  j                  dee	e
eeeeg      ej                  j                  deeej$                  eej(                  g      ej                  j                  dddg      d                      Zd	 Zd
 Zd Zej                  j2                  ej                  j5                  d      d               Zy)TestExpMc                 \    t        ddgddgg      }t        t        |      ddgddgg       y )NrB   r   rC   )r   r   r   rF   s     r)   	test_zerozTestExpM.test_zero  s2    Bq61Q%.!!$q'Aa5!A-8r+   c                 x    t        d      }t        |t        j                  t        j                  gg             y )NrC   )r   r   r&   r   r   )r<   elts     r)   test_single_eltzTestExpM.test_single_elt  s&    1gRXXvh/0r+   funcr   r   r   )rC   rC   c                     t        j                  ||      }t        j                  d|      } ||      } ||      }|j                  |k(  sJ |j                  |j                  k(  sJ y )Nr$   )r'  r'  )r&   r   r   r%   )r<   r  r   r   r(   A0resultresult0s           r)   test_small_empty_matrix_inputz&TestExpM.test_small_empty_matrix_input  s^     HHU"%XXhb)ar(||u$$$||w}},,,r+   c                    t         j                  }t        ddgddgg      }|dz  dz   d|z  z  }|dz  dz
  |z  }t        t	        |      t        ||g|dz  |gg             t	        |j                  t         j                              j                  j                  dk(  sJ t	        |j                  t         j                              j                  j                  dk(  sJ y )NrC   ry   r   r   f)
r&   r   r   r   r   astyper   r%   r   r   )r<   r   r=   aabbs        r)   test_2x2_inputzTestExpM.test_2x2_input  s    DDAq6Aq6"#dQh1dQh\QR2a4*'=!>?AHHR\\*+1166#===AHHRZZ()//44;;;r+   c                    t         j                  }t        j                  ddgddggddgddggddgddggddgddggddgddgggd	      }t        j                  |dz  dz   d
|z  z  |dz  dz
  |z  g|dz  dz
  dz  |z  |dz  dz   d
|z  z  ggdd|d
z  z  z  d|d
z  z  dz  z   d|d
z  z  dz  dd|d
z  z  z  z
  g|d
z  dz  dd|d
z  z  z  z
  dd|d
z  z  z  |d
z  dz  z   ggdd|z  z  |dz  dz  z   dd|z  z  d|dz  z  dz  z   gdd
|z  z  |dz  d
z  z   dd|z  z  d|dz  z  dz  z   ggdd|d
z  z  z  d|dz  z  dz  z   dd|d
z  z  z  d|dz  z  dz  z   gdd|d
z  z  z  d|dz  z  dz  z   dd|d
z  z  z  d|dz  z  dz  z   ggdd
|z  z  d|z  d
z  z   dd
|z  z  d|z  d
z  z   gdd
|z  z  d|z  d
z  z
  dd
|z  z  d|z  d
z  z
  ggg      }t        t	        |      |       y )NrC   ry   r   r   r   rx   r   )orderr   rd      ru   )r&   r   r   r   r   )r<   r   r=   a_ress       r)   test_nx2x2_inputz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    d}t        j                  ||f      }d|j                  _        t	        |       y )Nrd   F)r&   r   r   r   r   r   s      r)   r   zTestExpM.test_readonly'  s+    GGQFO!Qr+   r   c                 T   t        j                  dt              }t         j                  j	                  d      }|j                  ddd      }|j                  ddd      }|j                  d      |||f<   t        j                  dt              }|j                         |d<   t        |      \  }}|dk(  sJ t        |      }t         j                  j                  t        |      |       t        d	      D ]-  }t        |      }	t         j                  j                  ||	       / y )
N)  r  r$   d   r   i  i  )r   r  r  rz   r   )r&   r   r'   r_   r`   rl  r   rQ  r   r   testingr   r   r~   )
r<   r(   ra   rg  jAmre   rC  	first_resnext_ress
             r)   test_gh18086zTestExpM.test_gh18086-  s     HHZu-ii##C(LLC%LLC%**S/!Q$XXm511"2&1AvvG	


,,T)_a@q 	FAAwHJJ00HE	Fr+   N)rX   rY   rZ   r  r  r   r   r   r   r   r   r   r   r   r   r   r'   r&   r   r   r   r  r  r  r   r   	fail_slowr  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                       e Zd Zd Zd Zd Zd Zej                  j                  ej                  j                  d      d               Zy)	TestExpmFrechetc                    t        j                  g dg dg dg dgt              }t        j                  ddgdd	ggt              }t        j                  d
dgddggt              }t        j                  j                  |      }t        j                  j                  |      d ddd f   }i ddiddifD ]*  }t        ||fi |\  }}t        ||       t        ||       , y )NrC   r   r   ry   r   ru   rd   r  r   r   rC   r   r   r   r   ru   r$   rC   r   r   ru   r   ry   rd   r  methodSPSblockEnlarge)r&   r   r'   r   r   r   r   r   )	r<   r   r(   r   expected_expmexpected_frechetkwargsobserved_expmobserved_frechets	            r)   test_expm_frechetz!TestExpmFrechet.test_expm_frechetE  s    HH	
  HHFF  HHFF  ))!, <<,,Q/AB7HU+h~-FG 	@F.:1a.J6.J+M+M=9,.>?	@r+   c                    t        j                  g dg dg dg dgt              }t        j                  ddgdd	ggt              }t        j                  d
dgddggt              }t        j                  j                  |d      }g d}t        |d d |dd        }|D ]  \  }}t        j                  j                  j                  |   }	t        j                  j                  j                  |   }
d|	|
z   z  }||z  }||z  }||z  }||z  }t        j                  j                  |      }t        j                  j                  |      d ddd f   }t        ||      \  }}t        ||       t        ||        y )Nr  r  r  r  r$   rC   r   r   ru   r   ry   rd   r  )rC   r   r   rd   rz      rF     r   r   )r&   r   r'   r   r   r   zip_expm_frechetell_table_61r   r   r   )r<   
M_original
A_original
E_originalA_original_norm_1selected_m_listm_neighbor_pairsmambell_aell_btarget_norm_1r   r   r(   r   r  r  r  r  s                       r)   test_small_norm_expm_frechetz,TestExpmFrechet.test_small_norm_expm_frechet\  s   XX	
 
 XXFF 
 XXFF 
 "LL--j!<5s3_QR5HI& 	@FBLL..;;B?ELL..;;B?E55=1M!$55E
"A
"A
"A!LL--a0M$||003BQBF;.:1a.@+M+M=9,.>?	@r+   c           	         t         j                  j                  d      }t         j                  j                  t         j                  j                  t         j                  j
                  t         j                  j                  f}d}t        |      D ]D  }||j                  d         }|j                         }|j                  dd      } |||f      } |||f      }	t        j                  j                  |d      }
||
z  }||z  }||	z  }t        j                  t        j                  ||g      t        j                  t        j                  |      |g      g      }t        j                  j!                  |      }t        j                  j!                  |      d ||d f   }t#        ||      \  }}t%        ||d	       t%        ||d
	       G y )Nl   ]"1 r  ry   r      rv   rC   gHj>r   gHz>)r&   r_   r`   r   normalstandard_cauchyexponentialr~   rn  rl  r   r   r   vstackhstack
zeros_liker   r   r   )r<   ra   rfuncsntestsrg  rfuncr  r   r  r  r  r   r(   r   r   r  r  r  r  s                      r)   	test_fuzzzTestExpmFrechet.test_fuzz}  s   ii##$45 		!!		  		))		%%	'
 v 	KA3::a=)EOO-MQ#AQqE*JQqE*J % 1 1*a @!$55E
"A
"A				1a&!		2==+Q/02 3A "LL--a0M$||003BQBF;.:1a.@+M+M=tD,.>TJ#	Kr+   c                 <   t        j                  ddgddggt              }t        j                  ddgdd	ggt              }t        j                  j                  |d
       t        ||d      \  }}t        ||d      \  }}t        ||       t        ||       y )Ng]؉??g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_matrixz'TestExpmFrechet.test_problematic_matrix  s    HHZ(Z(   HHZ(Z(   	!Q ,1U!$+2>1^3-//"34%9:r+   zthis test is deliberately slowr   c                    d}t         j                  j                  ||f      }t         j                  j                  ||f      }t        ||d      \  }}t        ||d      \  }}t	        ||       t	        ||       y )Ni  rv   r  r  r  )r&   r_   r  r   r   )r<   r   r(   r   r  r  r  r  s           r)   test_medium_matrixz"TestExpmFrechet.test_medium_matrix  s     II!!1v!.II!!1v!. ,1U!$+2>1^3-//"34%9:r+   N)rX   rY   rZ   r  r  r  r  r   r   slowskipr  r[   r+   r)   r  r  C  sS    @.@BK8;$ [[[[=>
; ? 
;r+   r  c                     t        j                  || j                        }t        |      }||z  ||z  z  }t	        | |z         }t        ||z
        ||z  z  }	|	 S N)r&   reshaper   r   r   )
r(   A_normr   X_normepsrb  p_normperturbationX_primescaled_relative_errors
             r)   _help_expm_cond_searchr    sa    


1aggA!WF7fvo.L1|#$G 1-#>!!!r+   c                     | t         j                  j                  |      t         j                  j                  |       z  z  S r  )r   r   r   )r(   r   s     r)   _normalized_liker    s0    !!!$u||'8'8';;<<r+   c                 \     | |      } | ||z         }t        ||z
        t        |      z  S r  )r   )r  r(   r  r   r  s        r)   _relative_errorr    s2    	!AL !G!tAw&&r+   c                   V    e Zd Zd Zd Zd Zej                  j                  d        Z	y)TestExpmConditionNumberc                     t         j                  j                  d       t        dd      D ]9  }t         j                  j	                  ||      }t        |      }t        d|       ; y )Nr\  rC   ry   r   )r&   r_   r^  r~   r_  r   r	   )r<   r   r(   kappas       r)   test_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smoke  sN    
		tq! 	(A		1%AaLEa'	(r+   c                 t    t        j                  g dg dg dg dg      }t        |      }t        d|       y )N)g(gٙBgx@g  =g ZdB)r   gzNV7g@g  2p)r   r   gᙥT g?W[E@)r   r   r   gT!g yhG)r&   r   r   r	   )r<   r(   r  s      r)   test_expm_bad_condition_numberz6TestExpmConditionNumber.test_expm_bad_condition_number  s6    HHI</#	  !$&r+   c                 @   t         j                  j                  d       t        j                  ddd      D ]7  }t        j                  |gg      }t        t        |      t        |             9 t        j                  ddd      D ]7  }t        j                  |gg      }t        t        |      t        |             9 t        d      D ]M  }t         j                  j                  d	d	      }t        t        |      t        j                  |      d
          O y )N90  r  r   r  )numr5  r   r'  rC   r   )r&   r_   r^  linspacer   r   r   absr   r~   r_  r   )r<   xr(   rg  s       r)   test_univariatez'TestExpmConditionNumber.test_univariate  s    
		uR+ 	2A1#AIaL#a&1	2 R+ 	2A1#AIaL#a&1	2 r 	@A		1%AIaL"++a.*>?	@r+   c           	         t         j                  j                  d      }d}d}t        |      D ]  }|j	                  dd      }|j                  ||      }t        j                  j                  |      }t        |      }t        j                  j                  |      }	t        |      }
t        j                  t        ||||	|      }t        j                  ||z        }t        ||d      }|j                   } ||      }|t#        t        j$                  ||j&                        |      z  }t)        t        ||      }t+        || |z         t        d      D ]c  }|t#         |j
                  |j&                   |      z  }t+        t        |      t        |             t)        t        ||      }t-        ||       e t-        |dd|z  z   |z  |
z          y )	Nr  ro   r'  r   r   zL-BFGS-Br  rC   )r&   r_   RandomStater~   randintr_  r   r   r   r   r   	functoolspartialr  r   r!   r  r  r  r   r  r   r	   )r<   ra   r  ro  rg  r   r(   r  r   r  r  r  guessoutxoptyoptp_bestp_best_relerrr  p_randp_rand_relerrs                        r)   test_expm_cond_fuzzz+TestExpmConditionNumber.test_expm_cond_fuzz  s   ii##E*x 	HAAq!A		!QA\\&&q)FQA\\&&q)FaLE !!"8vq&#/AGGAaCLE1eJ7C55DT7D+BJJtQWW,EqIIF+D!V<MMD53;7 1X @/			1770CQGGVd6l; /a @!-?	@ ma!C%i3->-FG?	Hr+   N)
rX   rY   rZ   r  r   r  r   r   r  r  r[   r+   r)   r  r    s2    ('
@ [[#H #Hr+   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestKhatriRaoc           
      2   t        t        ddgddgg      t        ddgddgg            }t        |t        dd	gdd
gddgddgg             t        t        j                  ddg      t        j                  ddg            }t        |j
                  d       y )NrC   r   r   ry   r   ru   rd   r     r  r            )ry   r   )r   r   r
   r&   r   r   r<   r=   bs      r)   
test_basicz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                     t        j                  t              5  t        g dg dg      }t        ddgddgg      }t	        ||       d d d        y # 1 sw Y   y xY w)NrC   r   r   ry   r   ru   rC   r   r   ry   r   raises
ValueErrorr   r   r  s      r)   test_number_of_columns_equalityz-TestKhatriRao.test_number_of_columns_equality   s]    ]]:& 	y " #A1v1v  Aq!	 	 	s   /AAc                    t        j                  t              5  t        g d      }t        g d      }t	        ||       d d d        t        j                  t              5  t        g d      }t        g dg dg      }t	        ||       d d d        t        j                  t              5  t        g dg dg      }t        g d      }t	        ||       d d d        y # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr!  r"  )rd   r  rz   r#  r  s      r)   test_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_array(  s    ]]:& 	i Ai Aq!		 ]]:& 	i A A q!	 ]]:& 	 A i Aq!	 		 		 		 	s#   'C""+C..+C:"C+.C7:Dc                 L   t        ddgddgg      }t        ddgddgg      }t        ||      }t        j                  t	        |j
                  d         D cg c]&  }t        j                  |d d |f   |d d |f         ( c}      j                  }t        ||       y c c}w )	NrC   r   r   ry   r   ru   rd   r  )	r   r   r&   r  r~   r   kronr   r
   )r<   r=   r  res1rG  res2s         r)   test_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equationsA  s    Aq6Aq6"#Aq6Aq6"#!Qyy#(#46 ''!AqD'1QT73 6 778q 	 	4&6s   +B!c                 X   t        j                  d      }t        j                  d      }t        ||      }t        |t        j                  d             t        j                  d      }t        j                  d      }t        ||      }t        |t        j                  d             y )N)r   r   )r   r   )r   r   )r   r   )r  r   )r&   r   r   r   )r<   r=   r  ress       r)   r   zTestKhatriRao.test_emptyK  sx    HHVHHVARXXf-.HHVHHVARXXg./r+   N)rX   rY   rZ   r  r&  r(  r-  r   r[   r+   r)   r  r    s    
,2'	0r+   r  r  c                     t        j                         5   | t        j                  d      d       d d d        y # 1 sw Y   y xY w)Nr   F)disp)r   deprecated_callr&   r   )r  s    r)   test_disp_depr3  V  s7     
			! $RVVAYU#$ $ $s	   <Ac                      t        j                         5  t        t        j                  d      d       d d d        y # 1 sw Y   y xY w)Nr   r'  )	blocksize)r   r2  r   r&   r   r[   r+   r)   test_blocksize_depr6  \  s5    				! 'bffQi2&' ' 's	   !?A);__doc__r  r   numpyr&   r   r   r   numpy.testingr   r   r   r	   r
   r   r   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.linalg._matfuncsr   scipy.linalg._matfuncs_inv_ssqr   scipy.linalg._expm_frechetr    scipy.optimizer!   r*   r-   r]   r   rZ  r  r  r  r  r  r  r  r   r   r3  r6  r[   r+   r)   <module>r?     s      ' '. . . A A A A A + 6 E ! & #*' 'Vs0 s0lbD bDJ	vH vHrOF OFdt; t;n"='BH BHJB0 B0H u-/$/$'r+   