
    >qjw	                       d dl 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	m
Z
mZmZ d dlZd dlm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 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/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d d	lm7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI d d
lJmKZK d dlLmMZM d dlNmOZO d dlPmQZQ d dlRmSZS d dlTmUZU ddlVmWZW ej                  dk(  xs  ej                         dv ZYdeZfdZ[ej|                  ej                  gZ]ej~                  ej                  gZ_e]e_z   Z`d Za G d d      Zb G d d      Zc G d d      Zd G d d      Ze G d d       Zf G d! d"      Zg G d# d$eg      Zhej                  j                  eYd%&      ej                  j                  d'      ej                  j                  d(      ej                  j                  d)      ej                  j                  eQd*&      d+                                    Znd, Zo G d- d.      Zp G d/ d0      Zq G d1 d2      Zr G d3 d4      Zs G d5 d6      Zt G d7 d8      ZudxZvZweUd9   d:   d;   ZveUd9   d:   d<   Zw G d= d>      Zx G d? d@      Zy G dA dB      Zz G dC dD      Z{dE Z|ej                  j                   ej                         dFk(  dG&      dH        Z}dI Z~dJ Zej                  j                  ddKL      dM        Z G dN dO      Zd\dPZej                  j                  ej                  j                   ej
                  ej                        j                  dQk  dR&      dS               ZdT Zej                  j                  dUeeZej|                  eej~                  g      dV        Z G dW dX      ZdY Z G dZ d[      Zy)]    N)assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_assert_allclose)raises)eigeigvalslusvdsvdvalscholeskyqrschurrsf2csflu_solve	lu_factorsolvediagsvd
hessenbergrq
eig_bandedeigvals_bandedeigheigvalshqr_multiplyqzorthordqzsubspace_angleshadamardeigvalsh_tridiagonaleigh_tridiagonal
null_spacecdf2rdfLinAlgError)get_lapack_funcs)norm)_select_function)ortho_group)arraydiagfulllinalgargsortzerosarangefloat32	complex64ravelsqrt	iscomplexshapesortsignasarrayisfinitendarrayeye)assert_no_overwrite)matrix)check_free_memory)	HAS_ILP64)skip_xp_invalid_arg)CONFIG   )parametrize_overwrite_arg
emscripten)wasm32wasm64Fc                    |t         v ret        j                  j                  | |       t        j                  j                  | |       dz  z   }||j	                         j
                  z   dz  }n2t        j                  j                  | |       }||j
                  z   dz  }|r'|t        d| z        t        j                  |       z  z  }|j                  |      S )z7Generate random sym/hermitian array of the given size n              ?   )	COMPLEX_DTYPESnprandomrandconjTr6   r>   astype)nposdefdtypeAs       ]/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/linalg/tests/test_decomp.py_random_hermitian_matrixrY   +   s     IINN1a 299>>!Q#7#<<^QIINN1a WaK	T!A#Yrvvay  88E?    c                    t        | t              r| }|j                  |      dz  dz
  }nEt        | t              r*t	        | j
                        dk(  r| j
                  d   }| }nt        d      t        j                  |      }|j                  j                         t        |      z  |z  }d|j                  |z   z  }|S )a  Return a random symmetric (Hermitian) matrix.

    If 'dim_or_eigv' is an integer N, return a NxN matrix, with eigenvalues
        uniformly distributed on (-1,1).

    If 'dim_or_eigv' is  1-D real array 'a', return a matrix whose
                      eigenvalues are 'a'.
    rL   rE   r   zinput type not supported.      ?)
isinstanceintrO   r=   lenr8   	TypeErrorr+   rvsrR   rQ   r-   )dim_or_eigvrngdimdvhs         rX   symrandrh   B   s     +s#JJsOA!
['
*
k
 A
%"344A	
T!Wq AQSSUAHrZ   c                   r    e Zd Zd Zd Zd Zd Zej                  j                  de
eeeeg      d        Zy)TestEigValsc                     g dg dg dg}t        |      }dt        d      z   dz  ddt        d      z
  dz  g}t        ||       y )NrE   rL      rL         	   ]   rL   r   r   r6   r   selfawexact_ws       rX   test_simplezTestEigVals.test_simple^   sE    	9-AJd2hJ>1qbz1n5!!W-rZ   c                     t        g dg dg dgd      j                  }|j                         }|j                  }t        |      }dt	        d      z   dz  ddt	        d      z
  dz  g}t        ||       y )Nrl   rn   re   rq   rr   rL   r   )r,   rR   copyr   r6   r   rt   s       rX   test_simple_trzTestEigVals.test_simple_trd   sf    9i3S9;;FFHCCAJd2hJ>1qbz1n5!!W-rZ   c                     g dg dg dg}t        |      }dt        d      z   dz  ddt        d      z
  dz  g}t        ||       y )Nrl   rL   ro   y      @      ?y      "@      ?y      W@      @rL   r   rs   rt   s       rX   test_simple_complexzTestEigVals.test_simple_complexl   sO    	<0AJe$a'e$a') 	"!W-rZ   c                     g dg dg dg}t        |d      }dt        d      z   dz  ddt        d      z
  dz  g}t        ||       y )	Nrl   rn   Fcheck_finiterq   rr   rL   r   rs   rt   s       rX   test_finitezTestEigVals.test_finitet   sH    	9-AE*d2hJ>1qbz1n5!!W-rZ   dtc                    t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j
                  d|            j                  k(  sJ t        |d      }|j                  dk(  sJ |j                  t        t        j
                  d|            j                  k(  sJ y )Nr   r   rV   r   rL   Thomogeneous_eigvalsrL   r   )rN   emptyr   r8   rV   r>   )ru   r   rv   rw   s       rX   
test_emptyzTestEigVals.test_emptyz   s    HHV2&AJww$ww'"&&""56<<<<<A40ww&   ww'"&&""56<<<<<rZ   N)__name__
__module____qualname__ry   r|   r   r   pytestmarkparametrizer^   floatr3   complexr4   r    rZ   rX   rj   rj   \   sG    .... [[TC)#LM= N=rZ   rj   c                      e Zd Zd Zd Zd Zd Zd Zd Z	 	 d,dZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zej&                  j)                  deeej0                  eej4                  g      d        Zej&                  j)                  dddg      ej&                  j)                  dddg      ej&                  j)                  dddg      ej&                  j)                  dddg      ej&                  j)                  dej0                  ej8                  g      d                                    Zej&                  j)                  deeeg      ej&                  j)                  dddg      ej&                  j)                  ddd g      ej&                  j)                  d!ddg      d"                             Zej&                  j)                  d#eeeg      ej&                  j)                  d$eeeg      ej&                  j)                  d%ddg      ej&                  j)                  d&ddg      ej&                  j)                  d'dd g      ej&                  j)                  d(dd g      ej&                  j)                  d!ddg      ej&                  j)                  d)ddg      d*                                                         Zy+)-TestEigc                 b   t        g dg dg dg      }t        |      \  }}dt        d      z   dz  ddt        d      z
  dz  g}t        dddt        d      dz  z   dz  g      }t        g d	      }t        dddt        d      dz  z
  dz  g      }|t        |      z  }|t        |      z  }|t        |      z  }t	        ||       t	        ||d d df   t        |d
         z         t	        ||d d df   t        |d         z         t	        ||d d df   t        |d         z         t        d      D ]%  }t	        ||d d |f   z  ||   |d d |f   z         ' t        |dd      \  }}t        d      D ]/  }t	        |j                  |d d |f   z  ||   |d d |f   z         1 y )Nrl   rn   rq   rr   rL   r   rE   rm         @r   r   r   rE   r   rL   leftright)r,   r
   r6   r)   r   r:   rangerR   	ru   rv   rw   rf   rx   v0v1v2is	            rX   ry   zTestEig.test_simple   s   9i341v1d2hJ>1qbz1n5Aq1T"XaZ<*+,;Aq1T"XaZ<*+,$r(]$r(]$r(]!!W-!"a1gd1T7m&;<!"a1gd1T7m&;<!"a1gd1T7m&;<q 	AA%a!AqD'k1Q4!Q$<@	A 11A&1q 	CA%accAadGmQqT!AqD'\B	CrZ   c                    t        j                  g dg dg dg      }t        |dd      \  }}}|j                  t         j                  k(  sJ |j
                  dk(  j                         sJ |j                  t         j                  k(  sJ |j                  t         j                  k(  sJ t        j                  g d      }t        ||dd      \  }}}|j                  t         j                  k(  sJ |j
                  dk(  j                         sJ |j                  t         j                  k(  sJ |j                  t         j                  k(  sJ y )Nrl   rn   Tr   r   )rm   rL   rE           )	rN   r,   r
   rV   
complex128imagallfloat64r-   )ru   rv   rw   vlvrbs         rX   test_simple_dtypezTestEig.test_simple_dtype   s    HHiI67D1	2rww"--'''!  """xx2::%%%xx2::%%% GGI14t4	2rww"--'''"!!###xx2::%%%xx2::%%%rZ   c                    t        ddgddgg      }t        |dd      \  }}}t        |t        ddg             t        d      D ]%  }t        ||d d |f   z  ||   |d d |f   z         ' t        d      D ]K  }t        |j	                         j
                  |d d |f   z  ||   j	                         |d d |f   z         M y )NrE   rL   r         ?       @y      ?       )r,   r
   r   r   rQ   rR   ru   rv   rw   r   r   r   s         rX   test_simple_complex_eigzTestEig.test_simple_complex_eig   s    Aq6B7#$+	2r!!UD$<%89q 	CA%a"QT(lAaDAqDMB	Cq 	<A%affhjj2ad8&;&'diik"QT(&:<	<rZ   c                    t        j                  ddgddgg      }t        |dd      \  }}}|j                  t         j                  k(  sJ |j                  t         j                  k(  sJ |j                  t         j                  k(  sJ y )NrE   rL   r   Tr   )rN   r;   r
   rV   r   )ru   rv   rw   r   r   s        rX   test_simple_complex_eig_dtypez%TestEig.test_simple_complex_eig_dtype   su    
 JJAQ()D1	2rww"--'''xx2==(((xx2==(((rZ   c                 h   t        g dg dg dg      }t        |dd      \  }}}t        d      D ]%  }t        ||d d |f   z  ||   |d d |f   z         ' t        d      D ]K  }t        |j	                         j
                  |d d |f   z  ||   j	                         |d d |f   z         M y )Nrl   r~   rE   r   rm   )r,   r
   r   r   rQ   rR   r   s         rX   r   zTestEig.test_simple_complex   s    9i67+	2rq 	CA%a"QT(lAaDAqDMB	Cq 	<A%affhjj2ad8&;&'diik"QT(&:<	<rZ   c                     dgg}dgg}t        ||d      \  }}t        |d   d       t        |d   dk7         t        |d       t        ||      \  }}t        |t        j
                         t        |d       y )NrE   r   Tr   rE   r   r   )r
   r   r   r   rN   inf)ru   rv   r   rw   r   s        rX   test_gh_3054zTestEig.test_gh_3054   su    SESEAqd32$#$1AAq	2QArZ   c           	      T   |t        |      t        |      }}|}n)t        |      }|}t        j                  |j                   }d|d|}t	        ||d      \  }	}
t        ||d      }||
z  |	dd d f   z  }||
z  |	dd d f   z  }t        |j                  d         D ]   }t        |d d |f   |d d |f   |||       " |&t        |	dd d f   d       t        |dd d f   d       t        j                  |	      }t        j                  |      }t        |	d d |f   |d d |f   dd|       t        j                  t        |
            }t        t        |
            D ]  }t        |
d d |f         ||<    t        |t        j                  |j                        |dd	       |	dd d f   dk7  }|	d|f   |	d|f   z  }t	        ||      \  }	}
t        ||      }||
z  }||
z  |	z  }||z
  }t        |j                  d         D ]?  }t        j                  t        |d d |f               s)t        |d d |f   d|||       A |	t        |	         }|t        |         }d
t        j                   d|z  d      z  }d
t        j                   d|z  d      z  }t#        t%        |      |j&                  z         }t#        t%        |      |j&                  z         }t        ||   ||   dd|       t        j                  t        |
            }t        t        |
            D ]  }t        |
d d |f         ||<    t        |t        j                  |j                        |       t        t)        |      t)        |	t        j                  |	                      y )N
Tr   rE   r   rtolatolerr_msggHz>)r   r   r   )r   r   r   y             rK   g|=)tolr   )r;   rN   r>   r8   r
   r   r   r   lexsortr   r_   r)   onessizer   r<   real_if_closer0   absr   r9   )ru   rW   B
atol_homog
rtol_homogr   r   B0msgrw   r   wtval1val2r   permpermtlengthbeta_nonzerowhresw_finwt_fins                          rX   _check_gen_eigzTestEig._check_gen_eig   s   =1:wqzqAB
AB A1%r! Art42Q52v!Q$2v!Q$tzz!}% 	KADAJQT
!+*cK	K :AadGQ'Bq!tHa(zz!}

2!T'
Bq%xLt$ #	% #b'"s2w 	'AR1XF1I	' 	 4c!	. !Q$1q,!A|O"44 Ar
2Q^2v2vzTksyy|$ 	CAvvhs1a4y)*AqD	1%)cC	C (1+HRL! b&&r%xU;;r''6	u==s5zEJJ./Ffkk12dVE]!c	; #b'"s2w 	'AR1XF1I	' 4cB 	R$qQ'8"9:rZ   c                     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        j                  d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY w)N)   "      r      )-   r   *         )'   /   1      r   )   r   r         )&   ,   r         )   r      r   r   )r   .   (   r   %   )r   r   r   r   r   )   r   r         )r   #      r   r   ignorer   g-a=)r   r   )r,   rN   errstater   ru   rW   r   s      rX   test_singularzTestEig.test_singular'  s     '''''	) *
 '''''	) * [[X& 	D1UC	D 	D 	Ds   A**A3c                    t        t        g d            }t        g dg dg df      }t        g dg dg df      }t        d      }t        d	      }t	        j
                  ||g|| gg      }t	        j
                  ||g||gg      }t	        j                  d
      5  | j                  ||       d d d        y # 1 sw Y   y xY w)N)rE   r   rm   )rL   r   r   )r   rL   r   )r   r   rL   )rE   r   r   )r   rE   r   r   r   r   rm   rm   rm   r   r   )r-   r,   r1   r>   rN   blockr   r   )ru   MKDZI3rW   r   s           rX   test_falkerzTestEig.test_falker8  s    y!";[9::z956&MVHHr1gA2w'(HHq"g1v&'[[X& 	&1%	& 	& 	&s   "B>>Cc                     d }t        j                  d      5  t        d      D ]&  } ||dz  dz        \  }}| j                  ||       ( 	 d d d        y # 1 sw Y   y xY w)Nc                 n    d| dz  z   }d| z  }g dg ddd|dgddd|gg}g dg dddd| gdd|dgg}||fS )	NrL   )rE   r   r   r   )r   rE   r   r   r   )r   r   rE   r   )r   r   r   rE   rE   r   )omegac1c2rW   r   s        rX   matricesz)TestEig.test_bad_geneig.<locals>.matricesH  sm    eQhB5BQAQ2 A QB3QA A a4KrZ   r   r   d         @)r  )rN   r   r   r   )ru   r  krW   r   s        rX   test_bad_geneigzTestEig.test_bad_geneigE  sc    	 [[X& 	*3Z *ad3h/1##Aq)*	* 	* 	*s   5AA"c                    t         j                  j                  d      }t        d|      }| j	                  |d        t        d|      }| j	                  ||       |j                  d      d|j                  d      z  z   }| j	                  |d        |j                  d      d|j                  d      z  z   }| j	                  ||       y )N  rm   r  rK   )rN   rO   RandomStaterh   r   )ru   rc   rW   r   s       rX   test_make_eigvalszTestEig.test_make_eigvals\  s     ii##D)AsOAt$AsOAq!JJvCJJv$6!66At$JJvCJJv$6!66Aq!rZ   c                    g dg dg dg}t        |d      \  }}dt        d      z   dz  ddt        d      z
  dz  g}t        d	d	d	t        d      d
z  z   dz  g      }t        g d      }t        d	d	d	t        d      d
z  z
  dz  g      }|t        |      z  }|t        |      z  }|t        |      z  }t	        ||       t	        ||d d df   t        |d         z         t	        ||d d d	f   t        |d         z         t	        ||d d df   t        |d         z         t        d
      D ]%  }t	        ||d d |f   z  ||   |d d |f   z         ' y )Nrl   rn   Fr   rq   rr   rL   r   rE   rm   r   r   r   r   )r
   r6   r,   r)   r   r:   r   r   s	            rX   test_check_finitezTestEig.test_check_finitej  sY   	9-15)1d2hJ>1qbz1n5Aq1T"XaZ<*+,;Aq1T"XaZ<*+,$r(]$r(]$r(]!!W-!"a1gd1T7m&;<!"a1gd1T7m&;<!"a1gd1T7m&;<q 	AA%a!AqD'k1Q4!Q$<@	ArZ   c                 x    t        j                  d      j                  dd      }t        t        t
        |       y)z:Check that passing a non-square array raises a ValueError.rp   rm   rL   N)rN   r2   reshapeassert_raises
ValueErrorr
   )ru   rW   s     rX   test_not_square_errorzTestEig.test_not_square_error{  s(    IIaL  A&j#q)rZ   c                     t        d      }t        j                  d      j                  dd      }t	        t
        t        ||       t	        t
        t        ||       y)zOCheck that passing arrays of with different shapes
        raises a ValueError.rL         "@rm   N)r>   rN   r2   r  r  r  r
   r   s      rX   test_shape_mismatchzTestEig.test_shape_mismatch  sC     FIIcN""1a(j#q!,j#q!,rZ   c                    t        j                  g dg dg dg dgd      }t        j                  g dg dg d	g d
gd      }t        ||      \  }}t        j                         5  t        j
                  ddt               t        j                  |dd      j                         sJ t        j                  |dd      j                         sJ 	 d d d        y # 1 sw Y   y xY w)N)g      (@      <@g      S@g     k@)g      0@g      @@g      T@g      l@)g      8@      D@g      V@g      m@)r$  g      L@g      Z@g      o@r   r   )       @      @      $@r#  )r   r        &@g      =@)r        @g      *@g      ?@)r   r(  g      1@g     A@r   z%invalid value encountered in multiplyr&  +=r          @)	rN   r,   r
   warningscatch_warningsfilterwarningsRuntimeWarningiscloseany)ru   rW   r   r  Vs        rX   test_gh_11577zTestEig.test_gh_11577  s     HH///02 :CD HH,,,-/ 7@A
 1ay1 $$& 	8##A>S::a5155777::a5155777	8 	8 	8s   *A,C  C)r   c                 R   t        j                  d|      }t        |      \  }}t        t        j                  d|            \  }}|j                  dk(  sJ |j
                  |j
                  k(  sJ t        |t        j                  d             |j                  dk(  sJ |j
                  |j
                  k(  sJ t        |d      \  }}|j                  dk(  sJ |j
                  |j
                  k(  sJ |j                  dk(  sJ |j
                  |j
                  k(  sJ y )Nr   r   rL   r   Tr   r   )rN   r   r
   r>   r8   rV   r   )ru   r   rv   rw   r   w_nvr_ns          rX   r   zTestEig.test_empty  s    HHV2&A2q+,	Tww$ww#))###BHHV,-xx6!!!xx4::%%%A402ww&   ww#))###xx6!!!xx4::%%%rZ   	include_BFTr   r   r   rV   c                 f   d}d}t         j                  j                  d      }|j                  ||z         j                  |      }	|j                  ||z         j                  |      }
t	        ||      }|rt        |	f|
|d|}nt        |	fd|i|}t        |d         D ]  }t        |d         D ]w  }|rt        |	||f   f|
||f   |d|}nt        |	||f   fd|i|}|s|r1t        t        |            D ]  }t        ||   ||f   ||           gt        |||f   |       y  y )	Nrm   rL   )   r;  l   F)Q)r   r   )r   r   r   r   rE   )	rN   rO   default_rngrS   dictr
   r   r_   r   )ru   r8  r   r   r   rV   batch_shape
core_shaperc   rW   r   kwargsr   r   jrefr  s                    rX   test_nd_inputzTestEig.test_nd_input  sW    
ii##M2JJ{Z/077>JJ{Z/077>E7JKa214262Ca-d-f-C{1~& 	4A;q>* 
4a1gF1a4tFvFCa1g;D;F;C5"3s8_ >'Aq!tc!f=> $C1Is3
4	4rZ   dtyporderCFndimrL   rm   overwrite_ac                    d}t        j                  ||z        j                  ||      }|j                  ||      }|dk(  rt        j                  |d|z  g      }|j                         }t        ||      \  }}	|xr5 |j                  t        k7  xr  |j                  dk(  xr |j                  d   }
||k(  j                         |
k7  sJ y )Nrm   rV   rE  rL   rI  F_CONTIGUOUS)rN   r2   r  rS   stackr{   r
   rV   r^   rH  flagsr   )ru   rD  rE  rH  rI  rT   rv   a_refrw   rf   	a_inplaces              rX   test_overwrite_regzTestEig.test_overwrite_reg  s    
 IIacN""1a(HH4uH-19!QqS"A1+.1  $WW^$VVq[$ GGN#	 	 U
!Y...rZ   dtyp_adtyp_border_aorder_bndim_andim_boverwrite_bc	                    d}	t        j                  |	|	z        j                  |	|	      }
|
j                  ||      }
t        j                  |	|	z        j                  |	|	      }|j                  ||      }|dk(  rt        j                  |
d|
z  g      }
|dk(  rt        j                  |d|z  g      }|
j                         }|j                         }t        |
|||      \  }}|xrk |
j                  t        k7  xrV |
j                  t        j                  |
|      k(  xr1 |
j                  dk(  xr  |j                  dk(  xr |
j                  d   }|xrk |j                  t        k7  xrV |j                  t        j                  |
|      k(  xr1 |
j                  dk(  xr  |j                  dk(  xr |j                  d   }|
|k(  j                         |k7  sJ d       ||k(  j                         |k7  sJ d       y )Nrm   rK  rL   rI  rY  rM  rW   r   )rN   r2   r  rS   rN  r{   r
   rV   r^   result_typerH  rO  r   )ru   rS  rT  rU  rV  rW  rX  rI  rY  rT   rv   r   rP  b_refrw   rf   rQ  	b_inplaces                     rX   test_overwrite_genzTestEig.test_overwrite_gen  s    IIacN""1a(HH6H1IIacN""1a(HH6H1Q;!QqS"AQ;!QqS"A1a[kJ1  $WW^$"#''R^^Aq-A"A$VVq[$ vv{$ GGN#	 	  $WW^$"#''R^^Aq-A"A$VVq[$ vv{$ GGN#	 	 U
!Y.33.U
!Y.33.rZ   N)vIh%<=r`  r`  r`  ) r   r   r   ry   r   r   r   r   r   r   r   r  r  r  r  r  r!  r4  r   r   r   r^   r   rN   r3   r   r4   r   r   rC  rR  r_  r   rZ   rX   r   r      s   C*&*<	)<
 AF49H;TD"&*."A"*
-8: [[TC

GR\\#RS& T&( [[[5$-8[[VeT]3[[Wudm4[[2UDMB[[Wrzz2==&AB4 C C 5 4 9
44 [[Vc5'%:;[[WsCj1[[VaV,[[]T5M:/ ; - 2 </, [[XUG'<=[[XUG'<=[[Yc
3[[Yc
3[[X1v.[[X1v.[[]T5M:[[]T5M:$4 ; ; / / 4 4 > >$4rZ   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ej"                  j%                  deeej,                  eej0                  g      d        Zy)TestEigBandedc                 $    | j                          y N)create_bandmatru   s    rX   setup_methodzTestEigBanded.setup_method#  s    rZ   c                    d}d| _         d| _        t        t        |d            t        t        |dz
  d      d      z   t        t        |dz
  d      d      z   t        t        |dz
  d      d      z   t        t        |dz
  d      d      z   | _        t        t        |d            d	t        t        |dz
  d      d      z  z   d	t        t        |dz
  d      d      z  z
  t        t        |dz
  d      d      z   t        t        |dz
  d      d      z   | _        t        t        |d            t        t        |dz
  d      d      z   t        t        |dz
  d
      d      z   t        t        |dz
  d      d      z   t        t        |dz
  d      d      z   | _        d	t        t        |d            z  t        t        |dz
  d      d      z   d	t        t        |dz
  d
      d      z  z   t        t        |dz
  d      d      z   t        t        |dz
  d      d      z   | _        t        j                  | j                        \  }}|j                  }t        |      }||   | _        |dd|f   | _        t        j                  | j
                        \  }}|j                  }t        |      }||   | _        |dd|f   | _        | j                  dz   }t!        ||ft"              | _        t!        ||ft&              | _        t+        |      D ]\  }t        | j                  |      | j$                  ||z
  dz
  ||f<   t        | j
                  |      | j(                  ||z
  dz
  ||f<   ^ d| j                   z  | j                  z   dz   }t!        ||ft"              | _        t        | j                        | j,                  d| j                   z  ddf<   t+        | j                         D ]  }t        | j                  |dz         | j,                  d| j                   z  dz
  |z
  |dz   |f<   t        | j                  | dz
        | j,                  d| j                   z  dz   |z   d|dz
  |z
  f<    t!        ||ft&              | _        t        | j                        | j.                  d| j                   z  ddf<   t+        | j                         D ]  }t        | j                  |dz         | j.                  d| j                   z  dz
  |z
  |dz   |f<   t        | j                  | dz
        | j.                  d| j                   z  dz   |z   d|dz
  |z
  f<    dt1        |      z  | _        | j2                  dz  | _        y)zbCreate the full matrix `self.fullmat` and
           the corresponding band matrix `self.bandmat`.
   rL         ?rE         r          r   rK         r%  Nr   r         ?      ?)KLKUr-   r.   sym_matherm_matreal_matcomp_matr/   r
   realr0   	w_sym_linevec_sym_lin
w_herm_linevec_herm_linr1   r   bandmat_symr   bandmat_hermr   bandmat_realbandmat_compr2   r   bc)ru   NewevargsLDABr   s          rX   re  zTestEigBanded.create_bandmat&  s%     T!S\*tAaC346:4!T?A6NOtAaC346:4!T?A6NO
 d1dm,d4!S>2667d4!S>1556  QqS$45  QqS$3	4 d1cl+QqS$457;D1dOQ7OPQqS#346:4!T?A6NO
 Da..QqS$45d4!T?A667  QqS#34  QqS$3	4 DLL)BWWr{Dq$wKDMM*BWWr{T(4[
 ww{ $%8!4)7;t 	FA.24<<.CDT!VAXqs]+/3DMM1/EDd1fQh!m,	F y477"Q&!4)59*.t}}*=!DGG)Q,'tww 	CA6:4==!A#6NDaik!mQqSU238<T]]>?RT9CDaik!mQqs1uW45		C "4)7;*.t}}*=!DGG)Q,'tww 	CA6:4==!A#6NDaik!mQqSU238<T]]>?RT9CDaik!mQqs1uW45		C VAY&&F#rZ   c                    t        dt        j                  d      } || j                  d      \  }}}|ddt	        |      f   }t        t        |      | j                         t        t        |      t        | j                               y)zTCompare dsbev eigenvalues and eigenvectors with
           the result of linalg.eig.sbev	preferredrV   ilp64rE   	compute_vN
r(   rN   r   rz  r0   r   r9   rv  r   rw  )ru   dsbevrw   evecinfoevec_s         rX   
test_dsbevzTestEigBanded.test_dsbevw  sk     !rzzMd..!<4Q
]#!$q'4>>:!#e*c$2C2C.DErZ   c                    t        dt        j                  d      } || j                  d      \  }}}|ddt	        |      f   }t        t        |      | j                         t        t        |      t        | j                               y)zUCompare dsbevd eigenvalues and eigenvectors with
           the result of linalg.eig.sbevdr  r  rE   r  Nr  )ru   dsbevdrw   r  r  r  s         rX   test_dsbevdzTestEigBanded.test_dsbevd  sk     "';Ot//1=4Q
]#!$q'4>>:!#e*c$2C2C.DErZ   c           	      \   t        | j                        \  }}t        dt        j                  d      } || j
                  ddd|dd      \  }}}}}|ddt        |      f   }t        t        |      | j                         t        t        |      t        | j                               y)	zUCompare dsbevx eigenvalues and eigenvectors
           with the result of linalg.eig.sbevxr  r  r   rE   rL   r  r   N)r8   rq  r(   rN   r   rz  r0   r   r9   rv  r   rw  )	ru   r  dsbevxrw   r  numifailr  r  s	            rX   test_dsbevxzTestEigBanded.test_dsbevx  s     T\\"1!';O %+4+;+;S#q!56a%A!4eTQ
]#!$q'4>>:!#e*c$2C2C.DErZ   c                    t        dt        j                  d      } || j                  d      \  }}}|ddt	        |      f   }t        t        |      | j                         t        t        |      t        | j                               y)zUCompare zhbevd eigenvalues and eigenvectors
           with the result of linalg.eig.hbevdr  r  rE   r  N)
r(   rN   r   r{  r0   r   r9   rx  r   ry  )ru   zhbevdrw   r  r  r  s         rX   test_zhbevdzTestEigBanded.test_zhbevd  sk     "'kRt00A>4Q
]#!$q'4??;!#e*c$2D2D.EFrZ   c           	      \   t        | j                        \  }}t        dt        j                  d      } || j
                  ddd|dd      \  }}}}}|ddt        |      f   }t        t        |      | j                         t        t        |      t        | j                               y)	zUCompare zhbevx eigenvalues and eigenvectors
           with the result of linalg.eig.hbevxr  r  r   rE   rL   r  N)r8   rr  r(   rN   r   r{  r0   r   r9   rx  r   ry  )	ru   r  zhbevxrw   r  r  r  r  r  s	            rX   test_zhbevxzTestEigBanded.test_zhbevx  s     T]]#1!'kR %+4+<+<c3156a%A!4eTQ
]#!$q'4??;!#e*c$2D2D.EFrZ   c                 >   t        | j                        }|j                  }t        t	        |      | j
                         t        | j                        }|j                  }t        t	        |      | j                         d}t        j                  d      }t        | j                  d||f      }t        t	        |      | j
                  ||dz           t        | j                  d||f      }t        t	        |      | j                  ||dz           | j
                  |   dz
  }| j
                  |   dz   }t        | j                  d||f      }	t        t	        |	      | j
                  ||dz           | j                  |   dz
  }| j                  |   dz   }t        | j                  d||f      }
t        t	        |
      | j                  ||dz           t        | j                  d	      }|j                  }t        t	        |      | j
                         y
)z?Compare eigenvalues of eigvals_banded with those of linalg.eig.rL   rp   r   selectselect_rangerE   h㈵>rf   Fr   N)
r   rz  ru  r   r9   rv  r{  rx  rN   longlong)ru   w_symw_hermind1ind2	w_sym_ind
w_herm_indv_lowerv_upper	w_sym_val
w_herm_vals              rX   test_eigvals_bandedz!TestEigBanded.test_eigvals_banded  s   t//0

!$u+t~~> 1 12!$v,@ {{1~"4#3#3*-T4LJ	!$y/"&..d1f"=	?#D$5$5+.dD\K
!$z"2"&//$tAv">	@ ..&/..&/"4#3#3*-Wg<NP	!$y/"&..d1f"=	? //$'&0//$'&0#D$5$5+.2971CE
 	"$z"2"&//$tAv">	@ t//eD

!$u+t~~>rZ   c           
      2   t        | j                        \  }}|ddt        |j                        f   }t	        t        |      | j                         t	        t        |      t        | j                               t        | j                        \  }}|ddt        |j                        f   }t	        t        |      | j                         t	        t        |      t        | j                               d}d}t        | j                  d||f      \  }	}
t	        t        |	      | j                  ||dz           t	        t        |
      t        | j                  dd||dz   f                t        | j                  d||f      \  }}t	        t        |      | j                  ||dz           t	        t        |      t        | j                  dd||dz   f                | j                  |   dz
  }| j                  |   dz   }t        | j                  d||f      \  }}t	        t        |      | j                  ||dz           t	        t        |      t        | j                  dd||dz   f                | j                  |   dz
  }| j                  |   dz   }t        | j                  d||f      \  }}t	        t        |      | j                  ||dz           t	        t        |      t        | j                  dd||dz   f                t        | j                  d	
      \  }}|ddt        |j                        f   }t	        t        |      | j                         t	        t        |      t        | j                               y)zXCompare eigenvalues and eigenvectors of eig_banded
           with those of linalg.eig. NrL   rp   r   r  rE   r  rf   Fr   )r   rz  r0   ru  r   r9   rv  r   rw  r{  rx  ry  )ru   r  evec_sym	evec_sym_r  	evec_herm
evec_herm_r  r  r  evec_sym_indr  evec_herm_indr  r  r  evec_sym_valr  evec_herm_vals                      rX   test_eig_bandedzTestEigBanded.test_eig_banded  s>    %T%5%56xQ

 334	!$u+t~~>!#i.#d6G6G2HI&t'8'89	q'&++"667
!$v,@!#j/3t7I7I3JK ",T-=-=47;?,#H	< 	"$y/"&..d1f"=	?!#l"3"%d&7&74Q;&G"H	J %/t/@/@69=A4L%J!
M 	"$z"2"&//$tAv">	@!#m"4"%d&8&8DaK&H"I	K ..&/..&/",T-=-=47;BG:L#N	< 	"$y/"&..d1f"=	?!#l"3"%d&7&74Q;&G"H	J //$'&0//$'&0$.t/@/@69=Dg<N%P!
M 	"$z"2"&//$tAv">	@!#m"4"%d&8&8DaK&H"I	K %T%5%5EJxQ

 334	!$u+t~~>!#i.#d6G6G2HIrZ   c                    t        dt        j                  d      }t        | j                        \  }} || j
                  | j                  | j                        \  }}}t        |d| j                  z  ddf         }t        | j                  | j                  z         D ]1  }|t        |d| j                  z  dz
  |z
  |dz   |f   |dz         z  }3 t        | j                  d      \  }	}
}t        ||       y)	zZCompare dgbtrf  LU factorisation with the LU factorisation result
           of linalg.lu.gbtrfr  r  rL   NrE   r   	permute_l)r(   rN   r   r8   rs  r|  ro  rp  r-   r   r   r   )ru   dgbtrfr  r  lu_symm_bandipivr  ur   p_linl_linu_lins               rX   test_dgbtrfzTestEigBanded.test_dgbtrf  s     "';OT]]#1#)$*;*;TWWdgg#N dD ail+,tww() 	?Al1TWW9Q;q=!A#a%#78!A#>>A	? !!<ue!!U+rZ   c                    t        | j                        \  }}t        dt        j                  d      } || j
                  | j                  | j                        \  }}}t        |d| j                  z  ddf         }t        | j                  | j                  z         D ]1  }|t        |d| j                  z  dz
  |z
  |dz   |f   |dz         z  }3 t        | j                  d      \  }	}
}t        ||       y)	zZCompare zgbtrf  LU factorisation with the LU factorisation result
           of linalg.lu.r  r  r  rL   NrE   r   r  )r8   rt  r(   rN   r   r}  ro  rp  r-   r   r   r   )ru   r  r  zgbtrfr  r  r  r  r   r  r  r  s               rX   test_zgbtrfzTestEigBanded.test_zgbtrf#  s     T]]#1!'kR#)$*;*;TWWdgg#N dD ail+,tww() 	?Al1TWW9Q;q=!A#a%#78!A#>>A	? !!<ue!!U+rZ   c                 `   t        dt        j                  d      \  }} || j                  | j                  | j
                        \  }}} ||| j                  | j
                  | j                  |      \  }}t        j                  | j                  | j                        }t        ||       y)zhCompare dgbtrs  solutions for linear equation system  A*x = b
           with solutions of linalg.solve.r  gbtrsr  r  N)r(   rN   r   r|  ro  rp  r   r/   r   rs  r   )ru   r  dgbtrsr  r  r  yy_lins           rX   test_dgbtrszTestEigBanded.test_dgbtrs3  s     *bjj
 $*$*;*;TWWdgg#N dDtwwF4T]]DFF3!!U+rZ   c                 `   t        dt        j                  d      \  }} || j                  | j                  | j
                        \  }}} ||| j                  | j
                  | j                  |      \  }}t        j                  | j                  | j                        }t        ||       y)zhCompare zgbtrs  solutions for linear equation system  A*x = b
           with solutions of linalg.solve.r  r  r  N)r(   rN   r   r}  ro  rp  r~  r/   r   rt  r   )ru   r  zgbtrsr  r  r  r  r  s           rX   test_zgbtrszTestEigBanded.test_zgbtrs@  s     *bmm;
 $*$*;*;TWWdgg#N dDtww$G4T]]DGG4!!U+rZ   r   c                    t        j                  d|      }t        |      \  }}t        t        j                  ddgddgg|            \  }}|j                  dk(  sJ |j
                  |j
                  k(  sJ |j                  dk(  sJ |j
                  |j
                  k(  sJ t        |d      }|j                  dk(  sJ |j
                  |j
                  k(  sJ y )Nr   r   r   rE   r   Teigvals_only)rN   r   r   r,   r8   rV   )ru   r   a_bandrw   rf   r6  v_ns          rX   r   zTestEigBanded.test_emptyM  s    &+&!1bhhAA'7rBCSww$ww#))###ww&   ww#))###vD1ww$ww#))###rZ   N)r   r   r   rg  re  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r^   r   rN   r3   r   r4   r   r   rZ   rX   rb  rb  "  s    M$bFFFGG(?T8Jt, , ,, [[TC

GR\\#RS$ T$rZ   rb  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEigTridiagonalc                 $    | j                          y rd  )create_trimatrf  s    rX   rg  zTestEigTridiagonal.setup_method_  s    rZ   c                    d}t        |d      | _        t        |dz
  d      | _        t        | j                        t        | j                  d      z   t        | j                  d      z   | _        t        j                  | j                        \  }}|j                  }t        |      }||   | _	        |dd|f   | _
        y)z>Create the full matrix `self.fullmat`, `self.d`, and `self.e`.ri  rj  rE   rk  r   N)r.   re   er-   full_matr/   r
   ru  r0   rw   r  )ru   r  r  r  r  s        rX   r  z TestEigTridiagonal.create_trimatb  s     aac4dffTVVR(884?JDMM*BWWr{Dq$wK	rZ   c                    t        t        t        | j                  | j                  dd        t        t
        t        | j                  | j                  dz         t        t
        t        | j                  | j                  d       t        t        t        | j                  | j                  d       t        t        t        | j                  | j                  dd	       y)
zTest error conditions.Nr   rK   rj  lapack_driverfoor   r   r   r  )r  r  r#   re   r  r`   rf  s    rX   test_degeneratez"TestEigTridiagonal.test_degenerateq  s     	j"6sLi!5tvvtvv{Ki!5tvvtvv$&	(j"6$)	+ 	j"6 w	8rZ   c           
      B   dD ]C  }t        | j                  | j                  |      }t        t	        |      | j
                         E dD ]0  }t        t        t         | j                  | j                  |dd       2 dD ]  }t        | j                  | j                  ddt        | j                        d	z
  f|
      }t        t	        |      | j
                         d}d}t        | j                  | j                  d||f|
      }t        t	        |      | j
                  ||d	z           | j
                  |   dz
  }| j
                  |   dz   }t        | j                  | j                  d||f|
      }t        t	        |      | j
                  ||d	z            y)z>Compare eigenvalues of eigvalsh_tridiagonal with those of eig.)sterfstevstevdstebzstemrautor  )r  r  r  r   r   r  r  r  r  r  r  r   rE   r  r  r  rL   rp   r  rf   N)	r#   re   r  r   r9   rw   r  r  r_   )	ru   driverrw   w_indr  r  r  r  w_vals	            rX   test_eigvalsh_tridiagonalz,TestEigTridiagonal.test_eigvalsh_tridiagonal  sy    K 	7F$TVVTVV6JA%d1gtvv6	7 1 	/F*&:DFFDFF(.s'-/	/ 1 	HF(s!S[]9K$&E &d5k466: DD(s$$&E &d5k466$tAv3FG ffTlV+GffTlV+G(s'79K$&E &d5k466$tAv3FG+	HrZ   c                 @   t        t        t        | j                  | j                  d       dD ]  }t        | j                  | j                  |      \  }}|ddt        |      f   }t        t        |      | j                         t        t        |      t        | j                                t        t        t        | j                  | j                  ddd       d	D ]  }d
}t        | j                        dz
  }t        | j                  | j                  d||f|      \  }}t        t        |      | j                         t        t        |      t        | j                               d}d}t        | j                  | j                  d||f|      \  }}t        t        |      | j                  ||dz           t        t        |      t        | j                  dd||dz   f                | j                  |   dz
  }| j                  |   dz   }t        | j                  | j                  d||f|      \  }}t        t        |      | j                  ||dz           t        t        |      t        | j                  dd||dz   f                 y)zWCompare eigenvalues and eigenvectors of eigh_tridiagonal
           with those of eig. r  r  )r  r  r  r  r  Nr  r   r   r  r  r   rE   r  rL   rp   r  rf   )r  r  r$   re   r  r0   r   r9   rw   r   r  r_   )	ru   r  rw   r  r  r  r  r  r  s	            rX   test_eigh_tridiagonalz(TestEigTridiagonal.test_eigh_tridiagonal  s2    	j"2DFFDFF$+	-A 	BF&tvvtvvVLGAtGAJ'E%d1gtvv6%c%j#dii.A		B 	j"2DFFDFF$*3V	M0 	FFDtvv;q=D&s$$&GAt &d1gtvv6%c$iTYY@DD&s$$&GAt &d1gtvvd46/BC%c$i&)$))AtDF{N*C&DF ffTlV+GffTlV+G&s'79K$&GAt &d1gtvvd46/BC%c$i&)$))AtDF{N*C&DF3	FrZ   c                    t        j                  dg      }t        j                  g       }t        ||d      }|j                  dk(  sJ t	        ||       t        ||dd      \  }}|j                  dk(  sJ |j                  dk(  sJ t	        ||       t	        |t        d	gg             t        ||d
d      \  }}|j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y)zSee gh-20075rl  Tr  rE   r   r   r  rL   rj  rf   )r   r   r   r   r   N)rN   r,   r$   rH  r   r   r8   )ru   rv   r   xr3  s        rX   test_eigh_tridiagonal_1x1z,TestEigTridiagonal.test_eigh_tridiagonal_1x1  s    HHdVHHRLQ5vv{{11SvF1vv{{vv{{152$=)1SwG1vv{{ww$ww&   rZ   N)	r   r   r   rg  r  r  r  r  r  r   rZ   rX   r  r  ^  s$     8 HD(FT!rZ   r  c                   4   e Zd Zd Zd Zd Zd Zeej                  j                  d      d               Zej                  j                  de      ej                  j                  dd	      d
               Zej                  j                  dd	      d        Zej                  j                  dd      ej                  j                  dd      d               Zd Zej                  j                  deeej*                  eej.                  g      d        Zy)TestEighc           	         t        t        t        t        j                  ddg             t        t        t        t        j                  ddg      t        j                  ddg             t        t        t        t        j                  ddg      t        j                  ddg             t        t        t        t        j                  ddg      t        j                  ddg      d       t        t        t        t        j                  ddg      t        j                  ddg      ddgddg       t        t        t        t        j                  ddg      t        j                  ddg      ddg       t        t        t        t        j                  ddg      t        j                  ddg      d	dg       t        t        t        t        j                  ddg      t        j                  ddg      ddg       t        t        t        t        j                  ddg      t        j                  ddg      ddg
       t        t        t        t        j                  ddg      d       t        t        t        t        j                  ddg      d d       t        t        t        t        j                  ddg      t        j                  ddg      d       t        t        t        t        j                  ddg      t        j                  ddg      dddg       t        t        t        t        j                  ddg      t        j                  ddg      dddg       y )NrE   rL   rm   r;  )type)subset_by_valuesubset_by_indexr   r  r   r  wrongr  gvxevrgvd)r  r  )r  r  r   rN   r   rf  s    rX   test_wrong_inputszTestEigh.test_wrong_inputs  sT   j$A8j$A!QIj$A!QIj$A!Q	 	j$A!Q'(!fq!f	F 	j$A!Q'(!f	. 	j$A!Q')1g	/ 	j$A!Q'(!f	. 	j$A!Q'(!f	. 	j$AHj$AeLj$A!Q"	$ 	j$A!Q"QF	<j$A!Q"QF	<rZ   c           	          t        t        t        t        j                  ddg      t        j                  ddg             y )Nrm   )r  r'   r   rN   r   rf  s    rX   test_nonpositive_bzTestEigh.test_nonpositive_b  s(    k4!Q"''1a&/JrZ   c                    t        t              D ]  \  }}t        d|      }t        |ddg      \  }}t	        |j
                  d   t        |             t        |dkD  |dk  z        sJ t        dd|      }t        ||ddg      \  }}t	        |j
                  d   t        |             t        |dkD  |dk  z        rJ  y )	N   r   r   rL   r  rE   T)rU   rV   )	enumerateDTYPESrY   r   r   r8   r_   r   )ru   indr   rv   rw   rf   r   s          rX   test_value_subsetszTestEigh.test_value_subsets
  s     ( 
	+GC(26AB73DAqSV,B1q5)***(DCA1r1g6DAqSV,B1q5)***
	+rZ   c                     t        ddgddgg      }t        ddgddgg      }t        |      \  }}t        ||      \  }}y )NrE   rL      rm   ro   )r,   r   )ru   rv   r   rw   zs        rX   test_eigh_integerzTestEigh.test_eigh_integer  sL    Aq6Aq6"#Aq6Aq6"#Aw1Aqz1rZ   zignore::DeprecationWarningc                     dd l }|j                  j                  d      j                         }t	        j
                  |      }t        t        t        |       t        t        t        |       y )Nr   rL   )	scipy.sparsesparse	eye_arraytocscrN   
atleast_2dr  r  r   )ru   scipyrv   r   s       rX   test_eigh_of_sparsezTestEigh.test_eigh_of_sparse  sJ     	LL""1%++-MM!j$*j$*rZ   dtype_r  )r  evdr  evxc                     t        d|      }t        ||      \  }}t        ||z  ||z  z
  ddt        j                  |      j
                  z  d       y )Nr  )rT   rV   r  r     r   r   )rY   r   r   rN   finfoeps)ru   r  r  rv   rw   rf   s         rX   test_various_drivers_standardz&TestEigh.test_various_drivers_standard'  sR     %r8Af%1AQ!"((6"2"6"66	!rZ   c                    t        dgg|      \  }}t        |t        dg      d       t        |t        dgg      d       t        dgg|      \  }}t        |t        dg      d       t        |t        dgg      d       y )NrE   r  rj  V瞯<r+  rK   r   )r   r   r,   )ru   r  rw   rf   s       rX   test_1x1_lworkzTestEigh.test_1x1_lwork0  sx    aSE&)15";U352$=u5 bTF6*15!:E252$=u5rZ   r   rl   )gvr	  r  c                 <   t        j                  d      }t        d      }t        dd      }t        ||||      \  }}|dk(  rt	        ||z  |||z  z  z
  d|d       y |d	k(  rt	        ||z  |z  ||z  z
  d|d       y t	        ||z  |z  ||z  z
  d|d       y )
Ng     @r  T)rU   )rv   r   r  r   rE   r   r$  rL   )rN   spacingrY   r   r   )ru   r  r   r   rv   r   rw   rf   s           rX    test_various_drivers_generalizedz)TestEigh.test_various_drivers_generalized;  s     zz% $R($R5a1V$7119AEAq1uI-r2FQYAEAIA-r2FAEAIA-r2FrZ   c                 z   t        d      }t        |ddg      }t        t        |      d       t        |ddg      }t        t        |      d       t	        ||       t        j                  g d      }t        |ddg      }t        t        |      d       t	        |t        j                  dd	g             y )
Nro   rE   rL   r  )rE   333333??      ?rL   gffffff?r  r0  r1  )rY   r   r   r_   r   rN   r-   r,   )ru   rv   rw   w2r   w3s         rX   test_eigvalsh_new_argszTestEigh.test_eigvalsh_new_argsI  s    $Q'QA/SVQa!Q0SWa 2GG)*a!S2SWa BHHc3Z01rZ   r   c                    t        j                  d|      }t        |      \  }}t        t        j                  d|            \  }}|j                  dk(  sJ |j
                  |j
                  k(  sJ |j                  dk(  sJ |j
                  |j
                  k(  sJ t        |d      }t        |t        j                  d             |j                  dk(  sJ |j
                  |j
                  k(  sJ y )Nr   r   rL   r   Tr  )rN   r   r   r>   r8   rV   r   )ru   r   rv   rw   rf   r6  r  s          rX   r   zTestEigh.test_emptyW  s    HHV2&Aw1q+,Sww$ww#))###ww&   ww#))###&288D>*ww$ww#))###rZ   N)r   r   r   r
  r  r  r  rC   r   r   r/  r  r   r  r'  r*  r.  r5  r^   r   rN   r3   r   r4   r   r   rZ   rX   r  r    s*   $<LK+ [[ <=+ > + [[Xv.[[X'BC! D /! [[X'BC6 D6 [[VY/[[X';<
G = 0
G2 [[TC

GR\\#RS$ T$rZ   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ej                   j#                  e d      ej                   j&                  d               Zej                   j+                  dg d      ej                   j+                  dg d      ej                   j+                  de      d                      Zej                   j+                  deeej6                  eej:                  g      ej                   j+                  dg d      d               Zej                   j+                  deeeg      ej                   j+                  dddg      ej                   j+                  dddg      ej                   j+                  d d!d"g      ej                   j+                  d#d!d"g      ej                   j+                  d$d%d&g      d'                                           Zy())TestSVD_GESDDgesddc                 h    t        t        t        dggd       t        t        t        dggd       y )Nrj  r  r  )r  r`   r   r  rf  s    rX   r  zTestSVD_GESDD.test_degeneratem  s&    itfB?j#vUCrZ   c                    g dg dg dg}dD ]  }t        ||| j                        \  }}}t        |j                  |z  t	        d             t        |j                  |z  t	        d             t        |j                  d   |j                  d   f|j                  j                        }t        t        |            D ]  }||   |||f<    t        ||z  |z  |        y )Nrl   rE   r  rm   rn   TFfull_matricesr  rm   r   r   r  r   rR   r>   r1   r8   rV   charr   r_   ru   rv   r?  r  svhsigmar   s           rX   ry   zTestSVD_GESDD.test_simpleq  s    
I.* 	9M1M)-););=HAq"%accAgs1v6%bddRiQ81771:rxx{3QWW\\BE3q6] #dad#%a%i"na8	9rZ   c                    g dg dg dg}dD ]  }t        ||| j                        \  }}}t        |j                  |z  t	        d             t        |j                  |z  t	        d             t        |j                  d   |j                  d   f|j                  j                        }t        t        |            D ]  }||   |||f<    t        ||z  |z  |        y )Nrl   rn   r=  r>  rm   r   r@  rB  s           rX   test_simple_singularz"TestSVD_GESDD.test_simple_singular}  s    	9-* 	9M1M)-););=HAq"%accAgs1v6%bddRiQ81771:rxx{3QWW\\BE3q6] #dad#%a%i"na8	9rZ   c                    g dg dg}dD ]  }t        ||| j                        \  }}}t        |j                  |z  t	        |j
                  d                t        |j
                  d   |j
                  d   f|j                  j                        }t        t        |            D ]  }||   |||f<    t        ||z  |z  |        y )Nrl   r;  ro   rp   r=  r>  r   r   r  r   rR   r>   r8   r1   rV   rA  r   r_   rB  s           rX   test_simple_underdetz"TestSVD_GESDD.test_simple_underdet  s    	"* 	9M1M)-););=HAq"%accAgs1771:?1771:rxx{3QWW\\BE3q6] #dad#%a%i"na8	9rZ   c                    ddgddgddgg}dD ]  }t        ||| j                        \  }}}t        |j                  |z  t	        |j
                  d                t        |j                  |z  t	        d             t        |j
                  d   |j
                  d   f|j                  j                        }t        t        |            D ]  }||   |||f<    t        ||z  |z  |        y )	NrE   rL   r;  ro   rm   r=  r>  r   rJ  rB  s           rX   test_simple_overdetz!TestSVD_GESDD.test_simple_overdet  s    VaVaV$* 	9M1M)-););=HAq"%accAgs1771:?%bddRiQ81771:rxx{3QWW\\BE3q6] #dad#%a%i"na8	9rZ   c           
         t         j                  j                  d      }d}d}t        d      D ]   }|j                  ||g      |j                  ||g      fD ]  }dD ]  }t	        ||| j
                        \  }}}	t        |j                  |z  t        |j                  d                t        |	|	j                  z  t        |	j                  d                t        |j                  d   |	j                  d   f|j                  j                        }
t        t        |            D ]  }||   |
||f<    t        ||
z  |	z  |         # y )	Nr  r  r   rm   r=  r>  rE   r   )rN   rO   r  r   r   r  r   rR   r>   r8   r1   rV   rA  r_   )ru   rc   rT   mr   rv   r?  r  rC  rD  rE  s              rX   test_randomzTestSVD_GESDD.test_random  s4   ii##D)q 
	AAjj!Q(#**aV*<= 	A%2 AM"1M151C1C EHAq"-accAgs1771:G-b244iRXXa[9IJ!1771:rxx{";QWW\\JE"3q6] +&'dad+-a%i"na@A	A
	ArZ   c                 :   g dg dg dg}dD ]
  }t        ||| j                        \  }}}t        |j                         j                  |z  t        |j                  d                t        |j                         j                  |z  t        |j                  d                t        |j                  d   |j                  d   f|j                  j                        }t        t        |            D ]  }||   |||f<    t        ||z  |z  |        y )Nrl   )rE   y               @rm   rn   r=  r>  rE   r   )r   r  r   rQ   rR   r>   r8   r1   rV   rA  r   r_   rB  s           rX   r   z!TestSVD_GESDD.test_simple_complex  s    
I.* 	9M1M)-););=HAq"%affhjj1nc!''!*oF%bggikkB&6BHHQK8HI1771:rxx{3QWW\\BE3q6] #dad#%a%i"na8	9rZ   c           
         t         j                  j                  d      }d}d}t        d      D ]+  }dD ]"  }|j                  ||g      |j                  ||g      fD ]  }|d|j                  t	        |j
                              z  z   }t        ||| j                        \  }}}	t        |j                         j                  |z  t        |j
                  d                t        |j
                  d   |	j
                  d	   f|j                  j                        }
t        t        |            D ]  }||   |
||f<    t        ||
z  |	z  |        % . y )
Nr  r  r   rm   r=  rK   r>  rE   r   )rN   rO   r  r   listr8   r   r  r   rQ   rR   r>   r1   rV   rA  r_   )ru   rc   rT   rO  r   r?  rv   r  rC  rD  rE  s              rX   test_random_complexz!TestSVD_GESDD.test_random_complex  s@   ii##D)q 	AA!. A**aV,cjj!Q.@A AABszz$qww-888A"1M151C1C EHAq"-affhjj1n.1!''!*o?
 "1771:rxx{";QWW\\JE"3q6] +&'dad+-a%i"na@AA	ArZ   c                 H   t         j                  j                  d      }g d}|D ]z  }t         j                  t         j                  t         j
                  t         j                  fD ]7  } |j                  | j                  |      }t        || j                         9 | y )Nr  ))r   r   )r   2   )<   r  r  )rN   rO   r  r3   r   r4   r   rP   rS   r   r  )ru   rc   sizesszr   rv   s         rX   test_crash_1580zTestSVD_GESDD.test_crash_1580  s|    ii##D)/ 	9Bzz2::r||R]]K 9CHHbM((,AT%7%789	9rZ   c                    g dg dg dg}t        |d| j                        \  }}}t        |j                  |z  t	        d             t        |j                  |z  t	        d             t        |j                  d   |j                  d   f|j                  j                        }t        t        |            D ]  }||   |||f<    t        ||z  |z  |       y )Nrl   r<  rn   F)r   r  rm   r   r@  )ru   rv   r  rC  rD  rE  r   s          rX   r  zTestSVD_GESDD.test_check_finite  s    
I.quD<N<NO1b!!##'3q62!"$$)SV4qwwqz288A;/>s1v 	AA$E!Q$K	!!e)b.!4rZ   c                 t    t        j                  g dg dg dg dg      }t        || j                         y )N)K}\UU?vWUU?r]  r   r   r   )r   r]  r^  r]  r   r   )r   r   r]  r^  r]  r   )r   r   r   r]  r^  r]  r  )rN   r,   r   r  )ru   r   s     rX   test_gh_5039zTestSVD_GESDD.test_gh_5039  s6     HH====?@
 	AT//0rZ   z64-bit LAPACK requiredreasonc                     t        d       t        j                  ddgt        j                        }d|d<   t	        |d      \  }}}t        |d	   d
       t        |d   |d   z  d
       y )NihB  free_mbrE   l        r   r  Fr?  r   rj  r   )rA   rN   r1   r3   r   r   )ru   rW   r  rC  rD  s        rX   test_large_matrixzTestSVD_GESDD.test_large_matrix  sd     	%(HHaZrzz2%q.1b!c"$"U)+S1rZ   rO  r   rE   rL   rT   rV   c                    t        j                  ||f|      }t        ||      }|j                  j                  }|dv r|j                         n|}t        |      \  }}	}
t        |j                  ||f       t        |j                  |       t        |	j                  |f       t        |	j                  t        j                  |             t        |
j                  ||f       t        |
j                  |       t        |d      \  }}	}
t        |j                  ||f       t        |j                  |       t        |	j                  |f       t        |	j                  t        j                  |             t        |
j                  ||f       t        |
j                  |       t        |d      }	t        |	j                  |f       t        |	j                  t        j                  |             y )Nr   FDFre  
compute_uv)	rN   r1   minrV   rA  lowerr   r   r8   )ru   rO  rT   rV   rv   r  dchar
real_dcharr  rC  rf   s              rX   test_shape_dtypezTestSVD_GESDD.test_shape_dtype  se    HHaV5)1I&+tmU[[]
a&1aQWWq!f%QWWe$QWWqd#QWWbhhz23QWWq!f%QWWe$au-1aQWWq!f%QWWe$QWWqd#QWWbhhz23QWWq!f%QWWe$e$QWWqd#QWWbhhz23rZ   r   rO  rT   r   r   r   c                    t        j                  d|      }t        |      \  }}}t        j                  ||f|      }t        |      \  }	}
}t	        |	t        j
                  |             t	        |
t        j                  d             t	        |t        j
                  |             |	j                  |j                  k(  sJ |j                  |j                  k(  sJ |
j                  |j                  k(  sJ t        |d      \  }	}
}t	        |	t        j                  |df             t	        |
t        j                  d             t	        |t        j                  d|f             |	j                  |j                  k(  sJ |j                  |j                  k(  sJ |
j                  |j                  k(  sJ t        |d      }
t	        |
t        j                  d             |
j                  |j                  k(  sJ y )Nrm   r   r   Fre  r   rj  )rN   r>   r   r   r   identityrV   )ru   r   rO  rT   a0u0s0r   rv   r  rC  rf   s               rX   r   zTestSVD_GESDD.test_empty  s    VVAR W
BHHaV2&a&1a2;;q>*288D>*2;;q>*ww"(("""ww"(("""ww"(("""au-1a288QF+,288D>*288QF+,ww"(("""ww"(("""ww"(("""e$288D>*ww"(("""rZ   rD  rE  rF  rG  rH  rL   rm   rI  TFr?  mn)rm   ro   )ro   rm   c                    |\  }}t        j                  ||z        j                  ||      }	|	j                  ||      }	|dk(  rt        j                  |	d|	z  g      }	|	j                         }
t        |	| j                  ||d      \  }}}|rt        |||      }nQ|dk(  rt        j                  |      }n6t        j                  |D cg c]  }t        j                  |       c}      }t        ||z  |z  |
d       |xr5 |	j                  t        k7  xr  |	j                  dk(  xr |	j                  d   }|	|
k(  j                         |k7  sJ y c c}w )	NrK  rm   rL   T)r  r?  rI  rk  -q=r+  rM  )rN   r2   r  rS   rN  r{   r   r  r   r-   r   rV   r^   rH  rO  r   )ru   rD  rE  rH  rI  r?  rx  rO  rT   rv   rP  r  rC  rD  diag_sr  rQ  s                    rX   test_overwritezTestSVD_GESDD.test_overwrite9  sE    1IIacN""1a(HH4uH-19!QqS"A,,'#
1b Q1%Fqyq"9!2771:"9:F
RU;  $WW^$VVq[$ GGN#	 	 U
!Y... #:s   EN) r   r   r   r  r  ry   rG  rK  rM  rP  r   rT  rZ  r  r_  r   r   skipifrB   slowrf  r   r  rp  r^   r   rN   r3   r   r4   r   r|  r   rZ   rX   r8  r8  j  s   MD
9
9	9
9A 
9A(951" [[I.FG[[2  H2 [[S),[[S),[[Wf-4 . - -44 [[TC

GR\\#RS[[Z)AB# C T#8 [[Vc5'%:;[[WsCj1[[VaV,[[]T5M:[[_tUm<[[TFF#34%/ 5 = ; - 2 <%/rZ   r8  c                       e Zd ZdZy)TestSVD_GESVDgesvdN)r   r   r   r  r   rZ   rX   r  r  g  s    MrZ   r  zout of memory in WASMr`  z#out of memory in 32-bit CI workflowrL   ri  zdoes not fail; is too slowc                      t        d       t        j                  dt        j                        } t	        t
              5  t        |        d d d        y # 1 sw Y   y xY w)Ni8J  rc  )i  i  r   )rA   rN   r   r   r  r  r   )dfs    rX   test_svd_gesdd_nosegfaultr  m  sD     f%	ww}BJJ/B	z	" B  s   AAc                      t        j                  d      } t         j                  | d<   t        j                  t
        d      5  t        | d       d d d        y # 1 sw Y   y xY w)NrL   r   NaN)matchFr   )rN   r>   nanr   r	   r  r   rW   s    rX   test_gesdd_nan_error_messager  {  sI    
q	AffAdG	z	/ #AE"# # #s   AA$c                       e Zd Zej                  j                  deeej                  e
ej                  g      d        Zd Zd Zd Zd Zd Zd Zd	 Zej                  j(                  d
        Zy)TestSVDValsr   c                 ^   g gt        j                  d      t        j                  d      fD ]~  }t        j                  ||      }t	        |      }t        |t        j                  d             t	        t        j                  d|            }|j                  |j                  k(  r~J  y )Nr   r   rm   r   r   rL   )rN   r   r   r,   r   r   r>   rV   )ru   r   rv   rC  rw  s        rX   r   zTestSVDVals.test_empty  s    rxx'8 	'A"%A
ABHHQK(,-B77bhh&&&	'rZ   c                     g dg dg dg}t        |      }t        t        |      dk(         t        |d   |d   cxk\  xr |d   k\         y c        y )Nrl   rn   rm   r   rE   rL   r   r   r_   ru   rv   rC  s      rX   ry   zTestSVDVals.test_simple  sK    	9-AJA!!!$!$%$%rZ   c                     g dg dg}t        |      }t        t        |      dk(         t        |d   |d   k\         y )Nrl   rI  rL   r   rE   r  r  s      rX   rK  z TestSVDVals.test_simple_underdet  s9    	"AJA!!!rZ   c                     ddgddgddgg}t        |      }t        t        |      dk(         t        |d   |d   k\         y )NrE   rL   r;  ro   rm   r   r  r  s      rX   rM  zTestSVDVals.test_simple_overdet  sG    VaVaV$AJA!!!rZ   c                     g dg dg dg}t        |      }t        t        |      dk(         t        |d   |d   cxk\  xr |d   k\         y c        y )Nrl   )rE   r                @rn   rm   r   rE   rL   r  r  s      rX   r   zTestSVDVals.test_simple_complex  sK    Y/AJA!!!$!$%$%rZ   c                     g dg dg}t        |      }t        t        |      dk(         t        |d   |d   k\         y )Nrl   )r;  y              @rp   rL   r   rE   r  r  s      rX   test_simple_underdet_complexz(TestSVDVals.test_simple_underdet_complex  s9    
#AJA!!!rZ   c                     ddgddgddgg}t        |      }t        t        |      dk(         t        |d   |d   k\         y )NrE   rL   r;  ro   r  r   r  r  s      rX   test_simple_overdet_complexz'TestSVDVals.test_simple_overdet_complex  sG    VaVb!W%AJA!!!rZ   c                     g dg dg dg}t        |d      }t        t        |      dk(         t        |d   |d   cxk\  xr |d   k\         y c        y )	Nrl   rn   Fr   rm   r   rE   rL   r  r  s      rX   r  zTestSVDVals.test_check_finite  sN    	9-AE*A!!!$!$%$%rZ   c                 z    t         j                  j                  d      }|j                  d      }t        |       y )Nr  )i  i
  )rN   rO   r<  r   )ru   rc   rv   s      rX   test_crash_2609zTestSVDVals.test_crash_2609  s+    ii##D)JJ|$
rZ   N)r   r   r   r   r   r   r^   r   rN   r3   r   r4   r   ry   rK  rM  r   r  r  r  r~  r  r   rZ   rX   r  r    sz    [[TC

GR\\#RS' T'&&& [[ rZ   r  c                       e Zd Zd Zy)TestDiagSVDc                 H    t        t        g ddd      g dg dg dg       y )NrE   r   r   rm   r   )r   r   rf  s    rX   ry   zTestDiagSVD.test_simple  s     !')Q":#,i"C	ErZ   N)r   r   r   ry   r   rZ   rX   r  r    s    ErZ   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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)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6e7jp                  js                  d5g d6      e7jp                  js                  d7g d6      e7jp                  js                  d8d9d:g      e7jp                  js                  d;e:      d<                             Z;e7jp                  js                  d=g d>      d?        Z<d@ Z=e7jp                  js                  d8d:d9g      e7jp                  js                  dAg dB      e7jp                  js                  d;e:      dC                      Z>dD Z?e7jp                  js                  d;e:      dE        Z@eAe7jp                  js                  d;eBeCg      e7jp                  js                  dFg dG      e7jp                  js                  d8d:d9g      e7jp                  js                  dHdIdJg      e7jp                  js                  dAg dK      dL                                           ZDyM)NTestQRc                     g dg dg dg}t        |      \  }}t        |j                  |z  t        d             t        ||z  |       y N   rL   rm   rL   rq   rm   ro   rm   rp   rm   r   r   rR   r>   ru   rv   qrs       rX   ry   zTestQR.test_simple  s?    	9-!u1!!##'3q62!!a%+rZ   c                     g dg dg dg}t        |      \  }}g d}t        ||d      \  }}t        ||z  |       t        ||       t        |t        d      d      \  }}t        ||       y )Nr  r  r  rl   r   rm   r   r   r   r>   ru   rv   r  r  cqcr2s          rX   test_simple_leftzTestQR.test_simple_left  sj    	9-!u1Q6*B!!a%,!!R(QA/B!!R(rZ   c                     g dg dg dg}t        |      \  }}g d}t        ||      \  }}t        ||z  |       t        ||       t        |t        d            \  }}t        ||       y )Nr  r  r  rl   rm   r  r  s          rX   test_simple_rightzTestQR.test_simple_right  sf    	9-!u1Q"B!!a%,!!R(As1v&A!!R(rZ   c                    t        j                  g dg dg dg      }t        |d      \  }}}t        t	        |            }t        t        j                  |dd  |d d k               t        |j                  |z  t        d             t        ||z  |d d |f          t        |d d |f         \  }}t        ||       t        ||       y )	Nr  r  r  TpivotingrE   r   rm   
rN   r;   r   r   r-   r   r   r   rR   r>   ru   rv   r  r  pre   q2r  s           rX   test_simple_pivotingzTestQR.test_simple_pivoting  s    JJ	9i89Q&1aQLqu#2'(!!##'3q62!!a%1a41AadGB!!R(!!R(rZ   c                     g dg dg dg}t        |d      \  }}}g d}t        ||dd      \  }}}t        ||z  |       y )Nr  r  r  Tr  rl   r   r   r   r   ru   rv   r  r  jpvtr  r  s          rX   test_simple_left_pivotingz TestQR.test_simple_left_pivoting  sI    	9-D)
1d!!Q5At!!a%,rZ   c                     g dg dg dg}t        |d      \  }}}g d}t        ||d      \  }}}t        ||z  |       y )Nr  r  r  Tr  rl   r  r  s          rX   test_simple_right_pivotingz!TestQR.test_simple_right_pivoting  sG    	9-D)
1d!!Q6At!!a%,rZ   c                     g dg dg}t        |      \  }}t        |j                  |z  t        d             t        ||z  |       y )Nr  r  rL   r  r  s       rX   test_simple_trapzTestQR.test_simple_trap  =    	"!u1!!##'3q62!!a%+rZ   c                    t        j                  g dg dg      }t        |d      \  }}}t        t	        |            }t        t        j                  |dd  |d d k               t        |j                  |z  t        d             t        ||z  |d d |f          t        |d d |f         \  }}t        ||       t        ||       y )Nr  r  Tr  rE   r   rL   r  r  s           rX   test_simple_trap_pivotingz TestQR.test_simple_trap_pivoting  s    JJ	9-.Q&1aQLqu#2'(!!##'3q62!!a%1a41AadGB!!R(!!R(rZ   c                     ddgddgddgg}t        |      \  }}t        |j                  |z  t        d             t        ||z  |       y Nr  rL   rq   ro   rm   r  r  s       rX   test_simple_tallzTestQR.test_simple_tall  sK    VaVaV$!u1!!##'3q62!!a%+rZ   c                    t        j                  ddgddgddgg      }t        |d      \  }}}t        t	        |            }t        t        j                  |dd  |d d	 k               t        |j                  |z  t        d             t        ||z  |d d |f          t        |d d |f         \  }}t        ||       t        ||       y )
Nr  rL   rq   ro   rm   Tr  rE   r   r  r  s           rX   test_simple_tall_pivotingz TestQR.test_simple_tall_pivoting  s    JJAAA/0Q&1aQLqu#2'(!!##'3q62!!a%1a41AadGB!!R(!!R(rZ   c                     ddgddgddgg}t        |d      \  }}t        |j                  |z  t        d             t        ||z  |       t	        |j
                  d       t	        |j
                  d	       y )
Nr  rL   rq   ro   rm   economicmoder:  rL   rL   r   r   rR   r>   r   r8   r  s       rX   test_simple_tall_ezTestQR.test_simple_tall_e  sj    VaVaV$!*%1!!##'3q62!!a%+QWWf%QWWf%rZ   c                    t        j                  ddgddgddgg      }t        |dd      \  }}}t        t	        |            }t        t        j                  |d	d  |d d
 k               t        |j                  |z  t        d             t        ||z  |d d |f          t        |d d |f   d      \  }}t        ||       t        ||       y )Nr  rL   rq   ro   rm   Tr  r  r  rE   r   r  r  r  s           rX   test_simple_tall_e_pivotingz"TestQR.test_simple_tall_e_pivoting(  s    JJAAA/0QJ71aQLqu#2'(!!##'3q62!!a%1a41AadG*-B!!R(!!R(rZ   c                 D   ddgddgddgg}t        |d      \  }}ddg}t        ||d	      \  }}t        ||z  |       t        ||       t        g d
      }t        ||d	d      \  }}t        ||d d z  |       t        |t	        d      d	      \  }}t        ||       y )Nr  rL   rq   ro   rm   r  r  rE   r   rE   rL   r   Toverwrite_cr   r   r   r,   r>   r  s          rX   test_simple_tall_leftzTestQR.test_simple_tall_left4  s    VaVaV$!*%1FQ6*B!!a%,!!R()Q6t<B!!ae)R0As1vv.A!"a(rZ   c                     ddgddgddgg}t        |dd      \  }}}d	dg}t        ||d
d      \  }}}t        ||       t        ||z  |       t        |t	        d      d
d      \  }}}t        ||       y )Nr  rL   rq   ro   rm   r  Tr  r  rE   r   )r   r   r   r   r>   )ru   rv   r  r  r  r  r  kpvts           rX   test_simple_tall_left_pivotingz%TestQR.test_simple_tall_left_pivotingA  s    VaVaV$
T:
1dF!!Q5At4&!!a%,!!SVVT:At!"a(rZ   c                     ddgddgddgg}t        |d      \  }}g d}t        ||      \  }}t        ||z  |       t        ||       t        |t        d            \  }}t        ||       y )	Nr  rL   rq   ro   rm   r  r  rl   r  ru   rv   r  r  r  cqr  s          rX   test_simple_tall_rightzTestQR.test_simple_tall_rightK  su    VaVaV$!*%1Q"B!!a%,!!R(As1v&A!"a(rZ   c                     ddgddgddgg}t        |dd      \  }}}g d	}t        ||d
      \  }}}t        ||z  |       t        |t        d      d
      \  }}}t        ||       y )Nr  rL   rq   ro   rm   Tr  r  rl   r  r  ru   rv   r  r  r  r  r  s          rX   test_simple_tall_right_pivotingz&TestQR.test_simple_tall_right_pivotingU  sw    VaVaV$Dz:
1d!!Q6At!!a%,!!SVd;At!"a(rZ   c                     g dg dg}t        |      \  }}t        |j                  |z  t        d             t        ||z  |       t	        |j
                  d       t	        |j
                  d       y )Nr  rL   ro   r  rL   r  rL   rm   r  r  s       rX   test_simple_fatzTestQR.test_simple_fat^  sY    	"!u1!!##'3q62!!a%+QWWf%QWWf%rZ   c                    t        j                  g dg dg      }t        |d      \  }}}t        t	        |            }t        t        j                  |dd  |d d k               t        |j                  |z  t        d             t        ||z  |d d |f          t        |j                  d       t        |j                  d	       t        |d d |f         \  }}t        ||       t        ||       y )
Nr  r  Tr  rE   r   rL   r  r  rN   r;   r   r   r-   r   r   r   rR   r>   r   r8   r  s           rX   test_simple_fat_pivotingzTestQR.test_simple_fat_pivotingg  s    JJ	9-.Q&1aQLqu#2'(!!##'3q62!!a%1a41QWWf%QWWf%AadGB!!R(!!R(rZ   c                     g dg dg}t        |d      \  }}t        |j                  |z  t        d             t        ||z  |       t	        |j
                  d       t	        |j
                  d       y )Nr  rL   rq   ro   r  r  rL   r  r  r  r  s       rX   test_simple_fat_ezTestQR.test_simple_fat_eu  s\    	"!*%1!!##'3q62!!a%+QWWf%QWWf%rZ   c                    t        j                  g dg dg      }t        |dd      \  }}}t        t	        |            }t        t        j                  |dd  |d d k               t        |j                  |z  t        d             t        ||z  |d d |f          t        |j                  d	       t        |j                  d
       t        |d d |f   d      \  }}t        ||       t        ||       y )Nr  r  Tr  r  rE   r   rL   r  r  r  r  r  s           rX   test_simple_fat_e_pivotingz!TestQR.test_simple_fat_e_pivoting~  s    JJ	9-.QJ71aQLqu#2'(!!##'3q62!!a%1a41QWWf%QWWf%AadG*-B!!R(!!R(rZ   c                     g dg dg}t        |d      \  }}ddg}t        ||d      \  }}t        ||z  |       t        ||       t        |t        d      d      \  }}t        ||       y )Nr  r  r  r  rE   rL   r   r  r  s          rX   test_simple_fat_leftzTestQR.test_simple_fat_left  so    	"!*%1FQ6*B!!a%,!!R(As1vv.A!"a(rZ   c                     g dg dg}t        |dd      \  }}}ddg}t        ||dd      \  }}}t        ||z  |       t        |t        d      dd      \  }}}t        ||       y )	Nr  r  r  Tr  rE   rL   r   r  r  s          rX   test_simple_fat_left_pivotingz$TestQR.test_simple_fat_left_pivoting  sq    	"
T:
1dF!!Q5At!!a%,!!SVVT:At!"a(rZ   c                     g dg dg}t        |d      \  }}ddg}t        ||      \  }}t        ||z  |       t        ||       t        |t        d            \  }}t        ||       y )Nr  r  r  r  rE   rL   r  r  s          rX   test_simple_fat_rightzTestQR.test_simple_fat_right  sk    	"!*%1FQ"B!!a%,!!R(As1v&A!"a(rZ   c                     g dg dg}t        |dd      \  }}}ddg}t        ||d      \  }}}t        ||z  |       t        |t        d      d      \  }}}t        ||       y )	Nr  r  Tr  r  rE   rL   r  r  r  s          rX   test_simple_fat_right_pivotingz%TestQR.test_simple_fat_right_pivoting  sm    	"Dz:
1dF!!Q6At!!a%,!!SVd;At!"a(rZ   c                     g dg dg dg}t        |      \  }}t        |j                         j                  |z  t	        d             t        ||z  |       y Nrm         @      @ro   ro   rL   y       @      @rm   rL   r  rm   )r   r   rQ   rR   r>   r  s       rX   r   zTestQR.test_simple_complex  sE    <3!u1!!&&(**q.#a&9!!a%+rZ   c                     g dg dg dg}t        |      \  }}g d}t        ||d      \  }}t        ||z  |       t        |t        d      d      \  }}t        ||       y )Nr   r  r  rE   rL   r  r   rm   r  ru   rv   r  r  r  r  s         rX   test_simple_complex_leftzTestQR.test_simple_complex_left  s`    <3!u1Aq&)A!!a%,As1vv.A!!R(rZ   c                     g dg dg dg}t        |      \  }}g d}t        ||      \  }}t        ||z  |       t        |t        d            \  }}t        ||       y )Nr   r  r  r  rm   r  r  s         rX   test_simple_complex_rightz TestQR.test_simple_complex_right  s\    <3!u1Aq!A!!a%,As1v&A!!R(rZ   c                 D   ddgddgddgg}t        |d      \  }}d	d
g}t        ||d      \  }}t        ||z  |       t        ||       t        g d      }t        ||dd      \  }}t        ||d d z  |       t        |t	        d      d      \  }}t        ||       y )Nr  y       @      @rL   rq   y      @      @rm   r  r  rE          @       @r   r  Tr  r  r  s          rX   test_simple_tall_complex_leftz$TestQR.test_simple_tall_complex_left  s    YAq	*!*%1IQ6*B!!a%,!!R()Q6t<B!!ae)R0As1vv.A!"a(rZ   c                     g dg dg dg}t        |      \  }}g d}t        ||dd      \  }}t        |j                         |z  |       y )Nr   r  r  r  r   T	conjugater   r   r   rQ   r  s         rX   "test_simple_complex_left_conjugatez)TestQR.test_simple_complex_left_conjugate  sH    <3!u1Aq&D9A!!&&(Q,3rZ   c                     ddgddgddgg}t        |d      \  }}ddg}t        ||d	d
      \  }}t        |j                         |z  |       y )Nrm   r  ro   r  rL   r  r  rE   r   Tr  r  r  s         rX   'test_simple_complex_tall_left_conjugatez.TestQR.test_simple_complex_tall_left_conjugate  s[    YD	Aq6*!*%1IAq&D9A!!&&(Q,3rZ   c                     g dg dg dg}t        |      \  }}t        j                  g d      }t        ||d      \  }}t	        ||j                         z  |       y )Nr   r  r  r  Tr  )r   rN   r,   r   r   rQ   r  s         rX   #test_simple_complex_right_conjugatez*TestQR.test_simple_complex_right_conjugate  sO    <3!u1HH\"AqD1A!!affh,3rZ   c                    t        g dg dg dg      }t        |d      \  }}}t        t        |            }t	        t        j                  |dd  |d d k               t        |j                         j                  |z  t        d             t        ||z  |d d |f          t        |d d |f         \  }}t        ||       t        ||       y )	Nr   r  r  Tr  rE   r   rm   )r,   r   r   r-   r   rN   r   r   rQ   rR   r>   r  s           rX   test_simple_complex_pivotingz#TestQR.test_simple_complex_pivoting  s    <y9:Q&1aQLqu#2'(!!&&(**q.#a&9!!a%1a41AadGB!!R(!!R(rZ   c                     t        g dg dg dg      }t        |d      \  }}}g d}t        ||dd      \  }}}t        ||z  |       y )Nr   r  r  Tr  r  r   r,   r   r   r   r  s          rX   !test_simple_complex_left_pivotingz(TestQR.test_simple_complex_left_pivoting  sN    <y9:D)
1d!!Q5At!!a%,rZ   c                     t        g dg dg dg      }t        |d      \  }}}g d}t        ||d      \  }}}t        ||z  |       y )Nr   r  r  Tr  r  r  r  s          rX   "test_simple_complex_right_pivotingz)TestQR.test_simple_complex_right_pivoting  sL    <y9:D)
1d!!Q6At!!a%,rZ   c                 
   t         j                  j                  d      }d}t        d      D ]T  }|j                  ||g      }t	        |      \  }}t        |j                  |z  t        |             t        ||z  |       V y Nr  r  rL   rN   rO   r  r   r   r   rR   r>   ru   rc   rT   r  rv   r  r  s          rX   rP  zTestQR.test_random  sq    ii##D)q 	0A

Aq6"Aa5DAq%accAgs1v6%a!eQ/		0rZ   c                 T   t         j                  j                  d      }d}t        d      D ]y  }|j                  ||g      }t	        |      \  }}|j                  |g      }t        ||d      \  }}t        ||z  |       t        |t        |      d      \  }}t        ||       { y )Nr  r  rL   r   rN   rO   r  r   r   r   r   r>   	ru   rc   rT   r  rv   r  r  r  r  s	            rX   test_random_leftzTestQR.test_random_left  s    ii##D)q 	-A

Aq6"Aa5DAq

A3A1f-EB%a!eR03q662EB%a,	-rZ   c                 P   t         j                  j                  d      }d}t        d      D ]w  }|j                  ||g      }t	        |      \  }}|j                  |g      }t        ||      \  }}t        ||z  |       t        |t        |            \  }}t        ||       y y r  r"  	ru   rc   rT   r  rv   r  r  r  r  s	            rX   test_random_rightzTestQR.test_random_right  s    ii##D)q 	-A

Aq6"Aa5DAq

A3A1%EB%a!eR03q6*EB%a,	-rZ   c           	         t         j                  j                  d      }d}t        d      D ]  }|j                  ||g      }t	        |d      \  }}}t        t        |            }t        t        j                  |dd  |d d k               t        |j                  |z  t        |             t        ||z  |d d |f          t	        |d d |f         \  }	}
t        ||	       t        ||
        y )Nr  r  rL   Tr  rE   r   rN   rO   r  r   r   r   r-   r   r   r   rR   r>   ru   rc   rT   r  rv   r  r  r  re   r  r  s              rX   test_random_pivotingzTestQR.test_random_pivoting&  s    ii##D)q 		-A

Aq6"AT*GAq!DGABFF1QR5AcrF?+,%accAgs1v6%a!eQq!tW5!Q$[FB%a,%a,		-rZ   c                    t         j                  j                  d      }d}d}t        d      D ]T  }|j                  ||g      }t	        |      \  }}t        |j                  |z  t        |             t        ||z  |       V y Nr     r  rL   r  ru   rc   rO  rT   r  rv   r  r  s           rX   test_random_tallzTestQR.test_random_tall4  sv    ii##D)q 	0A

Aq6"Aa5DAq%accAgs1v6%a!eQ/		0rZ   c                 \   t         j                  j                  d      }d}d}t        d      D ]{  }|j                  ||g      }t	        |d      \  }}|j                  |g      }t        ||d      \  }	}t        ||z  |	       t        |t        |      d      \  }	}t        |	|       } y )Nr  r.  r  rL   r  r  r   r"  )
ru   rc   rO  rT   r  rv   r  r  r  r  s
             rX   test_random_tall_leftzTestQR.test_random_tall_left?  s    ii##D)q 	-A

Aq6"Aaj)DAq

A3A1f-EB%a!eR03q662EB%b!,	-rZ   c                 X   t         j                  j                  d      }d}d}t        d      D ]y  }|j                  ||g      }t	        |d      \  }}|j                  |g      }t        ||      \  }	}t        ||z  |	       t        |t        |            \  }	}t        |	|       { y Nr  r.  r  rL   r  r  r"  )
ru   rc   rO  rT   r  rv   r  r  r  r  s
             rX   test_random_tall_rightzTestQR.test_random_tall_rightM  s    ii##D)q 	-A

Aq6"Aaj)DAq

A3A1%EB%a!eR03q6*EB%b!,	-rZ   c           	         t         j                  j                  d      }d}d}t        d      D ]  }|j                  ||g      }t	        |d      \  }}}t        t        |            }	t        t        j                  |	dd  |	d d k               t        |j                  |z  t        |             t        ||z  |d d |f          t	        |d d |f         \  }
}t        ||
       t        ||        y )	Nr  r.  r  rL   Tr  rE   r   r)  ru   rc   rO  rT   r  rv   r  r  r  re   r  r  s               rX   test_random_tall_pivotingz TestQR.test_random_tall_pivoting[  s    ii##D)q 		-A

Aq6"AT*GAq!DGABFF1QR5AcrF?+,%accAgs1v6%a!eQq!tW5!Q$[FB%a,%a,		-rZ   c                 r   t         j                  j                  d      }d}d}t        d      D ]  }|j                  ||g      }t	        |d      \  }}t        |j                  |z  t        |             t        ||z  |       t        |j                  ||f       t        |j                  ||f        y r4  )
rN   rO   r  r   r   r   rR   r>   r   r8   r/  s           rX   test_random_tall_ezTestQR.test_random_tall_ek  s    ii##D)q 	*A

Aq6"Aaj)DAq%accAgs1v6%a!eQ/1a&)1a&)	*rZ   c           	      X   t         j                  j                  d      }d}d}t        d      D ]  }|j                  ||g      }t	        |dd      \  }}}t        t        |            }	t        t        j                  |	dd  |	d d	 k               t        |j                  |z  t        |             t        ||z  |d d |f          t        |j                  ||f       t        |j                  ||f       t	        |d d |f   d
      \  }
}t        ||
       t        ||        y )Nr  r.  r  rL   Tr  r  rE   r   r  )rN   rO   r  r   r   r   r-   r   r   r   rR   r>   r   r8   r7  s               rX   test_random_tall_e_pivotingz"TestQR.test_random_tall_e_pivotingx  s   ii##D)q 	-A

Aq6"AT
;GAq!DGABFF1QR5AcrF?+,%accAgs1v6%a!eQq!tW51a&)1a&)!Q$j1FB%a,%a,	-rZ   c                    t         j                  j                  d      }d}d}t        d      D ]T  }|j                  ||g      }t	        |      \  }}t        |j                  |z  t        |             t        ||z  |       V y Nr  r  r.  rL   r  r/  s           rX   test_random_trapzTestQR.test_random_trap  sv    ii##D)q 	0A

Aq6"Aa5DAq%accAgs1v6%a!eQ/		0rZ   c           	         t         j                  j                  d      }d}d}t        d      D ]  }|j                  ||g      }t	        |d      \  }}}t        t        |            }	t        t        j                  |	dd  |	d d k               t        |j                  |z  t        |             t        ||z  |d d |f          t	        |d d |f         \  }
}t        ||
       t        ||        y )	Nr  r  r.  rL   Tr  rE   r   r)  r7  s               rX   test_random_trap_pivotingz TestQR.test_random_trap_pivoting  s    ii##D)q 		-A

Aq6"AT*GAq!DGABFF1QR5AcrF?+,%accAgs1v6%a!eQq!tW5!Q$[FB%a,%a,		-rZ   c                 T   t         j                  j                  d      }d}t        d      D ]y  }|j                  ||g      d|j                  ||g      z  z   }t	        |      \  }}t        |j                         j                  |z  t        |             t        ||z  |       { y Nr  r  rL   rK   )	rN   rO   r  r   r   r   rQ   rR   r>   r   s          rX   rT  zTestQR.test_random_complex  s    ii##D)q 	0A

Aq6"R

Aq6(:%::Aa5DAq%affhjj1nc!f=%a!eQ/		0rZ   c                    t         j                  j                  d      }d}t        d      D ]  }|j                  ||g      d|j                  ||g      z  z   }t	        |      \  }}|j                  |g      d|j                  |g      z  z   }t        ||d      \  }}t        ||z  |       t        |t        |      d      \  }}t        ||        y )Nr  r  rL   rK   r   r"  r#  s	            rX   test_random_complex_leftzTestQR.test_random_complex_left  s    ii##D)q 	-A

Aq6"R

Aq6(:%::Aa5DAq

A3"SZZ_"44A1f-EB%a!eR03q662EB%a,	-rZ   c                    t         j                  j                  d      }d}t        d      D ]  }|j                  ||g      d|j                  ||g      z  z   }t	        |      \  }}|j                  |g      d|j                  |g      z  z   }t        ||      \  }}t        ||z  |       t        |t        |            \  }}t        ||        y rC  r"  r&  s	            rX   test_random_complex_rightz TestQR.test_random_complex_right  s    ii##D)q 	-A

Aq6"R

Aq6(:%::Aa5DAq

A3"SZZ_"44A1%EB%a!eR03q6*EB%a,	-rZ   c           	      8   t         j                  j                  d      }d}t        d      D ]  }|j                  ||g      d|j                  ||g      z  z   }t	        |d      \  }}}t        t        |            }t        t        j                  |dd  |d d k               t        |j                         j                  |z  t        |             t        ||z  |d d |f          t	        |d d |f         \  }	}
t        ||	       t        ||
        y )	Nr  r  rL   rK   Tr  rE   r   )rN   rO   r  r   r   r   r-   r   r   r   rQ   rR   r>   r*  s              rX   test_random_complex_pivotingz#TestQR.test_random_complex_pivoting  s    ii##D)q 		-A

Aq6"R

Aq6(:%::AT*GAq!DGABFF1QR5AcrF?+,%affhjj1nc!f=%a!eQq!tW5!Q$[FB%a,%a,		-rZ   c                     g dg dg dg}t        |d      \  }}t        |j                  |z  t        d             t        ||z  |       y Nr  r  r  Fr   rm   r  r  s       rX   r  zTestQR.test_check_finite  sB    	9-!%(1!!##'3q62!!a%+rZ   c                 `   g dg dg dg}t        j                  t              5  t        |d       \  }}d d d        t        j                  t              5  t        |d       \  }}t	        |       t	        |       d d d        t        j                  t              5  t        |d      \  }}t	        |       t	        |       d d d        t        j                  t              5  t        |d      \  }}	t	        |       t	        |	       d d d        t        t              5  t        |d       d d d        t        t              5  t        |d       d d d        y # 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   `xY w# 1 sw Y   y xY w)	Nr  r  r  )lworkri  r   r   rL   )r   warnsDeprecationWarningr   r   r  r  )
ru   rv   r  r  r  r  q3r3q4r4s
             rX   
test_lworkzTestQR.test_lwork  sk   	9-\\,- 	%at$DAq	% \\,- 	-&FB%b!,%b!,	- \\,- 	-_FB%b!,%b!,	- \\,- 	-_FB%b!,%b!,	- :& 	qN	 :& 	qN	 	3	% 	%	- 	-	- 	-	- 	-	 		 	sG   E')E4!)F +)F+FF$'E14E= F	FF!$F-rO  rg  rT   r  FTrV   c                 (   t        ||      }t        j                  ||f|      }t        ||      ^}}}	t	        |j
                  ||f       t	        |j                  |       t	        |j
                  ||f       t	        |j                  |       t        |	      |rdndk(  sJ |rU|	\  }
t	        |
j
                  |f       t	        |
j                  t        rt        j                  nt        j                         t        |d|      ^}}	t	        |j
                  ||f       t	        |j                  |       t	        ||       t        |	      |rdndk(  sJ |rU|	\  }
t	        |
j
                  |f       t	        |
j                  t        rt        j                  nt        j                         t        |d|      ^}}}	t	        |j
                  ||f       t	        |j                  |       t	        |j
                  ||f       t	        |j                  |       t        |	      |rdndk(  sJ |rU|	\  }
t	        |
j
                  |f       t	        |
j                  t        rt        j                  nt        j                         t        |d|      ^\  }}}}	t	        |j
                  ||f       t	        |j                  |       t	        |j
                  |f       t	        |j                  |       t	        |j
                  ||f       t	        |j                  |       t        |	      |rdndk(  sJ |rV|	\  }
t	        |
j
                  |f       t	        |
j                  t        rt        j                  nt        j                         y y )	Nr   r  rE   r   r  r  r  raw)rl  rN   r1   r   r   r8   rV   r_   rB   int64int32)ru   rO  rT   r  rV   r  rv   r  r  otherr  r_rrV  taus                 rX   rp  zTestQR.test_shape_dtype  s   
 1IHHaV5)!h/1uQWWq!f%QWWe$QWWq!f%QWWe$5z8a333BA1$'i"((RXXFx8eSYYA'SYY&Q5z8a333BA1$'i"((RXXF!*x@1uQWWq!f%QWWe$QWWq!f%QWWe$5z8a333BA1$'i"((RXXF "158 D
cASYYA'SYY&SYY%SYY&QWWq!f%QWWe$5z8a333BA1$'i"((RXXF rZ   rq  rr  c                    t        ||      }t        j                  ||f      }t        |      \  }}t	        |t        j
                  |             t	        |t        j                  ||f             t        |d      \  }}}t	        |t        j
                  |             t	        |t        j                  ||f             t	        |t        j                  |             t        |d      \  }t	        |t        j                  ||f             t        |d      \  }}t	        |t        j                  ||f             t	        |t        j                  ||f             t        |d      \  \  }}	}t	        |t        j                  ||f             t	        |	t        j                  |f             t	        |t        j                  ||f             y )NTr  r  r  r  rV  )rl  rN   r   r   r   rt  r2   )
ru   rO  rT   r  rv   r  r  r  rV  r[  s
             rX   r   zTestQR.test_empty,  sZ   1IHHaV!u12;;q>*288QF+,Q&1a2;;q>*288QF+,299Q<(_288QF+,!*%1288QF+,288QF+,15)
cARXXq!f-.RXXqd^,288QF+,rZ   c                    t        j                  d      }t        j                  d      }t        ||      \  }}t        |t        j                  d             t        j                  d      }t        j                  d      }t        ||      \  }}t        |t        j                  d             t        j                  d      }t        j                  d      }t        ||      \  }}t        |t        j                  d             y )Nr   r   r   )rN   r   r   r   )ru   rv   r  r  r  s        rX   test_multiply_emptyzTestQR.test_multiply_emptyF  s    HHVHHVAq!ABHHV,-HHVHHVAq!ABHHV,-HHVHHVAq!ABHHV,-rZ   r8   )r  r:  r  r  )rm   r   c                    t         j                  j                  d      }t        |      }|j	                  |      }t        j
                  |t         j                        r|d|j	                  |      z  z   }|j                  |      }t        |d|      ^\  }}}	}
|j                  |k(  sJ |j                  |k(  sJ |j                  |fk(  sJ |j                  |k(  sJ |	j                  ||d   fk(  sJ |	j                  |k(  sJ t        |
      |rdndk(  sJ |rS|
d   }|j                  d   |d   k(  sJ t        r|j                  t         j                  k(  sJ t         j                  sJ t        t        j                   |      d |d d f   |	       |d   dkD  r|d d d |f   }t#        d	|fd
      d   } |||      \  }}}|rt        ||	z  |d d f          nt        ||	z  |       |j$                  dk7  rMt        t        j&                  |j(                        |z  t        j*                  |j                  d                y y y )N90  seedr   rK   rV  r  rE   r   orgqrr  r  )rN   rO   r<  rl  normal
issubdtypecomplexfloatingrS   r   r8   rV   r_   rB   rW  rX  r   triur(   r   rQ   rR   r>   )ru   r8   rV   r  rc   r  rv   q_rawr[  r  rY  r  	or_un_gqrr  _s                  rX   test_rawzTestQR.test_rawV  s)    ii###/JJJEJ"== 2 23B///AHHUO"$QUX"Fa%{{e###{{e###yyQD   yyE!!!wwAuQx=(((ww%5z8a3338D::a=E!H,,,-64::)DDBHHDD!"''%.!Q"7;8a<!RaR%LE(eX[QRSTIs+GAq!)!a%1d7<)!a%3vv{)"''!##,*:BFF1771:<NO  rZ   c                 0   d}t        j                  |t         j                        }t        j                  |d|z  g      }t	        |d      d   d   }|j
                  j                  }|j                  |||z  fk(  sJ |j                  j                  sJ |j                  j                  du sJ t	        |d      d   d   }|j                  ||z  |z  |||z  fk(  sJ |j                  j                  du sJ |j                  j                  du sJ y )Nrm   r   rL   rV  r  r   F)rN   r>   r3   rN  r   rV   itemsizestridesrO  f_contiguousc_contiguous)ru   rT   rv   aar  rp  qqs          rX   test_raw_flagszTestQR.test_raw_flags  s    FF1BJJ'XXq!A#h qua #77##yyXxz2222ww####ww##u,,, "1%zzac(lHhqjAAAAxx$$---ww##u,,,rZ   c                 @   t         j                  j                  d      }|j                  d      }t        j                  |t         j
                        r"|d|j                  |j                        z  z   }|j                  |      }t        |d      \  }}|t         j                  t         j                  fv rdnd	}t        ||z  ||
       t        t        j                  |j                        |z  t        j                  |j                  d         |
       y )Nr`  ra  )i'  rL   rc  rK   r  r  ro   r   decimalrE   )rN   rO   r<  rg  rh  ri  r8   rS   r   r3   r4   r   rQ   rR   r>   )ru   rV   rc   rv   r  r  ry  s          rX   test_smoke_economiczTestQR.test_smoke_economic  s     ii###/JJJJ'== 2 23B111AHHUO!*%1 R\\ ::!!!a%G<!"''!##,"2BFF1771:4FPWXrZ   r  )rV  r  r  r.   rE  rF  rG  ))r;  rm   )rm   r;  )rL   r;  rm   )rL   rm   r;  c                 $   t         j                  j                  d      }|dk(  rKg |d d |d   |d   }|j                  |      j	                  |      }t        j
                  |dd      }n!|j                  |      j	                  |      }t        j                  |      }	t        |f||d|}
|j                  dd	      }|xr t        |      d
k(  xr |dk(  xr |t        u}|dk(  rp|
^\  }}}}|	j                  d
kD  rt        |	j                  d         D ]  }t        d|dd d d d f   fd      d   } |||d d d t        j                  |dd        f   ||d d f         \  }}}|r9|d   }t!        |||d d d d f   z  |	|d d d d f   d d ||d d f   f   d       t!        |||d d d d f   z  |	|d d d d f   d        not        d|fd      d   } ||d d d t        j                  |dd        f   |      \  }}}|r|d   }t!        ||z  |	d d |f   d       nt!        ||z  |	d       |t        j"                  ||      k(  sJ y |dk(  rUt        |	d|      ^}}}t!        |
d   |d       |rt!        |
d   |d          |t        j"                  ||
d         k(  sJ y |dk(  s|dk(  r|r|
d   }|	j                  d
kD  rZt        |	j                  d         D ]>  }t!        |
d   |d d d d f   |
d   |d d d d f   z  |	|   d d ||d d f   f   d       @ n6t!        |
d   |
d   z  |	d d |f   d       nt!        |
d   |
d   z  |	d       |t        j"                  ||
|dk(  rdnd         k(  sJ y y )Nr   ra  rG  r   r   rc  r  rI  FrL   rV  r   rd  r  rf  rz  r+  r  r.   r  rE   )rN   rO   r<  rg  rS   swapaxesr{   r   getr_   r^   rH  r   r8   r(   rl  r   shares_memory)ru   rV   overwrite_kwr  r  rE  r8   rc   rv   rP  outrI  rk  r[  r  rY  r   rl  r  rm  r  r_refs                         rX   test_overwrite_argszTestQR.test_overwrite_args  s    ii###,C< 8eCRj7%)7U2Y7E


&--e4AAr2&A


&--e4A
AALA"&&}e< Z1_c\ 	 	 5=&)#LUC!ezzA~u{{1~. TA 0"U1a7^$5[!!I (a4GRVVE"#J5G4G.G(H#aQRd)TGAq!$Qx'!Q'
NE!Q'N1d1a4j=,IPU (AaAgJaAgUST -Z%UVWX	#E!-@bffU23Z.@-@*@$A3G1a 8D#AE5D>F#AE5u=""2"21e"<<<<S[!%fxHAuuCFE6Bq2""2"21c!f"====Z46> 2w::>"5;;q>2 'F1a7Oc!fQ1Wo=uQx4PQSTPT:?V!& $CFSVOU1d7^%PAQUC ""2"23DJ.qA6#   % $2rZ   N)Er   r   r   ry   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r  r  r  r  r  r  rP  r$  r'  r+  r0  r2  r5  r8  r:  r<  r?  rA  rT  rE  rG  rI  r  rT  r   r   r   r  rp  r   r^  rn  rv  rz  rF   r^   r   r  r   rZ   rX   r  r    s   ,))	)--,	),
)&
)))))&)&))))),)))444	)--0
-
--	0--- *-$0-0
-
--,> [[S),[[S),[[Z%7[[Wf-/G . 8 - -/Gb [[Z)AB- C-2.  [[Z$7[[W&NO[[Wf-%P . P 8%PN-( [[Wf-Y .Y  [[WsEl3[[V%EF[[Z$7[[WsCj1[[W&LMT N 2 8 G 4 TrZ   r  c                   j   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ej"                  j%                  dg d      ej"                  j%                  dg d      ej"                  j%                  de      d                      Zej"                  j%                  dg d      d        Zy)TestRQc                     g dg dg dg}t        |      \  }}t        ||j                  z  t        d             t        ||z  |       y r  r   r   rR   r>   ru   rv   r  r  s       rX   ry   zTestRQ.test_simple	  s?    	9-!u1!!acc'3q62!!a%+rZ   c                 h    g dg dg dg}t        |      \  }}t        |d      }t        ||       y )Nr  r  r  r  r  )r   r   )ru   rv   r  r  r  s        rX   test_rzTestRQ.test_r		  s0    	9-!u1_!!R(rZ   c                 
   t         j                  j                  d      }d}t        d      D ]T  }|j                  ||g      }t	        |      \  }}t        ||j                  z  t        |             t        ||z  |       V y r  rN   rO   r  r   r   r   rR   r>   ru   rc   rT   r  rv   r  r  s          rX   rP  zTestRQ.test_random	  sq    ii##D)q 	0A

Aq6"Aa5DAq%a!##gs1v6%a!eQ/		0rZ   c                     g dg dg}t        |      \  }}t        |j                  |z  t        d             t        ||z  |       y )Nr  r  rm   r  r  s       rX   r  zTestRQ.test_simple_trap	  r  rZ   c                     ddgddgddgg}t        |      \  }}t        |j                  |z  t        d             t        ||z  |       y r  r  r  s       rX   r  zTestRQ.test_simple_tall	  sK    VaVaV$!u1!!##'3q62!!a%+rZ   c                     g dg dg}t        |      \  }}t        ||j                  z  t        d             t        ||z  |       y )Nr  r  rm   r  r  s       rX   r  zTestRQ.test_simple_fat$	  s=    	"!u1!!acc'3q62!!a%+rZ   c                     g dg dg dg}t        |      \  }}t        ||j                         j                  z  t	        d             t        ||z  |       y r  )r   r   rQ   rR   r>   r  s       rX   r   zTestRQ.test_simple_complex*	  sE    <3!u1!!affhjj.#a&9!!a%+rZ   c                    t         j                  j                  d      }d}d}t        d      D ]T  }|j                  ||g      }t	        |      \  }}t        ||j                  z  t        |             t        ||z  |       V y r-  r  ru   rc   rO  rT   r  rv   r  r  s           rX   r0  zTestRQ.test_random_tall0	  v    ii##D)q 	0A

Aq6"Aa5DAq%a!##gs1v6%a!eQ/		0rZ   c                    t         j                  j                  d      }d}d}t        d      D ]T  }|j                  ||g      }t	        |      \  }}t        ||j                  z  t        |             t        ||z  |       V y r>  r  r  s           rX   r?  zTestRQ.test_random_trap:	  r  rZ   c                 r   t         j                  j                  d      }d}d}t        d      D ]  }|j                  ||g      }t	        |d      \  }}t        ||j                  z  t        |             t        ||z  |       t        |j                  ||f       t        |j                  ||f        y )Nr  r  r.  rL   r  r  )
rN   rO   r  r   r   r   rR   r>   r   r8   r  s           rX   test_random_trap_economicz TestRQ.test_random_trap_economicD	  s    ii##D)q 	*A

Aq6"Aaj)DAq%a!##gs1v6%a!eQ/1a&)1a&)	*rZ   c                 T   t         j                  j                  d      }d}t        d      D ]y  }|j                  ||g      d|j                  ||g      z  z   }t	        |      \  }}t        ||j                         j                  z  t        |             t        ||z  |       { y rC  )	rN   rO   r  r   r   r   rQ   rR   r>   r  s          rX   rT  zTestRQ.test_random_complexP	  s    ii##D)q 	0A

Aq6"R

Aq6(:%::Aa5DAq%a!&&(**nc!f=%a!eQ/		0rZ   c                    t         j                  j                  d      }d}d}t        d      D ]  }|j                  ||g      d|j                  ||g      z  z   }t	        |d      \  }}t        ||j                         j                  z  t        |             t        ||z  |       t        |j                  ||f       t        |j                  ||f        y )Nr  r  r.  rL   rK   r  r  )rN   rO   r  r   r   r   rQ   rR   r>   r   r8   r  s           rX   test_random_complex_economicz#TestRQ.test_random_complex_economicY	  s    ii##D)q 	*A

Aq6"R

Aq6(:%::Aaj)DAq%a!&&(**nc!f=%a!eQ/1a&)1a&)	*rZ   c                     g dg dg dg}t        |d      \  }}t        ||j                  z  t        d             t        ||z  |       y rK  r  r  s       rX   r  zTestRQ.test_check_finitee	  sB    	9-!%(1!!acc'3q62!!a%+rZ   rO  rg  rT   rV   c                 p   t        ||      }t        j                  ||f|      }t        |      \  }}t	        |j
                  ||f       t	        |j
                  ||f       t	        |j                  |       t	        |j                  |       t        |d      }t	        |j
                  ||f       t	        |j                  |       t        |d      \  }}t	        |j
                  ||f       t	        |j                  |       t	        |j
                  ||f       t	        |j                  |       y )Nr   r  r  r  )rl  rN   r1   r   r   r8   rV   )ru   rO  rT   rV   r  rv   r  r  s           rX   rp  zTestRQ.test_shape_dtypek	  s     1IHHaV5)!u1QWWq!f%QWWq!f%QWWe$QWWe$qsOQWWq!f%QWWe$!*%1QWWq!f%QWWe$QWWq!f%QWWe$rZ   rq  rr  c                    t        ||      }t        j                  ||f      }t        |      \  }}t	        |t        j                  ||f             t	        |t        j
                  |             t        |d      }t	        |t        j                  ||f             t        |d      \  }}t	        |t        j                  ||f             t	        |t        j                  ||f             y )Nr  r  r  )rl  rN   r   r   r   rt  )ru   rO  rT   r  rv   r  r  s          rX   r   zTestRQ.test_empty	  s    1IHHaV!u1288QF+,2;;q>*qsO288QF+,!*%1288QF+,288QF+,rZ   N)r   r   r   ry   r  rP  r  r  r  r   r0  r?  r  rT  r  r  r   r   r   r  rp  r   r   rZ   rX   r  r  	  s    ,)0,,,,00
*0
*, [[S),[[S),[[Wf-% . - -%( [[Z)AB- C-rZ   r  c                   n   e Zd Zd Zd Zej                  j                  dd ej                  d       d ej                  d      dgfd ej                  d      d ej                  d       dgfd	dd ej                  d       ej                  d       gfd
 ej                  d       ej                  d       ddgfd  ej                  d      d ej                  d       dgfg      d        Z
d Zd Zej                  j                  deeej                  eej"                  g      d        Zej                  j                  dd	d
g      ej                  j                  dddg      ej                  j                  dej                  ej&                  ej"                  ej(                  g      d                      Zej                  j                  dddg      ej                  j                  dej                  ej&                  ej"                  ej(                  g      d               Zy)	TestSchurc                     t        ||z  |j                         j                  z  |||d       t        ||j                         j                  z  t        j                  t        |            z
  dd|d       y )Nz&Schur decomposition does not match 'a'r   r   zu is not unitary)r   rQ   rR   rN   r>   r_   )ru   rv   tr  r   r   s         rX   check_schurzTestSchur.check_schur	  s]    A

*ADt H	J 	AFFHJJA7 2	4rZ   c           	         g dg dg dg}t        |      \  }}| j                  |||dd       t        |d      \  }}t        t        j                  t        t        |                  xr' t        j                  t        t        |                         | j                  |||dd       t        ||      \  }}| j                  |||dd       y )Nr     rm   r  ri  rm   rp   r*  +<r   r   r   )r   r  r   rN   r2  r5   r7   r   )ru   rv   r  r  tczctc2zc2s           rX   ry   zTestSchur.test_simple	  s    J/Qx1Aqu59q)$BuYr]+,Mim8L1MNBU;2r?SC5u=rZ   zsort, expected_diaglhprL         r\   rhpiucoucc                     | dk\  S )Nr   r   )r  s    rX   <lambda>zTestSchur.<lambda>	  s
    AH rZ   c                     g dg dg dg dg}t        ||      \  }}}| j                  |||dd       t        t        j                  |      |d	
       t        d|       y )Nr&  r   rj  rk  g      g      rk  rj  r         @      g      @r  r&  rm        @r9   r*  r  r  rz  r   rL   )r   r  r   rN   r-   r   )ru   r9   expected_diagrv   r  r  sdims          rX   	test_sortzTestSchur.test_sort	  sb     "! 14(
1dAqu59
M>QrZ   c                 |    g dg dg dg dg}t        t        t        |d       t        t        t        |d       y )Nr  r  r  r  unsupportedr  rE   )r  r  r   )ru   rv   s     rX   test_sort_errorszTestSchur.test_sort_errors	  s3    "! 	j%?j%3rZ   c                     g dg dg dg}t        |d      \  }}t        ||z  |j                         j                  z  |       y )Nr  r  r  Fr   )r   r   rQ   rR   )ru   rv   r  r  s       rX   r  zTestSchur.test_check_finite	  s;    J/QU+1!!a%!&&(**"4a8rZ   r   c                    t        j                  d|      }t        |      \  }}t        t        j                  d|            \  }}t	        |t        j                  d             t	        |t        j                  d             |j
                  |j
                  k(  sJ |j
                  |j
                  k(  sJ t        |d      \  }}}t	        |t        j                  d             t	        |t        j                  d             t        |d       |j
                  |j
                  k(  sJ |j
                  |j
                  k(  sJ y )Nr   r   rL   r  r  r   )rN   r   r   r>   r   rV   r   )ru   r   rv   r  r  t0z0r  s           rX   r   zTestSchur.test_empty	  s    HHV2&Qx1rvvar*+B288F+,288F+,ww"(("""ww"(("""15)
1d288F+,288F+,T1ww"(("""ww"(("""rZ   r9   outputru  r   rV   c                     t        j                  ddgddgg      }t        |j                  |      ||      d   }|dk(  r|dk(  s
J |dk(  sJ y y )N皙?r   rL   r9   r  r   r  r   )rN   r;   r   rS   )ru   r9   r  rV   rW   r  s         rX   test_gh_13137_sort_strz TestSchur.test_gh_13137_sort_str	  s_      JJb	As8,- QXXe_4?C EMtqy88tqy88yyrZ   c                     t        j                  ddgddgg      }|dk(  xr" |t         j                  t         j                  hv d	fd	}t	        |j                  |      ||      d   }r|dk(  s
J |dk(  sJ y y )
Nr  r   rL   ru  c                     r9t        j                  |       rJ |t        j                  |      sJ | |dz  z   }nt        j                  |       sJ |J | }|j                  dkD  S )NrK   r)  )rN   iscomplexobjisrealr   )r  r  r  all_reals      rX   r9   z1TestSchur.test_gh_13137_sort_custom.<locals>.sort
  si    ??1---}155"Hq)))y y66E>!rZ   r  r   rE   rd  )rN   r;   r3   r   r   rS   )ru   r  rV   rW   r9   r  r  s         @rX   test_gh_13137_sort_customz#TestSchur.test_gh_13137_sort_custom	  s     JJb	As8,-6>Ge

BJJ/G&G		" QXXe_4?C$tqy33$!)33)yrZ   N)r   r   r   r  ry   r   r   r   rN   r6   r  r  r  r^   r   r3   r   r4   r   r   r   r  r  r   rZ   rX   r  r  	  s#   4> [[
72771:+tWRWWQZ5	6
'"''!*cGBGGAJ;5	6
$WRWWQZ'"''!*5	6
'"''!*wrwwqzk45	6
wrwwqz3TB	C		E

49
 [[TC

GR\\#RS# T#  [[VeU^4[[X	':;[[Wrzz2::')||R]]'D E9E < 59$ [[X	':;[[Wrzz2::')||R]]'D E4E <4rZ   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	eeeeeg      d
        Zy)TestHessenbergc                     g dg dg dg}g dg dg dg}t        |d      \  }}t        |j                  |z  |z  |       t        ||d	
       y )Nikiif     "  ir  g     bgsE@g㥛 cg(m̀gkwc@gfjWr   g&S?g,eX@rE   calc_qr;  rx  r   r   rR   ru   rv   h1rg   r  s        rX   ry   zTestHessenberg.test_simple
  sX     ..!# !A&1!!##'A+q1!!R3rZ   c                     g dg dg dg}t        |d      \  }}t        |j                         j                  |z  |z  |       y )Nr  )r  y             f@r  )y             ;r  r  rE   r  )r   r   rQ   rR   ru   rv   rg   r  s       rX   r   z"TestHessenberg.test_simple_complex 
  sA     !A&1!!&&(**q.1"4a8rZ   c                     g dg dg dg dg dg dg dg}t        |d	      \  }}t        |j                  |z  |z  |       y )
N)rE   rL   rm   r;  ro   rp   r  )r   rL   rm   r;  rp   r  rL   )r   rL   rL   rm   r   rm   rL   )r   r   rL   r  r   r   rL   )r   rm   rE   rL   r   rE   rL   )r   rE   rL   rm   r   rE   r   )r   r   r   r   r   rE   rL   rE   r  r  r  s       rX   test_simple2zTestHessenberg.test_simple2'
  sF    """""""$ !A&1!!##'A+q1rZ   c                     t        j                  d      }d|d<   t        |d      \  }}t        |j                  |z  |z  |       y )Nrm   rL   )r   r   rE   r  )rN   r>   r   r   rR   r  s       rX   test_simple3zTestHessenberg.test_simple32
  s>    FF1I%!A&1!!##'A+q1rZ   c                     t         j                  j                  d      }d}t        d      D ]A  }|j                  ||g      }t	        |d      \  }}t        |j                  |z  |z  |       C y )Nr  r  rL   rE   r  )rN   rO   r  r   r   r   rR   ru   rc   rT   r  rv   rg   r  s          rX   rP  zTestHessenberg.test_random8
  sf    ii##D)q 	6A

Aq6"Aa*DAq%accAgk15	6rZ   c                 .   t         j                  j                  d      }d}t        d      D ]f  }|j                  ||g      d|j                  ||g      z  z   }t	        |d      \  }}t        |j                         j                  |z  |z  |       h y )Nr  r  rL   rK   rE   r  )rN   rO   r  r   r   r   rQ   rR   r  s          rX   rT  z"TestHessenberg.test_random_complex@
  s    ii##D)q 	=A

Aq6"R

Aq6(:%::Aa*DAq%affhjj1nq&8!<	=rZ   c                     g dg dg dg}g dg dg dg}t        |dd	      \  }}t        |j                  |z  |z  |       t        ||d
       y )Nr  r  r  r  r  r  rE   F)r  r   r;  rx  r  r  s        rX   r  z TestHessenberg.test_check_finiteH
  sZ     ..!# !AE:1!!##'A+q1!!R3rZ   c                    ddgddgg}t        |d      \  }}t        |t        j                  d             t        ||       ddgdd	gg}t        |d      \  }}t        |t        j                  d             t        ||       y )
NrL   rE   r  r  r  y       @      r   y      @      @y      (@       )r   r   rN   r>   )ru   rv   rg   r  r   h2r  s          rX   test_2x2zTestHessenberg.test_2x2S
  s~    VaW!A&1!!RVVAY/!!Q'D\D%=)Aa(B!"bffQi0!"a(rZ   r   c                    t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j
                  d|            j                  k(  sJ t        |d      \  }}t        |d      \  }}|j                  dk(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ |j                  |j                  k(  sJ y )Nr   r   rm   Tr  )rN   r   r   r8   rV   r>   )ru   r   rv   rg   r  h3rP  s          rX   r   zTestHessenberg.test_empty_
  s    HHV2&qMww&   ww*RVVAR%89?????!D)1Ad+Bww&   ww"(("""ww&   ww"(("""rZ   N)r   r   r   ry   r   r  r  rP  rT  r  r  r   r   r   r^   r   r3   r   r4   r   r   rZ   rX   r  r  
  s[    	49	226=	4
) [[TC)#LM# N#rZ   r  zBuild Dependenciesblasnameversionc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestQZc                 \   t         j                  j                  d      }d}|j                  ||g      j                  t              }|j                  ||g      j                  t              }t        ||      \  }}}}t        ||z  |j                  z  |d       t        ||z  |j                  z  |d       t        ||j                  z  t        |      d       t        ||j                  z  t        |      d       t        t        j                  t        |      dk\               y )Nr`  ro   rx  r   )rN   rO   r  rS   r3   r   r   rR   r>   r   r   r-   	ru   rc   rT   rW   r   AABBQr  s	            rX   test_qz_singlezTestQZ.test_qz_singleu
  s    ii##E*JJ1v%%g.JJ1v%%g.!QxB1!!b&133,1=!!b&133,1=!!acc'3q61=!!acc'3q61=tBx1}%&rZ   c                     t         j                  j                  d      }d}|j                  ||g      }|j                  ||g      }t        ||      \  }}}}t	        ||z  |j
                  z  |       t	        ||z  |j
                  z  |       t	        ||j
                  z  t        |             t	        ||j
                  z  t        |             t        t        j                  t        |      dk\               y )Nr`  ro   r   
rN   rO   r  r   r   rR   r>   r   r   r-   r  s	            rX   test_qz_doublezTestQZ.test_qz_double
  s    ii##E*JJ1vJJ1v!QxB1!!b&133,2!!b&133,2!!acc'3q62!!acc'3q62tBx1}%&rZ   c                 4   t         j                  j                  d      }d}|j                  ||g      d|j                  ||g      z  z   }|j                  ||g      d|j                  ||g      z  z   }t        ||      \  }}}}t	        ||z  |j                         j                  z  |       t	        ||z  |j                         j                  z  |       t	        ||j                         j                  z  t        |             t	        ||j                         j                  z  t        |             t        t        j                  t        |      dk\               t        t        j                  t        |      j                  dk(               y )Nr`  ro   rK   r   )rN   rO   r  r   r   rQ   rR   r>   r   r   r-   r   r  s	            rX   test_qz_complexzTestQZ.test_qz_complex
  s)   ii##E*JJ1vCJJ1v$6!66JJ1vCJJ1v$6!66!QxB1!!b&1668::"5q9!!b&1668::"5q9!!affhjj.#a&9!!affhjj.#a&9tBx1}%&tBx}})*+rZ   c                    t         j                  j                  d      }d}|j                  ||g      d|j                  ||g      z  z   j                  t              }|j                  ||g      d|j                  ||g      z  z   j                  t              }t        ||      \  }}}}t        ||z  |j                         j                  z  |d       t        ||z  |j                         j                  z  |d       t        ||j                         j                  z  t        |      d       t        ||j                         j                  z  t        |      d       t        t        j                  t        |      dk\               t        t        j                  t        |      j                  dk(               y )Nr`  ro   rK   rx  r   )rN   rO   r  rS   r4   r   r   rQ   rR   r>   r   r   r-   r   r  s	            rX   test_qz_complex64zTestQZ.test_qz_complex64
  sG   ii##E*ZZA"SZZA%7"77??	JZZA"SZZA%7"77??	J!QxB1!!b&1668::"5q!D!!b&1668::"5q!D!!affhjj.#a&!D!!affhjj.#a&!DtBx1}%&tBx}})*+rZ   c                    t         j                  j                  d      }d}|j                  ||g      }|j                  ||g      }t        ||d      \  }}}}||z  |j	                         j
                  z  }	t        |	j                  |       t        |	j                  d       ||z  |j	                         j
                  z  }
t        |
j                  |       t        |
j                  d       t        ||j	                         j
                  z  t        |             t        ||j	                         j
                  z  t        |             t        t        j                  t        |      dk\               y )Nr`  ro   r   )r  r   )rN   rO   r  r   rQ   rR   r   ru  r   r>   r   r   r-   )ru   rc   rT   rW   r   r  r  r  r  rt  bbs              rX   test_qz_double_complexzTestQZ.test_qz_double_complex
  s   ii##E*JJ1vJJ1v!Qy1B1Vaffhjj !"''1-!"''1-Vaffhjj !"''1-!"''1-!!affhjj.#a&9!!affhjj.#a&9tBx1}%&rZ   c                     t        j                  g dg dg dg dg      }t        j                  g dg dg dg dg      }t        t        t        ||d	 
       y )N)333333@      )@     @Ag      @333333@     5@g     Gg      @)r  r2       Er  )皙@r        Gr  )rj  rj  rm  rj  )rj  r   g      r  )rj  r%  r  rj  )r0  r   r  r&  c                     |dk(  S )Nr   r   )araibetas      rX   r  z,TestQZ.test_qz_double_sort.<locals>.<lambda>
  s
    bAg rZ   r  )	rN   r,   r  r  r   r   r   rR   r   )ru   rW   r   r  r  r  r  r  s           rX   test_qz_double_sortzTestQZ.test_qz_double_sort
  sZ     HH--,,. /
 HH++++- .
 	j"a1MNrZ   c                    t         j                  j                  d      }d}|j                  ||g      }|j                  ||g      }t        ||d      \  }}}}t	        ||z  |j
                  z  |       t	        ||z  |j
                  z  |       t	        ||j
                  z  t        |             t	        ||j
                  z  t        |             t        t        j                  t        |      dk\               y )Nr`  ro   Fr   r   r  r  s	            rX   r  zTestQZ.test_check_finite  s    ii##E*JJ1vJJ1v!QU3B1!!b&133,2!!b&133,2!!acc'3q62!!acc'3q62tBx1}%&rZ   N)
r   r   r   r  r   r  r  r  r  r  r   rZ   rX   r  r  t
  s'    
'
',,' 5FF
'rZ   r  c                   ^    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zy)	TestOrdQZc                 F   t        j                  g dg dg dg dg      }t        j                  g dg dg dg dg      }t        j                  g d	g d
g dg dg      }t        j                  g dg dg dg dg      }t        j                  g dg dg dg dg      }t        j                  g dg dg dg dg      }t        j                  d      }t        j                  ddg      }t        j                  ddg      }	|||||	g| _        |||||	g| _        y )N)y5     6y     J@     @Iy     @A     _@y      @      ?)yq=
ףpݿQy           By      /     @M@y      %      )y333333@      yC@1y      Q      )@y            )y      @@y,@fffffE@y     @@      Gy      3     @@)y      ?      y?333333?y              y              )y?333333y              y            @y333333	)y      ?        y333333@?y            y              )rK   y333333@y              y      @      )r	  r
  r  r  r  )r  r  r  r  )r  g      :@r  r  )rE   rL   rE   )rE   rm   r;  )rE   rm   rm   )rE   rm   r  r;  )r  rj  r   r   )r&  r&  r%  r)  )r)  r&  rj  r   )r   r&  r,  r)  )r,  r'  r  r'  )r)  r)  r%  r   )r   rj  r  r  )r  rj  r&  r)  rL   r   rE   )rN   r,   r>   r-   rW   r   )
clsA1B1A2B2A3B3A4B4A5s
             rX   setup_classzTestOrdQZ.setup_class(  s(    XX $&%'( ) XXDDDDF G XX/...0 1
 XX}$$$& ' XX'''') * XX)''') * VVAYWWaV_ WWaV_RR$RR$rZ   c           
      
   t        j                  d      5  t        | j                  | j                        D cg c]  \  }}t        |||       }}}d d d        t        |      S c c}}w # 1 sw Y   t              S xY w)Nraiser   r  )rN   r   ziprW   r   r    tuple)ru   r9   AiBirets        rX   	qz_decompzTestOrdQZ.qz_decomp_  sj    [[W% 	O:=dffdff:MNB5Rd+NCN	OSz O	OSzs   $A/A)A/)A//Bc
           	      h   t        j                  |j                   }
t        ||j                  j                         z  |
       t        |	|	j                  j                         z  |
       t        ||z  ||	z         t        ||z  ||	z         t        t        j                  |d      t        j                  |j                               t        t        j                  |d      t        j                  |j                               t        |j                  d         D ]%  }|dkD  r|||dz
  f   dk7  r||j                  d   dz
  k  r||dz   |f   dk7  r}t        |||dz   ||dz   f   |||dz   ||dz   f         \  }}|d   j                  dk  r|ddg   }|||dz    |||dz    z  }|d   j                  dk  r|ddg   }t        ||       ||   dk(  r+||   dk(  r#t        |||f   d       t        |||f   d       ||   dk(  rt        |||f   d       t        |||f   |||f   z  ||   ||   z         ( t        |      }d}t        |j                  d         D ]A  } |t        j                  ||   g      t        j                  ||   g            }|s|rJ |}C y )Nr   r   r   rE   rL   T)rN   r>   r8   r   rR   rQ   r   trilr1   r   r
   r   r   r   r*   r,   )ru   rW   r   r9   r  r  alphar  r  r  Idr   evalsrm  tmpsortfunlastsortcursorts                     rX   checkzTestOrdQZ.checkd  s   VVQWW!!acchhj."5!!acchhj."5!!b&!a%0!!b&!a%02772r?BHHRXX,>?2772r?BHHRXX,>?qwwqz" 	MA 1u1a!e8)288A;?"r!a%(|q'8r!AE'1QU7"23R!a%1q58H5IJq 8==1$!1a&MEAa!enT!AE]2q6;;?q!f+C)%58q=T!W\ AqD1- AqD1-!W\ AqD1-'1a4AqD(958DG;KL/	M0 #4(qwwqz" 	Abhhaz2BHHd1gY4GHG ""{H	rZ   c                     | j                  |      }t        || j                  | j                        D ]  \  }}} | j                  |||g|   y rd  )r0  r+  rW   r   r:  )ru   r9   r/  retir-  r.  s         rX   	check_allzTestOrdQZ.check_all  sM    nnT"TVVTVV4 	,LD"bDJJr2t+d+	,rZ   c                 &    | j                  d       y )Nr  r=  rf  s    rX   test_lhpzTestOrdQZ.test_lhp      urZ   c                 &    | j                  d       y )Nr  r?  rf  s    rX   test_rhpzTestOrdQZ.test_rhp  rA  rZ   c                 &    | j                  d       y )Nr  r?  rf  s    rX   test_iuczTestOrdQZ.test_iuc  rA  rZ   c                 &    | j                  d       y )Nr  r?  rf  s    rX   test_ouczTestOrdQZ.test_ouc  rA  rZ   c                 ,    d }| j                  |       y )Nc                     t        j                  | t              }|dk7  }d|| <   | |   ||   z  j                  dk(  ||<   |S Nr   r   FrN   
empty_likeboolr   r  r  r  nonzeros       rX   r9   z TestOrdQZ.test_ref.<locals>.sort  L    --.CAvG!CMgJqz1771<CLJrZ   r?  ru   r9   s     rX   test_refzTestOrdQZ.test_ref      	 	trZ   c                 ,    d }| j                  |       y )Nc                     t        j                  | t              }|dk7  }d|| <   | |   ||   z  j                  dk7  ||<   |S rJ  rK  rN  s       rX   r9   z TestOrdQZ.test_cef.<locals>.sort  rP  rZ   r?  rQ  s     rX   test_cefzTestOrdQZ.test_cef  rS  rZ   c                 `   t        | j                  d   | j                  d   d      } | j                  | j                  d   | j                  d   dg|  t        | j                  d   | j                  d   d      } | j                  | j                  d   | j                  d   dg|  y )NrE   rL   r  r  )r    rW   r   r:  )ru   r/  s     rX   test_diff_input_typeszTestOrdQZ.test_diff_input_types  s    DFF1Itvvayu5

466!9dffQi55DFF1Itvvayu5

466!9dffQi55rZ   c                    t        j                  d      }t        j                  ddg      }dddgfdddgfdddgfdddgfg}t        j                  d      }t        j                  d	d
g      }dddgfdddgfdddgfdddgfg}t        j                  d      }t        j                  ddg      }ddt         j                  gfddt         j                  gfdt         j                  dgfg}	t        j                  d      }
t        j                  ddg      }ddt         j                  gfddt         j                  gfdt         j                  dgfg}t        j                  ddg      }t        j                  ddg      }ddt         j                  gfddt         j                  gfg}||||
|g}|||||g}|||	||g}t        |||      D ]  \  }}}|D ]  \  }}t        |||      \  }}}}}}|dk(  }|dk(  }t        j                  |      }t         j                  |||z  <   t         j                  || |z  <   ||    ||    z  || <   t        ||         y )NrL   r   r\   r  r  r  r  r  y             ?y      ?      ?yٿɿ      ?      r   rE   r  )	rN   r>   r-   r   r  r+  r    rL  r   )ru   r  r   	expected1r!  r"  	expected2r#  r$  	expected3r%  r&  	expected4r'  B5	expected5rW   r   expectedr-  r.  	expectedisortstrexpected_eigvalsrm  r3  r  azerobzeror  s                                 rX   test_sort_explicitzTestOrdQZ.test_sort_explicit  s    VVAYWWb#YdAY'aY'dAY'aY')	 VVAYWWgz*+k>:;nk:;k>:;nk:;=	
 VVAYWWaV_c266]+c266]+bffc]+-	 VVAYWWb!WdBFF^,dBFF^,bffd^,.	 WWaV_WWaXa[)a[)+	 RR RR y)Y	J!$Q8!4 		5BI-6 5))*/BW*E'1eT1a!MM%(#%66%%- $&FF5&5.!!5&M$v,65&	 0!45		5rZ   N)r   r   r   classmethodr(  r0  r:  r=  r@  rC  rE  rG  rR  rV  rX  rg  r   rZ   rX   r  r  '  sM    4% 4%l
,\,		6-5rZ   r  c                       e Zd Zej                  j                  d      d        Zej                  j                  d        Zy)TestOrdQZWorkspaceSizero   c                 *   t         j                  j                  d      }d}t         j                  t         j                  fD ]V  }|j                  ||f      j                  |      }|j                  ||f      j                  |      }t        ||d d      }X t         j                  t         j                  fD ]V  }|j                  ||f      j                  |      }|j                  ||f      j                  |      }t        ||d d      }X y )Nr`     c                     | |k  S rd  r   r3  r  s     rX   r  z7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>  
    UT\ rZ   ru  r  c                     | |k  S rd  r   rn  s     rX   r  z7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>  ro  rZ   r   )	rN   rO   r  r3   r   rS   r    r   r4   )ru   rc   r  ddtyperW   r   rm  s          rX   test_decomposez%TestOrdQZWorkspaceSize.test_decompose  s    ii##E*zz2::. 	%F

Aq6"))&1A

Aq6"))&1Aa!A#%A		% }}bll3 	(F

Aq6"))&1A

Aq6"))&1Aa!A&(A	(rZ   c                 ~   t         j                  j                  d      }d}t         j                  t         j                  t         j
                  t         j                  fD ][  }|j                  ||f      j                  |      }|j                  ||f      j                  |      }t        ||d      \  }}}}	}
}] y )Nr`  rl  r  r  )	rN   rO   r  r3   r   r   r4   rS   r    )ru   rc   r  rq  rW   r   SrR   r3  r  Ur3  s               rX   test_decompose_oucz)TestOrdQZWorkspaceSize.test_decompose_ouc  s    ii##E*zz2::r}}bllK 	>F

Aq6"))&1A

Aq6"))&1A&+Aqu&=#Aq%q!	>rZ   N)	r   r   r   r   r   	fail_slowrr  r~  rv  r   rZ   rX   rj  rj    sA    [[1( (" [[> >rZ   rj  c                       e Zd Zd Zy)TestDatacopiedc                 `   ddl m} t        ddgddgg      }t        |      |j	                         }|j                         } G fdd      } G fdd	      } |       } |       }|d
fd
f|df|d
f|d
f|d
ffD ].  \  }	}
t        |	      }t         |||	      |
t        |	             0 y )Nr   )_datacopiedrE   rL   rm   c                       e Zd Zd fd	Zy)-TestDatacopied.test_datacopied.<locals>.Fake1Nc                     S rd  r   )ru   rV   r{   rW   s      rX   	__array__z7TestDatacopied.test_datacopied.<locals>.Fake1.__array__  s    rZ   )NN)r   r   r   r  r  s   rX   Fake1r}    s    rZ   r  c                   (    e Zd ZW  j                  Zy)-TestDatacopied.test_datacopied.<locals>.Fake2N)r   r   r   __array_interface__r  s   rX   Fake2r    s    "#"7"7rZ   r  FTr   )scipy.linalg._decompr{  r@   r;   tolistr{   r   repr)ru   r{  r  LM2r  r  F1F2itemstatusarrrW   s               @rX   test_datacopiedzTestDatacopied.test_datacopied  s    4QFQF#$AJHHJVVX	 		8 	8 WWZ!UaY %[2u+E{D 	-LD&$-CS$/!%d-	-rZ   N)r   r   r   r  r   rZ   rX   ry  ry    s    -rZ   ry  c                      t        dt        j                        } t        j                  | j                  ddt
              }|j                  d      }t        |d       t        |j                  d       y	)
z4Check linalg works with non-aligned memory (float32)i  r   rL   r  offsetcountrV   ri  ri  TrL  N)	r2   rN   uint8
frombufferdatar3   r  r
   rR   rv   r  s     rX   test_aligned_mem_floatr  *  sT     	s"((#A 	affQcAA			(AtrZ   ppc64lezcrashes on ppc64lec                      t        dt        j                        } t        j                  | j                  ddt
              }|j                  d      }t        |d       t        |j                  d       y	)
z4Check linalg works with non-aligned memory (float64)i$  r   r;  r  r  r  TrL  N)	r2   rN   r  r  r  r   r  r
   rR   r  s     rX   test_aligned_memr  7  sT    
 	s"((#A 	affQc?A			(AtrZ   c                      t        dt        j                        } t        j                  | j                  ddt
              }|j                  d      }t        |d       t        |j                  d       y	)
z>Check that complex objects don't need to be completely alignediH  r   r  r  r  r  TrL  N)	r1   rN   r  r  r  r   r  r
   rR   r  s     rX   test_aligned_mem_complexr  F  sT     	d"((#A 	affQcAA			(AtrZ   c                    t        |      }t        t        |            D ]  }|d d  }t        ||   t        j
                        s't	        j                  ||   j                  ||   j                  j                  z  dz   t        j                        }t	        j                  |j                  d||   j                  ||   j                        }|j                  ||   j                        }||   |d<   |||<    | |i | t        ||   j                        dkD  s||   j                  ||<    | |i |  y )Nr  r   r;  r  .rE   )rS  r   r_   r]   rN   r=   r1   r   rV   rp  r  r  r  r  r8   rR   )funcr  r@  r   rv   rt  s         rX   check_lapack_misalignedr  T  s   :D3t9 #GadBJJ'!A$))AaDJJ$7$779JBrwwq!		%&qTZZ1BAaDJJ'BdBsGAaD!v1Q4::"tvv!a"6"#rZ   z0Ticket #1152, triggers a segfault in rare cases.)runra  c                     t        j                  dt              } t        j                  d      j	                  d      }t        j                  dt         j
                        }t        j                  |j                  ddt              }|j	                  d      }t        j                  d      }t        |      \  }}t        |ft        d	      ft        |ft        d	      ft        |ft        d	      ft        |ft        d	      ft        ||f|ft        d
      ft        ||ft        dd      ft         | ft        d	      ft         |ft        d	      ft         |ft        d	      ft"        |ft               ft"        |ft        d	      ft$        | ft        d	      ft&        |ft        d	      ft(        |ft        d	      ft*        |ft        d	      ft,        |ft        d	      ffD ]  \  }}}t/        |||        y )Nri  r   r  r  i N  r;  r  TrL  )rY  r[  )rN   r>   r   r2   r  r  r  r  r   r   r
   r=  r   r   r   r   r   r   r   r   r   r   r   r  )	r  Rrt  r   LUpivr  r  r@  s	            rX   test_lapack_misalignedr  f  s    	rA
		#x(A
		%rxx(A
affQc?A			(A
AlGB1$./qdDT23!t-.dt45S	1~t'=>QFDTtDE1$./1$./1$./qdDF#qdDT23tTd34!t-.!t-.!t56QD$401!! 4tV$ 	 dF3%4rZ   c                   l    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y)TestOverwritec                 J    t        t        dg       t        t        ddg       y Nr  )r?   r
   rf  s    rX   test_eigzTestOverwrite.test_eig  s    C&*C&&!12rZ   c                 J    t        t        dg       t        t        ddg       y r  )r?   r   rf  s    rX   	test_eighzTestOverwrite.test_eigh  s    D6(+D66"23rZ   c                 &    t        t        dg       y Nr:  )r?   r   rf  s    rX   r  zTestOverwrite.test_eig_banded      J1rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_eigvalszTestOverwrite.test_eigvals      GfX.rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_eigvalshzTestOverwrite.test_eigvalsh  s    Hvh/rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   r  z!TestOverwrite.test_eigvals_banded  s    NVH5rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_hessenbergzTestOverwrite.test_hessenberg  r  rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_lu_factorzTestOverwrite.test_lu_factor  s    Ix0rZ   c                 x    t        j                  g dg dg dg      }t        |      t        fddg       y )Nrl   rI  )r  r  r  c                     t        |       S rd  )r   )r   xlus    rX   r  z-TestOverwrite.test_lu_solve.<locals>.<lambda>  s    hsA&6 rZ   )rm   )rN   r,   r   r?   )ru   r  r  s     @rX   test_lu_solvezTestOverwrite.test_lu_solve  s.    HHiI67l6?rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_luzTestOverwrite.test_lu      B)rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_qrzTestOverwrite.test_qr  r  rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_rqzTestOverwrite.test_rq  r  rZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   
test_schurzTestOverwrite.test_schur  s    EF8,rZ   c                 `    t        d dgt        j                  t        j                  g       y )Nc                     t        | d      S )Nr   )r   rv   s    rX   r  z2TestOverwrite.test_schur_complex.<locals>.<lambda>  s    eAy&9 rZ   r  )dtypes)r?   rN   r3   r   rf  s    rX   test_schur_complexz TestOverwrite.test_schur_complex  s!    9F8$&JJ

#;	=rZ   c                 B    t        t        dg       t        d dg       y )Nr  c                     t        | d      S )Nr  r  )r   r  s    rX   r  z(TestOverwrite.test_svd.<locals>.<lambda>  s    c!7&C rZ   )r?   r   rf  s    rX   test_svdzTestOverwrite.test_svd  s    C&*CfXNrZ   c                 &    t        t        dg       y r  )r?   r   rf  s    rX   test_svdvalszTestOverwrite.test_svdvals  r  rZ   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rZ   rX   r  r    sT    342/0621@
***-=O/rZ   r  c                 X   t        j                  | dft              j                  |      }t        j                  |      j
                  }d|z  }t        |      }t        |j                  | df       t        ||j                         |d       t        |j                        }t        |j                  d       t        ||j                         |       | d	kD  r|st         j                  j                  d      }|j                  | d	      |j                  d	|       z  }|d
|j                  | d      z  |j                  d|       z  z   }|j                  |      }t        |d      }t        |j                  | d	f       t        |d      }t        |j                  | df       y y y )NrL   r   r#  rE   gz]ʂ>r$  rL   rE   r+  ro   -C6?MbP?rcondư>rp   )rN   r   r   rS   r%  r&  r   r   r8   r   meanrR   rO   r  rP   )rT   rV   skip_bigXr&  r   Yrc   s           rX   _check_orthr    sL   
Ae$++E2A
((5/

C
*CQA1a&!Aqvvxc7QSS	A&!Aqvvxc*1uXii##A&HHQNSXXa^+sxx1~%A66HHUO$QWWq!f%$QWWq%j) urZ   r  z"test only on 64-bit, else too slowc                  |    d} 	 t        | t        j                  d       y # t        $ r}t	        d      |d }~ww xY w)Ni T)r  z.memory error perhaps caused by orth regression)r  rN   r   MemoryErrorAssertionError)rT   r  s     rX   test_orth_memory_efficiencyr    sA     	AArzzD1 <
	s   ! 	;6;c                      t         j                  t         j                  t         j                  t         j                  g} g d}t        j                  | |      D ]  \  }}t        ||        y )NrE   rL   rm   ri  r  )rN   r3   r   r4   r   	itertoolsproductr  )r  rX  r   rT   s       rX   	test_orthr    sO    jj"**bllBMMBFE""651 AArrZ   r   c                     t        j                  d|       }t        j                  d|       }t        |      }|j                  t        |      j                  k(  sJ |j
                  dk(  sJ y Nr   r   rL   )rN   r   r>   r   rV   r8   )r   rv   ru  oas       rX   test_orth_emptyr    sW    
r"A		B	aB88tBx~~%%%88vrZ   c                   T   e Zd Zd Zej
                  j                  deee	j                  ee	j                  g      d        Zej
                  j                  dddg      ej
                  j                  dddg      ej
                  j                  dd	d
g      d                      Zy)TestNullSpacec                    t         j                  j                  d      }t         j                  t         j                  t         j
                  t         j                  g}g d}t        j                  ||      D ]  \  }}t        j                  d|f|      }t        j                  |      j                  }d|z  }t        |      }	t        |	j                  ||dz
  f       t        ||	z  d|       t        |j                         }	t        |	j                  d       t        |j                   |	z  d|       |j#                  d|dz  z   |      }t        |      }	t        |	j                  ||dz
  |dz  z
  f       t        ||	z  d|       |d	kD  st         j                  j                  d      }|j%                  |d	      |j%                  d	|      z  }|d
|j%                  |d      z  |j%                  d|      z  z   }|j'                  |      }t        |d      }	t        |	j                  ||d	z
  f       t        |d      }	t        |	j                  ||dz
  f        y )NrE   r  rL   r   r#  r   r+  r  ro   r  r  r  r  rp   )rN   rO   r  r3   r   r4   r   r  r  r   r%  r&  r%   r   r8   r   rR   randnrP   rS   )
ru   rc   r  rX  r   rT   r  r&  r   r  s
             rX   test_null_spacezTestNullSpace.test_null_space  s   ii##A&**bjj",,F"&&vu5 	2EBAb)A((2,""C*C1A1ac(+AE13/133A&)ACC!GQS1		!ad(A&A1A1a!eadl"34AE13/1uii++A.HHQNSXXa^3sxx1~-A>>HHRLq-QWWq!a%j1q-QWWq!a%j1;	2rZ   r   c                     t        j                  d|      }t        j                  d|      }t        |      }|j                  dk(  sJ |j
                  t        |      j
                  k(  sJ y r  )rN   r   r>   r%   r8   rV   )ru   r   rv   ru  nsas        rX   test_null_space_emptyz#TestNullSpace.test_null_space_empty!  sY    HHV2&VVAR myyF"""yyJrN00000rZ   rI  TFr   r  r9  r  c                 (   t         j                  j                  d      }d}|j                  d|dz  z   |f      }t	        |j                         |||      }t        ||z  dt        j                  |j                        j                  dz         y )	Nl   'YeN ri  rE   rL   )rI  r   r  r   r  r+  )
rN   rO   r<  standard_normalr%   r{   r   r%  rV   r&  )ru   rI  r   r  rc   rT   r  r  s           rX   test_null_space_optionsz%TestNullSpace.test_null_space_options*  s{     ii##$;<QT1.qvvx[|%24Aqrxx'8'<'<S'@ArZ   N)r   r   r   r  r   r   r   r^   r   rN   r3   r   r4   r  r  r   rZ   rX   r  r    s    #2J [[TC

GR\\#RS1 T1 [[]T5M:[[^dE];[[_w.@AB B < ;BrZ   r  c            	      B   t        dt              } | d d d df   }| d d dd f   }t        t        ||      t        j
                  dz  gdz  d       t        t        ||      t        j
                  dz  gdz  d       ||fD ]:  }t        t        ||      t	        j                  |j                  d         d       < t	        j                  g dg dg d	g d
g      }d}t        t        |d d d df   |d d dd f         d   |d       t        t        |d d dd f   |d d d df         d   |d       d}t        t        |d d d df   |d d dgf         |d       t        t        |d d dgf   |d d d df         |d       d}t        t        |d d d df   |d d dgf         |d       t        t        |d d dgf   |d d d df         |d       d}t        t        |d d d df   |d d dd f         |dgd       t        t        t        |d   |       t        t        t        ||d          t        t        t        |d d |       t	        j                  g dg dg dg dg dg      }t	        j                  g dg dg dg dg dg      }t	        j                  t        j
                  dz  ddg      }t        t        ||      |d       dgdgg}ddgddgg}t        t        ||      dd       t        t        ||      dd       t	        j                  d      }t	        j                  d      }t        t        ||      t	        j                  d             t	        j                  d      }t	        j                  d      }t        t        ||      t	        j                  d             t	        j                  d      }t	        j                  d      }t        t        ||      t	        j                  d             y ) Nr  rm   r%  r*  r+  rE   )g4?gVRf?g8!@g6?)gN$ЗW?gJg~'@g3:]$)gvMg ۿgPT#ge,?)g΀?g+?gNG@gS<ʿg"	?rL   r   rz  r  gL0?gĹ-?gyv?r   r  )r   rE   r   )r   r   rE   r   rn  rZ  r   r   r   r   r   r  )r"   r   r   r!   rN   pir1   r8   r,   r  r  r   )HrW   r   r  ra  rv   r   s          rX   test_subspace_anglesr  6  s   EA	!RaR%A	!QR%AOAq)BEEBJ<!+;%HOAq)BEEBJ<!+;%HV $1-rxx
/C"	$$
 		U	W	X	V	X	YA
 !HOAa!eHa12h7:H OAaeHa2A2h7:H  HOAa!eHaA3i8(OOAa!fIqBQBx8(O HOAa!eHaA3i8(OOAa!fIqBQBx8(O HOAa!eHa12h7(A  *oqtQ7*oq!A$7*oq"vq9 	)	 	A
 	)	 	A
 xxq!Q(HOAq)8%@
 A3A
!q!fAOAq)2E:OAq)2E: 	A
AOAq)288D>:
A
AOAq)288D>:
A
AOAq)288D>:rZ   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y)TestCDF2RDFc                 0    t        j                  d||      S )Nz...ij,...jk->...ik)rN   einsum)ru   rv   r   s      rX   matmulzTestCDF2RDF.matmul}  s    yy-q!44rZ   c                 \    t        | j                  ||      | j                  ||             y rd  )r   r  )ru   rw   rf   r  s       rX   assert_eig_validzTestCDF2RDF.assert_eig_valid  s&    !KK1KK1	
rZ   c                     t        j                  d      }t        j                  d      t        j                  d      }}t        ||      \  }}| j                  |||       y )Nr   r   )rN   r   r&   r  ru   r  rw   rf   wrr   s         rX   test_single_array0x0realz$TestCDF2RDF.test_single_array0x0real  sK    HHVxx{BHHV,1ABb"a(rZ   c                     t        j                  ddgddgg      }t         j                  j                  |      \  }}t	        ||      \  }}| j                  |||       y )NrE   rL   rm   r   rN   r,   r/   r
   r&   r  r  s         rX   test_single_array2x2_realz%TestCDF2RDF.test_single_array2x2_real  sT    HHq!fq"g&'yy}}Q1ABb"a(rZ   c                     t        j                  ddgddgg      }t         j                  j                  |      \  }}t	        ||      \  }}| j                  |||       y )NrE   rL   r   r  r  s         rX   test_single_array2x2_complexz(TestCDF2RDF.test_single_array2x2_complex  sT    HHq!fr1g&'yy}}Q1ABb"a(rZ   c                     t        j                  g dg dg dg      }t         j                  j                  |      \  }}t	        ||      \  }}| j                  |||       y )Nrl   rn   r  r  s         rX   test_single_array3x3_realz%TestCDF2RDF.test_single_array3x3_real  sN    HHiI67yy}}Q1ABb"a(rZ   c                     t        j                  g dg dg dg      }t         j                  j                  |      \  }}t	        ||      \  }}| j                  |||       y Nrl   )r   r;  ro   )r   r  r;  r  r  s         rX   test_single_array3x3_complexz(TestCDF2RDF.test_single_array3x3_complex  sN    HHiJ78yy}}Q1ABb"a(rZ   c                    t         j                  j                  d      }t        dd      D ]Z  }|j                  d||f      }t         j                  j                  |      \  }}t        ||      \  }}| j                  |||       \ y )Nr  rE   r  r  rN   rO   r<  r   r/   r
   r&   r  ru   rc   r  r  rw   rf   r  r   s           rX   test_random_1d_stacked_arraysz)TestCDF2RDF.test_random_1d_stacked_arrays  sv    ii##D)q! 	-A

CA;'A99==#DAqQ]FB!!"b!,		-rZ   c                    t         j                  j                  d      }t        dd      D ][  }|j                  dd||f      }t         j                  j                  |      \  }}t        ||      \  }}| j                  |||       ] y )Nr  rE   r  ri  r  r  s           rX   test_random_2d_stacked_arraysz)TestCDF2RDF.test_random_2d_stacked_arrays  sx    ii##D)q! 	-A

BAq>*A99==#DAqQ]FB!!"b!,		-rZ   c                     t        j                  d      t        j                  d      }}t        t        t
        ||       y )Nr   )rL   )rN   r   r,   r  r  r&   ru   rw   rf   s      rX   test_low_dimensionality_errorz)TestCDF2RDF.test_low_dimensionality_error  s)    xx|RXXd^1j'1a0rZ   c                     t        j                  d      t        j                  d      j                  dd      }}t        t        t
        ||       y )Nrm   rp   rL   rN   r2   r  r  r  r&   r  s      rX   r  z!TestCDF2RDF.test_not_square_error  s6    yy|RYYq\11!Q71j'1a0rZ   c                     t        j                  g dg dg dg      }t         j                  j                  |      \  }}t	        t
        t        ||       y r  rN   r,   r/   r
   r  r  r&   ru   r  rw   rf   s       rX   test_swapped_v_w_errorz"TestCDF2RDF.test_swapped_v_w_error  s;    HHiJ78yy}}Q1j'1a0rZ   c                     t        j                  d      t        j                  d      j                  dd      }}t        t        t
        ||       y )Nrm   r   r;  r  r  s      rX   test_non_associated_errorz%TestCDF2RDF.test_non_associated_error  s6    yy|RYYr]221a81j'1a0rZ   c                 r   t        j                  g dg dg dg      }t         j                  j                  |      \  }}t	        t
        t        ||       t        j                  g dg dg dgg dg dg dgg      }t         j                  j                  |      \  }}t	        t
        t        ||       y )Nrl   r~   )rL   ro   y      @      r  r  s       rX   test_not_conjugate_pairsz$TestCDF2RDF.test_not_conjugate_pairs  s    HHiL9:yy}}Q1j'1a0 HH	<0	<0
  yy}}Q1j'1a0rZ   N)r   r   r   r  r  r  r  r
  r  r  r  r  r  r  r  r   r"  r   rZ   rX   r  r  {  sH    5
)))))--11
11
1rZ   r  )F)r  platformsysr-  numpyrN   numpy.testingr   r   r   r   r   r   r   r	   r  scipy.linalgr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   scipy.linalg.lapackr(   scipy.linalg._miscr)   scipy.linalg._decomp_qzr*   scipy.statsr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   scipy.linalg._testutilsr?   scipy.sparse._sputilsr@   scipy._lib._testutilsrA   scipy.linalg.blasrB   scipy.conftestrC   scipy.__config__rD   
test_basicrF   machineIS_WASMr   rY   r   REAL_DTYPESr   rM   r  rh   rj   r   rb  r  r  r8  r  r   r}  xfail_on_32bitparallel_threads_limitrw  r  r  r  r  r  r  r  r  blas_providerblas_versionr  r  rj  ry  r  r  r  r  xfailr  r  r  r~  rV   intprp  r  r  r   r^   r   r  r  r  r  r   rZ   rX   <module>r<     s     
  5 5  *N N N N N N N N 1 # 4 #; ; ; ; ; ; 8 ( 3 ' . # 1<<<'U+;8+;+;+=AU+U (-E   zz2::&,,.	~	%
4'= '=TY4 Y4xz$ z$x	~! ~!BI$ I$Vz/ z/zM  G$;<AB##A&rI&BC D  ' C =
#; ;|E Ex xvN- N-b}4 }4@Y# Y#x  $ #+,V4V<*+F3I>p' p'fG5 G5T> ><- -6
 $H$$&)3/  1
1
#$ uL  N4N4>5/ 5/p*6 HBHHRWW%..2?  AA  UBJJNO P8B 8BvB;J\1 \1rZ   