U
    »mœd† ã                   @   s²  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  mZ d dlmZmZmZ d9dd„Zd:d	d
„Zd;dd„Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&eƒZ G d'd(„ d(eƒZ!G d)d*„ d*eƒZ"G d+d,„ d,eƒZ#G d-d.„ d.e#ƒZ$G d/d0„ d0e#ƒZ%G d1d2„ d2e#ƒZ&G d3d4„ d4e#ƒZ'd5d6„ Z(d7d8„ Z)dS )<é    N)Úassert_Úassert_allcloseÚassert_equal)Úraises)Úlinalg)Ú	qr_deleteÚ	qr_updateÚ	qr_insertTc                 C   sŠ   |d kr dt  | j¡jd   }|d kr:dt  | j¡j }|rXt| jd | jd kdƒ t  | j 	¡ | ¡}t
|t  | jd ¡||d� d S )Nç      $@é   é
   r   é   zunitary matrices must be square©ÚrtolÚatol)ÚnpÚfinfoÚdtypeÚ	precisionÚepsr   ÚshapeÚdotÚTÚconjr   Úeye)Úar   r   Ú
assert_sqrZaTa© r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/linalg/tests/test_decomp_update.pyÚassert_unitary
   s    r   c                 C   sp   |d kr dt  | j¡jd   }|d kr:dt  | j¡j }t  | jd | jd dt j¡}t| | d||d� d S )Nr
   r   r   r   éÿÿÿÿg        r   )	r   r   r   r   r   Ztrir   Zbool_r   )r   r   r   Úmaskr   r   r   Úassert_upper_tri   s    r"   c                 C   s4   t | |||ƒ t|||ƒ t|  |¡|||d� d S )Nr   )r   r"   r   r   )ÚqÚrr   r   r   r   r   r   r   Úcheck_qr   s    r%   c           
      C   sH  ddddddddg}t |ƒ}d	}g }| D �]}|jd
kr�|||  }|d
7 }t |d	 |jd	  |d
  |j¡}||d
 d |d	 … }||d< n¨|jdk�r0|||  }||d
 |  }	|d7 }t |d	 |jd	  |d
  |	d	 |jd
  |	d
  f|j¡}||d
 d |d	 …|	d
 d |	d	 …f }||d< ntdƒ‚| |¡ q(|S )N)é   é   )r   r   )r&   é   )r(   r   )é   r(   )r   r&   )r   r   )r(   r)   r   r   .r   z0make_strided only works for ndim = 1 or 2 arrays)ÚlenÚndimr   Úzerosr   r   Ú
ValueErrorÚappend)
ÚarrsÚstridesZkmaxÚkÚretr   ÚsÚbaseÚviewÚtr   r   r   Úmake_strided"   s.    

$
6ÿ(
r7   c                 C   st   g }| D ]f}t  |¡}|jdkr:|d d d…d d d…f }n"|jdkrT|d d d… }ntdƒ‚||d< | |¡ q|S )Nr   r    r   z2negate_strides only works for ndim = 1 or 2 arrays.)r   Z
zeros_liker+   r-   r.   )r/   r2   r   Úbr   r   r   Únegate_strides<   s    


r9   c                 C   sJ   g }| D ]<}|j }t |jd|fdg¡}| |¡}||d< | |¡ q|S )Nr   )ZjunkZS1.)r   r   r,   r   Zgetfieldr.   )r/   Úoutr   Za_dtyper8   Úcr   r   r   Únonitemsize_stridesK   s    
r<   c                 C   s   dd„ | D ƒS )Nc                 S   s   g | ]}|  |j ¡ ¡‘qS r   )Úastyper   Znewbyteorder)Ú.0r   r   r   r   Ú
<listcomp>W   s     z"make_nonnative.<locals>.<listcomp>r   )r/   r   r   r   Úmake_nonnativeV   s    r@   c                   @   s   e Zd Zdd„ Zddd„ZdS )ÚBaseQRdeltasc                 C   s2   dt  | j¡jd   | _dt  | j¡j | _d S )Nr
   r   r   )r   r   r   r   r   r   r   ©Úselfr   r   r   Úsetup_method[   s    zBaseQRdeltas.setup_methodÚfullc                 C   s€   t j d¡ dddddddœ| }t j |¡}t  | j d	¡¡rXt j |¡}|d
|  }| | j¡}tj||d�\}}|||fS )NiÆr  ©é   rG   )é   r'   )r'   rH   )rG   r   )r   rG   ©r   r   )ÚsqrÚtallÚfatÚMx1Ú1xNÚ1x1r   ù              ð?)Úmode)	r   ÚrandomÚseedÚiscomplexobjr   Útyper=   r   Zqr)rC   rU   rQ   r   r   r8   r#   r$   r   r   r   Úgenerate_   s      ÿÿzBaseQRdeltas.generateN)rE   )Ú__name__Ú
__module__Ú__qualname__rD   rV   r   r   r   r   rA   Z   s   rA   c                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dƒdbdc„Z3ddde„ Z4dfdg„ Z5dhdi„ Z6djdk„ Z7dldm„ Z8dndo„ Z9dpdq„ Z:drds„ Z;dtdu„ Z<dvdw„ Z=dxdy„ Z>dzd{„ Z?d|d}„ Z@d~d„ ZAd€d�„ ZBd‚S )„ÚBaseQRdeletec                 C   s^   |   d¡\}}}t|jd ƒD ]:}t|||dd�\}}t ||d¡}t|||| j| jƒ qd S )NrJ   r   F©Úoverwrite_qr©	rV   Úranger   r   r   Údeleter%   r   r   ©rC   r   r#   r$   ÚrowÚq1Úr1Úa1r   r   r   Útest_sqr_1_rowl   s
    zBaseQRdelete.test_sqr_1_rowc           	   	   C   s~   |   d¡\}}}tddƒD ]^}t|jd | ƒD ]F}t||||dd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrJ   r   é   r   Fr[   ©
rV   r^   r   r   r   r_   Úslicer%   r   r   ©	rC   r   r#   r$   Úndelra   rb   rc   rd   r   r   r   Útest_sqr_p_rows   s    zBaseQRdelete.test_sqr_p_rowc                 C   s`   |   d¡\}}}t|jd ƒD ]<}t|||ddd�\}}t ||d¡}t|||| j| jƒ qd S )NrJ   r   ÚcolF©Úwhichr\   r]   ©rC   r   r#   r$   rl   rb   rc   rd   r   r   r   Útest_sqr_1_col{   s
    zBaseQRdelete.test_sqr_1_colc           	   
   C   s€   |   d¡\}}}tddƒD ]`}t|jd | ƒD ]H}t||||ddd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrJ   r   rf   r   rl   Frm   rg   ©	rC   r   r#   r$   rj   rl   rb   rc   rd   r   r   r   Útest_sqr_p_col‚   s    ÿ
zBaseQRdelete.test_sqr_p_colc                 C   s^   |   d¡\}}}t|jd ƒD ]:}t|||dd�\}}t ||d¡}t|||| j| jƒ qd S )NrK   r   Fr[   r]   r`   r   r   r   Útest_tall_1_row‹   s
    zBaseQRdelete.test_tall_1_rowc           	   	   C   s~   |   d¡\}}}tddƒD ]^}t|jd | ƒD ]F}t||||dd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrK   r   rf   r   Fr[   rg   ri   r   r   r   Útest_tall_p_row’   s    zBaseQRdelete.test_tall_p_rowc                 C   s`   |   d¡\}}}t|jd ƒD ]<}t|||ddd�\}}t ||d¡}t|||| j| jƒ qd S )NrK   r   rl   Frm   r]   ro   r   r   r   Útest_tall_1_colš   s
    zBaseQRdelete.test_tall_1_colc           	   
   C   s€   |   d¡\}}}tddƒD ]`}t|jd | ƒD ]H}t||||ddd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrK   r   rf   r   rl   Frm   rg   rq   r   r   r   Útest_tall_p_col¡   s    ÿ
zBaseQRdelete.test_tall_p_colc                 C   s^   |   d¡\}}}t|jd ƒD ]:}t|||dd�\}}t ||d¡}t|||| j| jƒ qd S )NrL   r   Fr[   r]   r`   r   r   r   Útest_fat_1_rowª   s
    zBaseQRdelete.test_fat_1_rowc           	   	   C   s~   |   d¡\}}}tddƒD ]^}t|jd | ƒD ]F}t||||dd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrL   r   rf   r   Fr[   rg   ri   r   r   r   Útest_fat_p_row±   s    zBaseQRdelete.test_fat_p_rowc                 C   s`   |   d¡\}}}t|jd ƒD ]<}t|||ddd�\}}t ||d¡}t|||| j| jƒ qd S )NrL   r   rl   Frm   r]   ro   r   r   r   Útest_fat_1_col¹   s
    zBaseQRdelete.test_fat_1_colc           	   
   C   s€   |   d¡\}}}tddƒD ]`}t|jd | ƒD ]H}t||||ddd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrL   r   rf   r   rl   Frm   rg   rq   r   r   r   Útest_fat_p_colÀ   s    ÿ
zBaseQRdelete.test_fat_p_colc                 C   sb   |   dd¡\}}}t|jd ƒD ]<}t|||dd�\}}t ||d¡}t|||| j| jdƒ q d S ©NrK   Úeconomicr   Fr[   r]   r`   r   r   r   Útest_economic_1_rowÉ   s
    z BaseQRdelete.test_economic_1_rowc           	      C   sr   |   dd¡\}}}t|jd | ƒD ]H}t||||dd�\}}t |t||| ƒd¡}t|||| j| j	dƒ q$d S r{   rg   )	rC   rj   r   r#   r$   ra   rb   rc   rd   r   r   r   Úbase_economic_p_row_xxxÕ   s
    z$BaseQRdelete.base_economic_p_row_xxxc                 C   s   |   d¡ d S ©Nr&   ©r~   rB   r   r   r   Útest_economic_p_row_economicÜ   s    z)BaseQRdelete.test_economic_p_row_economicc                 C   s   |   d¡ d S ©Nr)   r€   rB   r   r   r   Útest_economic_p_row_sqrà   s    z$BaseQRdelete.test_economic_p_row_sqrc                 C   s   |   d¡ d S ©Nr'   r€   rB   r   r   r   Útest_economic_p_row_fatä   s    z$BaseQRdelete.test_economic_p_row_fatc                 C   sd   |   dd¡\}}}t|jd ƒD ]>}t|||ddd�\}}t ||d¡}t|||| j| jdƒ q d S )NrK   r|   r   rl   Frm   r]   ro   r   r   r   Útest_economic_1_colè   s
    z BaseQRdelete.test_economic_1_colc           	   
   C   s„   |   dd¡\}}}tddƒD ]b}t|jd | ƒD ]J}t||||ddd�\}}t |t||| ƒd¡}t|||| j| j	dƒ q2qd S )	NrK   r|   r   rf   r   rl   Frm   rg   rq   r   r   r   Útest_economic_p_colï   s    ÿ
z BaseQRdelete.test_economic_p_colc                 C   s^   |   d¡\}}}t|jd ƒD ]:}t|||dd�\}}t ||d¡}t|||| j| jƒ qd S )NrM   r   Fr[   r]   r`   r   r   r   Útest_Mx1_1_rowø   s
    zBaseQRdelete.test_Mx1_1_rowc           	   	   C   s~   |   d¡\}}}tddƒD ]^}t|jd | ƒD ]F}t||||dd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrM   r   rf   r   Fr[   rg   ri   r   r   r   Útest_Mx1_p_rowÿ   s    zBaseQRdelete.test_Mx1_p_rowc                 C   s`   |   d¡\}}}t|jd ƒD ]<}t|||ddd�\}}t ||d¡}t|||| j| jƒ qd S )NrN   r   rl   Frm   r]   ro   r   r   r   Útest_1xN_1_col  s
    zBaseQRdelete.test_1xN_1_colc           	   
   C   s€   |   d¡\}}}tddƒD ]`}t|jd | ƒD ]H}t||||ddd�\}}t |t||| ƒd¡}t|||| j| j	ƒ q0qd S )NrN   r   rf   r   rl   Frm   rg   rq   r   r   r   Útest_1xN_p_col  s    ÿ
zBaseQRdelete.test_1xN_p_colc                 C   sb   |   dd¡\}}}t|jd ƒD ]<}t|||dd�\}}t ||d¡}t|||| j| jdƒ q d S )NrM   r|   r   Fr[   r]   r`   r   r   r   Útest_Mx1_economic_1_row  s
    z$BaseQRdelete.test_Mx1_economic_1_rowc           	   	   C   s‚   |   dd¡\}}}tddƒD ]`}t|jd | ƒD ]H}t||||dd�\}}t |t||| ƒd¡}t|||| j| j	dƒ q2qd S )NrM   r|   r   rf   r   Fr[   rg   ri   r   r   r   Útest_Mx1_economic_p_row  s    z$BaseQRdelete.test_Mx1_economic_p_rowc                 C   s^   |   d¡\}}}t||dddƒ\}}t|tjd|jd�ƒ t|tjd|jd f|jd�ƒ d S )NrN   r   r   ra   ©r   r   ©r   r   )rV   r   r   r   Úndarrayr   r   ©rC   r   r#   r$   rb   rc   r   r   r   Útest_delete_last_1_row&  s    z#BaseQRdelete.test_delete_last_1_rowc                 C   sÈ   |   dd¡\}}}t||d|jd dƒ\}}t|tjd|jd�ƒ t|tjd|jd f|jd�ƒ |   dd¡\}}}t||d|jd dƒ\}}t|tjd|jd�ƒ t|tjd|jd f|jd�ƒ d S )	NrK   rE   r   ra   rŽ   r�   r   r|   )rV   r   r   r   r   r�   r   r‘   r   r   r   Útest_delete_last_p_row-  s     z#BaseQRdelete.test_delete_last_p_rowc                 C   sÎ   |   dd¡\}}}t||dddƒ\}}t|tj|jd df|jd�ƒ t|tjd|jd�ƒ |   dd¡\}}}t||dddƒ\}}t|ƒ t|j|jkƒ t|j|jkƒ t|tj|jd df|jd�ƒ d S )	NrM   r|   r   r   rl   r�   rŽ   rE   )	rV   r   r   r   r�   r   r   r   r   r‘   r   r   r   Útest_delete_last_1_col8  s     z#BaseQRdelete.test_delete_last_1_colc                 C   sÚ   |   dd¡\}}}t||d|jd dƒ\}}t|ƒ t|j|jkƒ t|j|jkƒ t|tj|jd df|jd�ƒ |   dd¡\}}}t||d|jd dƒ\}}t|tj|jd df|jd�ƒ t|tjd|jd�ƒ d S )	NrK   rE   r   r   rl   r�   r|   rŽ   )	rV   r   r   r   r   r   r   r   r�   r‘   r   r   r   Útest_delete_last_p_colE  s      z#BaseQRdelete.test_delete_last_p_colc                 C   sÊ   |   d¡\}}}t||dddƒ\}}t|tjd|jd�ƒ t|tjd|jd f|jd�ƒ |   d¡\}}}t||dddƒ\}}t|ƒ t|j|jkƒ t|j|jkƒ t|tj|jd df|jd�ƒ d S )NrO   r   r   ra   rŽ   r�   rl   )	rV   r   r   r   r�   r   r   r   r   r‘   r   r   r   Útest_delete_1x1_row_colR  s     z$BaseQRdelete.test_delete_1x1_row_colc                 C   sþ  |dkr0t |d ƒt |d ƒf}t |d ƒt d ƒf}n$t d ƒt d ƒf}t d ƒt d | ƒf}t dddg|¡D �]�\}}	|  |¡\}
}}|||fƒ\}}|dkr´t |
|	|dkr¬dnd¡}n\t |	|	| ƒ}|	dk rôt |	|	| |dkræ|
jd n|
jd  ƒ}t |
||dk�r
dnd¡}| d¡}| d¡}t|||	||dƒ\}}t	|||| j
| jƒ t|||	||d	ƒ\}}t	|||| j
| jƒ |�r®t||| | j
| jd
� t||| | j
| jd
� | d¡}| d¡}t|||	||dƒ\}}t	|||| j
| jƒ t|||	||d	ƒ\}}t	|||| j
| jƒ |�rLt||| | j
| jd
� t||| | j
| jd
� | d¡}| d¡}|||fƒ\}}t|||	||dƒ\}}t	|||| j
| jƒ t|||	||d	ƒ\}}t	|||| j
| jƒ |rft||| | j
| jd
� t||| | j
| jd
� qfd S )Nra   rJ   rK   rL   r   r   ÚFFTr   )rh   Ú	itertoolsÚproductrV   r   r_   r   Úcopyr   r%   r   r   r   )rC   Úadjust_stridesÚksÚprn   ÚoverwriteableÚqindÚrindrU   r1   r   Úq0Úr0ÚqsÚrsrd   r3   r#   r$   rb   rc   Úq1oÚr1oÚq2Úr2Úq2oÚr2oÚq3Úr3Úq3oÚr3or   r   r   Úbase_non_simple_stridese  sX    
ÿ





z$BaseQRdelete.base_non_simple_stridesc                 C   s   |   tdgddd¡ d S )Nr   r   ra   T©r¯   r7   rB   r   r   r   Útest_non_unit_strides_1_rowž  s    z(BaseQRdelete.test_non_unit_strides_1_rowc                 C   s   |   tdgddd¡ d S )Nr   r&   ra   Tr°   rB   r   r   r   Útest_non_unit_strides_p_row¡  s    z(BaseQRdelete.test_non_unit_strides_p_rowc                 C   s   |   tdgddd¡ d S )Nr   r   rl   Tr°   rB   r   r   r   Útest_non_unit_strides_1_col¤  s    z(BaseQRdelete.test_non_unit_strides_1_colc                 C   s   |   tdgddd¡ d S ©Nr   r&   rl   Fr°   rB   r   r   r   Útest_non_unit_strides_p_col§  s    z(BaseQRdelete.test_non_unit_strides_p_colc                 C   s   |   tdgddd¡ d S ©Nr   r   ra   F©r¯   r9   rB   r   r   r   Útest_neg_strides_1_rowª  s    z#BaseQRdelete.test_neg_strides_1_rowc                 C   s   |   tdgddd¡ d S ©Nr   r&   ra   Fr·   rB   r   r   r   Útest_neg_strides_p_row­  s    z#BaseQRdelete.test_neg_strides_p_rowc                 C   s   |   tdgddd¡ d S ©Nr   r   rl   Fr·   rB   r   r   r   Útest_neg_strides_1_col°  s    z#BaseQRdelete.test_neg_strides_1_colc                 C   s   |   tdgddd¡ d S r´   r·   rB   r   r   r   Útest_neg_strides_p_col³  s    z#BaseQRdelete.test_neg_strides_p_colc                 C   s   |   tdgddd¡ d S r¶   ©r¯   r<   rB   r   r   r   Útest_non_itemize_strides_1_row¶  s    z+BaseQRdelete.test_non_itemize_strides_1_rowc                 C   s   |   tdgddd¡ d S r¹   r¾   rB   r   r   r   Útest_non_itemize_strides_p_row¹  s    z+BaseQRdelete.test_non_itemize_strides_p_rowc                 C   s   |   tdgddd¡ d S r»   r¾   rB   r   r   r   Útest_non_itemize_strides_1_col¼  s    z+BaseQRdelete.test_non_itemize_strides_1_colc                 C   s   |   tdgddd¡ d S r´   r¾   rB   r   r   r   Útest_non_itemize_strides_p_col¿  s    z+BaseQRdelete.test_non_itemize_strides_p_colc                 C   s   |   tdgddd¡ d S r¶   ©r¯   r@   rB   r   r   r   Ú test_non_native_byte_order_1_rowÂ  s    z-BaseQRdelete.test_non_native_byte_order_1_rowc                 C   s   |   tdgddd¡ d S r¹   rÃ   rB   r   r   r   Ú test_non_native_byte_order_p_rowÅ  s    z-BaseQRdelete.test_non_native_byte_order_p_rowc                 C   s   |   tdgddd¡ d S r»   rÃ   rB   r   r   r   Ú test_non_native_byte_order_1_colÈ  s    z-BaseQRdelete.test_non_native_byte_order_1_colc                 C   s   |   tdgddd¡ d S r´   rÃ   rB   r   r   r   Ú test_non_native_byte_order_p_colË  s    z-BaseQRdelete.test_non_native_byte_order_p_colc           
   	   C   sÈ   |   d¡\}}}t ddgddgddg¡D ]˜\}}}t|||||dd	�\}}|dkr‚t |t||jd
  || |jd
  ƒd
¡}	n,t |t||jd
  || |jd  ƒd¡}	t|||	| j	| j
ƒ q*d S )NrJ   éýÿÿÿiùÿÿÿr   r&   ra   rl   Fr[   r   )rV   r˜   r™   r   r   r_   rh   r   r%   r   r   )
rC   r   r#   r$   r1   r�   Úwrb   rc   rd   r   r   r   Ú
test_neg_kÎ  s    $.,zBaseQRdelete.test_neg_krE   c                 C   s  |dkrdnd}|dkr@t |d ƒt |d ƒf}t |d ƒt d ƒf}n$t d ƒt d ƒf}t d ƒt d | ƒf}|  d|¡\}	}
}|dkršt |	d|dkr’dnd¡}n$t |	t dd| ƒ|dkr¸dnd¡}|
 d	¡}| d	¡}t||d||dƒ\}}t|||| j| j|ƒ t|||	| j| j|ƒ |�rŠ|
 d	¡}| d	¡}t||d||dƒ\}}t|||| j| j|ƒ t	||| | j| jd
� t	||| | j| jd
� |�r |
 d¡}| d¡}t||d||dƒ\}}t|||| j| j|ƒ t	||| | j| jd
� t	||| | j| jd
� d S )NrE   TFra   rJ   r   r&   r   r—   r   ÚC)
rh   rV   r   r_   rš   r   r%   r   r   r   )rC   rn   r�   Ztest_CZtest_FrQ   r   rŸ   r    r   r¡   r¢   rd   r#   r$   rb   rc   r§   r¨   r«   r¬   r   r   r   Úbase_overwrite_qrØ  s:    $





zBaseQRdelete.base_overwrite_qrc                 C   s   |   dddd¡ d S )Nra   r   T©rÌ   rB   r   r   r   Útest_overwrite_qr_1_rowþ  s    z$BaseQRdelete.test_overwrite_qr_1_rowc                 C   s   |   ddddd¡ d S )Nra   r   Tr|   rÍ   rB   r   r   r   Ú test_overwrite_economic_qr_1_row  s    z-BaseQRdelete.test_overwrite_economic_qr_1_rowc                 C   s   |   dddd¡ d S )Nrl   r   TrÍ   rB   r   r   r   Útest_overwrite_qr_1_col  s    z$BaseQRdelete.test_overwrite_qr_1_colc                 C   s   |   dddd¡ d S )Nra   r&   TrÍ   rB   r   r   r   Útest_overwrite_qr_p_row  s    z$BaseQRdelete.test_overwrite_qr_p_rowc                 C   s   |   ddddd¡ d S )Nra   r&   Tr|   rÍ   rB   r   r   r   Ú test_overwrite_economic_qr_p_row  s    z-BaseQRdelete.test_overwrite_economic_qr_p_rowc                 C   s   |   dddd¡ d S )Nrl   r&   FTrÍ   rB   r   r   r   Útest_overwrite_qr_p_col  s    z$BaseQRdelete.test_overwrite_qr_p_colc                 C   s(   |   d¡\}}}ttt||ddd� d S )NrJ   r   Zfoo©rn   ©rV   Úassert_raisesr-   r   ©rC   r   r#   r$   r   r   r   Útest_bad_which  s    zBaseQRdelete.test_bad_whichc                 C   s„   |   d¡\}}}ttt|||jd dƒ ttt|||jd  d dƒ ttt|||jd ddƒ ttt|||jd  d ddƒ d S )NrK   r   r   rl   ©rV   rÖ   r-   r   r   r×   r   r   r   Ú
test_bad_k  s
    zBaseQRdelete.test_bad_kc                 C   sš   |   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 ƒ ttt||d|jd d dƒ d S )NrK   r   r    rl   r&   r   r   rÙ   r×   r   r   r   Ú
test_bad_p#  s    zBaseQRdelete.test_bad_pc                 C   s,   |   d¡\}}}tttt g ¡|ddƒ d S ©NrK   r   r   ©rV   rÖ   r-   r   r   Úarrayr×   r   r   r   Útest_empty_q1  s    zBaseQRdelete.test_empty_qc                 C   s,   |   d¡\}}}ttt|t g ¡ddƒ d S rÜ   rÝ   r×   r   r   r   Útest_empty_r6  s    zBaseQRdelete.test_empty_rc                 C   s2   |   d¡\}}}|dd … }ttt||ddƒ d S )NrK   r   r   rÕ   r×   r   r   r   Útest_mismatched_q_and_r;  s    z$BaseQRdelete.test_mismatched_q_and_rc                 C   s
  ddddddddd	d
ddg}|   d¡\}}}|D ]Ô}|j |¡}tjdd�� |j |¡}W 5 Q R X 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ƒ q0d S )NÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Ú
longdoubleÚlongcomplexÚboolrK   Úignore©Úinvalidr   r   ra   r   rl   )rV   Úrealr=   r   ÚerrstaterÖ   r-   r   )rC   Údtsr   r¡   r¢   r   r#   r$   r   r   r   Útest_unsupported_dtypes@  s.         ýz$BaseQRdelete.test_unsupported_dtypesc                 C   sÜ   |   d¡\}}}| d¡}tj|d< ttt||dddƒ ttt||dddƒ ttt||dddƒ ttt||dddƒ | d¡}tj|d< ttt||dddƒ ttt||dddƒ ttt||dddƒ ttt||dddƒ d S )	NrK   r—   rI   r   r   ra   r&   rl   )rV   rš   r   ÚnanrÖ   r-   r   )rC   Úa0r¡   r¢   r#   r$   r   r   r   Útest_check_finiteT  s    



zBaseQRdelete.test_check_finitec                 C   st   |   d¡\}}}ttt|d |dddƒ ttt||d dddƒ ttt|d |dddƒ ttt||d dddƒ d S )NrO   rŽ   r   r   ra   rl   rÕ   r×   r   r   r   Útest_qr_scalare  s
    zBaseQRdelete.test_qr_scalarN)rE   )CrW   rX   rY   re   rk   rp   rr   rs   rt   ru   rv   rw   rx   ry   rz   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   rZ   k   s€   					9

&rZ   c                   @   s   e Zd Ze d¡ZdS )ÚTestQRdelete_fÚfN©rW   rX   rY   r   r   r   r   r   r   rù   l  s   rù   c                   @   s   e Zd Ze d¡ZdS )ÚTestQRdelete_Fr—   Nrû   r   r   r   r   rü   o  s   rü   c                   @   s   e Zd Ze d¡ZdS )ÚTestQRdelete_dÚdNrû   r   r   r   r   rý   r  s   rý   c                   @   s   e Zd Ze d¡ZdS )ÚTestQRdelete_DÚDNrû   r   r   r   r   rÿ   u  s   rÿ   c                       s.  e Zd ZdŠ‡ fdd„	Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*dTdU„ Z+dVdW„ Z,dXdY„ Z-dZd[„ Z.d\d]„ Z/d^d_„ Z0d`da„ Z1dbdc„ Z2ddde„ Z3dfdg„ Z4dhdi„ Z5djdk„ Z6dldm„ Z7dndo„ Z8dpdq„ Z9drds„ Z:dtdu„ Z;dvdw„ Z<dxdy„ Z=dzd{„ Z>d|d}„ Z?d~d„ Z@d€d�„ ZAd‚dƒ„ ZBd„d…„ ZCd†d‡„ ZDdˆd‰„ ZE‡  ZFS )‹ÚBaseQRinsertrE   ra   r   c           
         sä   t ƒ  ||¡\}}}t|dkƒ |dkr\|dkrDtj |jd ¡}q tj ||jd f¡}nD|dkr˜|dkr€tj |jd ¡}q tj |jd |f¡}ntdƒ t | j 	d¡¡rÌtj |j¡}	|d|	  }| 
| j¡}||||fS )Nr   ra   r   rl   z%which should be either "row" or "col"rP   )ÚsuperrV   r   r   rR   r   r-   rT   r   rU   r=   )
rC   rU   rQ   rn   r�   r   r#   r$   Úur8   ©Ú	__class__r   r   rV   y  s     zBaseQRinsert.generatec           	      C   sh   | j ddd�\}}}}t|jd d ƒD ]:}t||||ƒ\}}t |||d¡}t|||| j| jƒ q(d S )NrJ   ra   rÔ   r   r   ©	rV   r^   r   r	   r   Úinsertr%   r   r   ©	rC   r   r#   r$   r  ra   rb   rc   rd   r   r   r   re   “  s
    zBaseQRinsert.test_sqr_1_rowc           	   	   C   sv   | j dddd�\}}}}t|jd d ƒD ]F}t||||ƒ\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrJ   ra   r&   ©rn   r�   r   r   ©rV   r^   r   r	   r   r  rE   Úintpr%   r   r   r  r   r   r   rk   š  s
    zBaseQRinsert.test_sqr_p_rowc           	   	   C   sn   | j ddd�\}}}}t|jd d ƒD ]@}t||||ddd�\}}t |||d¡}t|||| j| jƒ q(d S )NrJ   rl   rÔ   r   F©Zoverwrite_qrur  ©	rC   r   r#   r$   r  rl   rb   rc   rd   r   r   r   rp   ¢  s
    zBaseQRinsert.test_sqr_1_colc           	   	   C   s|   | j dddd�\}}}}t|jd d ƒD ]L}t||||ddd�\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrJ   rl   r&   r	  r   Fr  r
  r  r   r   r   rr   ©  s
    zBaseQRinsert.test_sqr_p_colc           	      C   sh   | j ddd�\}}}}t|jd d ƒD ]:}t||||ƒ\}}t |||d¡}t|||| j| jƒ q(d S )NrK   ra   rÔ   r   r   r  r  r   r   r   rs   ±  s
    zBaseQRinsert.test_tall_1_rowc           	   	   C   sv   | j dddd�\}}}}t|jd d ƒD ]F}t||||ƒ\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrK   ra   r&   r	  r   r   r
  r  r   r   r   rt   ¸  s
    zBaseQRinsert.test_tall_p_rowc           	   	   C   sn   | j ddd�\}}}}t|jd d ƒD ]@}t||||ddd�\}}t |||d¡}t|||| j| jƒ q(d S )NrK   rl   rÔ   r   Fr  r  r  r   r   r   ru   À  s
    zBaseQRinsert.test_tall_1_colc           
   	   C   s|   | j dd|d�\}}}}t|jd d ƒD ]L}t||||ddd�\}}t |t ||tj¡|d¡}	t|||	| j	| j
ƒ q*d S )NrK   rl   r	  r   Fr  r
  ©
rC   r�   r   r#   r$   r  rl   rb   rc   rd   r   r   r   Úbase_tall_p_col_xxxË  s
    z BaseQRinsert.base_tall_p_col_xxxc                 C   s   |   d¡ d S r   ©r  rB   r   r   r   Útest_tall_p_col_tallÒ  s    z!BaseQRinsert.test_tall_p_col_tallc                 C   s   |   d¡ d S r‚   r  rB   r   r   r   Útest_tall_p_col_sqrÖ  s    z BaseQRinsert.test_tall_p_col_sqrc                 C   s   |   d¡ d S r„   r  rB   r   r   r   Útest_tall_p_col_fatÚ  s    z BaseQRinsert.test_tall_p_col_fatc           	      C   sh   | j ddd�\}}}}t|jd d ƒD ]:}t||||ƒ\}}t |||d¡}t|||| j| jƒ q(d S )NrL   ra   rÔ   r   r   r  r  r   r   r   rw   Þ  s
    zBaseQRinsert.test_fat_1_rowc           
   	   C   sv   | j dd|d�\}}}}t|jd d ƒD ]F}t||||ƒ\}}t |t ||tj¡|d¡}	t|||	| j	| j
ƒ q*d S )NrL   ra   r	  r   r   r
  )
rC   r�   r   r#   r$   r  ra   rb   rc   rd   r   r   r   Úbase_fat_p_row_xxxé  s
    zBaseQRinsert.base_fat_p_row_xxxc                 C   s   |   d¡ d S r   ©r  rB   r   r   r   Útest_fat_p_row_fatð  s    zBaseQRinsert.test_fat_p_row_fatc                 C   s   |   d¡ d S r‚   r  rB   r   r   r   Útest_fat_p_row_sqrô  s    zBaseQRinsert.test_fat_p_row_sqrc                 C   s   |   d¡ d S r„   r  rB   r   r   r   Útest_fat_p_row_tallø  s    z BaseQRinsert.test_fat_p_row_tallc           	   	   C   sn   | j ddd�\}}}}t|jd d ƒD ]@}t||||ddd�\}}t |||d¡}t|||| j| jƒ q(d S )NrL   rl   rÔ   r   Fr  r  r  r   r   r   ry   ü  s
    zBaseQRinsert.test_fat_1_colc           	   	   C   s|   | j dddd�\}}}}t|jd d ƒD ]L}t||||ddd�\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrL   rl   r&   r	  r   Fr  r
  r  r   r   r   rz     s
    zBaseQRinsert.test_fat_p_colc           	      C   sn   |   ddd¡\}}}}t|jd d ƒD ]@}t||||dd�\}}t |||d¡}t|||| j| jdƒ q(d S )NrK   r|   ra   r   r   Fr  r  r  r   r   r   r}     s
    z BaseQRinsert.test_economic_1_rowc           	   	   C   s|   |   dddd¡\}}}}t|jd d ƒD ]L}t||||dd�\}}t |t d|tj¡|d¡}t|||| j	| j
dƒ q*d S )	NrK   r|   ra   r&   r   r   Fr  r
  r  r   r   r   Útest_economic_p_row  s
    z BaseQRinsert.test_economic_p_rowc           	   	   C   sv   | j dddd�\}}}}t|jd d ƒD ]F}t||| ¡ |ddd�\}}t |||d¡}t|||| j| j	dƒ q*d S )NrK   r|   rl   rÔ   r   Fr  )
rV   r^   r   r	   rš   r   r  r%   r   r   r  r   r   r   r†     s
    z BaseQRinsert.test_economic_1_colc                 C   sT   t jdd| jd�}t jd| jd�}t  dddddg| j¡}ttjt|||ddƒ d S )Nr)   r&   )r   r   r   rl   )r   r   r   rÞ   rÖ   r   ZLinAlgErrorr	   )rC   r#   r$   r  r   r   r   Útest_economic_1_col_bad_update!  s    z+BaseQRinsert.test_economic_1_col_bad_updatec           
   	   C   s€   | j ddd|d�\}}}}t|jd d ƒD ]N}t||||ddd�\}}t |t ||tj¡|d¡}	t|||	| j	| j
dƒ q,d S )NrK   r|   rl   r	  r   Fr  r
  r  r   r   r   Úbase_economic_p_col_xxx-  s
    z$BaseQRinsert.base_economic_p_col_xxxc                 C   s   |   d¡ d S r   ©r  rB   r   r   r   Útest_economic_p_col_eco4  s    z$BaseQRinsert.test_economic_p_col_ecoc                 C   s   |   d¡ d S r‚   r  rB   r   r   r   Útest_economic_p_col_sqr8  s    z$BaseQRinsert.test_economic_p_col_sqrc                 C   s   |   d¡ d S r„   r  rB   r   r   r   Útest_economic_p_col_fat<  s    z$BaseQRinsert.test_economic_p_col_fatc           	      C   sh   | j ddd�\}}}}t|jd d ƒD ]:}t||||ƒ\}}t |||d¡}t|||| j| jƒ q(d S )NrM   ra   rÔ   r   r   r  r  r   r   r   rˆ   @  s
    zBaseQRinsert.test_Mx1_1_rowc           	   	   C   sv   | j dddd�\}}}}t|jd d ƒD ]F}t||||ƒ\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrM   ra   r&   r	  r   r   r
  r  r   r   r   r‰   G  s
    zBaseQRinsert.test_Mx1_p_rowc           	   	   C   sn   | j ddd�\}}}}t|jd d ƒD ]@}t||||ddd�\}}t |||d¡}t|||| j| jƒ q(d S )NrM   rl   rÔ   r   Fr  r  r  r   r   r   Útest_Mx1_1_colN  s
    zBaseQRinsert.test_Mx1_1_colc           	   	   C   s|   | j dddd�\}}}}t|jd d ƒD ]L}t||||ddd�\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrM   rl   r&   r	  r   Fr  r
  r  r   r   r   Útest_Mx1_p_colU  s
    zBaseQRinsert.test_Mx1_p_colc           	      C   sj   |   ddd¡\}}}}t|jd d ƒD ]<}t||||ƒ\}}t |||d¡}t|||| j| jdƒ q(d S )NrM   r|   ra   r   r   Fr  r  r   r   r   rŒ   \  s
    z$BaseQRinsert.test_Mx1_economic_1_rowc           	   	   C   sx   |   dddd¡\}}}}t|jd d ƒD ]H}t||||ƒ\}}t |t d|tj¡|d¡}t|||| j	| j
dƒ q*d S )NrM   r|   ra   r&   r   r   Fr
  r  r   r   r   r�   c  s
    z$BaseQRinsert.test_Mx1_economic_p_rowc           	   	   C   sp   |   ddd¡\}}}}t|jd d ƒD ]B}t||||ddd�\}}t |||d¡}t|||| j| jdƒ q(d S )NrM   r|   rl   r   Fr  r  r  r   r   r   Útest_Mx1_economic_1_colj  s
    z$BaseQRinsert.test_Mx1_economic_1_colc           	   	   C   s~   |   dddd¡\}}}}t|jd d ƒD ]N}t||||ddd�\}}t |t d|tj¡|d¡}t|||| j	| j
dƒ q*d S )NrM   r|   rl   r&   r   Fr  r
  r  r   r   r   Útest_Mx1_economic_p_colq  s
    z$BaseQRinsert.test_Mx1_economic_p_colc           	      C   sh   | j ddd�\}}}}t|jd d ƒD ]:}t||||ƒ\}}t |||d¡}t|||| j| jƒ q(d S )NrN   ra   rÔ   r   r   r  r  r   r   r   Útest_1xN_1_rowx  s
    zBaseQRinsert.test_1xN_1_rowc           	   	   C   sv   | j dddd�\}}}}t|jd d ƒD ]F}t||||ƒ\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrN   ra   r&   r	  r   r   r
  r  r   r   r   Útest_1xN_p_row  s
    zBaseQRinsert.test_1xN_p_rowc           	   	   C   sn   | j ddd�\}}}}t|jd d ƒD ]@}t||||ddd�\}}t |||d¡}t|||| j| jƒ q(d S )NrN   rl   rÔ   r   Fr  r  r  r   r   r   rŠ   †  s
    zBaseQRinsert.test_1xN_1_colc           	   	   C   s|   | j dddd�\}}}}t|jd d ƒD ]L}t||||ddd�\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrN   rl   r&   r	  r   Fr  r
  r  r   r   r   r‹   �  s
    zBaseQRinsert.test_1xN_p_colc           	      C   sh   | j ddd�\}}}}t|jd d ƒD ]:}t||||ƒ\}}t |||d¡}t|||| j| jƒ q(d S )NrO   ra   rÔ   r   r   r  r  r   r   r   Útest_1x1_1_row”  s
    zBaseQRinsert.test_1x1_1_rowc           	   	   C   sv   | j dddd�\}}}}t|jd d ƒD ]F}t||||ƒ\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrO   ra   r&   r	  r   r   r
  r  r   r   r   Útest_1x1_p_row›  s
    zBaseQRinsert.test_1x1_p_rowc           	   	   C   sn   | j ddd�\}}}}t|jd d ƒD ]@}t||||ddd�\}}t |||d¡}t|||| j| jƒ q(d S )NrO   rl   rÔ   r   Fr  r  r  r   r   r   Útest_1x1_1_col¢  s
    zBaseQRinsert.test_1x1_1_colc           	   	   C   s|   | j dddd�\}}}}t|jd d ƒD ]L}t||||ddd�\}}t |t d|tj¡|d¡}t|||| j	| j
ƒ q*d S )NrO   rl   r&   r	  r   Fr  r
  r  r   r   r   Útest_1x1_p_col©  s
    zBaseQRinsert.test_1x1_p_colc                 C   sª   | 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ƒ d S )NrO   ra   rÔ   rŽ   r   rl   ©rV   rÖ   r-   r	   ©rC   r   r#   r$   r  r   r   r   Útest_1x1_1_scalar°  s    zBaseQRinsert.test_1x1_1_scalarc           !   	   C   s‚  dD �]v}| j |||d�\}}}}	||||	fƒ\}
}}|dkr\t |||	|dkrTdnd¡}n4t |t ||tj¡|dkr||	n|	|dkrŠdnd¡}| d¡}| d¡}|	 d¡}t|
||||dd�\}}t|||| j| j	ƒ t|
||||d	d�\}}t|||| j| j	ƒ | d¡}| d¡}|	 d¡}t|||||dd�\}}t|||| j| j	ƒ t|||||d	d�\}}t|||| j| j	ƒ | d¡}| d¡}|	 d¡}t|||||dd�\}}t|||| j| j	ƒ t|||||d	d�\}}t|||| j| j	ƒ | d¡}| d¡}|	 d¡}||||fƒ\}
}}t|
||||dd�\}}t|||| j| j	ƒ t|
||||d	d�\}} t|| || j| j	ƒ qd S )
N©rJ   rK   rL   r	  r   ra   r   r—   Fr  T)
rV   r   r  rE   r  rš   r	   r%   r   r   )!rC   r›   r1   r�   rn   rU   r   r¡   r¢   Úu0r£   r¤   ÚusZair#   r$   r  rb   rc   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   Úq5Úr5Úq5oÚr5or   r   r   r¯   º  sL    
þ	











z$BaseQRinsert.base_non_simple_stridesc                 C   s   |   tddd¡ d S ©Nr   r   ra   r°   rB   r   r   r   r±   ì  s    z(BaseQRinsert.test_non_unit_strides_1_rowc                 C   s   |   tddd¡ d S ©Nr   r&   ra   r°   rB   r   r   r   r²   ï  s    z(BaseQRinsert.test_non_unit_strides_p_rowc                 C   s   |   tddd¡ d S ©Nr   r   rl   r°   rB   r   r   r   r³   ò  s    z(BaseQRinsert.test_non_unit_strides_1_colc                 C   s   |   tddd¡ d S ©Nr   r&   rl   r°   rB   r   r   r   rµ   õ  s    z(BaseQRinsert.test_non_unit_strides_p_colc                 C   s   |   tddd¡ d S r4  r·   rB   r   r   r   r¸   ø  s    z#BaseQRinsert.test_neg_strides_1_rowc                 C   s   |   tddd¡ d S r5  r·   rB   r   r   r   rº   û  s    z#BaseQRinsert.test_neg_strides_p_rowc                 C   s   |   tddd¡ d S r6  r·   rB   r   r   r   r¼   þ  s    z#BaseQRinsert.test_neg_strides_1_colc                 C   s   |   tddd¡ d S r7  r·   rB   r   r   r   r½     s    z#BaseQRinsert.test_neg_strides_p_colc                 C   s   |   tddd¡ d S r4  r¾   rB   r   r   r   Útest_non_itemsize_strides_1_row  s    z,BaseQRinsert.test_non_itemsize_strides_1_rowc                 C   s   |   tddd¡ d S r5  r¾   rB   r   r   r   Útest_non_itemsize_strides_p_row  s    z,BaseQRinsert.test_non_itemsize_strides_p_rowc                 C   s   |   tddd¡ d S r6  r¾   rB   r   r   r   Útest_non_itemsize_strides_1_col
  s    z,BaseQRinsert.test_non_itemsize_strides_1_colc                 C   s   |   tddd¡ d S r7  r¾   rB   r   r   r   Útest_non_itemsize_strides_p_col  s    z,BaseQRinsert.test_non_itemsize_strides_p_colc                 C   s   |   tddd¡ d S r4  rÃ   rB   r   r   r   rÄ     s    z-BaseQRinsert.test_non_native_byte_order_1_rowc                 C   s   |   tddd¡ d S r5  rÃ   rB   r   r   r   rÅ     s    z-BaseQRinsert.test_non_native_byte_order_p_rowc                 C   s   |   tddd¡ d S r6  rÃ   rB   r   r   r   rÆ     s    z-BaseQRinsert.test_non_native_byte_order_1_colc                 C   s   |   tddd¡ d S r7  rÃ   rB   r   r   r   rÇ     s    z-BaseQRinsert.test_non_native_byte_order_p_colc                 C   sf  | j dddd�\}}}}| d¡}| ¡ }t|||dddd�\}}t |d|d¡}	t|||	| j| jƒ t|||| j| jƒ t|||ddd	d�\}
}t|
||	| j| jƒ t|
|| j| jd
� t|| 	¡ | j| jƒ | d¡}| ¡ }t|||dddd�\}}t|||	| j| jƒ t|||| j| jƒ t|||ddd	d�\}}t|||	| j| jƒ t||| j| jd
� d S )NrJ   rl   r   r	  rË   r   Fr  Tr   r—   )
rV   rš   r	   r   r  r%   r   r   r   r   )rC   r   r¡   r$   r  r#   r.  rb   rc   rd   r§   r¨   ZqFÚu1r«   r¬   Úq4Úr4r   r   r   Útest_overwrite_qu_rank_1  s&    

z%BaseQRinsert.test_overwrite_qu_rank_1c                 C   sÀ   | j dddd�\}}}}| d¡}t |t dtj¡|d¡}t|||dddd	�\}}t|||| j| j	ƒ t|||| j| j	ƒ t|||ddd
d	�\}	}
t|	|
|| j| j	ƒ t
|	|| j| j	d� d S )NrJ   rl   r&   r	  r—   r   r   Fr  Tr   )rV   rš   r   r  r,   r  r	   r%   r   r   r   )rC   r   r¡   r$   r  r#   rd   rb   rc   r§   r¨   r   r   r   Útest_overwrite_qu_rank_p=  s    
z%BaseQRinsert.test_overwrite_qu_rank_pc                 C   s¶   | j ddd�\}}}}tttt g ¡||ddƒ ttt|t g ¡|ddƒ ttt||t g ¡ddƒ tttt g ¡||ddƒ ttt|t g ¡|ddƒ ttt||t g ¡ddƒ d S )NrJ   ra   rÔ   r   rl   )rV   rÖ   r-   r	   r   rÞ   r+  r   r   r   Útest_empty_inputsO  s    zBaseQRinsert.test_empty_inputsc                 C   sÂ   | j 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ƒ ttt|||dd … ddƒ d S )NrK   ra   rÔ   r   r   éþÿÿÿrl   r*  r+  r   r   r   Útest_mismatched_shapesX  s    z#BaseQRinsert.test_mismatched_shapesc           
      C   sô   ddddddddd	d
ddg}| j ddd�\}}}}|D ]¸}|j |¡}tjdd�� |j |¡}W 5 Q R X |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ƒ q6d S )Nrâ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rJ   ra   rÔ   rî   rï   r   rl   )rV   rñ   r=   r   rò   rÖ   r-   r	   )
rC   ró   r   r¡   r¢   r.  r   r#   r$   r  r   r   r   rô   a  s,         ýz$BaseQRinsert.test_unsupported_dtypesc                 C   s�  | j dddd�\}}}}| d¡}tj|d< ttt|||d d …df ddƒ ttt|||ddƒ ttt|||d d …df ddƒ ttt|||ddƒ | d¡}tj|d< ttt|||d d …df ddƒ ttt|||ddƒ ttt|||d d …df ddƒ ttt|||ddƒ | d¡}tj|d	< ttt|||d d …df ddƒ ttt|||ddƒ ttt|||d d …df ddƒ ttt|||ddƒ d S )
NrJ   ra   r&   r	  r—   rI   r   rl   rŽ   )rV   rš   r   rõ   rÖ   r-   r	   )rC   rö   r¡   r¢   r.  r#   r$   r  r   r   r   r÷   s  s&    

  

  

  zBaseQRinsert.test_check_finite)rE   ra   r   )GrW   rX   rY   rV   re   rk   rp   rr   rs   rt   ru   r  r  r  r  rw   r  r  r  r  ry   rz   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½   r8  r9  r:  r;  rÄ   rÅ   rÆ   rÇ   r?  r@  rA  rC  rô   r÷   Ú__classcell__r   r   r  r   r  x  s†   
2!		r  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRinsert_frú   Nrû   r   r   r   r   rE  ‹  s   rE  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRinsert_Fr—   Nrû   r   r   r   r   rF  Ž  s   rF  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRinsert_drþ   Nrû   r   r   r   r   rG  ‘  s   rG  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRinsert_Dr   Nrû   r   r   r   r   rH  ”  s   rH  c                       s~  e Zd Zd]‡ fdd„	Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Z d?d@„ Z!dAdB„ Z"dCdD„ Z#dEdF„ Z$dGdH„ Z%dIdJ„ Z&dKdL„ Z'dMdN„ Z(dOdP„ Z)dQdR„ Z*dSdT„ Z+dUdV„ Z,dWdX„ Z-dYdZ„ Z.d[d\„ Z/‡  Z0S )^ÚBaseQRupdaterE   r   c                    sÚ   t ƒ  ||¡\}}}|dkrBtj |jd ¡}tj |jd ¡}n,tj |jd |f¡}tj |jd |f¡}t | j d¡¡r´tj |j¡}	|d|	  }tj |j¡}
|d|
  }| | j¡}| | j¡}|||||fS )Nr   r   rP   )	r  rV   r   rR   r   rT   r   rU   r=   )rC   rU   rQ   r�   r   r#   r$   r  Úvr8   r;   r  r   r   rV   ˜  s    zBaseQRupdate.generatec           	      C   sT   |   d¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jƒ d S )NrJ   F©rV   r   r   Úouterr   r%   r   r   ©	rC   r   r#   r$   r  rJ  rb   rc   rd   r   r   r   Útest_sqr_rank_1®  s    zBaseQRupdate.test_sqr_rank_1c           
      C   sˆ   dD ]~}| j d|d�\}}}}}|dkrD| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }	t|||	| j	| j
ƒ qd S )N©r   r   r&   r)   rJ   ©r�   r   F©rV   ÚreshapeÚsizer   r   r   r   r   r%   r   r   ©
rC   r�   r   r#   r$   r  rJ  rb   rc   rd   r   r   r   Útest_sqr_rank_p´  s    zBaseQRupdate.test_sqr_rank_pc           	      C   sT   |   d¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jƒ d S )NrK   FrK  rM  r   r   r   Útest_tall_rank_1¿  s    zBaseQRupdate.test_tall_rank_1c           
      C   sˆ   dD ]~}| j d|d�\}}}}}|dkrD| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }	t|||	| j	| j
ƒ qd S )NrO  rK   rP  r   FrQ  rT  r   r   r   Útest_tall_rank_pÅ  s    zBaseQRupdate.test_tall_rank_pc           	      C   sT   |   d¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jƒ d S )NrL   FrK  rM  r   r   r   Útest_fat_rank_1Ï  s    zBaseQRupdate.test_fat_rank_1c           
      C   sˆ   dD ]~}| j d|d�\}}}}}|dkrD| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }	t|||	| j	| j
ƒ qd S )NrO  rL   rP  r   FrQ  rT  r   r   r   Útest_fat_rank_pÕ  s    zBaseQRupdate.test_fat_rank_pc           	      C   sX   |   dd¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jdƒ d S )NrK   r|   FrK  rM  r   r   r   Útest_economic_rank_1ß  s    z!BaseQRupdate.test_economic_rank_1c           
      C   sŠ   dD ]€}|   dd|¡\}}}}}|dkrD| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }	t|||	| j	| j
dƒ qd S )NrO  rK   r|   r   FrQ  rT  r   r   r   Útest_economic_rank_på  s    z!BaseQRupdate.test_economic_rank_pc           	      C   sT   |   d¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jƒ d S )NrM   FrK  rM  r   r   r   Útest_Mx1_rank_1ï  s    zBaseQRupdate.test_Mx1_rank_1c           	      C   sv   | j ddd�\}}}}}| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }t|||| j	| j
ƒ d S )NrM   r   rP  FrQ  rM  r   r   r   Útest_Mx1_rank_põ  s    zBaseQRupdate.test_Mx1_rank_pc           	      C   sX   |   dd¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jdƒ d S )NrM   r|   FrK  rM  r   r   r   Útest_Mx1_economic_rank_1ÿ  s    z%BaseQRupdate.test_Mx1_economic_rank_1c           	      C   sz   | j dddd�\}}}}}| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }t|||| j	| j
dƒ d S )NrM   r|   r   rP  FrQ  rM  r   r   r   Útest_Mx1_economic_rank_p  s    z%BaseQRupdate.test_Mx1_economic_rank_pc           	      C   sT   |   d¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jƒ d S )NrN   FrK  rM  r   r   r   Útest_1xN_rank_1  s    zBaseQRupdate.test_1xN_rank_1c           	      C   sv   | j ddd�\}}}}}| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }t|||| j	| j
ƒ d S )NrN   r   rP  FrQ  rM  r   r   r   Útest_1xN_rank_p  s    zBaseQRupdate.test_1xN_rank_pc           	      C   sT   |   d¡\}}}}}t||||dƒ\}}|t || ¡ ¡ }t|||| j| jƒ d S )NrO   FrK  rM  r   r   r   Útest_1x1_rank_1  s    zBaseQRupdate.test_1x1_rank_1c           	      C   sv   | j ddd�\}}}}}| |jd¡}| |jd¡}t||||dƒ\}}|t ||j ¡ ¡ }t|||| j	| j
ƒ d S )NrO   r   rP  FrQ  rM  r   r   r   Útest_1x1_rank_p%  s    zBaseQRupdate.test_1x1_rank_pc                 C   sp   |   d¡\}}}}}ttt|d |||ƒ ttt||d ||ƒ ttt|||d |ƒ ttt||||d ƒ d S )NrO   rŽ   r   ©rV   rÖ   r-   r   ©rC   r   r#   r$   r  rJ  r   r   r   Útest_1x1_rank_1_scalar/  s
    z#BaseQRupdate.test_1x1_rank_1_scalarc           )      C   s   |dkrdnd}dD �]ä}|   |||¡\}}}	}
}|||	|
|fƒ\}}}}|dkrh|t |
| ¡ ¡ }n|t |
|j ¡ ¡ }| d¡}|	 d¡}|
 d¡}| d¡}t||||dƒ\}}t|||| j	| j
|ƒ t||||dƒ\}}t|||| j	| j
|ƒ |�r,t||| j	| j
d� t|| ¡ | j	| j
d� | d¡}|	 d¡}|
 d¡}| d¡}t||||dƒ\}}t|||| j	| j
|ƒ t||||dƒ\}}t|||| j	| j
|ƒ |�rÚt||| j	| j
d� t|| ¡ | j	| j
d� | d¡}|	 d¡}|
 d¡}| d¡}t||||dƒ\}}t|||| j	| j
|ƒ t||||dƒ\}} t|| || j	| j
|ƒ |�rˆt| || j	| j
d� t|| ¡ | j	| j
d� | d¡}|	 d¡}|
 d¡}| d¡}t||||dƒ\}!}"t|!|"|| j	| j
|ƒ t||||dƒ\}#}$t|#|$|| j	| j
|ƒ |�r6t|$|| j	| j
d� t|| ¡ | j	| j
d� | d¡}|	 d¡}|
 d¡}| d¡}|||||fƒ\}}}}t||||dƒ\}%}&t|%|&|| j	| j
|ƒ t||||dƒ\}'}(t|'|(|| j	| j
|ƒ |rt|(|| j	| j
d� t|| ¡ | j	| j
d� qd S )	Nr|   FTr-  r   r—   rË   r   )rV   r   rL  r   r   r   rš   r   r%   r   r   r   ))rC   r›   rQ   r�   rž   r   rU   r   r¡   r¢   r.  Úv0r£   r¤   r/  ÚvsZaupr#   r$   r  rJ  rb   rc   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r=  r>  Zq4oZr4or0  r1  r2  r3  r   r   r   r¯   6  s~    




















z$BaseQRupdate.base_non_simple_stridesc                 C   s   |   tddd¡ d S )NrE   r   Tr°   rB   r   r   r   Útest_non_unit_strides_rank_1ƒ  s    z)BaseQRupdate.test_non_unit_strides_rank_1c                 C   s   |   tddd¡ d S )Nr|   r   Tr°   rB   r   r   r   Ú%test_non_unit_strides_economic_rank_1†  s    z2BaseQRupdate.test_non_unit_strides_economic_rank_1c                 C   s   |   tddd¡ d S ©NrE   r&   Fr°   rB   r   r   r   Útest_non_unit_strides_rank_p‰  s    z)BaseQRupdate.test_non_unit_strides_rank_pc                 C   s   |   tddd¡ d S ©Nr|   r&   Fr°   rB   r   r   r   Ú%test_non_unit_strides_economic_rank_pŒ  s    z2BaseQRupdate.test_non_unit_strides_economic_rank_pc                 C   s   |   tddd¡ d S ©NrE   r   Fr·   rB   r   r   r   Útest_neg_strides_rank_1�  s    z$BaseQRupdate.test_neg_strides_rank_1c                 C   s   |   tddd¡ d S ©Nr|   r   Fr·   rB   r   r   r   Ú test_neg_strides_economic_rank_1’  s    z-BaseQRupdate.test_neg_strides_economic_rank_1c                 C   s   |   tddd¡ d S rk  r·   rB   r   r   r   Útest_neg_strides_rank_p•  s    z$BaseQRupdate.test_neg_strides_rank_pc                 C   s   |   tddd¡ d S rm  r·   rB   r   r   r   Ú test_neg_strides_economic_rank_p˜  s    z-BaseQRupdate.test_neg_strides_economic_rank_pc                 C   s   |   tddd¡ d S ro  r¾   rB   r   r   r   Ú test_non_itemsize_strides_rank_1›  s    z-BaseQRupdate.test_non_itemsize_strides_rank_1c                 C   s   |   tddd¡ d S rq  r¾   rB   r   r   r   Ú)test_non_itemsize_strides_economic_rank_1ž  s    z6BaseQRupdate.test_non_itemsize_strides_economic_rank_1c                 C   s   |   tddd¡ d S rk  r¾   rB   r   r   r   Ú test_non_itemsize_strides_rank_p¡  s    z-BaseQRupdate.test_non_itemsize_strides_rank_pc                 C   s   |   tddd¡ d S rm  r¾   rB   r   r   r   Ú)test_non_itemsize_strides_economic_rank_p¤  s    z6BaseQRupdate.test_non_itemsize_strides_economic_rank_pc                 C   s   |   tddd¡ d S ro  rÃ   rB   r   r   r   Ú!test_non_native_byte_order_rank_1§  s    z.BaseQRupdate.test_non_native_byte_order_rank_1c                 C   s   |   tddd¡ d S rq  rÃ   rB   r   r   r   Ú*test_non_native_byte_order_economic_rank_1ª  s    z7BaseQRupdate.test_non_native_byte_order_economic_rank_1c                 C   s   |   tddd¡ d S rk  rÃ   rB   r   r   r   Ú!test_non_native_byte_order_rank_p­  s    z.BaseQRupdate.test_non_native_byte_order_rank_pc                 C   s   |   tddd¡ d S rm  rÃ   rB   r   r   r   Ú*test_non_native_byte_order_economic_rank_p°  s    z7BaseQRupdate.test_non_native_byte_order_economic_rank_pc                 C   sX  |   d¡\}}}}}|t || ¡ ¡ }| d¡}| d¡}| d¡}	| d¡}
t|||	|
dƒ\}}t|||| j| jƒ t|||| j| jƒ t|||	|
dƒ\}}t|||| j| jƒ t	||| j| jd� t	||| j| jd� | d¡}| d¡}| d¡}	| d¡}
t|||	|
dƒ\}}t|||| j| jƒ t	||| j| jd� t	||| j| jd� d S )NrJ   r—   FTr   rË   ©
rV   r   rL  r   rš   r   r%   r   r   r   ©rC   r   r¡   r¢   r.  rg  rd   r#   r$   r  rJ  rb   rc   r§   r¨   r«   r¬   r   r   r   Útest_overwrite_qruv_rank_1³  s*    







z'BaseQRupdate.test_overwrite_qruv_rank_1c                 C   sb  |   dd¡\}}}}}|t || ¡ ¡ }| d¡}| d¡}| d¡}	| d¡}
t|||	|
dƒ\}}t|||| j| jdƒ t|||| j| jdƒ t|||	|
dƒ\}}t|||| j| jdƒ t	||| j| jd� t	||| j| jd� | d¡}| d¡}| d¡}	| d¡}
t|||	|
dƒ\}}t|||| j| jdƒ t	||| j| jd� t	||| j| jd� d S )NrK   r|   r—   FTr   rË   r}  r~  r   r   r   Ú#test_overwrite_qruv_rank_1_economicÑ  s*    







z0BaseQRupdate.test_overwrite_qruv_rank_1_economicc                 C   sæ   | j ddd�\}}}}}|t ||j ¡ ¡ }| d¡}| d¡}| d¡}	| d¡}
t|||	|
dƒ\}}t|||| j| j	ƒ t|||| j| j	ƒ t|||	|
dƒ\}}t|||| j| j	ƒ t
||| j| j	d� t
||| j| j	d� d S )	NrJ   r&   rP  r—   rË   FTr   )rV   r   r   r   r   rš   r   r%   r   r   r   )rC   r   r¡   r¢   r.  rg  rd   r#   r$   r  rJ  rb   rc   r§   r¨   r   r   r   Útest_overwrite_qruv_rank_pð  s    



z'BaseQRupdate.test_overwrite_qruv_rank_pc              	   C   sx   |   d¡\}}}}}tttt g ¡|||ƒ ttt|t g ¡||ƒ ttt||t g ¡|ƒ ttt|||t g ¡ƒ d S )NrK   )rV   rÖ   r-   r   r   rÞ   re  r   r   r   rA    s
    zBaseQRupdate.test_empty_inputsc              	   C   s€   |   d¡\}}}}}ttt||dd … ||ƒ ttt|d d… |||ƒ ttt|||dd … |ƒ ttt||||dd … ƒ d S )NrK   r   rB  rd  re  r   r   r   rC    s
    z#BaseQRupdate.test_mismatched_shapesc                 C   sÎ   ddddddddd	d
ddg}|   d¡\}}}}}|D ]”}|j |¡}tjdd�� |j |¡}	W 5 Q R X |j |¡}
|j |¡}ttt||||ƒ ttt||	||ƒ ttt|||
|ƒ ttt||||ƒ q4d S )Nrâ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rK   rî   rï   )rV   rñ   r=   r   rò   rÖ   r-   r   )rC   ró   r   r¡   r¢   r.  rg  r   r#   r$   r  rJ  r   r   r   rô     s*         ýz$BaseQRupdate.test_unsupported_dtypesc                 C   sX   t  d¡ dd¡}| ¡ }|d d …df  ¡ }|dd d …f  ¡ }ttt||||ƒ d S )Né   r(   r   )r   ZarangerR  rš   rÖ   r-   r   )rC   r#   r$   r  rJ  r   r   r   Útest_integer_input$  s
    zBaseQRupdate.test_integer_inputc           
   	   C   s\  | j ddd�\}}}}}| d¡}tj|d< ttt|||d d …df |d d …df ƒ ttt||||ƒ | d¡}tj|d< ttt|||d d …df |d d …df ƒ ttt||||ƒ | d¡}tj|d< ttt|||d d …df |d d …df ƒ ttt||||ƒ | d¡}	tj|	d< ttt|||d d …df |	d d …df ƒ ttt||||	ƒ d S )NrK   r&   rP  r—   rI   r   rŽ   ©rV   rš   r   rõ   rÖ   r-   r   ©
rC   rö   r¡   r¢   r.  rg  r#   r$   r  rJ  r   r   r   r÷   +  s"    

*

*

*

*zBaseQRupdate.test_check_finitec           
   	   C   s^  | j dddd�\}}}}}| d¡}tj|d< ttt|||d d …df |d d …df ƒ ttt||||ƒ | d¡}tj|d< ttt|||d d …df |d d …df ƒ ttt||||ƒ | d¡}tj|d< ttt|||d d …df |d d …df ƒ ttt||||ƒ | d¡}	tj|	d< ttt|||d d …df |	d d …df ƒ ttt||||	ƒ d S )	NrK   r|   r&   )rQ   r�   r—   rI   r   rŽ   r„  r…  r   r   r   Útest_economic_check_finiteB  s"    

*

*

*

*z'BaseQRupdate.test_economic_check_finitec                 C   s°   t  ddgddgddgddgg| j¡}t  ddgddgg| j¡}t  ddddg| j¡}t  ddg| j¡}t||||ƒ\}}t  ||¡t  || ¡ ¡ }t|||| j| j	dƒ d S )Nr   r   r    r   F)
r   rÞ   r   r   r   rL  r   r%   r   r   )rC   r#   r$   r  rJ  rb   rc   rd   r   r   r   Útest_u_exactly_in_span_qY  s    &z%BaseQRupdate.test_u_exactly_in_span_q)rE   r   )1rW   rX   rY   rV   rN  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rf  r¯   ri  rj  rl  rn  rp  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r  r€  r�  rA  rC  rô   rƒ  r÷   r†  r‡  rD  r   r   r  r   rI  —  sZ   






MrI  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRupdate_frú   Nrû   r   r   r   r   rˆ  b  s   rˆ  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRupdate_Fr—   Nrû   r   r   r   r   r‰  e  s   r‰  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRupdate_drþ   Nrû   r   r   r   r   rŠ  h  s   rŠ  c                   @   s   e Zd Ze d¡ZdS )ÚTestQRupdate_Dr   Nrû   r   r   r   r   r‹  k  s   r‹  c            
      C   s’   ddg} dg}dddg}ddg}dddd	g}t  | ||||¡D ]N\}}}}}	|dkrzt||||d|	ƒ t||||d
|	ƒ q>t||||d
|	ƒ q>d S )Nr—   rË   rF   ÚAr   r&   rú   rþ   r   r   )r˜   r™   Úcheck_form_qTu)
Úq_orderÚq_shapeÚu_orderÚu_shaper   Zqor£   Zuor/  rþ   r   r   r   Útest_form_qTun  s    
ÿr’  c                 C   s>  t j d¡ |dkr(|dkr(|d f}n|d |f}t  |¡}|jdkrbt j |¡}t j |¡}nL|jdkr¦t j |¡dt j |¡  }t j |¡dt j |¡  }ntdƒ t  ||| ¡}|dkrÔt  |||¡}nt| |¡fƒ\}d	t  	|¡j
d
   }d
t  	|¡j }	t  |j ¡ |¡}
t ||¡}t||
||	d� d S )Né/   r   r   ÚfdZFDrP   z#form_qTu doesn't support this dtyperŒ  r
   r   r   )r   rR   rS   r   Úcharr-   Úrequirer7   r=   r   r   r   r   r   r   Ú_decomp_updateZ	_form_qTur   )rŽ  r�  r�  r‘  Zu_ndimr   r#   r  r   r   ÚexpectedÚresr   r   r   r�  ˆ  s*    


r�  )NNT)NN)T)*r˜   Únumpyr   Znumpy.testingr   r   r   Zpytestr   rÖ   Zscipyr   Zscipy.linalg._decomp_updater—  r   r   r	   r   r"   r%   r7   r9   r<   r@   rA   rZ   rù   rü   rý   rÿ   r  rE  rF  rG  rH  rI  rˆ  r‰  rŠ  r‹  r’  r�  r   r   r   r   Ú<module>   sT   


           N