
    -ii                     *   d Z ddl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 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          Z/ G d d          Z0d Z1d Z2d Z3 G d d          Z4 G d d          Z5ej6        7                    deeeg          d              Z8d! Z9dS )"z, Test functions for linalg.matfuncs module

    N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equal)funmsignmlogmsqrtmfractional_matrix_powerexpmexpm_frechet	expm_condnorm
khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)pick_pade_structure)LogmExactlySingularWarning)LinAlgWarning)minimizec                  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    f/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_matfuncs.py%_get_al_mohy_higham_2012_experiment_1r(      sO     	"""   	 &+		, 	, 	,A
 H    c                   &    e Zd Zd Zd Zd Zd ZdS )	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          ||           d S )Ng333333=@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_nilszTestSignM.test_nils4   s    000000...111---	/ 0 0
 QQQOOO000OOONNN	P Q Q
 !HH!!B'''''r)   c                 Z    t          g dg dg dg dg          }t          |           d S )N)           r   r   )rA   r   rA   r   r   r   r   rA   )r   r   rA   r   r   r   r:   r;   s     r'   test_defective1zTestSignM.test_defective1B   s7    ;;;yyy999=>>ar)   c                 `    t          g dg dg dg dg df          }t          |           d S )Nr-   r.   r1   r2   r3   rC   rD   s     r'   test_defective2zTestSignM.test_defective2G   sT    &&&'''((('''$$$& ' ' 	ar)   c           
      l    t          g dg dg dg dg dg dg dg          }t          |           d S )Nr0         9@r@   r@   r@   r@   r@   r@               $@      @rN   rN   r@   r@   r@   r4         .@rN   rN   r@   r@   r@   r@   r@   rP   rN   r@   r@   r@   r@   r@   rN   rM   r@   r@   r@   r@   r@   r@   r0   rJ   r@   r@   r@   r@   r@   r@   rL   rC   rD   s     r'   test_defective3zTestSignM.test_defective3Q   sf    1111110000000001110002 3 3 	ar)   N)__name__
__module____qualname__r>   rE   rG   rU    r)   r'   r+   r+   2   sP        ( ( (  
      r)   r+   c            	          e Zd Zej                            d          d             Zej                            d          d             Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zej                            d          ej                            deeej        eej        g          d                         Zej                            deeej        eej        g          d             ZdS )TestLogMz$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          |           d S )NrI   rK   rO   rQ   rR   rS   rT      g@y                )r   r   r   )r:   r;   ms      r'   r>   zTestLogM.test_nils^   s    1111110000000001110002 3 3 a[[_R"Qr)   c                     t                      }t          |          }t          |          }t          ||dd           d S )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_logmk   sB     233aF||ad??????r)   c                     t                      }t          |t          j                  }t	          |          }t          t          j        ||dd                      d S )Nh㈵>r`   ra   )r(   r   r$   logr   r   allclose)r:   r&   
A_funm_logre   s       r'   .test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logt   sU     233!RV__
J''BKadGGGGHHHHHr)   c                 V   t           j                            d          }t          dd          D ]}|                    ||f          }t          j        ddd          D ]}||z  }t           j                            |          }d| d	| }t          |          }||z  }	t          |	|           t          j                    5  t          j        d
t                     t          |          }
t          |
          }t          |||           d d d            n# 1 swxY w Y   Ȍd S )N   >gO*31 rA      size   	   zM:z eivals:ignore)err_msg)r$   randomdefault_rngrangeuniformlogspacelinalgeigvalsr   r   warningscatch_warningssimplefilterRuntimeWarningr   r   )r:   rngn
M_unscaledscaleMWrv   M_sqrtmM_sqrtm_round_tripM_logmM_logm_round_trips               r'   test_round_trip_random_floatz%TestLogM.test_round_trip_random_float|   s   i##$455q! 	K 	KA1a&11JRA.. K K& I%%a((-q--!--  ((%,w%6" 2A666 ,.. K K)(NCCC!!WWF(,V%#$5q'JJJJK K K K K K K K K K K K K K KK	K 	Ks   ADD #D c                 f   t           j                            d          }t          dd          D ]}|                    ||f          d|                    ||f          z  z   }t          j        ddd          D ]5}||z  }t          |          }t          |          }t          ||           6d S )Nrn   rA   ro                 ?rr   rs   rt   )	r$   rw   rx   ry   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    i##$455q! 	1 	1A--q!f55S00!Q8889JRA.. 1 1&a#F||a0000	1	1 	1r)   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                            |          }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            d S )NFDGrA   r         c              3   :   K   | ]}|j         p
|j        d k     V  dS r   Nimagreal.0ws     r'   	<genexpr>zFTestLogM.test_logm_type_preservation_and_conversion.<locals>.<genexpr>   /      <<QAF0afqj<<<<<<r)   r"   )scipyr|   r}   r   anyr$   r   r%   r   r#   charcomplex)r:   complex_dtype_charsmatrix_as_listr   r&   rd   s         r'   *test_logm_type_preservation_and_conversionz3TestLogM.test_logm_type_preservation_and_conversion   sX    .Q!Q Q!Q Q!Q Q!Q 	" 	> 	>N $$^44A<<!<<<<<<=== u555A!WWFFL%-@@AAA w777A!WWFFL%)<<=== .6666A!WWFFL%)<<====/	> 	>r)   c                    g dg dg dg}t           t          fD ]}t          j        ||          }t          j                            |          }t          dt          j        |j	                  
                                k                t          |          }t          t          j        |j        t          j                             t          t!          |          |           d S )N)rA   rA   r   )r   rA   rA   )rA   r   rA   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     YY			999-. 	( 	(B"%%%A$$Q''AD2;qv..22444555QABM!'2:66777DGGQ''''	( 	(r)   c                     ddgddggddgddggfD ]l}t           t          fD ][}t          j        ||          }t	          |          \  }}t          t          j        |j        t          j                             \md S )NrA   r   r"   )	r%   r   r$   r   r   r   r   r#   complexfloating)r:   r   r   r&   rd   infos         r'   test_real_mixed_sign_spectrumz&TestLogM.test_real_mixed_sign_spectrum   s     Q!R!Q!Q " 	I 	IA Wn I IHQb)))#AwwflB4FGGHHHHI	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 ]h}t	          j        t          j                  5  t          |          }d d d            n# 1 swxY w Y   t          |          }t          ||d           id S )Nr   r   rA   r`   rc   )r$   r   asarrayTpytestwarnsr   r   r   r   r   )r:   r&   Br   LEs         r'   test_exactly_singularzTestLogM.test_exactly_singular   s    Hq!fr2h'((JAA'((ACAC 	. 	.A/JKK  GG              QAAqu-----		. 	.s   %BB	B	c                     t          j        dgg          }t          j        t          j                  5  t          |          }d d d            n# 1 swxY w Y   t          |          }t          ||d           d S )Ng0.++r`   r   )	r$   r   r   r   r   LogmNearlySingularWarningr   r   r   )r:   r   r   r   s       r'   test_nearly_singularzTestLogM.test_nearly_singular   s    HvhZ  \+EFF 	 	QA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	GG15))))))s   AAA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           d S )Nr   rA   r         ?r`   r   r   rs                r   )r$   pir   r   r   )r:   r   r   s      r'   &test_opposite_sign_complex_eigenvaluesz/TestLogM.test_opposite_sign_complex_eigenvalues   sV   Vb!Ws^rufSj!_-Q////Q////!Wq#hhslAbeG$q#be)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          |           d S )N   F)r$   onesr   flags	writeabler   r:   r   r;   s      r'   test_readonlyzTestLogM.test_readonly   s>    GQFOObk!nn,!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 d S Nr   r   r"   r   )r$   emptyr   eyeshaper#   )r:   r   r;   log_aa0log_a0s         r'   
test_emptyzTestLogM.test_empty   sp     HV2&&&QVAR   b{f$$$${fl******r)   r#   c                    t          j        t          d          5  t          j        t                    5  t	          t          j        d|                     d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nzlogm result may be inaccurate)matchr   r   r"   )r   r   r   r   r   r$   zeros)r:   r#   s     r'   test_no_ZeroDivisionErrorz"TestLogM.test_no_ZeroDivisionError  s   
 l>1PQQQ 	0 	0l566	0 	0&...///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s4   A>$A&A>&A*	*A>-A*	.A>>BBN)rV   rW   rX   r   markfilterwarningsr>   rf   rl   r   r   r   r   r   r   r   r   r   xfailparametrizeintr%   r$   float32r   	complex64r   r   rY   r)   r'   r[   r[   ]   s       [ FGG	 	 HG	 [ FGG@ @ HG@I I IK K K0	1 	1 	1> > ><
( 
( 
(	I 	I 	I. . .* * *0 0 0   [VWW[TC
GR\#RSS+ + TS XW+ [WsE2:w&UVV0 0 WV0 0 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d Zej                            deeej        eej        g          d             Zd Z d Z!d Z"dS )	TestSqrtMc                 <   t           j                            d          }t          dd          D ]k}|                    ||f          }t          j        ddd          D ];}||z  }t          |          }|                    |          }t          ||           <ld S )Nl   &\31 rA   ro   rr   rs   rt   	r$   rw   rx   ry   r   r{   r   dotr   r:   r   r   r   r   r   r   r   s           r'   r   z&TestSqrtM.test_round_trip_random_float  s    i##$455q! 	7 	7A,,aV44JRA.. 7 7&((%,[[%9%9" 2A6666	7	7 	7r)   c                 r   t           j                            d          }t          dd          D ]}|                    ||f          d|                    ||f          z  z   }t          j        ddd          D ];}||z  }t          |          }|                    |          }t          ||           <d S )Nl   &\31 rA   ro   r   rr   rs   rt   r   r   s           r'   r   z(TestSqrtM.test_round_trip_random_complex  s    i##$455q! 	7 	7A--q!f55s22Aq6:::;JRA.. 7 7&((%,[[%9%9" 2A6666	7	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  |           d S )Ng      ?)      ?r   r   rA   r   rB   )rA   r   r   r   )r   r   r   r   )r:   eser;   saesas         r'   test_badzTestSqrtM.test_bad%  s    !WW;;;a!9a!999   KKKr!AJqAJII     	""r'1---Ahh!#)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                            |          }t          t	          d |D                                   t          j                    5  t          j        d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            n# 1 swxY w Y   `d S )	Nr   rA   r   r   r   c              3   :   K   | ]}|j         p
|j        d k     V  dS r   r   r   s     r'   r   zHTestSqrtM.test_sqrtm_type_preservation_and_conversion.<locals>.<genexpr>D  r   r)   ru   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_conversion6  s    .Q!Q Q!Q Q!Q Q!Q Q!Q " 	C 	CN $$^44A<<!<<<<<<=== (** C C%h>>> H^5999((*2EEFFF H^7;;;((*.AABBB XnE::::((*.AABBB!C C C C C C C C C C C C C C C	C 	Cs   C+E;;E?	E?	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                            |          }t          t	          d |D                                  t          j        |t          	          }t          |          }t          |j	        j
        |v            t          j        |t          	          }t          |          }t          |j	        j
        |v            d S )
Nr   rA   r   r   r   rA   r   )r   r   r   rA   r   r   c              3   :   K   | ]}|j         p
|j        d k     V  dS r   r   r   s     r'   r   zVTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>b  /      88,!&1*888888r)   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_spectrumY  s   -Q!R!Q!Q JJJ			24 	? 	?N $$^44AC88a88888999 w777AAhhGGM&*==>>> u555AAhhGGM&*==>>>>#	? 	?r)   c                     t                      }t          |          }||z  }t          ||d           t          t          j        |          t          j        |                     d S )Nrh   rb   )r(   r   r   r$   tril)r:   r&   r   re   s       r'   %test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1n  s_    133(((ad3333--rwqzz:::::r)   c                    t           t          fD ]}t          j        g dg dg dg dg|          }t	          j                    5  t	          j        dt                     t          |          }t          t          j
        |          t          j        d                     t          j        |                                          sJ t          j        |                                          sJ 	 d d d            n# 1 swxY w Y   d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r"   ru   )rs   rs   )r   r%   r$   r   r~   r   r   r   r   r   r  r   isnanr   isinf)r:   r   r&   r   s       r'   test_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangularv  sM    u* 	/ 	/B	 &(	) ) )A
 (** / /%h>>>(( 0 0"(62B2BCCCx((,,.....x((,,....../ / / / / / / / / / / / / / /	/ 	/s   B.DD	D	c                     ddgddgg}ddgddgg}t          t          j        ||          |d	           t          t          |          |d	           d S )
N               @rs   r                       ?      ?r         ?      r`   r   )r   r$   r   r   r:   r   Rs      r'   r   z0TestSqrtM.test_opposite_sign_complex_eigenvalues  sf    !Wq#hAYD	"q!ae4444a!%00000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	          j                    5  t	          j        dt                     t          t          |          |d           d d d            d S # 1 swxY w Y   d S )N)rA   r   r   rA   r  r   r   r`   r   ru   )	r$   r   r   r   r~   r   r   r   r   r  s      r'   test_gh4866zTestSqrtM.test_gh4866  sD   Hlll"ll"ll"ll$ % % HtCyy!QS		2"ll"llCyy!QS		24 5 5 	Aqu----$&& 	5 	5!(M:::E!HHae4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   !:C((C,/C,c                 p   t          j        g d          }t          j        t          d          ddg          }t          ||z  |d           t	          j                    5  t	          j        dt                     t          t          |          |d           d d d            d S # 1 swxY w Y   d S )	N)r   rA   r   r   rA   r   r`   r   ru   category)	r$   diagr   r   r~   r   r   r   r   r  s      r'   test_gh5336zTestSqrtM.test_gh5336  s    GIIIGT!WWaO$$Aqu----$&& 	5 	5#H}EEEEE!HHae4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   #;B++B/2B/c                 "   t          j        d          }t          j        d          }t          j                    5  t          j        dt
                     t          t          |          |d           d d d            d S # 1 swxY w Y   d S )Nr   ru   r  r`   r   )r$   r   r~   r   r   r   r   r   r  s      r'   test_gh7839zTestSqrtM.test_gh7839  s    HVHV$&& 	5 	5#H}EEEEE!HHae4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   ;BBBc                     t          j        d          }|                    d           t          j        |d           t          j        t          |                    sJ d S )N)   r  gGz?rA   )r$   r   fillfill_diagonal	isrealobjr   r:   r   s     r'   test_gh17918zTestSqrtM.test_gh17918  sU    HX	t
A|E!HH%%%%%%%r)   c                 
   t          j        g dg dg dg          }t          |          }t          ||z  |d           t          |                    t           j                            }t          ||z  |d           d S )N)r   r@   r@   )r   rA   r   )r   r   r   r`   r   gư>)r$   r   r   r   astyper   )r:   r   sqs      r'   test_gh23278zTestSqrtM.test_gh23278  s    HlllKKK<==1XXR////188BL))**R......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          j        dt           j                  }t          |          j        t           j        k    sJ d S 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    F2RX&&&Qxx~++++F2RY'''Qxx~++++F2RY'''Qxx~++++F2RY'''Qxx~++++++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          j        dt           j                  }t          |          j        t           j        k    sJ d S 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    F2RW%%%Qxx~++++F2RX&&&Qxx~++++F2RX&&&Qxx~++++F2RX&&&Qxx~++++++r)   c                 V   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 d S )Nr   rs   r   r"   )	r$   r   r1  r   r#   
complex128r2  r3  r4  r!  s     r'   +test_data_size_preservation_int_in_comp_outz5TestSqrtM.test_data_size_preservation_int_in_comp_out  s    Hq!fq"g&bg666Qxx~....Hq!fq"g&bh777Qxx~....Hq!fq"g&bh777Qxx~....Hq!fq"g&bh777Qxx~......r)   c                 T   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          rDt          j        dt           j                  }t          |          j        t           j        k    sJ d S d S )Nr)  r"   float128)	r$   r   float16r   r#   r   r+  hasattrr;  r!  s     r'   .test_data_size_preservation_float_in_float_outz8TestSqrtM.test_data_size_preservation_float_in_float_out  s    F2RZ(((Qxx~++++F2RZ(((Qxx~++++F2RZ(((Qxx~++++2z"" 	0r---A88>RZ////	0 	0//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          r_t          t           d          rLt          j        ddgddggt           j
                  }t          |          j        t           j        k    sJ d S d S d S )Nr   rs   r   r7  r"   r;  
complex256)r$   r   r<  r   r#   r   r   r+  r8  r=  r;  r!  s     r'   -test_data_size_preservation_float_in_comp_outz7TestSqrtM.test_data_size_preservation_float_in_comp_out  s7   Hq!fq"g&bj999Qxx~----Hq!fq"g&bj999Qxx~----Hq!fq"g&bj999Qxx~....2z"" 	3wr<'@'@ 	31a&1b'*"+>>>A88>R]2222	3 	3 	3 	322r)   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          rJt          j        ddgddggt           j                  }t          |          j        t           j        k    sJ d S d S )Nr  rs   r   r  r"   r@  )r$   r   r   r   r#   r8  r=  r@  r!  s     r'   ,test_data_size_preservation_comp_in_comp_outz6TestSqrtM.test_data_size_preservation_comp_in_comp_out  s    Hr1g3x(===Qxx~----Hr1g3x(>>>Qxx~....2|$$ 	32q'As8,BMBBBA88>R]2222	3 	322r)   r   c                     t          j        d|          }t          |          }t          j        d|          }t          |          }|j        dk    sJ |j        |j        k    sJ d S r   )r$   r   r   r   r   r#   )r:   r   r;   sr   s0s         r'   r   zTestSqrtM.test_empty  sn    HV2&&&!HHVAR   2YYw&    w"(""""""r)   c           
      p   t           j                            d          }d}|                    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          |                     d S )	Nl   &\31    r   r   rp   r   )krA   )
r$   rw   rx   rz   r  r   triuasfortranarrayr   r   )r:   r   r   r&   r   UA_noncontig_cA_noncontig_fs           r'   test_cf_noncontig_nd_inputsz%TestSqrtM.test_cf_noncontig_nd_inputs  s?    i##$455KKa1ac]K++wqB"&1++-rwqzz1E!!!SSqS##A#+)!,,QQQ1add];a33Q3!n--u]/C/CDDDa14a4A.//}1E1EFFFFFr)   c                 z    t          j        g dt                    }t          t	          |          |           d S )N)rs   r   r   r   )r   r#   )r$   r   r%   r
   r   )r:   r&   s     r'   test_empty_sizeszTestSqrtM.test_empty_sizes&  s6    H<<<u555588Q'''''r)   c                    t           j                            d          }|                    d          }|d d d d dd d df         }|d d d d dd d df                                         }t          t          |          t          |                     |d d d d d d df         }|d d d d d d df                                         }t          t          |          t          |                     |d d d d dd d f         }|d d d d dd d f                                         }t          t          |          t          |                     d S )Nl   &\31 )r   r   r   rp   r   )r$   rw   rx   rz   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_strideszTestSqrtM.test_negative_strides*  si   i##$455KKYK''!!!TTrT44R4-(!!!TTrT44R4-(--//m,,eM.B.BCCC!!!QQQ"*!!!QQQ"***,,m,,eM.B.BCCC!!!TTrT111*!!!TTrT111***,,m,,eM.B.BCCCCCr)   N)#rV   rW   rX   r   r   r   r   r  r  r  r   r  r  r  r"  r&  r/  r5  r9  r>  rA  rC  r   r   r   r   r%   r$   r   r   r   r   rO  rQ  rZ  rY   r)   r'   r   r     s       7 7 7	7 	7 	70 0 0"!C !C !CF? ? ?*; ; ;/ / /*&1 1 15 5 55 5 55 5 5& & &/ / /, , ,, , ,/ / /	0 	0 	0	3 	3 	33 3 3 [TC
GR\#RSS# # TS#G G G( ( (D D D D 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                            d	
          d             Zd ZdS )TestFractionalMatrixPowerc                    t           j                            d          }t          dd          D ]}t          dd          D ]}|                    ||f          d|                    ||f          z  z   }t          j        ddd          D ]J}||z  }t          |d|z            }t           j                            ||          }t          ||           Kd S )N  rA   r   r   rr   rs   rt   
r$   rw   rx   ry   r   r{   r   r|   matrix_powerr   	r:   r   pr   r   r   r   M_rootr   s	            r'   r   z8TestFractionalMatrixPower.test_round_trip_random_complex;  s    i##D))q! 	5 	5A1a[[ 5 5!111a&99 3#6#61v#>#>>?
[Q22 5 5E"U*A4Q!<<F#%9#9#9&!#D#DL#L!4444	55	5 	5r)   c                    t           j                            d          }t          dd          D ]}t          dd          D ]z}|                    ||f          }t          j        ddd          D ]J}||z  }t          |d|z            }t           j                            ||          }t          ||           K{d S )Nr^  rA   r   rr   rs   rt   r_  ra  s	            r'   r   z6TestFractionalMatrixPower.test_round_trip_random_floatG  s    
 i##D))q! 	5 	5A1a[[ 5 5 00!Q88
[Q22 5 5E"U*A4Q!<<F#%9#9#9&!#D#DL#L!4444	55	5 	5r)   c                 Z   t           j                            d          }dD ]}t          d          D ]}|                    ||f          d|                    ||f          z  z   }t          |d          }t           j                            |d          }t          ||           t          |d          }t           j                            |d          }t          ||           t          |d	          }t           j                            |d
          }t          ||           	d S )Nr^  )r   r   r   r)  r   皙?r   gigffffff@r  )	r$   rw   rx   ry   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_powersV  s"   i##D)) 	& 	&A2YY & &''A//"s7J7JAq67R7R2RR5a==!y55k1EE<000+At44I**;<<1%%%+As33I**;;;1%%%%&	& 	&r)   c                 B   t           j                            d          }d}t          |          D ]}|                    dd          }|                                }t          j        |                    dd                    }|                    ||g          }ddg|                    d	                   r|d
|                    ||g          z  z   }||z  }t          ||          }t          |          }	t          |	|z            }
t          ||
           d S )Nl   fm1    rA   r   rr   rp   TFr   r   )r$   rw   rx   ry   integersexpchoicer   r   r   r   )r:   r   nsamplesrg  r   rb  matrix_scaler&   A_powerrd   A_power_expm_logms              r'   test_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powersh  s    i##$455x 	8 	8AQ""A

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

A
''Ae}SZZ]]+ 5SZZaVZ4444L A
 .a33G!WWF $VaZ 0 0G%67777%	8 	8r)   c                    t                      }t          |t          j                  }t	          |          }t          j        |d          }t          |d          }t          ||d           t          ||           t          ||           dD ]m}t          ||          }t          |d|z            }t          ||d           t          t          j	        |d          t          j	        |d                     nd S )Nr   gdy=r  )r   g?rA   r   )
r(   r   r$   r   r   r   _remainder_matrix_powerr   r   r  )r:   r&   A_funm_sqrtr   A_rem_powerrq  rb  re   s           r'   r  z?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1  s    133 1bg&&(('?3GG)!S11W59999)))---  	E 	EA-a33G27AaC@@LL!$7777BGL!44bgammDDDD		E 	Er)   c                 J   t           j                            d          }|                    d          d|                    d          z  z   D ]T}t	          d          D ]B}t          j        ||          }|t          j        |           z  dz
  }t          ||           CUd S )Nr^  r)  r   r   rA   )	r$   rw   rx   r   ry   r   _briggs_helper_functionexp2r   )r:   r   r;   rI  
x_observed
x_expecteds         r'   test_briggs_helper_functionz5TestFractionalMatrixPower.test_briggs_helper_function  s    i##D))$$R((20C0CB0G0G+GG 	8 	8A1XX 8 8.Fq!LL
"'1"++-1

J77778	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                            |          }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            ֐#d S )	Nr   rA   r   r   r   c              3   :   K   | ]}|j         p
|j        d k     V  dS 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  s   
 .Q!Q Q!Q Q!Q Q!Q 	" 	C 	CN $$^44A<<!<<<<<<=== , C C H^59991!Q77*2EEFFF H^7;;;1!Q77*.AABBB XnE::::1!Q77*.AABBBBC	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                            |          }t          t	          d |D                                  d	D ]}t          j        |t          
          }t          ||          }t          |j	        j
        |v            t          j        |t          
          }t          ||          }t          |j	        j
        |v            d S )Nr   rA   r   r   r   )r   r   rA   r   c              3   :   K   | ]}|j         p
|j        d k     V  dS 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  s1   -Q!R!Q!Q IIIyyy13 	C 	CN $$^44AC88a88888999 , 
C 
C H^7;;;1!Q77*.AABBB H^59991!Q77*.AABBBB
C	C 	Cr)   zToo unstable across LAPACKs.r   c                    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 ]E}t	          ||          }t          t          j        |                                                     FdD ]5}t	          ||          }t	          |d|z            }t          ||           6d S )Nr   rA   r   r   ro   )r   r   r   )r   rA   rA   )r   r   rA   r"   )gffffffr  r  g)rf  gzG?)	r%   r   r$   r   r   r   r	  allr   )r:   r   newtyper&   rb  rq  re   s          r'   test_singularz'TestFractionalMatrixPower.test_singular  s"    Q!Q Q!Q Q!Q IIIzzz2	4 	5 	5N "7+ 5 5H^7;;;1 5 5A5a;;GBHW--11334444$ 5 5A5a;;G#:7AaC#H#HL#L!44445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	           d S )Nr  rs   r   r  r  r   r  r`   r   r   )r   r$   r   r   r  s      r'   r   z@TestFractionalMatrixPower.test_opposite_sign_complex_eigenvalues  sk    !Wq#hAYD	"q!ae4444/377GGGGGGr)   N)rV   rW   rX   r   r   ri  rs  r  r}  r  r  r   r   r   r  r   rY   r)   r'   r\  r\  :  s        
5 
5 
55 5 5& & &$8 8 82E E E(8 8 8!C !C !CFC C C2 [<==5 5 >=5&H H H H Hr)   r\  c            
       n   e Zd Zd Zd Zej                            dee	e
eeeeg          ej                            deeej        eej        g          ej                            dddg          d                                     Zd	 Zd
 Zd Zej                            d          d             ZdS )TestExpMc                 v    t          ddgddgg          }t          t          |          ddgddgg           d S )Nr@   r   rA   )r   r   r   rD   s     r'   	test_zerozTestExpM.test_zero  sC    Bq61Q%.!!!$q''Aa5!A-88888r)   c                     t          d          }t          |t          j        t          j        gg                     d S )NrA   )r   r   r$   r   r   )r:   elts     r'   test_single_eltzTestExpM.test_single_elt  s3    1ggRXvh//00000r)   funcr   r   r   rA   rA   c                     t          j        ||          }t          j        d|          } ||          } ||          }|j        |k    sJ |j        |j        k    sJ d S )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  st     HU"%%%Xhb)))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	          |                    t           j                            j        j        dk    sJ t	          |                    t           j	                            j        j        dk    sJ d S )NrA   rs   r   r   f)
r$   r   r   r   r   r$  r   r#   r   r   )r:   r   r;   aabbs        r'   test_2x2_inputzTestExpM.test_2x2_input
  s    DAq6Aq6"##dQh1dQh\QR2a4*'=!>!>???AHHR\**++16#====AHHRZ(())/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	          |          |           d S )NrA   rs   r   r   r   rr   r   )orderr   r]      ro   )r$   r   r   r   r   )r:   r   r;   a_ress       r'   test_nx2x2_inputzTestExpM.test_nx2x2_input  s   DH1v1v&1v2w'1v1v&1v1v&1vBx(	* 25	6 6 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                 l    d}t          j        ||f          }d|j        _        t	          |           d S )Nr]   F)r$   r   r   r   r   r   s      r'   r   zTestExpM.test_readonly*  s1    GQFOO!Qr)   r   c                    t          j        dt                    }t           j                            d          }|                    ddd          }|                    ddd          }|                    d          |||f<   t          j        dt                    }|                                |d<   t          |          \  }}|dk    sJ t          |          }t           j
                            t          |          |           t          d	          D ]1}t          |          }	t           j
                            ||	           2d S )
N)  r  r"   d   r   i  i  )r   r  r  rt   r   )r$   r   r%   rw   rx   rl  r   rS  r   r   testingr   r   ry   )
r:   r&   r   rg  jAmr^   rE  	first_resnext_ress
             r'   test_gh18086zTestExpM.test_gh180860  s!   HZu---i##C((LLC%%LLC%%**S//!Q$Xm51111"2&&1AvvvvGG	

,,T)__a@@@q 	F 	FAAwwHJ00HEEEE	F 	Fr)   N)rV   rW   rX   r  r  r   r   r   r   r   r   r   r   r   r   r   r%   r$   r   r   r   r  r  r  r   	fail_slowr  rY   r)   r'   r  r    s       9 9 91 1 1 [VdD$eUE%RSS[T3rz7BL"QRR[Wvv&677- - 87 SR TS-< < <( ( (.   [1F F F F Fr)   r  c                       e Zd Zd Zd Zd Zd Zej        j	        ej        
                    d          d                         ZdS )	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                            |          }t          j                            |          d ddd f         }i ddiddifD ]3}t          ||fi |\  }}t          ||           t          ||           4d S )NrA   r   r   rs   r   ro   r]   r  r   r   rA   r   r   r   r   ro   r"   rA   r   r   ro   r   rs   r]   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_frechetG  sL   HLLLLLLLL	
    HFF    HFF    ))!,, <,,Q//ABB7HU+h~-FG 	@ 	@F.:1a.J.J6.J.J+M+M=99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                            |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        	                    |          }t          j        	                    |          d ddd f         }t          ||          \  }}t          ||           t          ||           d S )Nr  r  r  r  r"   rA   r   r   ro   r   rs   r]   r  )rA   r   r   r]   rt      rH     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   XLLLLLLLL	
   
 XFF   
 XFF   
 "L--j!<<555ss3_QRR5HII& 	@ 	@FBL.;B?EL.;B?E55=1M!$55E
"A
"A
"A!L--a00M$|0033BQBF;.:1a.@.@+M+M=999,.>????	@ 	@r)   c           	      f   t           j                            d          }|j        |j        |j        |j        f}d}t          |          D ]d}||                    d                   }|                                }|	                    dd          } |||f          } |||f          }	t          j                            |d          }
||
z  }||z  }||	z  }t          j        t          j        ||g          t          j        t          j        |          |g          g          }t          j                            |          }t          j                            |          d ||d f         }t#          ||          \  }}t%          ||d	           t%          ||d
	           fd S )Nl   ]"1 r  rs   r      rp   rA   gHj>r   gHz>)r$   rw   rx   rz   normalstandard_cauchyexponentialry   rn  rl  r   r|   r   vstackhstack
zeros_liker   r   r   )r:   r   rfuncsntestsrg  rfuncr  r   r  r  r  r   r&   r   r   r  r  r  r  s                      r'   	test_fuzzzTestExpmFrechet.test_fuzz  s   i##$455 
#	!
 v 	K 	KA3::a==)EOO--MQ##AQqE***JQqE***J % 1 1*a @ @!$55E
"A
"A		1a&!!	2=++Q/002 3 3A "L--a00M$|0033BQBF;.:1a.@.@+M+M=tDDDD,.>TJJJJJ#	K 	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                            |d
           t          ||d          \  }}t          ||d          \  }}t          ||           t          ||           d S )Ng]؉??gvP?g^?guÝ?r"   gS,?g| @gJt?g~3?rA   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    HZ(Z(       HZ(Z(       	!Q ,1U!$ !$ !$+2>1^3- 3- 3-//"3444%9:::::r)   zthis test is deliberately slowr   c                 <   d}t           j                            d          }|                    ||f          }|                    ||f          }t	          ||d          \  }}t	          ||d          \  }}t          ||           t          ||           d S )Ni  r^  rp   r  r  r  )r$   rw   rx   r  r   r   )	r:   r   r   r&   r   r  r  r  r  s	            r'   test_medium_matrixz"TestExpmFrechet.test_medium_matrix  s     i##D))OO!QO((OO!QO(( ,1U!$ !$ !$+2>1^3- 3- 3-//"3444%9:::::r)   N)rV   rW   rX   r  r  r  r  r   r   slowskipr  rY   r)   r'   r  r  E  s        @ @ @.@ @ @BK K 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    sh    

1agA!WWF7fvo.L1|#$$G 1--#>!!!r)   c                     | t           j                            |          t           j                            |           z  z  S r  )r   r|   r   )r&   r   s     r'   _normalized_liker    s2    !!!$$u|'8'8';';;<<r)   c                 x     | |          } | ||z             }t          ||z
            t          |          z  S r  )r   )r  r&   r  r   r  s        r'   _relative_errorr    s@    	!AaL !!G!tAww&&r)   c                   J    e Zd Zd Zd Zd Zej        j        d             Z	dS )TestExpmConditionNumberc                     t           j                            d          }t          dd          D ]8}|                    ||f          }t          |          }t          d|           9d S )Nr^  rA   rs   r   )r$   rw   rx   ry   r   r   r	   )r:   r   r   r&   kappas        r'   test_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smoke  sm    i##D))q! 	( 	(A##QF++AaLLEa''''	( 	(r)   c                     t          j        g dg dg dg dg          }t          |          }t          d|           d S )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  s_    HIII<<<///###	   !$&&&&&r)   c                 d   t           j                            d          }t          j        ddd          D ]B}t          j        |gg          }t          t          |          t          |                     Ct          j        ddd          D ]B}t          j        |gg          }t          t          |          t          |                     Ct          d          D ]L}|
                    d	          }t          t          |          t          j        |          d
                    Md S )Nr^  r  r   r  )numr7  r   r)  r  r   )r$   rw   rx   linspacer   r   r   absr{   ry   r   r   )r:   r   xr&   rg  s        r'   test_univariatez'TestExpmConditionNumber.test_univariate  s   i##D))R+++ 	2 	2A1#AIaLL#a&&1111R+++ 	2 	2A1#AIaLL#a&&1111r 	@ 	@A##F++AIaLL"+a..*>????	@ 	@r)   c           	         t           j                            d          }d}d}t          |          D ]}|                    dd          }|                    ||          }t          j                            |          }t          |          }t          j                            |          }	t          |          }
t          j        t          ||||	|          }t          j        ||z            }t          ||d          }|j        } ||          }|t#          t          j        ||j                  |          z  }t)          t          ||          }t+          || |z             t          d          D ]r}|t#           |j        |j         |          z  }t+          t          |          t          |                     t)          t          ||          }t-          ||           st-          |dd|z  z   |z  |
z             d S )	Ni90  rh   r)  r   r   zL-BFGS-Br  rA   )r$   rw   RandomStatery   randintrandnr   r|   r   r   r   	functoolspartialr  r   r   r  r  r  r   r  r   r	   )r:   r   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   i##E**x 	H 	HAAq!!A		!QA\&&q))FQA\&&q))FaLLE !"8vq&#/ /AGAaCLLE1eJ777C5D1T77D+BJtQW,E,EqIIIF+D!V<<MMD53;777 1XX @ @/		170CQGGGVd6ll;;; /a @ @!-????
 ma!C%i3->-FGGGG?	H 	Hr)   N)
rV   rW   rX   r  r   r  r   r   r  r  rY   r)   r'   r  r    sj        ( ( (' ' '
@ 
@ 
@ [#H #H #H #H #Hr)   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestKhatriRaoc           
      ^   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           d S )NrA   r   r   rs   r   ro   r]   r     r  r            )rs   r   )r   r   r
   r$   r   r   r:   r;   bs      r'   
test_basiczTestKhatriRao.test_basic  s    uq!fq!f-..q!fq!f-..0 0 	1eaW&'W&("X&("X%/ 0 0 	1 	1 	1
 rxA''1a&)9)9::17F+++++r)   c                     t          j        t                    5  t          g dg dg          }t          ddgddgg          }t	          ||           d d d            d S # 1 swxY w Y   d S )NrA   r   r   rs   r   ro   rA   r   r   rs   r   raises
ValueErrorr   r   r  s      r'   test_number_of_columns_equalityz-TestKhatriRao.test_number_of_columns_equality#  s    ]:&& 	 	yyy yy" # #A1v1v    Aq!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;A""A&)A&c                 j   t          j        t                    5  t          g d          }t          g d          }t	          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          g d          }t          g dg dg          }t	          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          g dg dg          }t          g d          }t	          ||           d d d            d S # 1 swxY w Y   d S )Nr!  r"  )r]   r  rt   r#  r  s      r'   test_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_array+  s    ]:&& 	 	iii  Aiii  Aq!		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:&& 	 	iii  A				  A q!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:&& 	 					  A iii  Aq!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   3AA A=7C  CC$7D((D,/D,c                    t          ddgddgg          t          ddgddgg          t                    }t          j        fd	t	          j        d                   D                       j        }t          ||           d S )
NrA   r   r   rs   r   ro   r]   r  c                 b    g | ]+}t          j        d d |f         d d |f                   ,S r  )r$   kron)r   rI  r;   r  s     r'   
<listcomp>z@TestKhatriRao.test_equality_of_two_equations.<locals>.<listcomp>I  sM     6 6 6 '!AAAqD'1QQQT733 6 6 6r)   )r   r   r$   r  ry   r   r   r
   )r:   res1res2r;   r  s      @@r'   test_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equationsD  s    Aq6Aq6"##Aq6Aq6"##!Qy 6 6 6 6 6#(#4#46 6 6 7 778 	 	4&&&&&r)   c                 n   t          j        d          }t          j        d          }t          ||          }t          |t          j        d                     t          j        d          }t          j        d          }t          ||          }t          |t          j        d                     d S )N)r   r   )r   r   )r   r   )r   r   )r  r   )r$   r   r   r   )r:   r;   r  ress       r'   r   zTestKhatriRao.test_emptyN  s    HVHVARXf--...HVHVARXg../////r)   N)rV   rW   rX   r  r&  r(  r/  r   rY   r)   r'   r  r    s_        
, 
, 
,    2' ' '	0 	0 	0 	0 	0r)   r  r  c                     t          j                    5   | t          j        d          d           d d d            d S # 1 swxY w Y   d S )Nr   F)disp)r   deprecated_callr$   r   )r  s    r'   test_disp_depr5  Y  s     
		!	! $ $RVAYYU####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s    AAAc                      t          j                    5  t          t          j        d          d           d d d            d S # 1 swxY w Y   d S )Nr   r)  )	blocksize)r   r4  r   r$   r   rY   r)   r'   test_blocksize_depr8  _  s    			!	! ' 'bfQii2&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   $AA	A	):__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._matfuncsr   scipy.linalg._matfuncs_inv_ssqr   scipy.linalg._expm_frechetr   scipy.optimizer   r(   r+   r[   r   r\  r  r  r  r  r  r  r  r   r   r5  r8  rY   r)   r'   <module>rA     s,              ' ' ' ' ' ' ' ' ' 'B B B B B B B B B B B B B B    A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A + * * * * * 6 6 6 6 6 6 E E E E E E ! ! ! ! & & & & & & # # # # # #  *' ' ' ' ' ' ' 'Vn0 n0 n0 n0 n0 n0 n0 n0biD iD iD iD iD iD iD iDX	wH wH wH wH wH wH wH wHtNF NF NF NF NF NF NF NFbu; u; u; u; u; u; u; u;p" " "= = =' ' 'BH BH BH BH BH BH BH BHJB0 B0 B0 B0 B0 B0 B0 B0H u-/ /$ $/ /$' ' ' ' 'r)   