
    ^Mh                    b   d dl Z d dlZd dlmZmZmZ d dlmZ	 d dl
mZ d dlmc mZ d dlmZmZmZ d0dZd1dZd2d	Zd
 Zd Zd Zd Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d  d!e          Z! G d" d#e          Z" G d$ d%e          Z# G d& d'e#          Z$ G d( d)e#          Z% G d* d+e#          Z& G d, d-e#          Z'd. Z(d/ Z)dS )3    N)assert_assert_allcloseassert_equal)raises)linalg)	qr_delete	qr_update	qr_insertTc                    |%dt          j        | j                  j        dz
   z  }|!dt          j        | j                  j        z  }|r*t          | j        d         | j        d         k    d           t          j        | j        	                                |           }t          |t          j        | j        d                   ||           d S )N      $@   
   r      zunitary matrices must be squarertolatol)npfinfodtype	precisionepsr   shapedotTconjr   eye)ar   r   
assert_sqraTas        e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_decomp_update.pyassert_unitaryr!   
   s    |!'**4Q677|"(17##'' M
agaj(*KLLL
&Q

CC
++$TBBBBBB    c                 :   |%dt          j        | j                  j        dz
   z  }|!dt          j        | j                  j        z  }t          j        | j        d         | j        d         dt           j                  }t          | |         d||           d S )Nr   r   r   r   g        r   )	r   r   r   r   r   trir   bool_r   )r   r   r   masks       r    assert_upper_trir(      s    |!'**4Q677|!'""&&6!'!*agaj"bh77DAdGSt$777777r"   c                     t          | |||           t          |||           t          |                     |          |||           d S )Nr   )r!   r(   r   r   )qrr   r   r   r   s         r    check_qrr,      sO    1dD*---Qd###AEE!HHad666666r"   c                    g d}t          |          }d}g }| D ]C}|j        dk    rd|||z           }|dz  }t          j        |d         |j        d         z  |d         z   |j                  }||d         d |d                  }||d<   n|j        dk    r|||z           }||dz   |z           }	|dz  }t          j        |d         |j        d         z  |d         z   |	d         |j        d         z  |	d         z   f|j                  }||d         d |d         |	d         d |	d         f         }||d<   nt          d          |                    |           E|S )N))      )r   r   )r.      )r0   r   )   r0   )r   r.   )r   r   )r0   r1   r   r   .r   z0make_strided only works for ndim = 1 or 2 arrays)lenndimr   zerosr   r   
ValueErrorappend)
arrsstrideskmaxkretr   sbaseviewts
             r    make_stridedr@   "   s   NNNGw<<D	A
C  6Q;;D!AFA8AaDOAaD0!'::D!
ad
#DDIIVq[[D!A1%AFA8QqT!'!*_QqT11Q4
?1Q43GHG% %D!
ad
AaDJ!A$J./DDII ) * * *

4Jr"   c                     g }| D ]r}t          j        |          }|j        dk    r|d d dd d df         }n&|j        dk    r|d d d         }nt          d          ||d<   |                    |           s|S )Nr   r$   r   z2negate_strides only works for ndim = 1 or 2 arrays.)r   
zeros_liker3   r5   r6   )r7   r;   r   bs       r    negate_stridesrD   <   s    
C 
 
M!6Q;;$$B$"*AAVq[[$$B$AA ) * * *#

1Jr"   c                     g }| D ]V}|j         }t          j        |j        d|fdg          }|                    |          }||d<   |                    |           W|S )Nr   )junkS1.)r   r   r4   r   getfieldr6   )r7   outr   a_dtyperC   cs         r    nonitemsize_stridesrL   K   si    
C  'HQWW~~>??JJw#

1Jr"   c                     d | D             S )Nc                 f    g | ].}|                     |j                                                  /S  )astyper   newbyteorder).0r   s     r    
<listcomp>z"make_nonnative.<locals>.<listcomp>W   s2    ;;;AHHQW))++,,;;;r"   rO   )r7   s    r    make_nonnativerT   V   s    ;;d;;;;r"   c                       e Zd Zd ZddZdS )BaseQRdeltasc                     dt          j        | j                  j        dz
   z  | _        dt          j        | j                  j        z  | _        d S )Nr   r   r   )r   r   r   r   r   r   r   selfs    r    setup_methodzBaseQRdeltas.setup_method[   sD    bhtz22<Q>??	$*--11			r"   fullc                    t           j                            d           ddddddd|         }t           j                            |          }t          j        | j                            d	                    r't           j                            |          }|d
|z  z   }|                    | j                  }t          j        ||          \  }}|||fS )Nir     r^   )   r/   )r/   r_   )r^   r   )r   r^   r   r   )sqrtallfatMx11xN1x1r                 ?)mode)	r   randomseediscomplexobjr   typerP   r   qr)rY   rl   rh   r   r   rC   r*   r+   s           r    generatezBaseQRdeltas.generate_   s    
	uvf> >>BDIU##?4:??1--.. 		  ''ABF
AHHTZ  y&&&1!Qwr"   Nr[   )__name__
__module____qualname__rZ   rn   rO   r"   r    rV   rV   Z   s7        2 2 2
 
 
 
 
 
r"   rV   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 Z2dCd2Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8d8 Z9d9 Z:d: Z;d; Z<d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZBdBS )DBaseQRdeletec                    |                      d          \  }}}t          |j        d                   D ]K}t          |||d          \  }}t	          j        ||d          }t          |||| j        | j                   Ld S )Nra   r   Foverwrite_qr	rn   ranger   r   r   deleter,   r   r   rY   r   r*   r+   rowq1r1a1s           r    test_sqr_1_rowzBaseQRdelete.test_sqr_1_rowl       --&&1a$$ 	7 	7Cq!Su===FB1c1%%BRRDI6666	7 	7r"   c           
      T   |                      d          \  }}}t          dd          D ]}}t          |j        d         |z
            D ]]}t          ||||d          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   ^~d S )Nra   r      r   Frv   
rn   ry   r   r   r   rz   slicer,   r   r   	rY   r   r*   r+   ndelr|   r}   r~   r   s	            r    test_sqr_p_rowzBaseQRdelete.test_sqr_p_rows       --&&1a!QKK 	; 	;DQWQZ_-- ; ;"1adGGGBYq%SX"6"6::RTY	::::;	; 	;r"   c                    |                      d          \  }}}t          |j        d                   D ]L}t          |||dd          \  }}t	          j        ||d          }t          |||| j        | j                   Md S )Nra   r   colFwhichrw   rx   rY   r   r*   r+   r   r}   r~   r   s           r    test_sqr_1_colzBaseQRdelete.test_sqr_1_col{       --&&1a$$ 	7 	7Cq!SEJJJFB1c1%%BRRDI6666	7 	7r"   c           
      V   |                      d          \  }}}t          dd          D ]~}t          |j        d         |z
            D ]^}t          ||||dd          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   _d S )Nra   r   r   r   r   Fr   r   	rY   r   r*   r+   r   r   r}   r~   r   s	            r    test_sqr_p_colzBaseQRdelete.test_sqr_p_col       --&&1a!QKK 	; 	;DQWQZ_-- ; ;"1ad%057 7 7BYq%SX"6"6::RTY	::::	;	; 	;r"   c                    |                      d          \  }}}t          |j        d                   D ]K}t          |||d          \  }}t	          j        ||d          }t          |||| j        | j                   Ld S )Nrb   r   Frv   rx   r{   s           r    test_tall_1_rowzBaseQRdelete.test_tall_1_row   s    --''1a$$ 	7 	7Cq!Su===FB1c1%%BRRDI6666	7 	7r"   c           
      T   |                      d          \  }}}t          dd          D ]}}t          |j        d         |z
            D ]]}t          ||||d          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   ^~d S )Nrb   r   r   r   Frv   r   r   s	            r    test_tall_p_rowzBaseQRdelete.test_tall_p_row   s    --''1a!QKK 	; 	;DQWQZ_-- ; ;"1adGGGBYq%SX"6"6::RTY	::::;	; 	;r"   c                    |                      d          \  }}}t          |j        d                   D ]L}t          |||dd          \  }}t	          j        ||d          }t          |||| j        | j                   Md S )Nrb   r   r   Fr   rx   r   s           r    test_tall_1_colzBaseQRdelete.test_tall_1_col   s    --''1a$$ 	7 	7Cq!SEJJJFB1c1%%BRRDI6666	7 	7r"   c           
      V   |                      d          \  }}}t          dd          D ]~}t          |j        d         |z
            D ]^}t          ||||dd          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   _d S )Nrb   r   r   r   r   Fr   r   r   s	            r    test_tall_p_colzBaseQRdelete.test_tall_p_col   s    --''1a!QKK 	; 	;DQWQZ_-- ; ;"1ad%057 7 7BYq%SX"6"6::RTY	::::	;	; 	;r"   c                    |                      d          \  }}}t          |j        d                   D ]K}t          |||d          \  }}t	          j        ||d          }t          |||| j        | j                   Ld S )Nrc   r   Frv   rx   r{   s           r    test_fat_1_rowzBaseQRdelete.test_fat_1_row   r   r"   c           
      T   |                      d          \  }}}t          dd          D ]}}t          |j        d         |z
            D ]]}t          ||||d          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   ^~d S )Nrc   r   r   r   Frv   r   r   s	            r    test_fat_p_rowzBaseQRdelete.test_fat_p_row   r   r"   c                    |                      d          \  }}}t          |j        d                   D ]L}t          |||dd          \  }}t	          j        ||d          }t          |||| j        | j                   Md S )Nrc   r   r   Fr   rx   r   s           r    test_fat_1_colzBaseQRdelete.test_fat_1_col   r   r"   c           
      V   |                      d          \  }}}t          dd          D ]~}t          |j        d         |z
            D ]^}t          ||||dd          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   _d S )Nrc   r   r   r   r   Fr   r   r   s	            r    test_fat_p_colzBaseQRdelete.test_fat_p_col   r   r"   c           	         |                      dd          \  }}}t          |j        d                   D ]L}t          |||d          \  }}t	          j        ||d          }t          |||| j        | j        d           Md S Nrb   economicr   Frv   rx   r{   s           r    test_economic_1_rowz BaseQRdelete.test_economic_1_row   s    --
331a$$ 	> 	>Cq!Su===FB1c1%%BRRDIu====	> 	>r"   c           	      2   |                      dd          \  }}}t          |j        d         |z
            D ]^}t          ||||d          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	        d           _d S r   r   )	rY   r   r   r*   r+   r|   r}   r~   r   s	            r    base_economic_p_row_xxxz$BaseQRdelete.base_economic_p_row_xxx   s    --
331aD)) 	> 	>Cq!S$UCCCFB1eCT22A66BRRDIu====	> 	>r"   c                 0    |                      d           d S Nr.   r   rX   s    r    test_economic_p_row_economicz)BaseQRdelete.test_economic_p_row_economic       $$Q'''''r"   c                 0    |                      d           d S Nr1   r   rX   s    r    test_economic_p_row_sqrz$BaseQRdelete.test_economic_p_row_sqr   r   r"   c                 0    |                      d           d S Nr/   r   rX   s    r    test_economic_p_row_fatz$BaseQRdelete.test_economic_p_row_fat   r   r"   c           	      
   |                      dd          \  }}}t          |j        d                   D ]M}t          |||dd          \  }}t	          j        ||d          }t          |||| j        | j        d           Nd S )Nrb   r   r   r   Fr   rx   r   s           r    test_economic_1_colz BaseQRdelete.test_economic_1_col   s    --
331a$$ 	> 	>Cq!SEJJJFB1c1%%BRRDIu====	> 	>r"   c           
      Z   |                      dd          \  }}}t          dd          D ]}t          |j        d         |z
            D ]_}t          ||||dd          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	        d           `d S )	Nrb   r   r   r   r   r   Fr   r   r   s	            r    test_economic_p_colz BaseQRdelete.test_economic_p_col   s    --
331a!QKK 	B 	BDQWQZ_-- B B"1ad%057 7 7BYq%SX"6"6::RTY	5AAAA	B	B 	Br"   c                    |                      d          \  }}}t          |j        d                   D ]K}t          |||d          \  }}t	          j        ||d          }t          |||| j        | j                   Ld S )Nrd   r   Frv   rx   r{   s           r    test_Mx1_1_rowzBaseQRdelete.test_Mx1_1_row   r   r"   c           
      T   |                      d          \  }}}t          dd          D ]}}t          |j        d         |z
            D ]]}t          ||||d          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   ^~d S )Nrd   r   r   r   Frv   r   r   s	            r    test_Mx1_p_rowzBaseQRdelete.test_Mx1_p_row   r   r"   c                    |                      d          \  }}}t          |j        d                   D ]L}t          |||dd          \  }}t	          j        ||d          }t          |||| j        | j                   Md S )Nre   r   r   Fr   rx   r   s           r    test_1xN_1_colzBaseQRdelete.test_1xN_1_col  r   r"   c           
      V   |                      d          \  }}}t          dd          D ]~}t          |j        d         |z
            D ]^}t          ||||dd          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	                   _d S )Nre   r   r   r   r   Fr   r   r   s	            r    test_1xN_p_colzBaseQRdelete.test_1xN_p_col  r   r"   c           	         |                      dd          \  }}}t          |j        d                   D ]L}t          |||d          \  }}t	          j        ||d          }t          |||| j        | j        d           Md S )Nrd   r   r   Frv   rx   r{   s           r    test_Mx1_economic_1_rowz$BaseQRdelete.test_Mx1_economic_1_row  s    --z221a$$ 	> 	>Cq!Su===FB1c1%%BRRDIu====	> 	>r"   c           
      X   |                      dd          \  }}}t          dd          D ]~}t          |j        d         |z
            D ]^}t          ||||d          \  }}t	          j        |t          |||z             d          }t          |||| j        | j	        d           _d S )Nrd   r   r   r   r   Frv   r   r   s	            r    test_Mx1_economic_p_rowz$BaseQRdelete.test_Mx1_economic_p_row  s    --z221a!QKK 	B 	BDQWQZ_-- B B"1adGGGBYq%SX"6"6::RTY	5AAAAB	B 	Br"   c                 "   |                      d          \  }}}t          ||ddd          \  }}t          |t          j        d|j                             t          |t          j        d|j        d         f|j                             d S )Nre   r   r   r|   r   r   r   r   )rn   r   r   r   ndarrayr   r   rY   r   r*   r+   r}   r~   s         r    test_delete_last_1_rowz#BaseQRdelete.test_delete_last_1_row&  s    --&&1a1aAu--BR&@@@AAAR1agaj/IIIJJJJJr"   c                 n   |                      dd          \  }}}t          ||d|j        d         d          \  }}t          |t	          j        d|j                             t          |t	          j        d|j        d         f|j                             |                      dd          \  }}}t          ||d|j        d         d          \  }}t          |t	          j        d|j                             t          |t	          j        d|j        d         f|j                             d S )	Nrb   r[   r   r|   r   r   r   r   )rn   r   r   r   r   r   r   r   s         r    test_delete_last_p_rowz#BaseQRdelete.test_delete_last_p_row-  s   --//1a1aAGAJ66BR&@@@AAAR1agaj/IIIJJJ--
331a1aAGAJ66BR&@@@AAAR1agaj/IIIJJJJJr"   c                    |                      dd          \  }}}t          ||ddd          \  }}t          |t          j        |j        d         df|j                             t          |t          j        d|j                             |                      dd          \  }}}t          ||ddd          \  }}t          |           t          |j        |j        k               t          |j        |j        k               t          |t          j        |j        d         df|j                             d S )	Nrd   r   r   r   r   r   r   r[   )	rn   r   r   r   r   r   r   r!   r   r   s         r    test_delete_last_1_colz#BaseQRdelete.test_delete_last_1_col8  s   --z221a1aAu--BR171:q/IIIJJJR&@@@AAA--v..1a1aAu--BrAG#$$$AG#$$$R171:q/IIIJJJJJr"   c                    |                      dd          \  }}}t          ||d|j        d         d          \  }}t          |           t	          |j        |j        k               t	          |j        |j        k               t          |t          j        |j        d         df|j                             |                      dd          \  }}}t          ||d|j        d         d          \  }}t          |t          j        |j        d         df|j                             t          |t          j        d|j                             d S )	Nrb   r[   r   r   r   r   r   r   )	rn   r   r   r!   r   r   r   r   r   r   s         r    test_delete_last_p_colz#BaseQRdelete.test_delete_last_p_colE  s+   --//1a1aAGAJ66BrAG#$$$AG#$$$R171:q/IIIJJJ--
331a1aAGAJ66BR171:q/IIIJJJR&@@@AAAAAr"   c                 ~   |                      d          \  }}}t          ||ddd          \  }}t          |t          j        d|j                             t          |t          j        d|j        d         f|j                             |                      d          \  }}}t          ||ddd          \  }}t          |           t          |j        |j        k               t          |j        |j        k               t          |t          j        |j        d         df|j                             d S )Nrf   r   r   r|   r   r   r   )	rn   r   r   r   r   r   r   r!   r   r   s         r    test_delete_1x1_row_colz$BaseQRdelete.test_delete_1x1_row_colR  s   --&&1a1aAu--BR&@@@AAAR1agaj/IIIJJJ--&&1a1aAu--BrAG#$$$AG#$$$R171:q/IIIJJJJJr"   c           	         |dk    r@t          |d           t          |d           f}t          |d           t          d           f}n>t          d           t          d           f}t          d           t          d |           f}t          j        g d|          D ]]\  }}	|                     |          \  }
}} |||f          \  }}|dk    rt	          j        |
|	|dk    rdnd          }nkt          |	|	|z             }|	dk     r4t          |	|	|z   |dk    r|
j        d         n|
j        d         z             }t	          j        |
||dk    rdnd          }|                    d          }|                    d          }t          |||	||d          \  }}t          |||| j
        | j                   t          |||	||d          \  }}t          |||| j
        | j                   |rFt          |||         | j
        | j                   t          |||         | j
        | j                   |                    d          }|                    d          }t          |||	||d          \  }}t          |||| j
        | j                   t          |||	||d          \  }}t          |||| j
        | j                   |rFt          |||         | j
        | j                   t          |||         | j
        | j                   |                    d          }|                    d          } |||f          \  }}t          |||	||d          \  }}t          |||| j
        | j                   t          |||	||d          \  }}t          |||| j
        | j                   |rFt          |||         | j
        | j                   t          |||         | j
        | j                   _d S )	Nr|   ra   rb   rc   r   r   FFTr   )r   	itertoolsproductrn   r   rz   r   copyr   r,   r   r   r   )rY   adjust_strideskspr   overwriteableqindrindrl   r:   r   q0r0qsrsr   r<   r*   r+   r}   r~   q1or1oq2r2q2or2oq3r3q3or3os                                  r    base_non_simple_stridesz$BaseQRdelete.base_non_simple_stridese  s   E>>!DMM54==1D!DMM5;;/DD$KKt-D$KKtQB0D ()?)?)?DD .	O .	OGD!t,,JAr2#^RH--FBAvvYq!%5..QQa@@!AaCLLq55aQ-2e^^qwqzz"M N NAYq!%5..QQa@@ AAr1aE599FBRRDI666 Q1eT::HCS#r49di888 NRXDIDINNNNQtW4949MMMMAAq"aE599FBRRDI666 B1eT::HCS#r49di888 OQtW4949MMMMRXDIDINNNNAA#^QF++FBr2q!UE::FBRRDI666 RAud;;HCS#r49di888 ORXDIDINNNNRXDIDINNNN].	O .	Or"   c                 D    |                      t          dgddd           d S )Nr   r   r|   Tr   r@   rX   s    r    test_non_unit_strides_1_rowz(BaseQRdelete.test_non_unit_strides_1_row  &    $$\A35$GGGGGr"   c                 D    |                      t          dgddd           d S )Nr   r.   r|   Tr   rX   s    r    test_non_unit_strides_p_rowz(BaseQRdelete.test_non_unit_strides_p_row  r   r"   c                 D    |                      t          dgddd           d S )Nr   r   r   Tr   rX   s    r    test_non_unit_strides_1_colz(BaseQRdelete.test_non_unit_strides_1_col  r   r"   c                 D    |                      t          dgddd           d S Nr   r.   r   Fr   rX   s    r    test_non_unit_strides_p_colz(BaseQRdelete.test_non_unit_strides_p_col  s&    $$\A35%HHHHHr"   c                 D    |                      t          dgddd           d S Nr   r   r|   Fr   rD   rX   s    r    test_neg_strides_1_rowz#BaseQRdelete.test_neg_strides_1_row  &    $$^aS!UEJJJJJr"   c                 D    |                      t          dgddd           d S Nr   r.   r|   Fr   rX   s    r    test_neg_strides_p_rowz#BaseQRdelete.test_neg_strides_p_row  r   r"   c                 D    |                      t          dgddd           d S Nr   r   r   Fr   rX   s    r    test_neg_strides_1_colz#BaseQRdelete.test_neg_strides_1_col  r   r"   c                 D    |                      t          dgddd           d S r   r   rX   s    r    test_neg_strides_p_colz#BaseQRdelete.test_neg_strides_p_col  r   r"   c                 D    |                      t          dgddd           d S r   r   rL   rX   s    r    test_non_itemize_strides_1_rowz+BaseQRdelete.test_non_itemize_strides_1_row  '    $$%81#q%OOOOOr"   c                 D    |                      t          dgddd           d S r   r  rX   s    r    test_non_itemize_strides_p_rowz+BaseQRdelete.test_non_itemize_strides_p_row  r
  r"   c                 D    |                      t          dgddd           d S r  r  rX   s    r    test_non_itemize_strides_1_colz+BaseQRdelete.test_non_itemize_strides_1_col  r
  r"   c                 D    |                      t          dgddd           d S r   r  rX   s    r    test_non_itemize_strides_p_colz+BaseQRdelete.test_non_itemize_strides_p_col  r
  r"   c                 D    |                      t          dgddd           d S r   r   rT   rX   s    r     test_non_native_byte_order_1_rowz-BaseQRdelete.test_non_native_byte_order_1_row  r   r"   c                 D    |                      t          dgddd           d S r   r  rX   s    r     test_non_native_byte_order_p_rowz-BaseQRdelete.test_non_native_byte_order_p_row  r   r"   c                 D    |                      t          dgddd           d S r  r  rX   s    r     test_non_native_byte_order_1_colz-BaseQRdelete.test_non_native_byte_order_1_col  r   r"   c                 D    |                      t          dgddd           d S r   r  rX   s    r     test_non_native_byte_order_p_colz-BaseQRdelete.test_non_native_byte_order_p_col  r   r"   c           
         |                      d          \  }}}t          j        ddgddgddg          D ]\  }}}t          |||||d	          \  }}|dk    rDt	          j        |t          ||j        d
         z   ||z   |j        d
         z             d
          }	nCt	          j        |t          ||j        d
         z   ||z   |j        d         z             d          }	t          |||	| j	        | j
                   d S )Nra   ir   r.   r|   r   Frv   r   )rn   r   r   r   r   rz   r   r   r,   r   r   )
rY   r   r*   r+   r:   r   wr}   r~   r   s
             r    
test_neg_kzBaseQRdelete.test_neg_k  s   --&&1a ("bAq6E5>JJ 	7 	7GAq!q!Q15AAAFBEzzYq%!'!*ac!'!*n"E"EqIIYq%!'!*ac!'!*n"E"EqIIRRDI6666	7 	7r"   r[   c                    |dk    rdnd}|dk    r@t          |d           t          |d           f}t          |d           t          d           f}n>t          d           t          d           f}t          d           t          d |           f}|                     d|          \  }	}
}|dk    rt          j        |	d|dk    rdnd          }n/t          j        |	t          dd|z             |dk    rdnd          }|
                    d	          }|                    d	          }t          ||d||d          \  }}t          |||| j        | j        |           t          |||	| j        | j        |           |r|
                    d	          }|                    d	          }t          ||d||d          \  }}t          |||| j        | j        |           t          |||         | j        | j        
           t          |||         | j        | j        
           |r|
                    d          }|                    d          }t          ||d||d          \  }}t          |||| j        | j        |           t          |||         | j        | j        
           t          |||         | j        | j        
           d S d S )Nr[   TFr|   ra   r   r.   r   r   r   C)
r   rn   r   rz   r   r   r,   r   r   r   )rY   r   r   test_Ctest_Frh   r   r   r   r   r   r   r   r*   r+   r}   r~   r   r   r   r   s                        r    base_overwrite_qrzBaseQRdelete.base_overwrite_qr  s   !V^^TT
E>>!DMM54==1D!DMM5;;/DD$KKt-D$KKtQB0DMM%..	2r661aeunn!<<BB1eAqsmm%5..QQaHHB GGCLLGGCLL1aAue44BRTY	:>>>Aq$)TY
;;; 	IAAq!Q5$77FBRRDIzBBBB$didiHHHHB$didiHHHH 	IAAq!Q5$77FBRRDIzBBBB$didiHHHHB$didiHHHHHH	I 	Ir"   c                 6    |                      dddd           d S )Nr|   r   Tr"  rX   s    r    test_overwrite_qr_1_rowz$BaseQRdelete.test_overwrite_qr_1_row  "    uat44444r"   c                 8    |                      ddddd           d S )Nr|   r   Tr   r$  rX   s    r     test_overwrite_economic_qr_1_rowz-BaseQRdelete.test_overwrite_economic_qr_1_row  $    uatZ@@@@@r"   c                 6    |                      dddd           d S )Nr   r   Tr$  rX   s    r    test_overwrite_qr_1_colz$BaseQRdelete.test_overwrite_qr_1_col  s$     	uat44444r"   c                 6    |                      dddd           d S )Nr|   r.   Tr$  rX   s    r    test_overwrite_qr_p_rowz$BaseQRdelete.test_overwrite_qr_p_row  r&  r"   c                 8    |                      ddddd           d S )Nr|   r.   Tr   r$  rX   s    r     test_overwrite_economic_qr_p_rowz-BaseQRdelete.test_overwrite_economic_qr_p_row  r)  r"   c                 6    |                      dddd           d S )Nr   r.   FTr$  rX   s    r    test_overwrite_qr_p_colz$BaseQRdelete.test_overwrite_qr_p_col  s$     	ua55555r"   c                 v    |                      d          \  }}}t          t          t          ||dd           d S )Nra   r   foor   rn   assert_raisesr5   r   rY   r   r*   r+   s       r    test_bad_whichzBaseQRdelete.test_bad_which  s:    --&&1aj)Q1EBBBBBBr"   c           	         |                      d          \  }}}t          t          t          |||j        d         d           t          t          t          |||j        d          dz
  d           t          t          t          |||j        d         dd           t          t          t          |||j        d          dz
  dd           d S )Nrb   r   r   r   rn   r6  r5   r   r   r7  s       r    
test_bad_kzBaseQRdelete.test_bad_k  s    --''1aj)Q171:qAAAj)QAGAJ;q=!DDDj)Q171:q%HHHj)QAGAJ;q=!UKKKKKr"   c           	         |                      d          \  }}}t          t          t          ||dd           t          t          t          ||ddd           t          t          t          ||dd           t          t          t          ||ddd           t          t          t          ||d|j        d         dz
             t          t          t          ||d|j        d         dz
  d           d S )Nrb   r   r$   r   r.   r   r   r:  r7  s       r    
test_bad_pzBaseQRdelete.test_bad_p#  s    --''1aj)Q1b999j)Q1b%@@@ 	j)Q1a888j)Q1a??? 	j)Q1agajlCCCj)Q1agajlEJJJJJr"   c                     |                      d          \  }}}t          t          t          t	          j        g           |dd           d S Nrb   r   r   rn   r6  r5   r   r   arrayr7  s       r    test_empty_qzBaseQRdelete.test_empty_q1  s?    --''1aj)RXb\\1aCCCCCr"   c                     |                      d          \  }}}t          t          t          |t	          j        g           dd           d S r?  r@  r7  s       r    test_empty_rzBaseQRdelete.test_empty_r6  s?    --''1aj)QaCCCCCr"   c                     |                      d          \  }}}|dd          }t          t          t          ||dd           d S )Nrb   r   r   r5  r7  s       r    test_mismatched_q_and_rz$BaseQRdelete.test_mismatched_q_and_r;  sD    --''1aabbEj)Q1a88888r"   c           
          g d}|                      d          \  }}}|D ]\}|j                            |          }t          j        d          5  |j                            |          }d d d            n# 1 swxY w Y   t          t          t          ||ddd           t          t          t          ||ddd           t          t          t          ||ddd	           t          t          t          ||ddd	           t          t          t          ||ddd           t          t          t          ||ddd           t          t          t          ||ddd	           t          t          t          ||ddd	           ^d S )
Nint8int16int32int64uint8uint16uint32uint64float16
longdoubleclongdoubleboolrb   ignoreinvalidr   r   r|   r   r   )rn   realrP   r   errstater6  r5   r   )rY   dtsr   r   r   r   r*   r+   s           r    test_unsupported_dtypesz$BaseQRdelete.test_unsupported_dtypes@  s      MM&))	2r 	E 	EEu%%AX... * *GNN5))* * * * * * * * * * * * * * **iB1eDDD*iB1eDDD*iB1eDDD*iB1eDDD*iQ1eDDD*iQ1eDDD*iQ1eDDD*iQ1eDDDD	E 	Es   A99A=	 A=	c           	         |                      d          \  }}}|                    d          }t          j        |d<   t	          t
          t          ||ddd           t	          t
          t          ||ddd           t	          t
          t          ||ddd           t	          t
          t          ||ddd           |                    d          }t          j        |d<   t	          t
          t          ||ddd           t	          t
          t          ||ddd           t	          t
          t          ||ddd           t	          t
          t          ||ddd           d S )	Nrb   r   r`   r   r   r|   r.   r   )rn   r   r   nanr6  r5   r   )rY   a0r   r   r*   r+   s         r    test_check_finitezBaseQRdelete.test_check_finiteT  s#   ]]6**
BGGCLL#j)QAq%@@@j)QAq%@@@j)QAq%@@@j)QAq%@@@GGCLL#j)RAq%@@@j)RAq%@@@j)RAq%@@@j)RAq%@@@@@r"   c           	      `   |                      d          \  }}}t          t          t          |d         |ddd           t          t          t          ||d         ddd           t          t          t          |d         |ddd           t          t          t          ||d         ddd           d S )Nrf   r   r   r   r|   r   r5  r7  s       r    test_qr_scalarzBaseQRdelete.test_qr_scalare  s    --&&1aj)QtWaAuEEEj)Q$AuEEEj)QtWaAuEEEj)Q$AuEEEEEr"   Nro   )Crp   rq   rr   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   r   r   r   r  r  r  r	  r  r  r  r  r  r  r  r  r"  r%  r(  r+  r-  r/  r1  r8  r;  r=  rB  rD  rF  r[  r_  ra  rO   r"   r    rt   rt   k   sG       7 7 7; ; ;7 7 7; ; ;7 7 7; ; ;7 7 7; ; ;7 7 7; ; ;7 7 7; ; ;> > >> > >( ( (( ( (( ( (> > >B B B7 7 7; ; ;7 7 7; ; ;> > >B B BK K K	K 	K 	KK K KB B BK K K&7O 7O 7OrH H HH H HH H HI I IK K KK K KK K KK K KP P PP P PP P PP P PK K KK K KK K KK K K7 7 7$I $I $I $IL5 5 5A A A5 5 5
5 5 5A A A6 6 6
C C CL L LK K KD D D
D D D
9 9 9
E E E(A A A"F F F F Fr"   rt   c                   .    e Zd Z ej        d          ZdS )TestQRdelete_ffNrp   rq   rr   r   r   rO   r"   r    rc  rc  l          BHSMMEEEr"   rc  c                   .    e Zd Z ej        d          ZdS )TestQRdelete_Fr   Nre  rO   r"   r    rh  rh  o  rf  r"   rh  c                   .    e Zd Z ej        d          ZdS )TestQRdelete_ddNre  rO   r"   r    rj  rj  r  rf  r"   rj  c                   .    e Zd Z ej        d          ZdS )TestQRdelete_DDNre  rO   r"   r    rm  rm  u  rf  r"   rm  c                       e Zd ZdG f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.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3d5 Z4d6 Z5d7 Z6d8 Z7d9 Z8d: Z9d; Z:d< Z;d= Z<d> Z=d? Z>d@ Z?dA Z@dB ZAdC ZBdD ZCdE ZDdF ZE xZFS )HBaseQRinsertr[   r|   r   c                    t                                          ||          \  }}}t          |dk               t          j                            d          }|dk    rJ|dk    r!|                    |j        d                   }	n|                    ||j        d         f          }	n_|dk    rJ|dk    r!|                    |j        d                   }	n2|                    |j        d         |f          }	nt          d           t          j        | j	        
                    d                    r"|                    |	j                  }
|	d|
z  z   }	|	                    | j	                  }	||||	fS )Nr   i  r|   r   r   z%which should be either "row" or "col"rg   )superrn   r   r   ri   RandomStater   r5   rk   r   rl   rP   )rY   rl   rh   r   r   r   r*   r+   rngurC   	__class__s              r    rn   zBaseQRinsert.generatey  sH   ''""4..1aAi##D)) E>>AvvJJqwqz**JJ171://e^^AvvJJqwqz**JJ
A//>????4:??1--.. 	

17##ABF
AHHTZ  !Qzr"   c                    |                      dd          \  }}}}t          |j        d         dz             D ]K}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j                   Ld S )Nra   r|   r4  r   r   	rn   ry   r   r
   r   insertr,   r   r   	rY   r   r*   r+   ru  r|   r}   r~   r   s	            r    r   zBaseQRinsert.test_sqr_1_row      ]]5]66
1aa(( 	7 	7Cq!Q,,FB1c1a((BRRDI6666	7 	7r"   c           	      N   |                      ddd          \  }}}}t          |j        d         dz             D ]i}t          ||||          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   jd S )Nra   r|   r.   r   r   r   r   rn   ry   r   r
   r   ry  r[   intpr,   r   r   rz  s	            r    r   zBaseQRinsert.test_sqr_p_row  s    ]]5];;
1aa(( 	7 	7Cq!Q,,FB1bgabg661==BRRDI6666	7 	7r"   c           	         |                      dd          \  }}}}t          |j        d         dz             D ]N}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j                   Od S )Nra   r   r4  r   Foverwrite_qrurx  	rY   r   r*   r+   ru  r   r}   r~   r   s	            r    r   zBaseQRinsert.test_sqr_1_col      ]]5]66
1aa(( 	7 	7Cq!QU%HHHFB1c1a((BRRDI6666	7 	7r"   c           	      T   |                      ddd          \  }}}}t          |j        d         dz             D ]l}t          ||||dd          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   md S )Nra   r   r.   r}  r   Fr  r~  r  s	            r    r   zBaseQRinsert.test_sqr_p_col      ]]5];;
1aa(( 	7 	7Cq!QU%HHHFB1bgabg661==BRRDI6666	7 	7r"   c                    |                      dd          \  }}}}t          |j        d         dz             D ]K}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j                   Ld S )Nrb   r|   r4  r   r   rx  rz  s	            r    r   zBaseQRinsert.test_tall_1_row  s    ]]6]77
1aa(( 	7 	7Cq!Q,,FB1c1a((BRRDI6666	7 	7r"   c           	      N   |                      ddd          \  }}}}t          |j        d         dz             D ]i}t          ||||          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   jd S )Nrb   r|   r.   r}  r   r   r~  rz  s	            r    r   zBaseQRinsert.test_tall_p_row  s    ]]6!]<<
1aa(( 	7 	7Cq!Q,,FB1bgabg661==BRRDI6666	7 	7r"   c           	         |                      dd          \  }}}}t          |j        d         dz             D ]N}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j                   Od S )Nrb   r   r4  r   Fr  rx  r  s	            r    r   zBaseQRinsert.test_tall_1_col  s    ]]6]77
1aa(( 	7 	7Cq!QU%HHHFB1c1a((BRRDI6666	7 	7r"   c           	      T   |                      dd|          \  }}}}t          |j        d         dz             D ]l}t          ||||dd          \  }}t	          j        |t	          j        ||t          j                  |d          }	t          |||	| j	        | j
                   md S )Nrb   r   r}  r   Fr  r~  
rY   r   r   r*   r+   ru  r   r}   r~   r   s
             r    base_tall_p_col_xxxz BaseQRinsert.base_tall_p_col_xxx  s    ]]6!]<<
1aa(( 	7 	7Cq!QU%HHHFB1bgabg661==BRRDI6666	7 	7r"   c                 0    |                      d           d S r   r  rX   s    r    test_tall_p_col_tallz!BaseQRinsert.test_tall_p_col_tall        #####r"   c                 0    |                      d           d S r   r  rX   s    r    test_tall_p_col_sqrz BaseQRinsert.test_tall_p_col_sqr  r  r"   c                 0    |                      d           d S r   r  rX   s    r    test_tall_p_col_fatz BaseQRinsert.test_tall_p_col_fat  r  r"   c                    |                      dd          \  }}}}t          |j        d         dz             D ]K}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j                   Ld S )Nrc   r|   r4  r   r   rx  rz  s	            r    r   zBaseQRinsert.test_fat_1_row  r{  r"   c           	      N   |                      dd|          \  }}}}t          |j        d         dz             D ]i}t          ||||          \  }}t	          j        |t	          j        ||t          j                  |d          }	t          |||	| j	        | j
                   jd S )Nrc   r|   r}  r   r   r~  )
rY   r   r   r*   r+   ru  r|   r}   r~   r   s
             r    base_fat_p_row_xxxzBaseQRinsert.base_fat_p_row_xxx      ]]5];;
1aa(( 	7 	7Cq!Q,,FB1bgabg661==BRRDI6666	7 	7r"   c                 0    |                      d           d S r   r  rX   s    r    test_fat_p_row_fatzBaseQRinsert.test_fat_p_row_fat      """""r"   c                 0    |                      d           d S r   r  rX   s    r    test_fat_p_row_sqrzBaseQRinsert.test_fat_p_row_sqr  r  r"   c                 0    |                      d           d S r   r  rX   s    r    test_fat_p_row_tallz BaseQRinsert.test_fat_p_row_tall  r  r"   c           	         |                      dd          \  }}}}t          |j        d         dz             D ]N}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j                   Od S )Nrc   r   r4  r   Fr  rx  r  s	            r    r   zBaseQRinsert.test_fat_1_col  r  r"   c           	      T   |                      ddd          \  }}}}t          |j        d         dz             D ]l}t          ||||dd          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   md S )Nrc   r   r.   r}  r   Fr  r~  r  s	            r    r   zBaseQRinsert.test_fat_p_col  r  r"   c           	         |                      ddd          \  }}}}t          |j        d         dz             D ]N}t          ||||d          \  }}t	          j        |||d          }t          |||| j        | j        d           Od S )Nrb   r   r|   r   r   Fr  rx  rz  s	            r    r   z BaseQRinsert.test_economic_1_row  s    ]]6:u==
1aa(( 	> 	>Cq!Q5AAAFB1c1a((BRRDIu====	> 	>r"   c           	      T   |                      dddd          \  }}}}t          |j        d         dz             D ]l}t          ||||d          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
        d           md S )	Nrb   r   r|   r.   r   r   Fr  r~  rz  s	            r    test_economic_p_rowz BaseQRinsert.test_economic_p_row  s    ]]6:ua@@
1aa(( 	> 	>Cq!Q5AAAFB1bgabg661==BRRDIu====	> 	>r"   c           	      >   |                      ddd          \  }}}}t          |j        d         dz             D ]a}t          |||                                |dd          \  }}t          j        |||d          }t          |||| j        | j	        d           bd S )Nrb   r   r   r4  r   Fr  )
rn   ry   r   r
   r   r   ry  r,   r   r   r  s	            r    r   z BaseQRinsert.test_economic_1_col  s    ]]6:U]CC
1aa(( 	> 	>Cq!QVVXXsEOOOFB1c1a((BRRDIu====	> 	>r"   c           	          t          j        dd| j                  }t          j        d| j                  }t          j        g d| j                  }t	          t
          j        t          |||dd           d S )Nr1   r.   )r   )r   r   r   r   r   r   r   )r   r   r   rA  r6  r   LinAlgErrorr
   )rY   r*   r+   ru  s       r    test_economic_1_col_bad_updatez+BaseQRinsert.test_economic_1_col_bad_update"  sl     F1atz***F1DJ'''H___dj11f()Q1aGGGGGr"   c           	      X   |                      ddd|          \  }}}}t          |j        d         dz             D ]m}t          ||||dd          \  }}t	          j        |t	          j        ||t          j                  |d          }	t          |||	| j	        | j
        d           nd S )Nrb   r   r   r}  r   Fr  r~  r  s
             r    base_economic_p_col_xxxz$BaseQRinsert.base_economic_p_col_xxx.  s    ]]6:Ua]HH
1aa(( 	> 	>Cq!QU%HHHFB1bgabg661==BRRDIu====	> 	>r"   c                 0    |                      d           d S r   r  rX   s    r    test_economic_p_col_ecoz$BaseQRinsert.test_economic_p_col_eco5  r   r"   c                 0    |                      d           d S r   r  rX   s    r    test_economic_p_col_sqrz$BaseQRinsert.test_economic_p_col_sqr9  r   r"   c                 0    |                      d           d S r   r  rX   s    r    test_economic_p_col_fatz$BaseQRinsert.test_economic_p_col_fat=  r   r"   c                    |                      dd          \  }}}}t          |j        d         dz             D ]K}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j                   Ld S )Nrd   r|   r4  r   r   rx  rz  s	            r    r   zBaseQRinsert.test_Mx1_1_rowA  r{  r"   c           	      N   |                      ddd          \  }}}}t          |j        d         dz             D ]i}t          ||||          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   jd S )Nrd   r|   r.   r}  r   r   r~  rz  s	            r    r   zBaseQRinsert.test_Mx1_p_rowH  r  r"   c           	         |                      dd          \  }}}}t          |j        d         dz             D ]N}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j                   Od S )Nrd   r   r4  r   Fr  rx  r  s	            r    test_Mx1_1_colzBaseQRinsert.test_Mx1_1_colO  r  r"   c           	      T   |                      ddd          \  }}}}t          |j        d         dz             D ]l}t          ||||dd          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   md S )Nrd   r   r.   r}  r   Fr  r~  r  s	            r    test_Mx1_p_colzBaseQRinsert.test_Mx1_p_colV      ]]5];;
1aa(( 	7 	7Cq!QU%HHHFB1bgabg661==BRRDI6666	7 	7r"   c           	         |                      ddd          \  }}}}t          |j        d         dz             D ]L}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j        d           Md S )Nrd   r   r|   r   r   Frx  rz  s	            r    r   z$BaseQRinsert.test_Mx1_economic_1_row]  s    ]]5*e<<
1aa(( 	> 	>Cq!Q,,FB1c1a((BRRDIu====	> 	>r"   c           	      P   |                      dddd          \  }}}}t          |j        d         dz             D ]j}t          ||||          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
        d           kd S )Nrd   r   r|   r.   r   r   Fr~  rz  s	            r    r   z$BaseQRinsert.test_Mx1_economic_p_rowd  s    ]]5*eQ??
1aa(( 	> 	>Cq!Q,,FB1bgabg661==BRRDIu====	> 	>r"   c           	         |                      ddd          \  }}}}t          |j        d         dz             D ]O}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j        d           Pd S )Nrd   r   r   r   Fr  rx  r  s	            r    test_Mx1_economic_1_colz$BaseQRinsert.test_Mx1_economic_1_colk  s    ]]5*e<<
1aa(( 	> 	>Cq!QU%HHHFB1c1a((BRRDIu====	> 	>r"   c           	      V   |                      dddd          \  }}}}t          |j        d         dz             D ]m}t          ||||dd          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
        d           nd S )Nrd   r   r   r.   r   Fr  r~  r  s	            r    test_Mx1_economic_p_colz$BaseQRinsert.test_Mx1_economic_p_colr  s    ]]5*eQ??
1aa(( 	> 	>Cq!QU%HHHFB1bgabg661==BRRDIu====	> 	>r"   c                    |                      dd          \  }}}}t          |j        d         dz             D ]K}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j                   Ld S )Nre   r|   r4  r   r   rx  rz  s	            r    test_1xN_1_rowzBaseQRinsert.test_1xN_1_rowy  r{  r"   c           	      N   |                      ddd          \  }}}}t          |j        d         dz             D ]i}t          ||||          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   jd S )Nre   r|   r.   r}  r   r   r~  rz  s	            r    test_1xN_p_rowzBaseQRinsert.test_1xN_p_row  r  r"   c           	         |                      dd          \  }}}}t          |j        d         dz             D ]N}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j                   Od S )Nre   r   r4  r   Fr  rx  r  s	            r    r   zBaseQRinsert.test_1xN_1_col  r  r"   c           	      T   |                      ddd          \  }}}}t          |j        d         dz             D ]l}t          ||||dd          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   md S )Nre   r   r.   r}  r   Fr  r~  r  s	            r    r   zBaseQRinsert.test_1xN_p_col  r  r"   c                    |                      dd          \  }}}}t          |j        d         dz             D ]K}t          ||||          \  }}t	          j        |||d          }t          |||| j        | j                   Ld S )Nrf   r|   r4  r   r   rx  rz  s	            r    test_1x1_1_rowzBaseQRinsert.test_1x1_1_row  r{  r"   c           	      N   |                      ddd          \  }}}}t          |j        d         dz             D ]i}t          ||||          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   jd S )Nrf   r|   r.   r}  r   r   r~  rz  s	            r    test_1x1_p_rowzBaseQRinsert.test_1x1_p_row  r  r"   c           	         |                      dd          \  }}}}t          |j        d         dz             D ]N}t          ||||dd          \  }}t	          j        |||d          }t          |||| j        | j                   Od S )Nrf   r   r4  r   Fr  rx  r  s	            r    test_1x1_1_colzBaseQRinsert.test_1x1_1_col  r  r"   c           	      T   |                      ddd          \  }}}}t          |j        d         dz             D ]l}t          ||||dd          \  }}t	          j        |t	          j        d|t          j                  |d          }t          |||| j	        | j
                   md S )Nrf   r   r.   r}  r   Fr  r~  r  s	            r    test_1x1_p_colzBaseQRinsert.test_1x1_p_col  r  r"   c           	         |                      dd          \  }}}}t          t          t          |d         ||dd           t          t          t          ||d         |dd           t          t          t          |||d         dd           t          t          t          |d         ||dd           t          t          t          ||d         |dd           t          t          t          |||d         dd           d S )Nrf   r|   r4  r   r   r   rn   r6  r5   r
   rY   r   r*   r+   ru  s        r    test_1x1_1_scalarzBaseQRinsert.test_1x1_1_scalar  s    ]]5]66
1aj)QtWaAuEEEj)Q$AuEEEj)Q1Q4EBBBj)QtWaAuEEEj)Q$AuEEEj)Q1Q4EBBBBBr"   c           	         dD ]S}|                      |||          \  }}}}	 ||||	f          \  }
}}|dk    r t          j        |||	|dk    rdnd          }nEt          j        |t          j        ||t          j                  |dk    r|	n|	|dk    rdnd          }|                    d          }|                    d          }|	                    d          }t          |
||||d          \  }}t          |||| j        | j	                   t          |
||||d	          \  }}t          |||| j        | j	                   |                    d          }|                    d          }|	                    d          }t          |||||d          \  }}t          |||| j        | j	                   t          |||||d	          \  }}t          |||| j        | j	                   |                    d          }|                    d          }|	                    d          }t          |||||d          \  }}t          |||| j        | j	                   t          |||||d	          \  }}t          |||| j        | j	                   |                    d          }|                    d          }|	                    d          } ||||f          \  }
}}t          |
||||d          \  }}t          |||| j        | j	                   t          |
||||d	          \  }} t          || || j        | j	                   Ud S )
Nr   r}  r   r|   r   r   Fr  T)
rn   r   ry  r[   r  r   r
   r,   r   r   )!rY   r   r:   r   r   rl   r   r   r   u0r   r   usair*   r+   ru  r}   r~   r   r   r   r   r   r   r   r   r   r   q5r5q5or5os!                                    r    r   z$BaseQRinsert.base_non_simple_strides  sY   * /	9 /	9D MM$eqMAAMAr2r'R55JBBAvvYq!Reunn!DDYq"'!Q"8"8#unn""e^^4 4 AAAr1aEGGGFBRRDI666 Q1e4HHHHCS#r49di888AAAq"aEGGGFBRRDI666 B1e4HHHHCS#r49di888AAAq!REGGGFBRRDI666 Ar1e4HHHHCS#r49di888AAA'Aq	22JBBr2r1e5IIIFBRRDI666 RQTJJJHCS#r49di8888_/	9 /	9r"   c                 @    |                      t          ddd           d S Nr   r   r|   r   rX   s    r    r   z(BaseQRinsert.test_non_unit_strides_1_row  "    $$\1a?????r"   c                 @    |                      t          ddd           d S Nr   r.   r|   r   rX   s    r    r   z(BaseQRinsert.test_non_unit_strides_p_row  r  r"   c                 @    |                      t          ddd           d S Nr   r   r   r   rX   s    r    r   z(BaseQRinsert.test_non_unit_strides_1_col  r  r"   c                 @    |                      t          ddd           d S Nr   r.   r   r   rX   s    r    r   z(BaseQRinsert.test_non_unit_strides_p_col  r  r"   c                 @    |                      t          ddd           d S r  r   rX   s    r    r   z#BaseQRinsert.test_neg_strides_1_row  "    $$^Q5AAAAAr"   c                 @    |                      t          ddd           d S r  r   rX   s    r    r  z#BaseQRinsert.test_neg_strides_p_row  r  r"   c                 @    |                      t          ddd           d S r  r   rX   s    r    r  z#BaseQRinsert.test_neg_strides_1_col  r  r"   c                 @    |                      t          ddd           d S r  r   rX   s    r    r  z#BaseQRinsert.test_neg_strides_p_col  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    test_non_itemsize_strides_1_rowz,BaseQRinsert.test_non_itemsize_strides_1_row  #    $$%8!QFFFFFr"   c                 @    |                      t          ddd           d S r  r  rX   s    r    test_non_itemsize_strides_p_rowz,BaseQRinsert.test_non_itemsize_strides_p_row  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    test_non_itemsize_strides_1_colz,BaseQRinsert.test_non_itemsize_strides_1_col  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    test_non_itemsize_strides_p_colz,BaseQRinsert.test_non_itemsize_strides_p_col  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    r  z-BaseQRinsert.test_non_native_byte_order_1_row  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    r  z-BaseQRinsert.test_non_native_byte_order_p_row  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    r  z-BaseQRinsert.test_non_native_byte_order_1_col  r  r"   c                 @    |                      t          ddd           d S r  r  rX   s    r    r  z-BaseQRinsert.test_non_native_byte_order_p_col  r  r"   c                    |                      ddd          \  }}}}|                    d          }|                                }t          |||ddd          \  }}t          j        |d|d          }	t          |||	| j        | j                   t          |||| j        | j                   t          |||ddd	          \  }
}t          |
||	| j        | j                   t          |
|| j        | j        
           t          ||	                                | j        | j                   |                    d          }|                                }t          |||ddd          \  }}t          |||	| j        | j                   t          |||| j        | j                   t          |||ddd	          \  }}t          |||	| j        | j                   t          ||| j        | j        
           d S )Nra   r   r   r}  r  r   Fr  Tr   r   )
rn   r   r
   r   ry  r,   r   r   r   r   )rY   r   r   r+   ru  r*   r  r}   r~   r   r   r   qFu1r   r   q4r4s                     r    test_overwrite_qu_rank_1z%BaseQRinsert.test_overwrite_qu_rank_1  s   
 }}U%1}==2q!GGCLLVVXX1aAuEBBBBYq!R##RTY	222Aq$)TY/// 1aAuDAAABRTY	222ADIDI>>>>27799di;;; WWS\\WWYY2q"aeDDDBRTY	222Q49di000 2q"adCCCBRTY	222BTYTY??????r"   c                    |                      ddd          \  }}}}|                    d          }t          j        |t          j        dt          j                  |d          }t          |||ddd	          \  }}t          |||| j        | j	                   t          |||| j        | j	                   t          |||ddd
	          \  }	}
t          |	|
|| j        | j	                   t          |	|| j        | j	                   d S )Nra   r   r.   r}  r   r   r   Fr  Tr   )rn   r   r   ry  r4   r  r
   r,   r   r   r   )rY   r   r   r+   ru  r*   r   r}   r~   r   r   s              r    test_overwrite_qu_rank_pz%BaseQRinsert.test_overwrite_qu_rank_p>  s    }}U%1}==2q!GGCLLYq"(1bg..155 1aAuEBBBBRTY	222Aq$)TY/// 1aAuDAAABRTY	222ADIDI>>>>>>r"   c           	         |                      dd          \  }}}}t          t          t          t	          j        g           ||dd           t          t          t          |t	          j        g           |dd           t          t          t          ||t	          j        g           dd           t          t          t          t	          j        g           ||dd           t          t          t          |t	          j        g           |dd           t          t          t          ||t	          j        g           dd           d S )Nra   r|   r4  r   r   )rn   r6  r5   r
   r   rA  r  s        r    test_empty_inputszBaseQRinsert.test_empty_inputsP  s    ]]5]66
1aj)RXb\\1aEJJJj)QaEJJJj)Q28B<<EJJJj)RXb\\1aEJJJj)QaEJJJj)Q28B<<EJJJJJr"   c           	         |                      dd          \  }}}}t          t          t          ||dd          |dd           t          t          t          |d d         ||dd           t          t          t          |||dd          dd           t          t          t          ||dd          |dd           t          t          t          |d d         ||dd           t          t          t          |||dd          dd           d S )Nrb   r|   r4  r   r   r   r  r  s        r    test_mismatched_shapesz#BaseQRinsert.test_mismatched_shapesY  s    ]]6]77
1aj)Q!""q!UCCCj)QssVQ1eDDDj)Q1QRR5!UCCCj)Q!""q!UCCCj)QssVQ1eDDDj)Q1QRR5!UCCCCCr"   c           
         g d}|                      dd          \  }}}}|D ]8}|j                            |          }t          j        d          5  |j                            |          }d d d            n# 1 swxY w Y   |j                            |          }	t          t          t          |||dd           t          t          t          |||dd           t          t          t          |||dd           t          t          t          |||dd           t          t          t          |||	dd           t          t          t          |||	dd           :d S )	NrH  ra   r|   r4  rU  rV  r   r   )rn   rX  rP   r   rY  r6  r5   r
   )
rY   rZ  r   r   r   r  r   r*   r+   ru  s
             r    r[  z$BaseQRinsert.test_unsupported_dtypesb  s      e5992r2 
	F 
	FEu%%AX... * *GNN5))* * * * * * * * * * * * * * *u%%A*iBAuEEE*iBAuEEE*iQAuEEE*iQAuEEE*iRAuEEE*iRAuEEEE
	F 
	Fs   A<<B 	B 	c           	      x   |                      ddd          \  }}}}|                    d          }t          j        |d<   t	          t
          t          |||d d df         dd           t	          t
          t          |||dd           t	          t
          t          |||d d df         dd           t	          t
          t          |||dd           |                    d          }t          j        |d<   t	          t
          t          |||d d df         dd           t	          t
          t          |||dd           t	          t
          t          |||d d df         dd           t	          t
          t          |||dd           |                    d          }t          j        |d	<   t	          t
          t          |||d d df         dd           t	          t
          t          |||dd           t	          t
          t          |||d d df         dd           t	          t
          t          |||dd           d S )
Nra   r|   r.   r}  r   r`   r   r   r   )rn   r   r   r]  r6  r5   r
   )rY   r^  r   r   r  r*   r+   ru  s           r    r_  zBaseQRinsert.test_check_finitet  s   uEQ??BBGGCLL#j)QBqqqsGQFFFj)QB5AAAj)QBqqqsGQFFFj)QB5AAAGGCLL#j)RBqqqsGQFFFj)RB5AAAj)RBqqqsGQFFFj)RB5AAAGGCLL#j)RQqqqsVQFFFj)RQ5AAAj)RQqqqsVQFFFj)RQ5AAAAAr"   )r[   r|   r   )Grp   rq   rr   rn   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  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_  __classcell__rv  s   @r    rp  rp  x  sf            67 7 77 7 77 7 77 7 77 7 77 7 77 7 77 7 7$ $ $$ $ $$ $ $7 7 77 7 7# # ## # ## # #7 7 77 7 7> > >> > >> > >H H H> > >( ( (( ( (( ( (7 7 77 7 77 7 77 7 7> > >> > >> > >> > >7 7 77 7 77 7 77 7 77 7 77 7 77 7 77 7 7C C C09 09 09d@ @ @@ @ @@ @ @@ @ @B B BB B BB B BB B BG G GG G GG G GG G GB B BB B BB B BB B B@ @ @B? ? ?$K K KD D DF F F$B B B B B B Br"   rp  c                   .    e Zd Z ej        d          ZdS )TestQRinsert_frd  Nre  rO   r"   r    r  r    rf  r"   r  c                   .    e Zd Z ej        d          ZdS )TestQRinsert_Fr   Nre  rO   r"   r    r	  r	    rf  r"   r	  c                   .    e Zd Z ej        d          ZdS )TestQRinsert_drk  Nre  rO   r"   r    r  r    rf  r"   r  c                   .    e Zd Z ej        d          ZdS )TestQRinsert_Drn  Nre  rO   r"   r    r  r    rf  r"   r  c                   (    e Zd Zd0 f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/ xZ0S )1BaseQRupdater[   r   c                 4   t                                          ||          \  }}}|dk    rUt          j                            |j        d                   }t          j                            |j        d                   }nXt          j                            |j        d         |f          }t          j                            |j        d         |f          }t          j        | j                            d                    rXt          j                            |j                  }	|d|	z  z   }t          j                            |j                  }
|d|
z  z   }|                    | j                  }|                    | j                  }|||||fS )Nr   r   rg   )	rr  rn   r   ri   r   rk   r   rl   rP   )rY   rl   rh   r   r   r*   r+   ru  vrC   rK   rv  s              r    rn   zBaseQRupdate.generate  sA   ''""4..1a 66	  ,,A	  ,,AA	  !'!*a11A	  !'!*a11A?4:??1--.. 		  ))ABF
A	  ))ABF
AHHTZ  HHTZ  !Q1}r"   c                     |                      d          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j                   d S )Nra   Frn   r	   r   outerr   r,   r   r   	rY   r   r*   r+   ru  r  r}   r~   r   s	            r    test_sqr_rank_1zBaseQRupdate.test_sqr_rank_1  t    e,,1aA1aAu--B!QVVXX&&&RTY	22222r"   c                    dD ]}|                      d|          \  }}}}}|dk    r6|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }	t          |||	| j	        | j
                   d S )Nr   r   r.   r1   ra   r   r   Frn   reshapesizer	   r   r   r   r   r,   r   r   
rY   r   r   r*   r+   ru  r  r}   r~   r   s
             r    test_sqr_rank_pzBaseQRupdate.test_sqr_rank_p  s     	7 	7A MM%1M55MAq!QAvvIIafa((IIafa((q!Q511FBRVAqsxxzz***BRRDI6666	7 	7r"   c                     |                      d          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j                   d S )Nrb   Fr  r  s	            r    test_tall_rank_1zBaseQRupdate.test_tall_rank_1  st    f--1aA1aAu--B!QVVXX&&&RTY	22222r"   c                    dD ]}|                      d|          \  }}}}}|dk    r6|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }	t          |||	| j	        | j
                   d S )Nr  rb   r  r   Fr  r  s
             r    test_tall_rank_pzBaseQRupdate.test_tall_rank_p  s     	7 	7A MM&AM66MAq!QAvvIIafa((IIafa((q!Q511FBRVAqsxxzz***BRRDI6666	7 	7r"   c                     |                      d          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j                   d S )Nrc   Fr  r  s	            r    test_fat_rank_1zBaseQRupdate.test_fat_rank_1  r  r"   c                    dD ]}|                      d|          \  }}}}}|dk    r6|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }	t          |||	| j	        | j
                   d S )Nr  rc   r  r   Fr  r  s
             r    test_fat_rank_pzBaseQRupdate.test_fat_rank_p  s     	7 	7A MM%1M55MAq!QAvvIIafa((IIafa((q!Q511FBRVAqsxxzz***BRRDI6666	7 	7r"   c                     |                      dd          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j        d           d S )Nrb   r   Fr  r  s	            r    test_economic_rank_1z!BaseQRupdate.test_economic_rank_1  sx    fj991aA1aAu--B!QVVXX&&&RTY	599999r"   c           	         dD ]}|                      dd|          \  }}}}}|dk    r6|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }	t          |||	| j	        | j
        d           d S )Nr  rb   r   r   Fr  r  s
             r    test_economic_rank_pz!BaseQRupdate.test_economic_rank_p  s     	> 	>A MM&*a@@MAq!QAvvIIafa((IIafa((q!Q511FBRVAqsxxzz***BRRDIu====	> 	>r"   c                     |                      d          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j                   d S )Nrd   Fr  r  s	            r    test_Mx1_rank_1zBaseQRupdate.test_Mx1_rank_1  r  r"   c                 p   |                      dd          \  }}}}}|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }t          |||| j	        | j
                   d S )Nrd   r   r  Fr  r  s	            r    test_Mx1_rank_pzBaseQRupdate.test_Mx1_rank_p       eq111aAIIafa  IIafa  1aAu--B1388::&&&RTY	22222r"   c                     |                      dd          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j        d           d S )Nrd   r   Fr  r  s	            r    test_Mx1_economic_rank_1z%BaseQRupdate.test_Mx1_economic_rank_1   sx    eZ881aA1aAu--B!QVVXX&&&RTY	599999r"   c                 t   |                      ddd          \  }}}}}|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }t          |||| j	        | j
        d           d S )Nrd   r   r   r  Fr  r  s	            r    test_Mx1_economic_rank_pz%BaseQRupdate.test_Mx1_economic_rank_p  s     eZ1==1aAIIafa  IIafa  1aAu--B1388::&&&RTY	599999r"   c                     |                      d          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j                   d S )Nre   Fr  r  s	            r    test_1xN_rank_1zBaseQRupdate.test_1xN_rank_1  r  r"   c                 p   |                      dd          \  }}}}}|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }t          |||| j	        | j
                   d S )Nre   r   r  Fr  r  s	            r    test_1xN_rank_pzBaseQRupdate.test_1xN_rank_p  r0  r"   c                     |                      d          \  }}}}}t          ||||d          \  }}|t          j        ||                                          z   }t          |||| j        | j                   d S )Nrf   Fr  r  s	            r    test_1x1_rank_1zBaseQRupdate.test_1x1_rank_1   r  r"   c                 p   |                      dd          \  }}}}}|                    |j        d          }|                    |j        d          }t          ||||d          \  }}|t	          j        ||j                                                  z   }t          |||| j	        | j
                   d S )Nrf   r   r  Fr  r  s	            r    test_1x1_rank_pzBaseQRupdate.test_1x1_rank_p&  r0  r"   c           	      \   |                      d          \  }}}}}t          t          t          |d         |||           t          t          t          ||d         ||           t          t          t          |||d         |           t          t          t          ||||d                    d S )Nrf   r   r   rn   r6  r5   r	   rY   r   r*   r+   ru  r  s         r    test_1x1_rank_1_scalarz#BaseQRupdate.test_1x1_rank_1_scalar0  s    e,,1aAj)QtWaA>>>j)Q$A>>>j)Q1Q4;;;j)Q1ad;;;;;r"   c           	         |dk    rdnd}dD ]}|                      |||          \  }}}	}
} |||	|
|f          \  }}}}|dk    r+|t          j        |
|                                          z   }n/|t          j        |
|j                                                  z   }|                    d          }|	                    d          }|
                    d          }|                    d          }t          ||||d          \  }}t          |||| j	        | j
        |           t          ||||d          \  }}t          |||| j	        | j
        |           |rLt          ||| j	        | j
                   t          ||                                | j	        | j
                   |                    d          }|	                    d          }|
                    d          }|                    d          }t          ||||d          \  }}t          |||| j	        | j
        |           t          ||||d          \  }}t          |||| j	        | j
        |           |rLt          ||| j	        | j
                   t          ||                                | j	        | j
                   |                    d          }|	                    d          }|
                    d          }|                    d          }t          ||||d          \  }}t          |||| j	        | j
        |           t          ||||d          \  }} t          || || j	        | j
        |           |rLt          | || j	        | j
                   t          ||                                | j	        | j
                   |                    d          }|	                    d          }|
                    d          }|                    d          }t          ||||d          \  }!}"t          |!|"|| j	        | j
        |           t          ||||d          \  }#}$t          |#|$|| j	        | j
        |           |rLt          |$|| j	        | j
                   t          ||                                | j	        | j
                   |                    d          }|	                    d          }|
                    d          }|                    d          } |||||f          \  }}}}t          ||||d          \  }%}&t          |%|&|| j	        | j
        |           t          ||||d          \  }'}(t          |'|(|| j	        | j
        |           |rLt          |(|| j	        | j
                   t          ||                                | j	        | j
                   d S )	Nr   FTr   r   r   r  r   )rn   r   r  r   r   r   r   r	   r,   r   r   r   ))rY   r   rh   r   r   r   rl   r   r   r   r  v0r   r   r  vsaupr*   r+   ru  r  r}   r~   r   r   r   r   r   r   r   r   r   r   r  r  q4or4or  r  r  r  s)                                            r    r   z$BaseQRupdate.base_non_simple_strides7  s   "j00UUd
* I	O I	OD $dD! < <Ar2r2+^RR,<==NBBAvv"(2rwwyy111"&RTYY[[111 AAAAr1aE22FBRS$)TY
CCC Q1d33HCS#sDIty*EEE NQTYTYGGGG277994949MMMMAAAAq"aE22FBRS$)TY
CCC B1d33HCS#sDIty*EEE NRdidiHHHH277994949MMMMAAAAq!RE22FBRS$)TY
CCC Ar1d33HCS#sDIty*EEE NQTYTYGGGG277994949MMMMAAAAq!QE22FBRS$)TY
CCC Aq"d33HCS#sDIty*EEE OQTYTYGGGGBGGIIDIDINNNNAAAA+^Q1aL99NBBr2r2u55FBRS$)TY
CCC RR66HCS#sDIty*EEE ORdidiHHHHBGGIIDIDINNNNSI	O I	Or"   c                 @    |                      t          ddd           d S )Nr[   r   Tr   rX   s    r    test_non_unit_strides_rank_1z)BaseQRupdate.test_non_unit_strides_rank_1  s"    $$\61dCCCCCr"   c                 @    |                      t          ddd           d S )Nr   r   Tr   rX   s    r    %test_non_unit_strides_economic_rank_1z2BaseQRupdate.test_non_unit_strides_economic_rank_1  s"    $$\:q$GGGGGr"   c                 @    |                      t          ddd           d S Nr[   r.   Fr   rX   s    r    test_non_unit_strides_rank_pz)BaseQRupdate.test_non_unit_strides_rank_p  s"    $$\61eDDDDDr"   c                 @    |                      t          ddd           d S Nr   r.   Fr   rX   s    r    %test_non_unit_strides_economic_rank_pz2BaseQRupdate.test_non_unit_strides_economic_rank_p  s"    $$\:q%HHHHHr"   c                 @    |                      t          ddd           d S Nr[   r   Fr   rX   s    r    test_neg_strides_rank_1z$BaseQRupdate.test_neg_strides_rank_1  "    $$^VQFFFFFr"   c                 @    |                      t          ddd           d S Nr   r   Fr   rX   s    r     test_neg_strides_economic_rank_1z-BaseQRupdate.test_neg_strides_economic_rank_1  "    $$^ZEJJJJJr"   c                 @    |                      t          ddd           d S rL  r   rX   s    r    test_neg_strides_rank_pz$BaseQRupdate.test_neg_strides_rank_p  rT  r"   c                 @    |                      t          ddd           d S rO  r   rX   s    r     test_neg_strides_economic_rank_pz-BaseQRupdate.test_neg_strides_economic_rank_p  rX  r"   c                 @    |                      t          ddd           d S rR  r  rX   s    r     test_non_itemsize_strides_rank_1z-BaseQRupdate.test_non_itemsize_strides_rank_1  #    $$%8&!UKKKKKr"   c                 @    |                      t          ddd           d S rV  r  rX   s    r    )test_non_itemsize_strides_economic_rank_1z6BaseQRupdate.test_non_itemsize_strides_economic_rank_1  #    $$%8*aOOOOOr"   c                 @    |                      t          ddd           d S rL  r  rX   s    r     test_non_itemsize_strides_rank_pz-BaseQRupdate.test_non_itemsize_strides_rank_p  r_  r"   c                 @    |                      t          ddd           d S rO  r  rX   s    r    )test_non_itemsize_strides_economic_rank_pz6BaseQRupdate.test_non_itemsize_strides_economic_rank_p  rb  r"   c                 @    |                      t          ddd           d S rR  r  rX   s    r    !test_non_native_byte_order_rank_1z.BaseQRupdate.test_non_native_byte_order_rank_1  rT  r"   c                 @    |                      t          ddd           d S rV  r  rX   s    r    *test_non_native_byte_order_economic_rank_1z7BaseQRupdate.test_non_native_byte_order_economic_rank_1  rX  r"   c                 @    |                      t          ddd           d S rL  r  rX   s    r    !test_non_native_byte_order_rank_pz.BaseQRupdate.test_non_native_byte_order_rank_p  rT  r"   c                 @    |                      t          ddd           d S rO  r  rX   s    r    *test_non_native_byte_order_economic_rank_pz7BaseQRupdate.test_non_native_byte_order_economic_rank_p  rX  r"   c                 4   |                      d          \  }}}}}|t          j        ||                                          z   }|                    d          }|                    d          }|                    d          }	|                    d          }
t          |||	|
d          \  }}t          |||| j        | j                   t          |||| j        | j                   t          |||	|
d          \  }}t          |||| j        | j                   t          ||| j        | j                   t          ||| j        | j                   |                    d          }|                    d          }|                    d          }	|                    d          }
t          |||	|
d          \  }}t          |||| j        | j                   t          ||| j        | j                   t          ||| j        | j                   d S )Nra   r   FTr   r  
rn   r   r  r   r   r	   r,   r   r   r   rY   r   r   r   r  rB  r   r*   r+   ru  r  r}   r~   r   r   r   r   s                    r    test_overwrite_qruv_rank_1z'BaseQRupdate.test_overwrite_qruv_rank_1  s    !MM%002r2r"bggii(((GGCLLGGCLLGGCLLGGCLL 1aAu--BRTY	222Aq$)TY///1aAt,,BRTY	222ADIDI>>>>ADIDI>>>>GGCLLGGCLLGGCLLGGCLL1aAt,,BRTY	222ADIDI>>>>ADIDI>>>>>>r"   c                 >   |                      dd          \  }}}}}|t          j        ||                                          z   }|                    d          }|                    d          }|                    d          }	|                    d          }
t          |||	|
d          \  }}t          |||| j        | j        d           t          |||| j        | j        d           t          |||	|
d          \  }}t          |||| j        | j        d           t          ||| j        | j                   t          ||| j        | j                   |                    d          }|                    d          }|                    d          }	|                    d          }
t          |||	|
d          \  }}t          |||| j        | j        d           t          ||| j        | j                   t          ||| j        | j                   d S )Nrb   r   r   FTr   r  rp  rq  s                    r    #test_overwrite_qruv_rank_1_economicz0BaseQRupdate.test_overwrite_qruv_rank_1_economic  s    !MM&*==2r2r"bggii(((GGCLLGGCLLGGCLLGGCLL 1aAu--BRTY	5999Aq$)TY6661aAt,,BRTY	5999ADIDI>>>>ADIDI>>>>GGCLLGGCLLGGCLLGGCLL1aAt,,BRTY	5999ADIDI>>>>ADIDI>>>>>>r"   c                    |                      dd          \  }}}}}|t          j        ||j                                                  z   }|                    d          }|                    d          }|                    d          }	|                    d          }
t          |||	|
d          \  }}t          |||| j        | j	                   t          |||| j        | j	                   t          |||	|
d          \  }}t          |||| j        | j	                   t          ||| j        | j	                   t          ||| j        | j	                   d S )	Nra   r.   r  r   r  FTr   )rn   r   r   r   r   r   r	   r,   r   r   r   )rY   r   r   r   r  rB  r   r*   r+   ru  r  r}   r~   r   r   s                  r    test_overwrite_qruv_rank_pz'BaseQRupdate.test_overwrite_qruv_rank_p  s>    !MM%1M552r2rBDIIKK(((GGCLLGGCLLGGCLLGGCLL 1aAu--BRTY	222Aq$)TY///1aAt,,BRTY	222ADIDI>>>>ADIDI>>>>>>r"   c           
         |                      d          \  }}}}}t          t          t          t	          j        g           |||           t          t          t          |t	          j        g           ||           t          t          t          ||t	          j        g           |           t          t          t          |||t	          j        g                      d S )Nrb   )rn   r6  r5   r	   r   rA  r?  s         r    r  zBaseQRupdate.test_empty_inputs  s    f--1aAj)RXb\\1aCCCj)QaCCCj)Q28B<<CCCj)Q1bhrllCCCCCr"   c           
      l   |                      d          \  }}}}}t          t          t          ||dd          ||           t          t          t          |d d         |||           t          t          t          |||dd          |           t          t          t          ||||dd                     d S )Nrb   r   r   r>  r?  s         r    r  z#BaseQRupdate.test_mismatched_shapes  s    f--1aAj)Q!""q!<<<j)QssVQ1===j)Q1QRR5!<<<j)Q1ae<<<<<r"   c           	      l   g d}|                      d          \  }}}}}|D ]}|j                            |          }t          j        d          5  |j                            |          }	d d d            n# 1 swxY w Y   |j                            |          }
|j                            |          }t          t          t          ||||           t          t          t          ||	||           t          t          t          |||
|           t          t          t          ||||           d S )NrH  rb   rU  rV  )rn   rX  rP   r   rY  r6  r5   r	   )rY   rZ  r   r   r   r  rB  r   r*   r+   ru  r  s               r    r[  z$BaseQRupdate.test_unsupported_dtypes  se      !MM&112r2r 		@ 		@Eu%%AX... * *GNN5))* * * * * * * * * * * * * * *u%%Au%%A*iBB???*iQB???*iRB???*iRQ????		@ 		@s   A;;A?	A?	c                 2   t          j        d                              dd          }|                                }|d d df                                         }|dd d f                                         }t	          t
          t          ||||           d S )N   r0   r   )r   aranger  r   r6  r5   r	   )rY   r*   r+   ru  r  s        r    test_integer_inputzBaseQRupdate.test_integer_input%  s|    IbMM!!!Q''FFHHaaadGLLNNadGLLNNj)Q1a88888r"   c           
         |                      dd          \  }}}}}|                    d          }t          j        |d<   t	          t
          t          |||d d df         |d d df                    t	          t
          t          ||||           |                    d          }t          j        |d<   t	          t
          t          |||d d df         |d d df                    t	          t
          t          ||||           |                    d          }t          j        |d<   t	          t
          t          |||d d df         |d d df                    t	          t
          t          ||||           |                    d          }	t          j        |	d<   t	          t
          t          |||d d df         |	d d df                    t	          t
          t          ||||	           d S )Nrb   r.   r  r   r`   r   r   rn   r   r   r]  r6  r5   r	   
rY   r^  r   r   r  rB  r*   r+   ru  r  s
             r    r_  zBaseQRupdate.test_check_finite,  s   !]]6Q]77BBGGCLL#j)QBqqqsGR!WEEEj)QB;;;GGCLL#j)RBqqqsGR!WEEEj)RB;;;GGCLL#j)RQqqqsVR!WEEEj)RQ;;;GGCLL#j)RQqqqsVQqqqsVDDDj)RQ:::::r"   c           
         |                      ddd          \  }}}}}|                    d          }t          j        |d<   t	          t
          t          |||d d df         |d d df                    t	          t
          t          ||||           |                    d          }t          j        |d<   t	          t
          t          |||d d df         |d d df                    t	          t
          t          ||||           |                    d          }t          j        |d<   t	          t
          t          |||d d df         |d d df                    t	          t
          t          ||||           |                    d          }	t          j        |	d<   t	          t
          t          |||d d df         |	d d df                    t	          t
          t          ||||	           d S )	Nrb   r   r.   )rh   r   r   r`   r   r   r  r  s
             r    test_economic_check_finitez'BaseQRupdate.test_economic_check_finiteC  s   !]]6
a]HHBBGGCLL#j)QBqqqsGR!WEEEj)QB;;;GGCLL#j)RBqqqsGR!WEEEj)RB;;;GGCLL#j)RQqqqsVR!WEEEj)RQ;;;GGCLL#j)RQqqqsVQqqqsVDDDj)RQ:::::r"   c                    t          j        ddgddgddgddgg| j                  }t          j        ddgddgg| j                  }t          j        g d| j                  }t          j        ddg| j                  }t          ||||          \  }}t          j        ||          t          j        ||                                          z   }t          |||| j        | j	        d           d S )Nr   r   )r   r   r   r$   r   F)
r   rA  r   r	   r   r  r   r,   r   r   )rY   r*   r+   ru  r  r}   r~   r   s           r    test_u_exactly_in_span_qz%BaseQRupdate.test_u_exactly_in_span_qZ  s    Hq!fq!fq!fq!f5tzBBHq!fq!f%tz22H]]]DJ//HaVTZ((1aA&&BVAq\\BHQ111RTY	599999r"   )r[   r   )1rp   rq   rr   rn   r  r  r!  r#  r%  r'  r)  r+  r-  r/  r2  r4  r6  r8  r:  r<  r@  r   rH  rJ  rM  rP  rS  rW  rZ  r\  r^  ra  rd  rf  rh  rj  rl  rn  rr  rt  rv  r  r  r[  r}  r_  r  r  r  r  s   @r    r  r    s            ,3 3 3	7 	7 	73 3 37 7 73 3 37 7 7: : :> > >3 3 33 3 3: : :: : :3 3 33 3 33 3 33 3 3< < <KO KO KOZD D DH H HE E EI I IG G GK K KG G GK K KL L LP P PL L LP P PG G GK K KG G GK K K? ? ?<? ? ?>? ? ?*D D D= = =@ @ @"9 9 9; ; ;.; ; ;.: : : : : : :r"   r  c                   .    e Zd Z ej        d          ZdS )TestQRupdate_frd  Nre  rO   r"   r    r  r  c  rf  r"   r  c                   .    e Zd Z ej        d          ZdS )TestQRupdate_Fr   Nre  rO   r"   r    r  r  f  rf  r"   r  c                   .    e Zd Z ej        d          ZdS )TestQRupdate_drk  Nre  rO   r"   r    r  r  i  rf  r"   r  c                   .    e Zd Z ej        d          ZdS )TestQRupdate_Drn  Nre  rO   r"   r    r  r  l  rf  r"   r  c            	          ddg} dg}g d}ddg}g d}t          j        | ||||          D ]K\  }}}}}	|dk    r)t          ||||d|	           t          ||||d|	           7t          ||||d|	           Ld S )	Nr   r  r]   )r   r  Ar   r.   )rd  rk  r   rn  r   )r   r   check_form_qTu)
q_orderq_shapeu_orderu_shaper   qor   uor  rk  s
             r    test_form_qTur  o  s     CjGjGooG!fG   E gw%HH1 1BB772r2r1a0002r2r1a00002r2r1a00001 1r"   c                 F   t           j                            d           |dk    r|dk    r
|d         f}n
|d         |f}t          j        |          }|j        dv r?t           j                            |          }t           j                            |          }n|j        dv rt           j                            |          dt           j                            |          z  z   }t           j                            |          dt           j                            |          z  z   }nt          d           t          j        |||           }|dk    rt          j        |||          }n%t          |                    |          f          \  }d	t          j	        |          j
        d
z
   z  }d
t          j	        |          j        z  }	t          j        |j                                        |          }
t          j        ||          }t#          ||
||	           d S )N/   r   r   fdFDrg   z#form_qTu doesn't support this dtyper  r   r   r   )r   ri   rj   r   charr5   requirer@   rP   r   r   r   r   r   r   _decomp_update	_form_qTur   )r  r  r  r  u_ndimr   r*   ru  r   r   expectedress               r    r  r    s   INN2!||!1:-1:w'HUOOEzTIW%%IW%%	t		IW%%29+;+;G+D+D(DDIW%%29+;+;G+D+D(DD8999

1eW%%A#~~Jq%))188E??,--RXe__.q011DRXe__  Dvachhjj!$$H

"1a
(
(CC4888888r"   )NNT)NN)T)*r   numpyr   numpy.testingr   r   r   pytestr   r6  scipyr   scipy.linalg._decomp_updater  r   r	   r
   r!   r(   r,   r@   rD   rL   rT   rV   rt   rc  rh  rj  rm  rp  r  r	  r  r  r  r  r  r  r  r  r  rO   r"   r    <module>r     s           @ @ @ @ @ @ @ @ @ @ * * * * * *       4 4 4 4 4 4 4 4 4 G G G G G G G G G G	C 	C 	C 	C8 8 8 87 7 7 7
  4    < < <       "F F F F F< F F FB    \       \       \       \   RB RB RB RB RB< RB RB RBh    \       \       \       \   I: I: I: I: I:< I: I: I:V    \       \       \       \   1 1 149 9 9 9 9r"   