
    >qjM                        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$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      Z.d Z/d Z0d Z1 G d d      Z2 G d d      Z3y)z, Test functions for linalg.matfuncs module

    N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equal)funmsignmlogmsqrtmfractional_matrix_powerexpmexpm_frechet	expm_condnorm
khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)LogmExactlySingularWarning)LinAlgWarning)minimizec                  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    _/opt/rentech/trading_bot/.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      4r.   r/   g333333#g333333#@g     9g.r/   g#@g333333g      2@g3333332@       @)g'@'Rqgy.@ge@5@r4   )g@ȽUЛ'?g9\g+%r5   )gRQQ?gGzgffffffr6   )gר#w?î?gk#egC,Nr7   )g@42
gF(@gcs@@r8   )r   r   r   )selfacrrs       r&   	test_nilszTestSignM.test_nils3   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   )r@   r   r@   r   r   r   r   r@   )r   r   r@   r   r   r   r9   r:   s     r&   test_defective1zTestSignM.test_defective1A   s    ;y9=>ar(   c                 N    t        g dg dg dg dg df      }t        |       y )Nr,   r-   r0   r1   r2   rB   rC   s     r&   test_defective2zTestSignM.test_defective2F   s)    &'('$& ' 	ar(   c           
      Z    t        g dg dg dg dg dg dg dg      }t        |       y )Nr/         9@r?   r?   r?   r?   r?   r?               $@      @rM   rM   r?   r?   r?   r3         .@rM   rM   r?   r?   r?   r?   r?   rO   rM   r?   r?   r?   r?   r?   rM   rL   r?   r?   r?   r?   r?   r?   r/   rI   r?   r?   r?   r?   r?   r?   rK   rB   rC   s     r&   test_defective3zTestSignM.test_defective3P   s/    11000102 3 	ar(   N)__name__
__module____qualname__r=   rD   rF   rT    r(   r&   r*   r*   1   s    (
r(   r*   c            	          e 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d
 Zd Zd Zd Zej                  j%                  d      ej                  j'                  deeej.                  eej2                  g      d               Zej                  j'                  deeej.                  eej2                  g      d        Zy)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        |       y )NrH   rJ   rN   rP   rQ   rR   rS      g@y                )r   r   r   )r9   r:   ms      r&   r=   zTestLogM.test_nils]   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   )r9   r%   A_logmA_round_trips       r&   *test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmj   s,     23aF|ad?r(   c                     t               }t        |t        j                        }t	        |      }t        t        j                  ||dd              y )Nh㈵>r_   r`   )r'   r   r#   logr   r   allclose)r9   r%   
A_funm_logrd   s       r&   .test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logs   s?     23!RVV_
J'BKKadGGHr(   c                 "   t         j                  j                  d      }t        dd      D ]  }|j	                  ||f      }t        j
                  ddd      D ]  }||z  }t         j                  j                  |      }d| d	| }t        |      }||z  }	t        |	|       t        j                         5  t        j                  d
t               t        |      }
t        |
      }t        |||       d d d          y # 1 sw Y   xY w)N   >gO*31 r@      size   	   zM:z eivals:ignore)err_msg)r#   randomdefault_rngrangeuniformlogspacelinalgeigvalsr   r   warningscatch_warningssimplefilterRuntimeWarningr   r   )r9   rngn
M_unscaledscaleMWru   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   ii##$45q! 	KA1a&1JRA. K& II%%a(qc!-  (%,w%6" 2A6 ,,. K))(NC!!WF(,V%#$5q'JK KK	KK Ks   9?DDc                 >   t         j                  j                  d      }t        dd      D ]o  }|j	                  ||f      d|j	                  ||f      z  z   }t        j
                  ddd      D ])  }||z  }t        |      }t        |      }t        ||       + q y )Nrm   r@   rn                 ?rq   rr   rs   )	r#   rv   rw   rx   standard_normalrz   r   r   r   )r9   r   r   r   r   r   r   M_round_trips           r&   test_round_trip_random_complexz'TestLogM.test_round_trip_random_complex   s    ii##$45q! 	1A--q!f5S00!Q889J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Gr@   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)r9   complex_dtype_charsmatrix_as_listr   r%   rc   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)r@   r@   r   )r   r@   r@   )r@   r   r@   r!   {Gz?)r$   r   r#   r   r   r{   r|   r   absoluter   sumr   
issubdtyper"   inexactr   r   )r9   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 )Nr@   r   r!   )	r$   r   r#   r   r   r   r   r"   complexfloating)r9   r   r   r%   rc   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                 f   t        j                  ddgddgg      }t        j                  ddgddgg      }||j                  ||j                  fD ]R  }t	        j
                  t        j                        5  t        |      }d d d        t              }t        ||d       T y # 1 sw Y   %xY w)Nr   r   r@   r_   rb   )r#   r   asarrayTpytestwarnsr   r   r   r   r   )r9   r%   Br   LEs         r&   test_exactly_singularzTestLogM.test_exactly_singular   s    HHq!fr2h'(JJAA'(ACCACC 	.A/JJK GQAAqu-		. s   7B''B0	c                     t        j                  dgg      }t        j                  t        j
                        5  t        |      }d d d        t              }t        ||d       y # 1 sw Y   #xY w)Ng0.++r_   r   )	r#   r   r   r   r   LogmNearlySingularWarningr   r   r   )r9   r   r   r   s       r&   test_nearly_singularzTestLogM.test_nearly_singular   sZ    HHvhZ \\+EEF 	QA	G15)	 	s   A))A2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   r@   r         ?r_   r   r   rr                r   )r#   pir   r   r   )r9   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   r9   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"   )r9   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!   )r   r   r   r   r   r#   zeros)r9   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)rU   rV   rW   r   markfilterwarningsr=   re   rk   r   r   r   r   r   r   r   r   r   xfailparametrizeintr$   r#   float32r   	complex64r   r   rX   r(   r&   rZ   rZ   \   s   [[ FG	 H	 [[ FG@ H@IK0	1><
(	I.*0 [[VW[[TC

GR\\#RS+ T X+ [[WsE2::w&UV0 W0r(   rZ   c                   X   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ej(                  j+                  d      d        Zej(                  j+                  d      d        Zej(                  j+                  d      d        Zej(                  j3                  deeej:                  eej>                  g      d        Z d Z!d Z"d Z#ej(                  j3                  dej:                  ejH                  ej>                  ejJ                  g      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 r@   rn   rq   rr   rs   	r#   rv   rw   rx   r   rz   r   dotr   r9   r   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 r@   rn   r   rq   rr   rs   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      ?)      ?r   r   r@   r   rA   )r@   r   r   r   )r   r   r   r   )r9   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 ]K  }t         j                  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 y # 1 sw Y   ZxY w)	Nr   r@   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>C  r   r   rt   r!   )r   r{   r|   r   r   r}   r~   r   r   r#   r   r$   r   r"   r   r   r9   r   r   r   r%   A_sqrtms         r&   +test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion5  sr    .Q!Q Q!Q Q!Q Q!Q Q!Q " 	CN $$^4A<!<<<= ((* C%%h> HH^59(**2EEF HH^7;(**.AAB XXnE::(**.AAB!C C	CC Cs   ;C1E88F	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   r@   r   r   r   r@   r   )r   r   r   r@   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>a  $     8,!&&1*,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_spectrumX  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 )Nrg   ra   )r'   r   r   r#   tril)r9   r%   r   rd   s       r&   %test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1m  sD    13((ad3-rwwqz: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                  |      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!   rt   )rr   rr   )r   r$   r#   r   r}   r~   r   r   r   r   r  r   isnanr   isinf)r9   r   r%   r   s       r&   test_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangularu  s     u* 	/B	 &(	)A
 ((* /%%h>( 0"((62BCxx(,,...xx(,,.../ /	// /s   B"C55C>	c                     ddgddgg}ddgddgg}t        t        j                  ||      |d	       t        t        |      |d	       y )
N               @rr   r                       ?      ?r         ?      r_   r   )r   r#   r   r   r9   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	        j
                         5  t	        j                  dt               t        t        |      |d       d d d        y # 1 sw Y   y xY w)N)r@   r   r   r@   r	  r   r   r_   r   rt   )	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-$$& 	5!!(M:E!Hae4	5 	5 	5s   2CCc                 L   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        y # 1 sw Y   y xY w)	N)r   r@   r   r   r@   r   r_   r   rt   category)	r#   diagr   r   r}   r~   r   r   r   r  s      r&   test_gh5336zTestSqrtM.test_gh5336  sy    GGIGGT!WaO$Aqu-$$& 	5##H}EE!Hae4	5 	5 	5s   3BB#c                    t        j                  d      }t        j                  d      }t        j                         5  t        j                  dt
               t        t        |      |d       d d d        y # 1 sw Y   y xY w)Nr   rt   r  r_   r   )r#   r   r}   r~   r   r   r   r   r  s      r&   test_gh7839zTestSqrtM.test_gh7839  s_    HHVHHV$$& 	5##H}EE!Hae4	5 	5 	5s   3A;;Bc                     t        j                  d      }|j                  d       t        j                  |d       t        j                  t        |            sJ y )N)   r  gGz?r@   )r#   r   fillfill_diagonal	isrealobjr   r9   r   s     r&   test_gh17918zTestSqrtM.test_gh17918  sA    HHX	t
A||E!H%%%r(   c                     t        j                  g dg dg dg      }t        |      }t        ||z  |d       t        |j	                  t         j
                              }t        ||z  |d       y )N)r   r?   r?   )r   r@   r   )r   r   r   r_   r   gư>)r#   r   r   r   astyper   )r9   r   sqs      r&   test_gh23278zTestSqrtM.test_gh23278  sW    HHlK<=1XR/188BLL)*R.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   rr   r   r!   )	r#   r   r2  r   r"   
complex128r3  r4  r5  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(   zignore::DeprecationWarningc                    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,  hasattrr<  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   rr   r   r8  r!   r<  
complex256)r#   r   r=  r   r"   r   r   r,  r9  r>  r<  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  rr   r   r  r!   rA  )r#   r   r   r   r"   r9  r>  rA  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"   )r9   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   ro   r   )kr@   )
r#   rv   rw   ry   r  r   triuasfortranarrayr   r   )r9   r   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)rr   r   r   r   )r   r"   )r#   r   r$   r
   r   )r9   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   ro   r   )r#   rv   rw   ry   copyr   r   )	r9   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,  s    ii##$45KKYK'!TrT4R4-(!TrT4R4-(--/m,eM.BC!Q"*!Q"***,m,eM.BC!TrT1*!TrT1***,m,eM.BCr(   dtypc                    t        j                  g dg dg dg|      }t        j                  t        d      5  t        |      }t        j                  |ddd f         j                         sJ 	 d d d        y # 1 sw Y   y xY w)N)r   r   r   r   r   r   r!   zMatrix is singular.r   r   r@   )r#   r   r   r   r   r   r  all)r9   r\  r:   ress       r&   test_gh24508zTestSqrtM.test_gh24508;  sm    
 HHiI6dC\\-/DE 	.(C88C12J'++---	. 	. 	.s   8A>>BN)'rU   rV   rW   r   r   r   r   r  r  r  r   r  r  r  r#  r'  r0  r6  r:  r   r   r   r?  rB  rD  r   r   r$   r#   r   r   r   r   rP  rR  r[  r,  r9  ra  rX   r(   r&   r   r     sU   7	70"!CF?*;/*&1555&/,,/ [[ <=	0 >	0 [[ <=	3 >	3 [[ <=3 >3 [[TC

GR\\#RS# T#G(D [[Vbjj"**&(llBMM&C D.D.r(   r   c                       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 ]  }|j	                  ||f      d|j	                  ||f      z  z   }t        j
                  ddd      D ]B  }||z  }t        |d|z        }t         j                  j                  ||      }t        ||       D   y )N  r@   r   r   rq   rr   rs   
r#   rv   rw   rx   r   rz   r   r{   matrix_powerr   	r9   r   pr   r   r   r   M_rootr   s	            r&   r   z8TestFractionalMatrixPower.test_round_trip_random_complexG  s    ii##D)q! 	5A1a[ 5!111a&9 3#6#61v#>>?
[[Q2 5E"U*A4Q!<F#%99#9#9&!#DL#L!4	55	5r(   c                 d   t         j                  j                  d      }t        dd      D ]  }t        dd      D ]q  }|j	                  ||f      }t        j
                  ddd      D ]B  }||z  }t        |d|z        }t         j                  j                  ||      }t        ||       D s  y )Nre  r@   r   rq   rr   rs   rf  rh  s	            r&   r   z6TestFractionalMatrixPower.test_round_trip_random_floatS  s    
 ii##D)q! 	5A1a[ 5 00!Q8
[[Q2 5E"U*A4Q!<F#%99#9#9&!#DL#L!4	55	5r(   c                    t         j                  j                  d      }dD ]  }t        d      D ]  }|j	                  ||f      d|j	                  ||f      z  z   }t        |d      }t         j                  j                  |d      }t        ||       t        |d      }t         j                  j                  |d      }t        ||       t        |d	      }t         j                  j                  |d
      }t        ||         y )Nre  )r   r   r   r*  r   皙?r   gigffffff@r  )	r#   rv   rw   rx   r   r   r{   rg  r   )	r9   r   r   ir   M_one_fifthr   r   r   s	            r&   (test_larger_abs_fractional_matrix_powerszBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powersb  s    ii##D) 	&A2Y &''A/"s7J7JAq67R2RR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    r@   r   rq   ro   TFr   r   )r#   rv   rw   rx   integersexpchoicer   r   r   r   )r9   r   nsamplesrn  r   ri  matrix_scaler%   A_powerrc   A_power_expm_logms              r&   test_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powerst  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?r@   r   )
r'   r   r#   r   r   r   _remainder_matrix_powerr   r   r  )r9   r%   A_funm_sqrtr   A_rem_powerrx  ri  rd   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                 4   t         j                  j                  d      }|j                  d      d|j                  d      z  z   D ]P  }t	        d      D ]@  }t        j                  ||      }|t        j                  |       z  dz
  }t        ||       B R y )Nre  r*  r   r   r@   )	r#   rv   rw   r   rx   r   _briggs_helper_functionexp2r   )r9   r   r:   rJ  
x_observed
x_expecteds         r&   test_briggs_helper_functionz5TestFractionalMatrixPower.test_briggs_helper_function  s    ii##D)$$R(20C0CB0G+GG 	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   r@   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rm  gffffff
@r!   )r   r{   r|   r   r   r#   r   r$   r   r"   r   r   r9   r   r   r   ri  r%   rx  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   r@   r   r   r   )r   r   r@   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   r@   r   r   rn   r^  )r   r@   r@   )r   r   r@   r!   )gffffffr  r  g)rm  gzG?)	r$   r   r#   r   r   r   r
  r_  r   )r9   r   newtyper%   ri  rx  rd   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  rr   r   r  r  r   r  r_   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)rU   rV   rW   r   r   rp  rz  r  r  r  r  r   r   r   r  r   rX   r(   r&   rc  rc  F  s[    
55&$82E(8!CFC2 [[<=5 >5&Hr(   rc  c            
       p   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                  j3                  d      d        Zy)TestExpMc                 \    t        ddgddgg      }t        t        |      ddgddgg       y )Nr?   r   r@   )r   r   r   rC   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 )Nr@   )r   r   r#   r   r   )r9   elts     r&   test_single_eltzTestExpM.test_single_elt  s&    1gRXXvh/0r(   funcr   r   r   r@   r@   c                     t        j                  ||      }t        j                  d|      } ||      } ||      }|j                  |k(  sJ |j                  |j                  k(  sJ y )Nr!   )r*  r*  )r#   r   r   r"   )r9   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 )Nr@   rr   r   r   f)
r#   r   r   r   r   r%  r   r"   r   r   )r9   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 )Nr@   rr   r   r   r   rq   r   )orderr   r\      rn   )r#   r   r   r   r   )r9   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 )Nr\   F)r#   r   r   r   r   r   s      r&   r   zTestExpM.test_readonly6  s+    GGQFO!Qr(   r   c                    t        j                  dt              }t         j                  j	                  d      }|j                  ddd      }|j                  ddd      }|j                  d      |||f<   t        |      }t         j                  j                  t        |      |       t        d      D ]-  }t        |      }t         j                  j                  ||       / y )N)  r  r!   d   r   i  i  r   )r#   r   r$   rv   rw   rs  r   testingr   r   rx   )r9   r%   r   rn  j	first_resnext_ress          r&   test_gh18086zTestExpM.test_gh18086<  s    HHZu-ii##C(LLC%LLC%**S/!Q$G	


,,T)_a@q 	FAAwHJJ00HE	Fr(   N)rU   rV   rW   r  r  r   r   r   r   r   r   r   r   r   r   r   r$   r#   r   r   r   r  r  r  r   	fail_slowr  rX   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r@   r   r   rr   r   rn   r\   r  r   r   r@   r   r   r   r   rn   r!   r@   r   r   rn   r   rr   r\   r  methodSPSblockEnlarge)r#   r   r$   r   r{   r   r   r   )	r9   r   r%   r   expected_expmexpected_frechetkwargsobserved_expmobserved_frechets	            r&   test_expm_frechetz!TestExpmFrechet.test_expm_frechetN  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!   r@   r   r   rn   r   rr   r\   r  )r@   r   r   r\   rs      rI     r   r   )r#   r   r$   r   r{   r   zip_expm_frechetell_table_61r   r   r   )r9   
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_frechete  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           	      H   t         j                  j                  d      }|j                  |j                  |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  rr   r      ro   r@   gHj>r   gHz>)r#   rv   rw   ry   normalstandard_cauchyexponentialrx   ru  rs  r   r{   r   vstackhstack
zeros_liker   r   r   )r9   r   rfuncsntestsrn  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?r@   r  r  r  )r#   r   r$   r   r{   r   r   r   )r9   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                  d      }|j                  ||f      }|j                  ||f      }t	        ||d      \  }}t	        ||d      \  }}t        ||       t        ||       y )Ni  re  ro   r  r  r  )r#   rv   rw   r  r   r   )	r9   r   r   r%   r   r  r  r  r  s	            r&   test_medium_matrixz"TestExpmFrechet.test_medium_matrix  s     ii##D)OO!QO(OO!QO( ,1U!$+2>1^3-//"34%9:r(   N)rU   rV   rW   r  r  r  r  r   r   slowskipr  rX   r(   r&   r  r  L  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epsri  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 ],  }|j	                  ||f      }t        |      }t        d|       . y )Nre  r@   rr   r   )r#   rv   rw   rx   r   r   r	   )r9   r   r   r%   kappas        r&   test_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smoke  sR    ii##D)q! 	(A##QF+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	   )r9   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 ]>  }|j                  d	      }t        t        |      t        j                  |      d
          @ y )Nre  r  r   r  )numr8  r   r*  r  r   )r#   rv   rw   linspacer   r   r   absrz   rx   r   r   )r9   r   xr%   rn  s        r&   test_univariatez'TestExpmConditionNumber.test_univariate  s    ii##D)R+ 	2A1#AIaL#a&1	2 R+ 	2A1#AIaL#a&1	2 r 	@A##F+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 )	Ni90  rg   r*  r   r   zL-BFGS-Br  r@   )r#   rv   RandomStaterx   randintrandnr   r{   r   r   r   	functoolspartialr  r   r   r
  r  r  r   r  r   r	   )r9   r   r  rv  rn  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)
rU   rV   rW   r  r  r  r   r   r  r  rX   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 )Nr@   r   r   rr   r   rn   r\   r     r  r            )rr   r   )r   r   r
   r#   r   r   r9   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r@   r   r   rr   r   rn   r@   r   r   rr   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'  )r\   r  rs   r(  r"  s      r&   test_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_array2  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 )	Nr@   r   r   rr   r   rn   r\   r  )	r   r   r#   r  rx   r   kronr   r
   )r9   r:   r#  res1rJ  res2s         r&   test_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equationsK  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   )r9   r:   r#  r`  s       r&   r   zTestKhatriRao.test_emptyU  sx    HHVHHVARXXf-.HHVHHVARXXg./r(   N)rU   rV   rW   r$  r+  r-  r2  r   rX   r(   r&   r  r    s    
,2'	0r(   r  )4__doc__r  r   r}   numpyr#   r   r   r   numpy.testingr   r   r   r	   r
   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.linalg._matfuncs_inv_ssqr   scipy.linalg._expm_frechetr   scipy.optimizer   r'   r*   rZ   r   rc  r  r  r  r  r  r   r  rX   r(   r&   <module>r;     s        ' 'B B A A A A A + E ! & #*' 'Vn0 n0bv. v.r	wH wHtIF IFXu; u;p"='BH BHJB0 B0r(   