
    tKg                        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 d/dZd0dZd1d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)y)2    N)assert_assert_allcloseassert_equal)raises)linalg)	qr_delete	qr_update	qr_insertc                    |0dt        j                  | j                        j                  dz
   z  }|,dt        j                  | j                        j                  z  }|r)t        | j                  d   | j                  d   k(  d       t        j                  | j                  j                         |       }t        |t        j                  | j                  d         ||       y )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        i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/linalg/tests/test_decomp_update.pyassert_unitaryr!   
   s    |!''*44Q677|"((177#'''
aggaj(*KL
&&Q
CC
+$TB    c                 h   |0dt        j                  | j                        j                  dz
   z  }|,dt        j                  | j                        j                  z  }t        j
                  | j                  d   | j                  d   dt         j                        }t        | |   d||       y )Nr   r   r   r   g        r   )	r   r   r   r   r   trir   bool_r   )r   r   r   masks       r    assert_upper_trir(      s    |!''*44Q677|!''"&&&66!''!*aggaj"bhh7DAdGSt$7r"   c                 v    t        | |||       t        |||       t        | j                  |      |||       y )Nr   )r!   r(   r   r   )qrr   r   r   r   s         r    check_qrr,      s2    1dD*-Qd#AEE!Had6r"   c                 |   g d}t        |      }d}g }| D ]"  }|j                  dk(  rZ|||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      |j                  |       % |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@   "   so   NGw<D	A
C66Q;D!AFA88AaDOAaD0!'':D!
ad
#DDIVVq[D!A1%AFA88QqT!''!*_QqT11Q4
?1Q43GHGG%D!
ad
AaDJ!A$J./DDI ) * *

4% & Jr"   c                     g }| D ]m  }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<   |j	                  |       o |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MM!66Q;$B$"*AVVq[$B$A ) * *#

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

1  Jr"   c                 z    | D cg c]+  }|j                  |j                  j                               - c}S c c}w )N)astyper   newbyteorder)r7   r   s     r    make_nonnativerP   V   s0    6:;dAHHQWW))+,d;;;s   08c                       e Zd Zd ZddZy)BaseQRdeltasc                     dt        j                  | j                        j                  dz
   z  | _        dt        j                  | j                        j
                  z  | _        y )Nr   r   r   )r   r   r   r   r   r   r   selfs    r    setup_methodzBaseQRdeltas.setup_method[   sH    bhhtzz2<<Q>??	$**-111	r"   c                    t         j                  j                  d       ddddddd|   }t         j                  j                  |      }t        j                  | j                  j                  d	            r't         j                  j                  |      }|d
|z  z   }|j                  | j                        }t        j                  ||      \  }}|||fS )Nir     rY   )   r/   )r/   rZ   )rY   r   )r   rY   r   r   )sqrtallfatMx11xN1x1r                 ?)mode)	r   randomseediscomplexobjr   typerN   r   qr)rU   rg   rc   r   r   rC   r*   r+   s           r    generatezBaseQRdeltas.generate_   s    
		uvf>>BDIIU#??4::??1-.		  'ABF
AHHTZZ yy&1!Qwr"   Nfull)__name__
__module____qualname__rV   ri    r"   r    rR   rR   Z   s    2
r"   rR   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 Z2dBd1Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZByA)CBaseQRdeletec                     | j                  d      \  }}}t        |j                  d         D ]N  }t        |||d      \  }}t	        j
                  ||d      }t        |||| j                  | j                         P y )Nr\   r   Foverwrite_qr	ri   ranger   r   r   deleter,   r   r   rU   r   r*   r+   rowq1r1a1s           r    test_sqr_1_rowzBaseQRdelete.test_sqr_1_rowl   k    --&1a$Cq!Su=FB1c1%BRRDII6 %r"   c           
      D   | j                  d      \  }}}t        dd      D ]|  }t        |j                  d   |z
        D ]\  }t        ||||d      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         ^ ~ y )Nr\   r      r   Frs   
ri   rv   r   r   r   rw   slicer,   r   r   	rU   r   r*   r+   ndelry   rz   r{   r|   s	            r    test_sqr_p_rowzBaseQRdelete.test_sqr_p_rows       --&1a!QKDQWWQZ_-"1adGBYYq%SX"6:RTYY		: .  r"   c                    | j                  d      \  }}}t        |j                  d         D ]O  }t        |||dd      \  }}t	        j
                  ||d      }t        |||| j                  | j                         Q y )Nr\   r   colFwhichrt   ru   rU   r   r*   r+   r   rz   r{   r|   s           r    test_sqr_1_colzBaseQRdelete.test_sqr_1_col{   m    --&1a$Cq!SEJFB1c1%BRRDII6 %r"   c           
      F   | j                  d      \  }}}t        dd      D ]}  }t        |j                  d   |z
        D ]]  }t        ||||dd      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         _  y )Nr\   r   r   r   r   Fr   r   	rU   r   r*   r+   r   r   rz   r{   r|   s	            r    test_sqr_p_colzBaseQRdelete.test_sqr_p_col       --&1a!QKDQWWQZ_-"1ad%057BYYq%SX"6:RTYY		:	 .  r"   c                     | j                  d      \  }}}t        |j                  d         D ]N  }t        |||d      \  }}t	        j
                  ||d      }t        |||| j                  | j                         P y )Nr]   r   Frs   ru   rx   s           r    test_tall_1_rowzBaseQRdelete.test_tall_1_row   sk    --'1a$Cq!Su=FB1c1%BRRDII6 %r"   c           
      D   | j                  d      \  }}}t        dd      D ]|  }t        |j                  d   |z
        D ]\  }t        ||||d      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         ^ ~ y )Nr]   r   r   r   Frs   r   r   s	            r    test_tall_p_rowzBaseQRdelete.test_tall_p_row   s    --'1a!QKDQWWQZ_-"1adGBYYq%SX"6:RTYY		: .  r"   c                    | j                  d      \  }}}t        |j                  d         D ]O  }t        |||dd      \  }}t	        j
                  ||d      }t        |||| j                  | j                         Q y )Nr]   r   r   Fr   ru   r   s           r    test_tall_1_colzBaseQRdelete.test_tall_1_col   sm    --'1a$Cq!SEJFB1c1%BRRDII6 %r"   c           
      F   | j                  d      \  }}}t        dd      D ]}  }t        |j                  d   |z
        D ]]  }t        ||||dd      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         _  y )Nr]   r   r   r   r   Fr   r   r   s	            r    test_tall_p_colzBaseQRdelete.test_tall_p_col   s    --'1a!QKDQWWQZ_-"1ad%057BYYq%SX"6:RTYY		:	 .  r"   c                     | j                  d      \  }}}t        |j                  d         D ]N  }t        |||d      \  }}t	        j
                  ||d      }t        |||| j                  | j                         P y )Nr^   r   Frs   ru   rx   s           r    test_fat_1_rowzBaseQRdelete.test_fat_1_row   r~   r"   c           
      D   | j                  d      \  }}}t        dd      D ]|  }t        |j                  d   |z
        D ]\  }t        ||||d      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         ^ ~ y )Nr^   r   r   r   Frs   r   r   s	            r    test_fat_p_rowzBaseQRdelete.test_fat_p_row   r   r"   c                    | j                  d      \  }}}t        |j                  d         D ]O  }t        |||dd      \  }}t	        j
                  ||d      }t        |||| j                  | j                         Q y )Nr^   r   r   Fr   ru   r   s           r    test_fat_1_colzBaseQRdelete.test_fat_1_col   r   r"   c           
      F   | j                  d      \  }}}t        dd      D ]}  }t        |j                  d   |z
        D ]]  }t        ||||dd      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         _  y )Nr^   r   r   r   r   Fr   r   r   s	            r    test_fat_p_colzBaseQRdelete.test_fat_p_col   r   r"   c           	         | j                  dd      \  }}}t        |j                  d         D ]O  }t        |||d      \  }}t	        j
                  ||d      }t        |||| j                  | j                  d       Q y Nr]   economicr   Frs   ru   rx   s           r    test_economic_1_rowz BaseQRdelete.test_economic_1_row   so    --
31a$Cq!Su=FB1c1%BRRDIIu= %r"   c           	      &   | j                  dd      \  }}}t        |j                  d   |z
        D ]]  }t        ||||d      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                  d       _ y r   r   )	rU   r   r   r*   r+   ry   rz   r{   r|   s	            r    base_economic_p_row_xxxz$BaseQRdelete.base_economic_p_row_xxx   s    --
31aD)Cq!S$UCFB1eCT2A6BRRDIIu= *r"   c                 &    | j                  d       y Nr.   r   rT   s    r    test_economic_p_row_economicz)BaseQRdelete.test_economic_p_row_economic       $$Q'r"   c                 &    | j                  d       y Nr1   r   rT   s    r    test_economic_p_row_sqrz$BaseQRdelete.test_economic_p_row_sqr   r   r"   c                 &    | j                  d       y Nr/   r   rT   s    r    test_economic_p_row_fatz$BaseQRdelete.test_economic_p_row_fat   r   r"   c           	         | j                  dd      \  }}}t        |j                  d         D ]P  }t        |||dd      \  }}t	        j
                  ||d      }t        |||| j                  | j                  d       R y )Nr]   r   r   r   Fr   ru   r   s           r    test_economic_1_colz BaseQRdelete.test_economic_1_col   sq    --
31a$Cq!SEJFB1c1%BRRDIIu= %r"   c           
      J   | j                  dd      \  }}}t        dd      D ]~  }t        |j                  d   |z
        D ]^  }t        ||||dd      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                  d       `  y )	Nr]   r   r   r   r   r   Fr   r   r   s	            r    test_economic_p_colz BaseQRdelete.test_economic_p_col   s    --
31a!QKDQWWQZ_-"1ad%057BYYq%SX"6:RTYY		5A	 .  r"   c                     | j                  d      \  }}}t        |j                  d         D ]N  }t        |||d      \  }}t	        j
                  ||d      }t        |||| j                  | j                         P y )Nr_   r   Frs   ru   rx   s           r    test_Mx1_1_rowzBaseQRdelete.test_Mx1_1_row   r~   r"   c           
      D   | j                  d      \  }}}t        dd      D ]|  }t        |j                  d   |z
        D ]\  }t        ||||d      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         ^ ~ y )Nr_   r   r   r   Frs   r   r   s	            r    test_Mx1_p_rowzBaseQRdelete.test_Mx1_p_row   r   r"   c                    | j                  d      \  }}}t        |j                  d         D ]O  }t        |||dd      \  }}t	        j
                  ||d      }t        |||| j                  | j                         Q y )Nr`   r   r   Fr   ru   r   s           r    test_1xN_1_colzBaseQRdelete.test_1xN_1_col  r   r"   c           
      F   | j                  d      \  }}}t        dd      D ]}  }t        |j                  d   |z
        D ]]  }t        ||||dd      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                         _  y )Nr`   r   r   r   r   Fr   r   r   s	            r    test_1xN_p_colzBaseQRdelete.test_1xN_p_col  r   r"   c           	         | j                  dd      \  }}}t        |j                  d         D ]O  }t        |||d      \  }}t	        j
                  ||d      }t        |||| j                  | j                  d       Q y )Nr_   r   r   Frs   ru   rx   s           r    test_Mx1_economic_1_rowz$BaseQRdelete.test_Mx1_economic_1_row  so    --z21a$Cq!Su=FB1c1%BRRDIIu= %r"   c           
      H   | j                  dd      \  }}}t        dd      D ]}  }t        |j                  d   |z
        D ]]  }t        ||||d      \  }}t	        j
                  |t        |||z         d      }t        |||| j                  | j                  d       _  y )Nr_   r   r   r   r   Frs   r   r   s	            r    test_Mx1_economic_p_rowz$BaseQRdelete.test_Mx1_economic_p_row  s    --z21a!QKDQWWQZ_-"1adGBYYq%SX"6:RTYY		5A .  r"   c                    | j                  d      \  }}}t        ||ddd      \  }}t        |t        j                  d|j
                               t        |t        j                  d|j                  d   f|j
                               y )Nr`   r   r   ry   r   r   r   r   )ri   r   r   r   ndarrayr   r   rU   r   r*   r+   rz   r{   s         r    test_delete_last_1_rowz#BaseQRdelete.test_delete_last_1_row&  sj    --&1a1aAu-BR&@AR1aggaj/IJr"   c                 l   | j                  dd      \  }}}t        ||d|j                  d   d      \  }}t        |t	        j
                  d|j                               t        |t	        j
                  d|j                  d   f|j                               | j                  dd      \  }}}t        ||d|j                  d   d      \  }}t        |t	        j
                  d|j                               t        |t	        j
                  d|j                  d   f|j                               y )	Nr]   rk   r   ry   r   r   r   r   )ri   r   r   r   r   r   r   r   s         r    test_delete_last_p_rowz#BaseQRdelete.test_delete_last_p_row-  s    --/1a1aAGGAJ6BR&@AR1aggaj/IJ--
31a1aAGGAJ6BR&@AR1aggaj/IJr"   c                    | j                  dd      \  }}}t        ||ddd      \  }}t        |t        j                  |j
                  d   df|j                               t        |t        j                  d|j                               | j                  dd      \  }}}t        ||ddd      \  }}t        |       t        |j                  |j                  k(         t        |j
                  |j
                  k(         t        |t        j                  |j
                  d   df|j                               y )	Nr_   r   r   r   r   r   r   rk   )	ri   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1a1aAu-BR1771:q/IJR&@A--v.1a1aAu-BrAGG#$AGG#$R1771:q/IJr"   c                    | j                  dd      \  }}}t        ||d|j                  d   d      \  }}t        |       t	        |j
                  |j
                  k(         t	        |j                  |j                  k(         t        |t        j                  |j                  d   df|j
                               | j                  dd      \  }}}t        ||d|j                  d   d      \  }}t        |t        j                  |j                  d   df|j
                               t        |t        j                  d|j
                               y )	Nr]   rk   r   r   r   r   r   r   )	ri   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AGGAJ6BrAGG#$AGG#$R1771:q/IJ--
31a1aAGGAJ6BR1771:q/IJR&@Ar"   c                 |   | j                  d      \  }}}t        ||ddd      \  }}t        |t        j                  d|j
                               t        |t        j                  d|j                  d   f|j
                               | j                  d      \  }}}t        ||ddd      \  }}t        |       t        |j
                  |j
                  k(         t        |j                  |j                  k(         t        |t        j                  |j                  d   df|j
                               y )Nra   r   r   ry   r   r   r   )	ri   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R1aggaj/IJ--&1a1aAu-BrAGG#$AGG#$R1771:q/IJr"   c           	         |dk(  r0t        |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 ]T  \  }}	| j                  |      \  }
}} |||f      \  }}|dk(  rt	        j
                  |
|	|dk(  rdnd      }net        |	|	|z         }|	dk  r3t        |	|	|z   |dk(  r|
j                  d   n|
j                  d   z         }t	        j
                  |
||dk(  rdnd      }|j                  d      }|j                  d      }t        |||	||d      \  }}t        |||| j                  | j                         t        |||	||d      \  }}t        |||| j                  | j                         |rLt        |||   | j                  | j                         t        |||   | j                  | j                         |j                  d      }|j                  d      }t        |||	||d      \  }}t        |||| j                  | j                         t        |||	||d      \  }}t        |||| j                  | j                         |rLt        |||   | j                  | j                         t        |||   | j                  | j                         |j                  d      }|j                  d      } |||f      \  }}t        |||	||d      \  }}t        |||| j                  | j                         t        |||	||d      \  }}t        |||| j                  | j                         |s	t        |||   | j                  | j                         t        |||   | j                  | j                         W y )	Nry   r\   r]   r^   r   r   FFTr   )r   	itertoolsproductri   r   rw   r   copyr   r,   r   r   r   )rU   adjust_strideskspr   overwriteableqindrindrg   r:   r   q0r0qsrsr|   r<   r*   r+   rz   r{   q1or1oq2r2q2or2oq3r3q3or3os                                  r    base_non_simple_stridesz$BaseQRdelete.base_non_simple_stridese  sK   E>!DM54=1D!DM5;/D$Kt-D$KtQB0D (()?DGD!t,JAr2#RH-FBAvYYq!%5.Qa@!AaCLq5aQ-2e^qwwqz"M NAYYq!%5.Qa@ AAr1aE59FBRRDII6 Q1eT:HCS#r499dii8RXDIIDIINQtW499499MAAq"aE59FBRRDII6 B1eT:HCS#r499dii8QtW499499MRXDIIDIINAA#QF+FBr2q!UE:FBRRDII6 RAud;HCS#r499dii8RXDIIDIINRXDIIDIIN] Er"   c                 8    | j                  t        dgddd       y )Nr   r   ry   Tr   r@   rT   s    r    test_non_unit_strides_1_rowz(BaseQRdelete.test_non_unit_strides_1_row      $$\A35$Gr"   c                 8    | j                  t        dgddd       y )Nr   r.   ry   Tr   rT   s    r    test_non_unit_strides_p_rowz(BaseQRdelete.test_non_unit_strides_p_row  r   r"   c                 8    | j                  t        dgddd       y )Nr   r   r   Tr   rT   s    r    test_non_unit_strides_1_colz(BaseQRdelete.test_non_unit_strides_1_col  r   r"   c                 8    | j                  t        dgddd       y Nr   r.   r   Fr   rT   s    r    test_non_unit_strides_p_colz(BaseQRdelete.test_non_unit_strides_p_col  s    $$\A35%Hr"   c                 8    | j                  t        dgddd       y Nr   r   ry   Fr   rD   rT   s    r    test_neg_strides_1_rowz#BaseQRdelete.test_neg_strides_1_row      $$^aS!UEJr"   c                 8    | j                  t        dgddd       y Nr   r.   ry   Fr   rT   s    r    test_neg_strides_p_rowz#BaseQRdelete.test_neg_strides_p_row  r   r"   c                 8    | j                  t        dgddd       y Nr   r   r   Fr   rT   s    r    test_neg_strides_1_colz#BaseQRdelete.test_neg_strides_1_col  r   r"   c                 8    | j                  t        dgddd       y r   r   rT   s    r    test_neg_strides_p_colz#BaseQRdelete.test_neg_strides_p_col  r   r"   c                 8    | j                  t        dgddd       y r   r   rL   rT   s    r    test_non_itemize_strides_1_rowz+BaseQRdelete.test_non_itemize_strides_1_row      $$%81#q%Or"   c                 8    | j                  t        dgddd       y r   r  rT   s    r    test_non_itemize_strides_p_rowz+BaseQRdelete.test_non_itemize_strides_p_row  r  r"   c                 8    | j                  t        dgddd       y r   r  rT   s    r    test_non_itemize_strides_1_colz+BaseQRdelete.test_non_itemize_strides_1_col  r  r"   c                 8    | j                  t        dgddd       y r   r  rT   s    r    test_non_itemize_strides_p_colz+BaseQRdelete.test_non_itemize_strides_p_col  r  r"   c                 8    | j                  t        dgddd       y r   r   rP   rT   s    r     test_non_native_byte_order_1_rowz-BaseQRdelete.test_non_native_byte_order_1_row  r   r"   c                 8    | j                  t        dgddd       y r   r  rT   s    r     test_non_native_byte_order_p_rowz-BaseQRdelete.test_non_native_byte_order_p_row  r   r"   c                 8    | j                  t        dgddd       y r   r  rT   s    r     test_non_native_byte_order_1_colz-BaseQRdelete.test_non_native_byte_order_1_col  r   r"   c                 8    | j                  t        dgddd       y r   r  rT   s    r     test_non_native_byte_order_p_colz-BaseQRdelete.test_non_native_byte_order_p_col  r   r"   c           
         | j                  d      \  }}}t        j                  ddgddgddg      D ]  \  }}}t        |||||d	      \  }}|dk(  rEt	        j
                  |t        ||j                  d
   z   ||z   |j                  d
   z         d
      }	nDt	        j
                  |t        ||j                  d
   z   ||z   |j                  d   z         d      }	t        |||	| j                  | j                          y )Nr\   ir   r.   ry   r   Frs   r   )ri   r   r   r   r   rw   r   r   r,   r   r   )
rU   r   r*   r+   r:   r   wrz   r{   r|   s
             r    
test_neg_kzBaseQRdelete.test_neg_k  s    --&1a (("bAq6E5>JGAq!q!Q15AFBEzYYq%!''!*ac!''!*n"EqIYYq%!''!*ac!''!*n"EqIRRDII6 Kr"   c                 >   |dk(  rdnd}|dk(  r0t        |d       t        |d       f}t        |d       t        d       f}n.t        d       t        d       f}t        d       t        d |       f}| j                  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      }|
j	                  d	      }|j	                  d	      }t        ||d||d      \  }}t        |||| j                  | j                  |       t        |||	| j                  | j                  |       |r|
j	                  d	      }|j	                  d	      }t        ||d||d      \  }}t        |||| j                  | j                  |       t        |||   | j                  | j                  
       t        |||   | j                  | j                  
       |r|
j	                  d      }|j	                  d      }t        ||d||d      \  }}t        |||| j                  | j                  |       t        |||   | j                  | j                  
       t        |||   | j                  | j                  
       y y )Nrk   TFry   r\   r   r.   r   r   r   C)
r   ri   r   rw   r   r   r,   r   r   r   )rU   r   r   test_Ctest_Frc   r   r   r   r   r   r   r|   r*   r+   rz   r{   r   r   r   r   s                        r    base_overwrite_qrzBaseQRdelete.base_overwrite_qr  s6   !V^T
E>!DM54=1D!DM5;/D$Kt-D$KtQB0DMM%.	2r61aeun!<B1eAqsm%5.QaHB GGCLGGCL1aAue4BRTYY		:>Aq$))TYY
;AAq!Q5$7FBRRDIIzBB$diidiiHB$diidiiHAAq!Q5$7FBRRDIIzBB$diidiiHB$diidiiH r"   c                 ,    | j                  dddd       y )Nry   r   Tr  rT   s    r    test_overwrite_qr_1_rowz$BaseQRdelete.test_overwrite_qr_1_row      uat4r"   c                 .    | j                  ddddd       y )Nry   r   Tr   r!  rT   s    r     test_overwrite_economic_qr_1_rowz-BaseQRdelete.test_overwrite_economic_qr_1_row      uatZ@r"   c                 ,    | j                  dddd       y )Nr   r   Tr!  rT   s    r    test_overwrite_qr_1_colz$BaseQRdelete.test_overwrite_qr_1_col  s     	uat4r"   c                 ,    | j                  dddd       y )Nry   r.   Tr!  rT   s    r    test_overwrite_qr_p_rowz$BaseQRdelete.test_overwrite_qr_p_row  r#  r"   c                 .    | j                  ddddd       y )Nry   r.   Tr   r!  rT   s    r     test_overwrite_economic_qr_p_rowz-BaseQRdelete.test_overwrite_economic_qr_p_row  r&  r"   c                 ,    | j                  dddd       y )Nr   r.   FTr!  rT   s    r    test_overwrite_qr_p_colz$BaseQRdelete.test_overwrite_qr_p_col  s     	ua5r"   c                 `    | j                  d      \  }}}t        t        t        ||dd       y )Nr\   r   foor   ri   assert_raisesr5   r   rU   r   r*   r+   s       r    test_bad_whichzBaseQRdelete.test_bad_which  s(    --&1aj)Q1EBr"   c           	      j   | j                  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       y )Nr]   r   r   r   ri   r3  r5   r   r   r4  s       r    
test_bad_kzBaseQRdelete.test_bad_k  s    --'1aj)Q1771:qAj)QAGGAJ;q=!Dj)Q1771:q%Hj)QAGGAJ;q=!UKr"   c           	         | j                  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       y )Nr]   r   r$   r   r.   r   r   r7  r4  s       r    
test_bad_pzBaseQRdelete.test_bad_p#  s    --'1aj)Q1b9j)Q1b%@ 	j)Q1a8j)Q1a? 	j)Q1aggajlCj)Q1aggajlEJr"   c                     | j                  d      \  }}}t        t        t        t	        j
                  g       |dd       y Nr]   r   r   ri   r3  r5   r   r   arrayr4  s       r    test_empty_qzBaseQRdelete.test_empty_q1  s0    --'1aj)RXXb\1aCr"   c                     | j                  d      \  }}}t        t        t        |t	        j
                  g       dd       y r<  r=  r4  s       r    test_empty_rzBaseQRdelete.test_empty_r6  s0    --'1aj)QaCr"   c                 h    | j                  d      \  }}}|dd  }t        t        t        ||dd       y )Nr]   r   r   r2  r4  s       r    test_mismatched_q_and_rz$BaseQRdelete.test_mismatched_q_and_r;  s3    --'1aabEj)Q1a8r"   c           
         g d}| j                  d      \  }}}|D ]   }|j                  j                  |      }t        j                  d      5  |j                  j                  |      }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	       t        t        t        ||ddd	       # y # 1 sw Y   xY w)
Nint8int16int32int64uint8uint16uint32uint64float16
longdoubleclongdoubleboolr]   ignoreinvalidr   r   ry   r   r   )ri   realrN   r   errstater3  r5   r   )rU   dtsr   r   r   r   r*   r+   s           r    test_unsupported_dtypesz$BaseQRdelete.test_unsupported_dtypes@  s    MM&)	2rEu%AX.GGNN5) /*iB1eD*iB1eD*iB1eD*iB1eD*iQ1eD*iQ1eD*iQ1eD*iQ1eD ..s   EE
	c           	      N   | j                  d      \  }}}|j                  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       |j                  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       y )	Nr]   r   r[   r   r   ry   r.   r   )ri   r   r   nanr3  r5   r   )rU   a0r   r   r*   r+   s         r    test_check_finitezBaseQRdelete.test_check_finiteT  s    ]]6*
BGGCL#j)QAq%@j)QAq%@j)QAq%@j)QAq%@GGCL#j)RAq%@j)RAq%@j)RAq%@j)RAq%@r"   c           	         | j                  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       y )Nra   r   r   r   ry   r   r2  r4  s       r    test_qr_scalarzBaseQRdelete.test_qr_scalare  sv    --&1aj)QtWaAuEj)Q$AuEj)QtWaAuEj)Q$AuEr"   Nrj   )Crl   rm   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.  r5  r8  r:  r?  rA  rC  rX  r\  r^  ro   r"   r    rq   rq   k   sg   7;7;7;7;7;7;>>(((>B7;7;>BK	KKBK&7OrHHHIKKKKPPPPKKKK7$IL5A5
5A6
CLKD
D
9
E(A"Fr"   rq   c                   0    e Zd Z ej                  d      Zy)TestQRdelete_ffNrl   rm   rn   r   r   ro   r"   r    r`  r`  l      BHHSMEr"   r`  c                   0    e Zd Z ej                  d      Zy)TestQRdelete_Fr   Nrb  ro   r"   r    re  re  o  rc  r"   re  c                   0    e Zd Z ej                  d      Zy)TestQRdelete_ddNrb  ro   r"   r    rg  rg  r  rc  r"   rg  c                   0    e Zd Z ej                  d      Zy)TestQRdelete_DDNrb  ro   r"   r    rj  rj  u  rc  r"   rj  c                       e Zd ZdD 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/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZE xZFS )EBaseQRinsertc                    t         
|   ||      \  }}}t        |dkD         |dk(  ra|dk(  r-t        j                  j	                  |j
                  d         }nt        j                  j	                  ||j
                  d   f      }nq|dk(  ra|dk(  r-t        j                  j	                  |j
                  d         }n:t        j                  j	                  |j
                  d   |f      }nt        d       t        j                  | j                  j                  d            r1t        j                  j	                  j
                        }	|d|	z  z   }j                  | j                        }||||fS )Nr   ry   r   r   z%which should be either "row" or "col"rb   )superri   r   r   rd   r   r5   rf   r   rg   rN   )rU   rg   rc   r   r   r   r*   r+   urC   	__class__s             r    ri   zBaseQRinsert.generatey  s"   '"4.1aA E>AvII$$QWWQZ0II$$a_5e^AvII$$QWWQZ0II$$aggaj!_5>???4::??1-.		  )ABF
AHHTZZ !Qzr"   c                    | j                  dd      \  }}}}t        |j                  d   dz         D ]N  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                         P y )Nr\   ry   r1  r   r   	ri   rv   r   r
   r   insertr,   r   r   	rU   r   r*   r+   rp  ry   rz   r{   r|   s	            r    r}   zBaseQRinsert.test_sqr_1_row  w    ]]5]6
1aa(Cq!Q,FB1c1a(BRRDII6 )r"   c           	      T   | j                  ddd      \  }}}}t        |j                  d   dz         D ]q  }t        ||||      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         s y )Nr\   ry   r.   r   r   r   r   ri   rv   r   r
   r   rt  rk   intpr,   r   r   ru  s	            r    r   zBaseQRinsert.test_sqr_p_row  s    ]]5];
1aa(Cq!Q,FB1bggabgg61=BRRDII6 )r"   c           	         | j                  dd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                         S y )Nr\   r   r1  r   Foverwrite_qrurs  	rU   r   r*   r+   rp  r   rz   r{   r|   s	            r    r   zBaseQRinsert.test_sqr_1_col  {    ]]5]6
1aa(Cq!QU%HFB1c1a(BRRDII6 )r"   c           	      Z   | j                  ddd      \  }}}}t        |j                  d   dz         D ]t  }t        ||||dd      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         v y )Nr\   r   r.   rx  r   Fr|  ry  r~  s	            r    r   zBaseQRinsert.test_sqr_p_col      ]]5];
1aa(Cq!QU%HFB1bggabgg61=BRRDII6 )r"   c                    | j                  dd      \  }}}}t        |j                  d   dz         D ]N  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                         P y )Nr]   ry   r1  r   r   rs  ru  s	            r    r   zBaseQRinsert.test_tall_1_row  sw    ]]6]7
1aa(Cq!Q,FB1c1a(BRRDII6 )r"   c           	      T   | j                  ddd      \  }}}}t        |j                  d   dz         D ]q  }t        ||||      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         s y )Nr]   ry   r.   rx  r   r   ry  ru  s	            r    r   zBaseQRinsert.test_tall_p_row  s    ]]6!]<
1aa(Cq!Q,FB1bggabgg61=BRRDII6 )r"   c           	         | j                  dd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                         S y )Nr]   r   r1  r   Fr|  rs  r~  s	            r    r   zBaseQRinsert.test_tall_1_col  s{    ]]6]7
1aa(Cq!QU%HFB1c1a(BRRDII6 )r"   c           	      Z   | j                  dd|      \  }}}}t        |j                  d   dz         D ]t  }t        ||||dd      \  }}t	        j
                  |t	        j                  ||t        j                        |d      }	t        |||	| j                  | j                         v y )Nr]   r   rx  r   Fr|  ry  
rU   r   r   r*   r+   rp  r   rz   r{   r|   s
             r    base_tall_p_col_xxxz BaseQRinsert.base_tall_p_col_xxx  s    ]]6!]<
1aa(Cq!QU%HFB1bggabgg61=BRRDII6 )r"   c                 &    | j                  d       y r   r  rT   s    r    test_tall_p_col_tallz!BaseQRinsert.test_tall_p_col_tall        #r"   c                 &    | j                  d       y r   r  rT   s    r    test_tall_p_col_sqrz BaseQRinsert.test_tall_p_col_sqr  r  r"   c                 &    | j                  d       y r   r  rT   s    r    test_tall_p_col_fatz BaseQRinsert.test_tall_p_col_fat  r  r"   c                    | j                  dd      \  }}}}t        |j                  d   dz         D ]N  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                         P y )Nr^   ry   r1  r   r   rs  ru  s	            r    r   zBaseQRinsert.test_fat_1_row  rv  r"   c           	      T   | j                  dd|      \  }}}}t        |j                  d   dz         D ]q  }t        ||||      \  }}t	        j
                  |t	        j                  ||t        j                        |d      }	t        |||	| j                  | j                         s y )Nr^   ry   rx  r   r   ry  )
rU   r   r   r*   r+   rp  ry   rz   r{   r|   s
             r    base_fat_p_row_xxxzBaseQRinsert.base_fat_p_row_xxx      ]]5];
1aa(Cq!Q,FB1bggabgg61=BRRDII6 )r"   c                 &    | j                  d       y r   r  rT   s    r    test_fat_p_row_fatzBaseQRinsert.test_fat_p_row_fat      "r"   c                 &    | j                  d       y r   r  rT   s    r    test_fat_p_row_sqrzBaseQRinsert.test_fat_p_row_sqr  r  r"   c                 &    | j                  d       y r   r  rT   s    r    test_fat_p_row_tallz BaseQRinsert.test_fat_p_row_tall  r  r"   c           	         | j                  dd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                         S y )Nr^   r   r1  r   Fr|  rs  r~  s	            r    r   zBaseQRinsert.test_fat_1_col  r  r"   c           	      Z   | j                  ddd      \  }}}}t        |j                  d   dz         D ]t  }t        ||||dd      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         v y )Nr^   r   r.   rx  r   Fr|  ry  r~  s	            r    r   zBaseQRinsert.test_fat_p_col  r  r"   c           	         | j                  ddd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||d      \  }}t	        j
                  |||d      }t        |||| j                  | j                  d       S y )Nr]   r   ry   r   r   Fr|  rs  ru  s	            r    r   z BaseQRinsert.test_economic_1_row  s{    ]]6:u=
1aa(Cq!Q5AFB1c1a(BRRDIIu= )r"   c           	      Z   | j                  dddd      \  }}}}t        |j                  d   dz         D ]t  }t        ||||d      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                  d       v y )	Nr]   r   ry   r.   r   r   Fr|  ry  ru  s	            r    test_economic_p_rowz BaseQRinsert.test_economic_p_row  s    ]]6:ua@
1aa(Cq!Q5AFB1bggabgg61=BRRDIIu= )r"   c           	      2   | j                  ddd      \  }}}}t        |j                  d   dz         D ]`  }t        |||j	                         |dd      \  }}t        j                  |||d      }t        |||| j                  | j                  d       b y )Nr]   r   r   r1  r   Fr|  )
ri   rv   r   r
   r   r   rt  r,   r   r   r~  s	            r    r   z BaseQRinsert.test_economic_1_col  s    ]]6:U]C
1aa(Cq!QVVXsEOFB1c1a(BRRDIIu= )r"   c           	         t        j                  dd| j                        }t        j                  d| j                        }t        j                  g d| j                        }t	        t
        j                  t        |||dd       y )Nr1   r.   )r   )r   r   r   r   r   r   r   )r   r   r   r>  r3  r   LinAlgErrorr
   )rU   r*   r+   rp  s       r    test_economic_1_col_bad_updatez+BaseQRinsert.test_economic_1_col_bad_update!  s\     FF1atzz*FF1DJJ'HH_djj1f(()Q1aGr"   c           	      ^   | j                  ddd|      \  }}}}t        |j                  d   dz         D ]u  }t        ||||dd      \  }}t	        j
                  |t	        j                  ||t        j                        |d      }	t        |||	| j                  | j                  d       w y )Nr]   r   r   rx  r   Fr|  ry  r  s
             r    base_economic_p_col_xxxz$BaseQRinsert.base_economic_p_col_xxx-  s    ]]6:Ua]H
1aa(Cq!QU%HFB1bggabgg61=BRRDIIu= )r"   c                 &    | j                  d       y r   r  rT   s    r    test_economic_p_col_ecoz$BaseQRinsert.test_economic_p_col_eco4  r   r"   c                 &    | j                  d       y r   r  rT   s    r    test_economic_p_col_sqrz$BaseQRinsert.test_economic_p_col_sqr8  r   r"   c                 &    | j                  d       y r   r  rT   s    r    test_economic_p_col_fatz$BaseQRinsert.test_economic_p_col_fat<  r   r"   c                    | j                  dd      \  }}}}t        |j                  d   dz         D ]N  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                         P y )Nr_   ry   r1  r   r   rs  ru  s	            r    r   zBaseQRinsert.test_Mx1_1_row@  rv  r"   c           	      T   | j                  ddd      \  }}}}t        |j                  d   dz         D ]q  }t        ||||      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         s y )Nr_   ry   r.   rx  r   r   ry  ru  s	            r    r   zBaseQRinsert.test_Mx1_p_rowG  r  r"   c           	         | j                  dd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                         S y )Nr_   r   r1  r   Fr|  rs  r~  s	            r    test_Mx1_1_colzBaseQRinsert.test_Mx1_1_colN  r  r"   c           	      Z   | j                  ddd      \  }}}}t        |j                  d   dz         D ]t  }t        ||||dd      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         v y )Nr_   r   r.   rx  r   Fr|  ry  r~  s	            r    test_Mx1_p_colzBaseQRinsert.test_Mx1_p_colU      ]]5];
1aa(Cq!QU%HFB1bggabgg61=BRRDII6 )r"   c           	         | j                  ddd      \  }}}}t        |j                  d   dz         D ]O  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                  d       Q y )Nr_   r   ry   r   r   Frs  ru  s	            r    r   z$BaseQRinsert.test_Mx1_economic_1_row\  sy    ]]5*e<
1aa(Cq!Q,FB1c1a(BRRDIIu= )r"   c           	      V   | j                  dddd      \  }}}}t        |j                  d   dz         D ]r  }t        ||||      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                  d       t y )Nr_   r   ry   r.   r   r   Fry  ru  s	            r    r   z$BaseQRinsert.test_Mx1_economic_p_rowc  s    ]]5*eQ?
1aa(Cq!Q,FB1bggabgg61=BRRDIIu= )r"   c           	         | j                  ddd      \  }}}}t        |j                  d   dz         D ]R  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                  d       T y )Nr_   r   r   r   Fr|  rs  r~  s	            r    test_Mx1_economic_1_colz$BaseQRinsert.test_Mx1_economic_1_colj  s}    ]]5*e<
1aa(Cq!QU%HFB1c1a(BRRDIIu= )r"   c           	      \   | j                  dddd      \  }}}}t        |j                  d   dz         D ]u  }t        ||||dd      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                  d       w y )Nr_   r   r   r.   r   Fr|  ry  r~  s	            r    test_Mx1_economic_p_colz$BaseQRinsert.test_Mx1_economic_p_colq  s    ]]5*eQ?
1aa(Cq!QU%HFB1bggabgg61=BRRDIIu= )r"   c                    | j                  dd      \  }}}}t        |j                  d   dz         D ]N  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                         P y )Nr`   ry   r1  r   r   rs  ru  s	            r    test_1xN_1_rowzBaseQRinsert.test_1xN_1_rowx  rv  r"   c           	      T   | j                  ddd      \  }}}}t        |j                  d   dz         D ]q  }t        ||||      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         s y )Nr`   ry   r.   rx  r   r   ry  ru  s	            r    test_1xN_p_rowzBaseQRinsert.test_1xN_p_row  r  r"   c           	         | j                  dd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                         S y )Nr`   r   r1  r   Fr|  rs  r~  s	            r    r   zBaseQRinsert.test_1xN_1_col  r  r"   c           	      Z   | j                  ddd      \  }}}}t        |j                  d   dz         D ]t  }t        ||||dd      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         v y )Nr`   r   r.   rx  r   Fr|  ry  r~  s	            r    r   zBaseQRinsert.test_1xN_p_col  r  r"   c                    | j                  dd      \  }}}}t        |j                  d   dz         D ]N  }t        ||||      \  }}t	        j
                  |||d      }t        |||| j                  | j                         P y )Nra   ry   r1  r   r   rs  ru  s	            r    test_1x1_1_rowzBaseQRinsert.test_1x1_1_row  rv  r"   c           	      T   | j                  ddd      \  }}}}t        |j                  d   dz         D ]q  }t        ||||      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         s y )Nra   ry   r.   rx  r   r   ry  ru  s	            r    test_1x1_p_rowzBaseQRinsert.test_1x1_p_row  r  r"   c           	         | j                  dd      \  }}}}t        |j                  d   dz         D ]Q  }t        ||||dd      \  }}t	        j
                  |||d      }t        |||| j                  | j                         S y )Nra   r   r1  r   Fr|  rs  r~  s	            r    test_1x1_1_colzBaseQRinsert.test_1x1_1_col  r  r"   c           	      Z   | j                  ddd      \  }}}}t        |j                  d   dz         D ]t  }t        ||||dd      \  }}t	        j
                  |t	        j                  d|t        j                        |d      }t        |||| j                  | j                         v y )Nra   r   r.   rx  r   Fr|  ry  r~  s	            r    test_1x1_p_colzBaseQRinsert.test_1x1_p_col  r  r"   c           	         | j                  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       y )Nra   ry   r1  r   r   r   ri   r3  r5   r
   rU   r   r*   r+   rp  s        r    test_1x1_1_scalarzBaseQRinsert.test_1x1_1_scalar  s    ]]5]6
1aj)QtWaAuEj)Q$AuEj)Q1Q4EBj)QtWaAuEj)Q$AuEj)Q1Q4EBr"   c           	      h   dD ],  }| j                  |||      \  }}}}	 ||||	f      \  }
}}|dk(  r t        j                  |||	|dk(  rdnd      }nIt        j                  |t        j                  ||t        j                        |dk(  r|	n|	|dk(  rdnd      }|j                  d      }|j                  d      }|	j                  d      }t        |
||||d      \  }}t        |||| j                  | j                         t        |
||||d	      \  }}t        |||| j                  | j                         |j                  d      }|j                  d      }|	j                  d      }t        |||||d      \  }}t        |||| j                  | j                         t        |||||d	      \  }}t        |||| j                  | j                         |j                  d      }|j                  d      }|	j                  d      }t        |||||d      \  }}t        |||| j                  | j                         t        |||||d	      \  }}t        |||| j                  | j                         |j                  d      }|j                  d      }|	j                  d      } ||||f      \  }
}}t        |
||||d      \  }}t        |||| j                  | j                         t        |
||||d	      \  }} t        || || j                  | j                         / y )
Nr   rx  r   ry   r   r   Fr|  T)
ri   r   rt  rk   rz  r   r
   r,   r   r   )!rU   r   r:   r   r   rg   r   r   r   u0r   r   usair*   r+   rp  rz   r{   r   r   r   r   r   r   r   r   r   r   q5r5q5or5os!                                    r    r   z$BaseQRinsert.base_non_simple_strides  s   *D MM$eqMAMAr2r'R5JBBAvYYq!Reun!DYYq"''!Q"8#un""e^4 AAAr1aEGFBRRDII6 Q1e4HHCS#r499dii8AAAq"aEGFBRRDII6 B1e4HHCS#r499dii8AAAq!REGFBRRDII6 Ar1e4HHCS#r499dii8AAA'Aq	2JBBr2r1e5IFBRRDII6 RQTJHCS#r499dii8_ +r"   c                 4    | j                  t        ddd       y Nr   r   ry   r   rT   s    r    r   z(BaseQRinsert.test_non_unit_strides_1_row      $$\1a?r"   c                 4    | j                  t        ddd       y Nr   r.   ry   r   rT   s    r    r   z(BaseQRinsert.test_non_unit_strides_p_row  r  r"   c                 4    | j                  t        ddd       y Nr   r   r   r   rT   s    r    r   z(BaseQRinsert.test_non_unit_strides_1_col  r  r"   c                 4    | j                  t        ddd       y Nr   r.   r   r   rT   s    r    r   z(BaseQRinsert.test_non_unit_strides_p_col  r  r"   c                 4    | j                  t        ddd       y r  r   rT   s    r    r   z#BaseQRinsert.test_neg_strides_1_row      $$^Q5Ar"   c                 4    | j                  t        ddd       y r  r   rT   s    r    r   z#BaseQRinsert.test_neg_strides_p_row  r  r"   c                 4    | j                  t        ddd       y r  r   rT   s    r    r  z#BaseQRinsert.test_neg_strides_1_col  r  r"   c                 4    | j                  t        ddd       y r  r   rT   s    r    r  z#BaseQRinsert.test_neg_strides_p_col  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    test_non_itemsize_strides_1_rowz,BaseQRinsert.test_non_itemsize_strides_1_row      $$%8!QFr"   c                 4    | j                  t        ddd       y r  r  rT   s    r    test_non_itemsize_strides_p_rowz,BaseQRinsert.test_non_itemsize_strides_p_row  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    test_non_itemsize_strides_1_colz,BaseQRinsert.test_non_itemsize_strides_1_col
  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    test_non_itemsize_strides_p_colz,BaseQRinsert.test_non_itemsize_strides_p_col  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    r  z-BaseQRinsert.test_non_native_byte_order_1_row  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    r  z-BaseQRinsert.test_non_native_byte_order_p_row  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    r  z-BaseQRinsert.test_non_native_byte_order_1_col  r  r"   c                 4    | j                  t        ddd       y r  r  rT   s    r    r  z-BaseQRinsert.test_non_native_byte_order_p_col  r  r"   c                    | j                  ddd      \  }}}}|j                  d      }|j                         }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                  | j                         |j                  d      }|j                         }t        |||ddd      \  }}t        |||	| j                  | j                         t        |||| j                  | j                         t        |||ddd	      \  }}t        |||	| j                  | j                         t        ||| j                  | j                  
       y )Nr\   r   r   rx  r  r   Fr|  Tr   r   )
ri   r   r
   r   rt  r,   r   r   r   r   )rU   r   r   r+   rp  r*   r  rz   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!GGCLVVX1aAuEBBYYq!R#RTYY		2Aq$))TYY/ 1aAuDABRTYY		2ADIIDII>2779dii; WWS\WWY2q"aeDBRTYY		2Q499dii0 2q"adCBRTYY		2BTYYTYY?r"   c                 4   | j                  ddd      \  }}}}|j                  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                         y )Nr\   r   r.   rx  r   r   r   Fr|  Tr   )ri   r   r   rt  r4   rz  r
   r,   r   r   r   )rU   r   r   r+   rp  r*   r|   rz   r{   r   r   s              r    test_overwrite_qu_rank_pz%BaseQRinsert.test_overwrite_qu_rank_p=  s     }}U%1}=2q!GGCLYYq"((1bgg.15 1aAuEBBRTYY		2Aq$))TYY/ 1aAuDABRTYY		2ADIIDII>r"   c           	      D   | j                  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       y )Nr\   ry   r1  r   r   )ri   r3  r5   r
   r   r>  r  s        r    test_empty_inputszBaseQRinsert.test_empty_inputsO  s    ]]5]6
1aj)RXXb\1aEJj)QaEJj)Q288B<EJj)RXXb\1aEJj)QaEJj)Q288B<EJr"   c           	         | j                  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       y )Nr]   ry   r1  r   r   r   r  r  s        r    test_mismatched_shapesz#BaseQRinsert.test_mismatched_shapesX  s    ]]6]7
1aj)Q!"q!UCj)QsVQ1eDj)Q1QR5!UCj)Q!"q!UCj)QsVQ1eDj)Q1QR5!UCr"   c           
      r   g d}| j                  dd      \  }}}}|D ]	  }|j                  j                  |      }t        j                  d      5  |j                  j                  |      }d d d        |j                  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        y # 1 sw Y   xY w)	NrE  r\   ry   r1  rR  rS  r   r   )ri   rU  rN   r   rV  r3  r5   r
   )
rU   rW  r   r   r   r  r   r*   r+   rp  s
             r    rX  z$BaseQRinsert.test_unsupported_dtypesa  s     e592r2Eu%AX.GGNN5) /u%A*iBAuE*iBAuE*iQAuE*iQAuE*iRAuE*iRAuE ..s   D--D6	c           	         | j                  ddd      \  }}}}|j                  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       |j                  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       |j                  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       y )
Nr\   ry   r.   rx  r   r[   r   r   r   )ri   r   r   rZ  r3  r5   r
   )rU   r[  r   r   r  r*   r+   rp  s           r    r\  zBaseQRinsert.test_check_finites  s   uEQ?BBGGCL#j)QBqsGQFj)QB5Aj)QBqsGQFj)QB5AGGCL#j)RBqsGQFj)RB5Aj)RBqsGQFj)RB5AGGCL#j)RQqsVQFj)RQ5Aj)RQqsVQFj)RQ5Ar"   )rk   ry   r   )Grl   rm   rn   ri   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  rX  r\  __classcell__rq  s   @r    rm  rm  x  sk   477777777$$$77###77>>>H>(((7777>>>>77777777C09d@@@@BBBBGGGGBBBB@B?$KDF$Br"   rm  c                   0    e Zd Z ej                  d      Zy)TestQRinsert_fra  Nrb  ro   r"   r    r  r    rc  r"   r  c                   0    e Zd Z ej                  d      Zy)TestQRinsert_Fr   Nrb  ro   r"   r    r  r    rc  r"   r  c                   0    e Zd Z ej                  d      Zy)TestQRinsert_drh  Nrb  ro   r"   r    r  r    rc  r"   r  c                   0    e Zd Z ej                  d      Zy)TestQRinsert_Drk  Nrb  ro   r"   r    r  r    rc  r"   r  c                   (    e Zd Zd. 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 )/BaseQRupdatec                 :   t         |   ||      \  }}}|dk(  rYt        j                  j                  |j                  d         }t        j                  j                  |j                  d         }n\t        j                  j                  |j                  d   |f      }t        j                  j                  |j                  d   |f      }t        j
                  | j                  j                  d            rbt        j                  j                  |j                        }	|d|	z  z   }t        j                  j                  |j                        }
|d|
z  z   }|j                  | j                        }|j                  | j                        }|||||fS )Nr   r   rb   )	ro  ri   r   rd   r   rf   r   rg   rN   )rU   rg   rc   r   r   r*   r+   rp  vrC   rK   rq  s              r    ri   zBaseQRupdate.generate  s2   '"4.1a 6		  ,A		  ,A		  !''!*a1A		  !''!*a1A??4::??1-.		  )ABF
A		  )ABF
AHHTZZ HHTZZ !Q1}r"   c                     | j                  d      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                         y )Nr\   Fri   r	   r   outerr   r,   r   r   	rU   r   r*   r+   rp  r  rz   r{   r|   s	            r    test_sqr_rank_1zBaseQRupdate.test_sqr_rank_1  c    e,1aA1aAu-B!QVVX&&RTYY		2r"   c                    dD ]  }| j                  d|      \  }}}}}|dk(  r8|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }	t        |||	| j                  | j                          y )Nr   r   r.   r1   r\   r   r   Fri   reshapesizer	   r   r   r   r   r,   r   r   
rU   r   r   r*   r+   rp  r  rz   r{   r|   s
             r    test_sqr_rank_pzBaseQRupdate.test_sqr_rank_p  s    A MM%1M5MAq!QAvIIaffa(IIaffa(q!Q51FBRVVAqssxxz**BRRDII6 r"   c                     | j                  d      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                         y )Nr]   Fr  r  s	            r    test_tall_rank_1zBaseQRupdate.test_tall_rank_1  sc    f-1aA1aAu-B!QVVX&&RTYY		2r"   c                    dD ]  }| j                  d|      \  }}}}}|dk(  r8|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }	t        |||	| j                  | j                          y )Nr  r]   r  r   Fr  r  s
             r    test_tall_rank_pzBaseQRupdate.test_tall_rank_p  s    A MM&AM6MAq!QAvIIaffa(IIaffa(q!Q51FBRVVAqssxxz**BRRDII6 r"   c                     | j                  d      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                         y )Nr^   Fr  r  s	            r    test_fat_rank_1zBaseQRupdate.test_fat_rank_1  r  r"   c                    dD ]  }| j                  d|      \  }}}}}|dk(  r8|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }	t        |||	| j                  | j                          y )Nr  r^   r  r   Fr  r  s
             r    test_fat_rank_pzBaseQRupdate.test_fat_rank_p  s    A MM%1M5MAq!QAvIIaffa(IIaffa(q!Q51FBRVVAqssxxz**BRRDII6 r"   c                     | j                  dd      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                  d       y )Nr]   r   Fr  r  s	            r    test_economic_rank_1z!BaseQRupdate.test_economic_rank_1  sg    fj91aA1aAu-B!QVVX&&RTYY		59r"   c           	         dD ]  }| j                  dd|      \  }}}}}|dk(  r8|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }	t        |||	| j                  | j                  d        y )Nr  r]   r   r   Fr  r  s
             r    test_economic_rank_pz!BaseQRupdate.test_economic_rank_p  s    A MM&*a@MAq!QAvIIaffa(IIaffa(q!Q51FBRVVAqssxxz**BRRDIIu= r"   c                     | j                  d      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                         y )Nr_   Fr  r  s	            r    test_Mx1_rank_1zBaseQRupdate.test_Mx1_rank_1  r  r"   c                 r   | j                  dd      \  }}}}}|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }t        |||| j                  | j                         y )Nr_   r   r  Fr  r  s	            r    test_Mx1_rank_pzBaseQRupdate.test_Mx1_rank_p       eq11aAIIaffa IIaffa 1aAu-B13388:&&RTYY		2r"   c                     | j                  dd      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                  d       y )Nr_   r   Fr  r  s	            r    test_Mx1_economic_rank_1z%BaseQRupdate.test_Mx1_economic_rank_1  sg    eZ81aA1aAu-B!QVVX&&RTYY		59r"   c                 v   | j                  ddd      \  }}}}}|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }t        |||| j                  | j                  d       y )Nr_   r   r   r  Fr  r  s	            r    test_Mx1_economic_rank_pz%BaseQRupdate.test_Mx1_economic_rank_p  s     eZ1=1aAIIaffa IIaffa 1aAu-B13388:&&RTYY		59r"   c                     | j                  d      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                         y )Nr`   Fr  r  s	            r    test_1xN_rank_1zBaseQRupdate.test_1xN_rank_1  r  r"   c                 r   | j                  dd      \  }}}}}|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }t        |||| j                  | j                         y )Nr`   r   r  Fr  r  s	            r    test_1xN_rank_pzBaseQRupdate.test_1xN_rank_p  r+  r"   c                     | j                  d      \  }}}}}t        ||||d      \  }}|t        j                  ||j	                               z   }t        |||| j                  | j                         y )Nra   Fr  r  s	            r    test_1x1_rank_1zBaseQRupdate.test_1x1_rank_1  r  r"   c                 r   | j                  dd      \  }}}}}|j                  |j                  d      }|j                  |j                  d      }t        ||||d      \  }}|t	        j
                  ||j                  j                               z   }t        |||| j                  | j                         y )Nra   r   r  Fr  r  s	            r    test_1x1_rank_pzBaseQRupdate.test_1x1_rank_p%  r+  r"   c           	      
   | j                  d      \  }}}}}t        t        t        |d   |||       t        t        t        ||d   ||       t        t        t        |||d   |       t        t        t        ||||d          y )Nra   r   r   ri   r3  r5   r	   rU   r   r*   r+   rp  r  s         r    test_1x1_rank_1_scalarz#BaseQRupdate.test_1x1_rank_1_scalar/  sr    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 ]  }| j                  |||      \  }}}	}
} |||	|
|f      \  }}}}|dk(  r(|t        j                  |
|j                               z   }n1|t        j                  |
|j
                  j                               z   }|j                  d      }|	j                  d      }|
j                  d      }|j                  d      }t        ||||d      \  }}t        |||| j                  | j                  |       t        ||||d      \  }}t        |||| j                  | j                  |       |rTt        ||| j                  | j                         t        ||j                         | j                  | j                         |j                  d      }|	j                  d      }|
j                  d      }|j                  d      }t        ||||d      \  }}t        |||| j                  | j                  |       t        ||||d      \  }}t        |||| j                  | j                  |       |rTt        ||| j                  | j                         t        ||j                         | j                  | j                         |j                  d      }|	j                  d      }|
j                  d      }|j                  d      }t        ||||d      \  }}t        |||| j                  | j                  |       t        ||||d      \  }} t        || || j                  | j                  |       |rTt        | || j                  | j                         t        ||j                         | j                  | j                         |j                  d      }|	j                  d      }|
j                  d      }|j                  d      }t        ||||d      \  }!}"t        |!|"|| j                  | j                  |       t        ||||d      \  }#}$t        |#|$|| j                  | j                  |       |rTt        |$|| j                  | j                         t        ||j                         | j                  | j                         |j                  d      }|	j                  d      }|
j                  d      }|j                  d      } |||||f      \  }}}}t        ||||d      \  }%}&t        |%|&|| j                  | j                  |       t        ||||d      \  }'}(t        |'|(|| j                  | j                  |       |sit        |(|| j                  | j                         t        ||j                         | j                  | j                          y )	Nr   FTr   r   r   r  r   )ri   r   r  r   r   r   r   r	   r,   r   r   r   ))rU   r   rc   r   r   r   rg   r   r   r   r  v0r   r   r  vsaupr*   r+   rp  r  rz   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_strides6  s   "j0Ud
*D $dD! <Ar2r2+RR,<=NBBAv"((2rwwy11"&&RTTYY[11 AAAAr1aE2FBRS$))TYY
C Q1d3HCS#sDIItyy*EQTYYTYYG2779499499MAAAAq"aE2FBRS$))TYY
C B1d3HCS#sDIItyy*ERdiidiiH2779499499MAAAAq!RE2FBRS$))TYY
C Ar1d3HCS#sDIItyy*EQTYYTYYG2779499499MAAAAq!QE2FBRS$))TYY
C Aq"d3HCS#sDIItyy*EQTYYTYYGBGGIDIIDIINAAAA+Q1aL9NBBr2r2u5FBRS$))TYY
C RR6HCS#sDIItyy*ERdiidiiHBGGIDIIDIINS +r"   c                 4    | j                  t        ddd       y )Nrk   r   Tr   rT   s    r    test_non_unit_strides_rank_1z)BaseQRupdate.test_non_unit_strides_rank_1  s    $$\61dCr"   c                 4    | j                  t        ddd       y )Nr   r   Tr   rT   s    r    %test_non_unit_strides_economic_rank_1z2BaseQRupdate.test_non_unit_strides_economic_rank_1  s    $$\:q$Gr"   c                 4    | j                  t        ddd       y Nrk   r.   Fr   rT   s    r    test_non_unit_strides_rank_pz)BaseQRupdate.test_non_unit_strides_rank_p  s    $$\61eDr"   c                 4    | j                  t        ddd       y Nr   r.   Fr   rT   s    r    %test_non_unit_strides_economic_rank_pz2BaseQRupdate.test_non_unit_strides_economic_rank_p  s    $$\:q%Hr"   c                 4    | j                  t        ddd       y Nrk   r   Fr   rT   s    r    test_neg_strides_rank_1z$BaseQRupdate.test_neg_strides_rank_1      $$^VQFr"   c                 4    | j                  t        ddd       y Nr   r   Fr   rT   s    r     test_neg_strides_economic_rank_1z-BaseQRupdate.test_neg_strides_economic_rank_1      $$^ZEJr"   c                 4    | j                  t        ddd       y rG  r   rT   s    r    test_neg_strides_rank_pz$BaseQRupdate.test_neg_strides_rank_p  rO  r"   c                 4    | j                  t        ddd       y rJ  r   rT   s    r     test_neg_strides_economic_rank_pz-BaseQRupdate.test_neg_strides_economic_rank_p  rS  r"   c                 4    | j                  t        ddd       y rM  r  rT   s    r     test_non_itemsize_strides_rank_1z-BaseQRupdate.test_non_itemsize_strides_rank_1      $$%8&!UKr"   c                 4    | j                  t        ddd       y rQ  r  rT   s    r    )test_non_itemsize_strides_economic_rank_1z6BaseQRupdate.test_non_itemsize_strides_economic_rank_1      $$%8*aOr"   c                 4    | j                  t        ddd       y rG  r  rT   s    r     test_non_itemsize_strides_rank_pz-BaseQRupdate.test_non_itemsize_strides_rank_p  rZ  r"   c                 4    | j                  t        ddd       y rJ  r  rT   s    r    )test_non_itemsize_strides_economic_rank_pz6BaseQRupdate.test_non_itemsize_strides_economic_rank_p  r]  r"   c                 4    | j                  t        ddd       y rM  r  rT   s    r    !test_non_native_byte_order_rank_1z.BaseQRupdate.test_non_native_byte_order_rank_1  rO  r"   c                 4    | j                  t        ddd       y rQ  r  rT   s    r    *test_non_native_byte_order_economic_rank_1z7BaseQRupdate.test_non_native_byte_order_economic_rank_1  rS  r"   c                 4    | j                  t        ddd       y rG  r  rT   s    r    !test_non_native_byte_order_rank_pz.BaseQRupdate.test_non_native_byte_order_rank_p  rO  r"   c                 4    | j                  t        ddd       y rJ  r  rT   s    r    *test_non_native_byte_order_economic_rank_pz7BaseQRupdate.test_non_native_byte_order_economic_rank_p  rS  r"   c                 ,   | j                  d      \  }}}}}|t        j                  ||j                               z   }|j	                  d      }|j	                  d      }|j	                  d      }	|j	                  d      }
t        |||	|
d      \  }}t        |||| j                  | j                         t        |||| j                  | j                         t        |||	|
d      \  }}t        |||| j                  | j                         t        ||| j                  | j                         t        ||| j                  | j                         |j	                  d      }|j	                  d      }|j	                  d      }	|j	                  d      }
t        |||	|
d      \  }}t        |||| j                  | j                         t        ||| j                  | j                         t        ||| j                  | j                         y )Nr\   r   FTr   r  
ri   r   r  r   r   r	   r,   r   r   r   rU   r   r   r   r  r=  r|   r*   r+   rp  r  rz   r{   r   r   r   r   s                    r    test_overwrite_qruv_rank_1z'BaseQRupdate.test_overwrite_qruv_rank_1  s    !MM%02r2r"bggi((GGCLGGCLGGCLGGCL 1aAu-BRTYY		2Aq$))TYY/1aAt,BRTYY		2ADIIDII>ADIIDII>GGCLGGCLGGCLGGCL1aAt,BRTYY		2ADIIDII>ADIIDII>r"   c                 6   | j                  dd      \  }}}}}|t        j                  ||j                               z   }|j	                  d      }|j	                  d      }|j	                  d      }	|j	                  d      }
t        |||	|
d      \  }}t        |||| j                  | j                  d       t        |||| j                  | j                  d       t        |||	|
d      \  }}t        |||| j                  | j                  d       t        ||| j                  | j                         t        ||| j                  | j                         |j	                  d      }|j	                  d      }|j	                  d      }	|j	                  d      }
t        |||	|
d      \  }}t        |||| j                  | j                  d       t        ||| j                  | j                         t        ||| j                  | j                         y )Nr]   r   r   FTr   r  rk  rl  s                    r    #test_overwrite_qruv_rank_1_economicz0BaseQRupdate.test_overwrite_qruv_rank_1_economic  s    !MM&*=2r2r"bggi((GGCLGGCLGGCLGGCL 1aAu-BRTYY		59Aq$))TYY61aAt,BRTYY		59ADIIDII>ADIIDII>GGCLGGCLGGCLGGCL1aAt,BRTYY		59ADIIDII>ADIIDII>r"   c                    | j                  dd      \  }}}}}|t        j                  ||j                  j	                               z   }|j                  d      }|j                  d      }|j                  d      }	|j                  d      }
t        |||	|
d      \  }}t        |||| j                  | j                         t        |||| j                  | j                         t        |||	|
d      \  }}t        |||| j                  | j                         t        ||| j                  | j                         t        ||| j                  | j                         y )	Nr\   r.   r  r   r  FTr   )ri   r   r   r   r   r   r	   r,   r   r   r   )rU   r   r   r   r  r=  r|   r*   r+   rp  r  rz   r{   r   r   s                  r    test_overwrite_qruv_rank_pz'BaseQRupdate.test_overwrite_qruv_rank_p  s    !MM%1M52r2rBDDIIK((GGCLGGCLGGCLGGCL 1aAu-BRTYY		2Aq$))TYY/1aAt,BRTYY		2ADIIDII>ADIIDII>r"   c           
         | j                  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              y )Nr]   )ri   r3  r5   r	   r   r>  r:  s         r    r  zBaseQRupdate.test_empty_inputs  s    f-1aAj)RXXb\1aCj)QaCj)Q288B<Cj)Q1bhhrlCr"   c           
      
   | j                  d      \  }}}}}t        t        t        ||dd  ||       t        t        t        |d d |||       t        t        t        |||dd  |       t        t        t        ||||dd         y )Nr]   r   r  r9  r:  s         r    r  z#BaseQRupdate.test_mismatched_shapes  sz    f-1aAj)Q!"q!<j)QsVQ1=j)Q1QR5!<j)Q1ae<r"   c           	      6   g d}| j                  d      \  }}}}}|D ]  }|j                  j                  |      }t        j                  d      5  |j                  j                  |      }	d d d        |j                  j                  |      }
|j                  j                  |      }t        t        t        ||||       t        t        t        |	||       t        t        t        |||
|       t        t        t        ||||        y # 1 sw Y   xY w)NrE  r]   rR  rS  )ri   rU  rN   r   rV  r3  r5   r	   )rU   rW  r   r   r   r  r=  r   r*   r+   rp  r  s               r    rX  z$BaseQRupdate.test_unsupported_dtypes  s     !MM&12r2rEu%AX.GGNN5) /u%Au%A*iBB?*iQB?*iRB?*iRQ? ..s   DD	c                     t        j                  d      j                  dd      }|j                         }|d d df   j                         }|dd d f   j                         }t	        t
        t        ||||       y )N   r0   r   )r   aranger  r   r3  r5   r	   )rU   r*   r+   rp  r  s        r    test_integer_inputzBaseQRupdate.test_integer_input$  s_    IIbM!!!Q'FFHadGLLNadGLLNj)Q1a8r"   c           
      F   | j                  dd      \  }}}}}|j                  d      }t        j                  |d<   t	        t
        t        |||d d df   |d d df          t	        t
        t        ||||       |j                  d      }t        j                  |d<   t	        t
        t        |||d d df   |d d df          t	        t
        t        ||||       |j                  d      }t        j                  |d<   t	        t
        t        |||d d df   |d d df          t	        t
        t        ||||       |j                  d      }	t        j                  |	d<   t	        t
        t        |||d d df   |	d d df          t	        t
        t        ||||	       y )Nr]   r.   r  r   r[   r   r   ri   r   r   rZ  r3  r5   r	   
rU   r[  r   r   r  r=  r*   r+   rp  r  s
             r    r\  zBaseQRupdate.test_check_finite+  sW   !]]6Q]7BBGGCL#j)QBqsGR!WEj)QB;GGCL#j)RBqsGR!WEj)RB;GGCL#j)RQqsVR!WEj)RQ;GGCL#j)RQqsVQqsVDj)RQ:r"   c           
      H   | j                  ddd      \  }}}}}|j                  d      }t        j                  |d<   t	        t
        t        |||d d df   |d d df          t	        t
        t        ||||       |j                  d      }t        j                  |d<   t	        t
        t        |||d d df   |d d df          t	        t
        t        ||||       |j                  d      }t        j                  |d<   t	        t
        t        |||d d df   |d d df          t	        t
        t        ||||       |j                  d      }	t        j                  |	d<   t	        t
        t        |||d d df   |	d d df          t	        t
        t        ||||	       y )	Nr]   r   r.   )rc   r   r   r[   r   r   rz  r{  s
             r    test_economic_check_finitez'BaseQRupdate.test_economic_check_finiteB  sY   !]]6
a]HBBGGCL#j)QBqsGR!WEj)QB;GGCL#j)RBqsGR!WEj)RB;GGCL#j)RQqsVR!WEj)RQ;GGCL#j)RQqsVQqsV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
                  ||j                               z   }t        |||| j                  | j                  d       y )Nr   r   )r   r   r   r$   r   F)
r   r>  r   r	   r   r  r   r,   r   r   )rU   r*   r+   rp  r  rz   r{   r|   s           r    test_u_exactly_in_span_qz%BaseQRupdate.test_u_exactly_in_span_qY  s    HHq!fq!fq!fq!f5tzzBHHq!fq!f%tzz2HH]DJJ/HHaVTZZ(1aA&BVVAq\BHHQ11RTYY		59r"   )rk   r   )1rl   rm   rn   ri   r  r  r  r  r   r"  r$  r&  r(  r*  r-  r/  r1  r3  r5  r7  r;  r   rC  rE  rH  rK  rN  rR  rU  rW  rY  r\  r_  ra  rc  re  rg  ri  rm  ro  rq  r  r  rX  rx  r\  r}  r  r  r   s   @r    r
  r
    s    ,3	73737:>33::3333<KOZDHEIGKGKLPLPGKGK?<?>?*D=@"9;.;.:r"   r
  c                   0    e Zd Z ej                  d      Zy)TestQRupdate_fra  Nrb  ro   r"   r    r  r  b  rc  r"   r  c                   0    e Zd Z ej                  d      Zy)TestQRupdate_Fr   Nrb  ro   r"   r    r  r  e  rc  r"   r  c                   0    e Zd Z ej                  d      Zy)TestQRupdate_drh  Nrb  ro   r"   r    r  r  h  rc  r"   r  c                   0    e Zd Z ej                  d      Zy)TestQRupdate_Drk  Nrb  ro   r"   r    r  r  k  rc  r"   r  c            	          ddg} dg}g d}ddg}g d}t        j                  | ||||      D ]>  \  }}}}}	|dk(  r!t        ||||d|	       t        ||||d|	       /t        ||||d|	       @ y )	Nr   r  rX   )r   r  Ar   r.   )ra  rh  r   rk  r   )r   r   check_form_qTu)
q_orderq_shapeu_orderu_shaper   qor   uor  rh  s
             r    test_form_qTur  n  s     CjGjGG!fG E gw%H 	BB72r2r1a02r2r1a02r2r1a0 Ir"   c                 J   t         j                  j                  d       |dk(  r|dk(  r|d   f}n|d   |f}t        j                  |      }|j                  dv r?t         j                  j                  |      }t         j                  j                  |      }n|j                  dv rt         j                  j                  |      dt         j                  j                  |      z  z   }t         j                  j                  |      dt         j                  j                  |      z  z   }nt        d       t        j                  ||       }|dk7  rt        j                  ||      }nt        j                  |      f      \  }d	t        j                  |      j                  d
z
   z  }d
t        j                  |      j                  z  }	t        j                  |j                  j                         |      }
t        j                   ||      }t#        ||
||	       y )N/   r   r   fdFDrb   z#form_qTu doesn't support this dtyper  r   r   r   )r   rd   re   r   charr5   requirer@   rN   r   r   r   r   r   r   _decomp_update	_form_qTur   )r  r  r  r  u_ndimr   r*   rp  r   r   expectedress               r    r  r    s   IINN2!|!1:-1:w'HHUOEzzTIIW%IIW%	t	IIW%299+;+;G+D(DDIIW%299+;+;G+D(DD89


1eW%A#~JJq%)188E?,-RXXe_..q011DRXXe_   Dvvacchhj!$H

"
"1a
(CC48r"   )NNT)NN)T)*r   numpyr   numpy.testingr   r   r   pytestr   r3  scipyr   scipy.linalg._decomp_updater  r   r	   r
   r!   r(   r,   r@   rD   rL   rP   rR   rq   r`  re  rg  rj  rm  r  r  r  r  r
  r  r  r  r  r  r  ro   r"   r    <module>r     s     @ @ *  4 4 G G	C87
4< "F< FB\ \ \ \ QB< QBf\ \ \ \ I:< I:V\ \ \ \ 149r"   