
    >ied4                       d dl mZ d dlZd dlZd dlmZ ej        j	        Z
d dlmZ d dlmZ  ej        d          Z eej                  Zej                            e ed          k     d          ej                            d	d
ddddddddddddddddefdddefdddefdddefg          d                         Zej                            dg d           d!             Zej                            d	dddefddd"efddd#efddd$efd%d&d'efd(d&d'efd)d&d'efd*d&d'efd+dd,efd+dd-efd+dd.efdddd/d0d1dddefg          d2             Zej                            d3d4d5g          ej                            d6d7d8g          d9                         Zd: Zej                            d;g d<          d=             ZdS )>    )annotationsN)parse)	assert_eqcupyz6.1.0zBRequires CuPy 6.1.0+ (with https://github.com/cupy/cupy/pull/2209))reasonzm,n,chunks,error_type)   
   r	   N)r   r	      r	   N)r   r	   )      r   r	   N)(   r	         r   r      r	   N)         r   N)   r   r   N)   r   r   N)   r   r   N),  r	   r   r	   N)r   r	      r	   N)r   r	   r   r	   N)r	   r   r	   N)r   r	   r	   N)r	   r	   r	   Nr	   r   r	   r	   r	   r   r	   r   r   c                   t           j                                                            | |f          }t          j        ||dd          }| }t          | |          }|}|}	| }
t          | |          }|}|}|}t          ||          }|^t          j                            |          \  }}t          ||f|j
                   t          ||	f|j
                   t          |t          j        ||                     t          t                               ||          t          j        |j        |                     t          |t          j        |                    |j
        d                                        t          j                            |d          \  }}}t          j                            |          d         }t          ||           t          |
|f|j
                   t          |f|j
                   t          ||f|j
                   t          t          j        ||          t          j        |j        |          d           t          t          j        ||          t          j        ||j                  d           t          |t          j        t          j        |t          j        |                    |d |                              d S t'          j        |          5  t          j                            |          \  }}d d d            n# 1 swxY w Y   t'          j        |          5  t          j                            |d          \  }}}d d d            d S # 1 swxY w Y   d S )	NAFchunksnameasarrayr   Tcompute_svd   
check_type)r   randomdefault_rngda
from_arrayminmaxlinalgtsqrr   shapedoteyeTnptriurechunksvddiagpytestraises)mnr'   
error_typematdatam_qn_qm_rn_rm_un_un_sm_vhn_vhd_vhqrusvhs_exacts                         Alib/python3.11/site-packages/dask/array/tests/test_cupy_linalg.py	test_tsqrrX      s   ` +
!
!
#
#
*
*Aq6
2
2C=V#uEEED C
a))C
C
C C
a))C
CDDtT??Dy~~d##13*ag&&&3*ag&&&#rva||$$$$((3$$bfQS!nn555!RWQYYqwqz2233444 9>>$D>991b)--$$Q'!W3*ag&&&3&!'"""4,)))F3bfQS!nn	
 	
 	
 	
 	F4r24 0 0U	
 	
 	
 	
 	#rvbfQ

33RX>>?????]:&& 	( 	(9>>$''DAq	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:&& 	> 	>y~~d~==HAq"	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$   ?#L..L25L2&N  NNz1m_min,n_max,chunks,vary_rows,vary_cols,error_type))r	   r   r	   r   TFN)r	   r   rY   FTN)r	   r   rY   TTN)r   r   rY   TFN)r   r   rY   FTN)r   r   rY   TTN)r   r	   r   TFN)r   r	   r   TFN)r   r	   r    TFN)r   r	   r   FTN)r   r	   r   FTN)r   r	   r    FTN)r   r	   r   TTN)r   r	   r   TTN)r   r	   r    TTNc                *	   t           j                                                            | dz  |f          }| dz  |}}|d| dfxx         dz  cc<   |d d df         }	|dd d f         }
t          j        |	| dd          }t          j        |
|dd          }t          j        ||dd          }|r-||d	k    d d f         }||	d	k    d d f         }|j        d         }|r-|d d |d	k    f         }|d d |
d	k    f         }|j        d         }|}t          ||          }|}|}|}t          ||          }|}|}|}t          ||          }|t          j        	                    |          \  }}|
                                }|
                                }t          ||f|j                   t          ||f|j                   t          |t          j        ||                     t          t          j        ||          t          j        |j        |          d
           t          |t          j        |                     t          j        	                    |d          \  }}}|
                                }|
                                }|
                                }t          j                            |          d         }t          ||           t          ||f|j                   t          |f|j                   t          ||f|j                   t          t          j        ||          t          j        |j        |          d
           t          t          j        ||          t          j        ||j                  d
           t          |t          j        t          j        |t          j        |                    |d |                   d
           d S t'          j        |          5  t          j        	                    |          \  }}d d d            n# 1 swxY w Y   t'          j        |          5  t          j        	                    |d          \  }}}d d d            d S # 1 swxY w Y   d S )Nr   r   r,   cFr&   rR   r%   g      ?r-   Tr*   )r   r/   r0   r1   r2   r7   r3   r4   r5   r6   computer   r;   r8   r9   r:   r<   r>   r?   r@   rA   )m_minn_maxr'   	vary_rows	vary_colsrD   rE   rB   rC   _c0_r0c0r0rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   s                                 rW   test_tsqr_uncertainre   o   s   h +
!
!
#
#
*
*EAIu+=
>
>C19eqA%
OOOqOOO
aaad)C
ad)C	s5sE	B	B	BB	s5sE	B	B	BB=V#uEEED BHaaaK #)QQQ,IaL AAArCxK !!!S3Y,IaL C
a))C
C
C C
a))C
CDDtT??Dy~~d##1IIKKIIKK3*ag&&&3*ag&&&#rva||$$$F3bfQS!nn	
 	
 	
 	
 	!RWQZZ    9>>$D>991bIIKKIIKKZZ\\)--$$Q'!W3*ag&&&3&!'"""4,)))F3bfQS!nn	
 	
 	
 	
 	F4r24 0 0U	
 	
 	
 	
 	q"'!**--r$3$x88U	
 	
 	
 	
 	
 	
 ]:&& 	( 	(9>>$''DAq	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:&& 	> 	>y~~d~==HAq"	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$   #P66P:=P:&RRRr
   r   r   r   r   r   r   r   r   r   r   r   r    )r	   r   r!   N)r	   r   r"   N)r	   r   r#   Nc           	     L   t           j                                                            | |f          }t          j        ||d          }| }t          | |          }|}|}	|}
|t          j                            |          \  }}t          ||f|j	                   t          ||	f|j	                   t          |t          j
        ||                     t          t          j        |
|
          t          j
        |j        |                     t          |t          j        |                    |j	        d                                        d S t          j        |          5  t          j                            |          \  }}d d d            d S # 1 swxY w Y   d S )Nr%   )r'   r(   r   )r;   r/   r0   r1   r2   r3   r5   sfqrr   r7   r8   r9   r:   r<   r=   r@   rA   )rB   rC   r'   rD   rE   rF   rG   rH   rI   rJ   m_qtqrQ   rR   s                rW   	test_sfqrri   	  s   @ )


!
!
(
(!Q
0
0C=V#666D
C
a))C
C
CEy~~d##13*ag&&&3*ag&&&#rva||$$$"&&&qsA777!RWQYYqwqz223344444]:&& 	( 	(9>>$''DAq	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   )#FF F	iscomplexFT)nrowncolchunk)r   r	   r   )d   r	   r	   c           	        t           j                            d          }|                    dd| |f          }|                    dd|           }|rD|d|                    dd|j                  z  z   }|d|                    dd|j                  z  z   }t          j        |||f          }t          j        ||          }t           j                            ||d          \  }	}
}}t
          j                            ||          \  }}}}t          ||	           t          ||
           |
                                |k    sJ t          ||           |d d df         |d d df<   t          j        |||f          }t          j        ||          }t           j                            ||t                               t           j                  j        t          | |          z            \  }	}
}}||dz
  k    sJ t
          j                            ||          \  }}}}|
                                |k    sJ |                    dd| |f          }|                    dd| |dz  f          }|rD|d|                    dd|j                  z  z   }|d|                    dd|j                  z  z   }t          j        |||f          }t          j        |||dz  f          }t           j                            ||d          \  }	}
}}t
          j                            ||          \  }}}}t          ||	           t          ||
           |
                                |k    sJ t          ||           d S )Nr,   r   y              ?)rcondr   )r   r/   r0   integersr7   r1   r2   r5   lstsqr   r\   finfodoubleepsr4   )rk   rl   rm   rj   rngr%   bdAdbxrR   rankrT   dxdrdrankdsb2Ddb2Ds                      rW   
test_lstsqr   ]  sa    +
!
!!
$
$CQT4L))AQD!!A 4s||Ar173333s||Ar173333	q5$-	(	(B	q%	 	 BK%%a"%55MAq$	B//BE2b!b!==??d""""b! 1gAaaadG	q5$-	(	(B	q%	 	 BK%%	1DJJt{++/#dD//A &  MAq$ 4!8	B//BE2==??d"""" 	QT4L))A
,,q"tTQY/
0
0C :s||Ar173333D3<<2sy9999	q5$-	(	(B=udai011DK%%aB%77MAq$	D11BE2b!b!==??d""""b!    c                    t           j                            d          }|                    dd| | f          }t                               |          }|                    |j                  S )Nr,      )r   r/   r0   rr   trilr8   r:   )sizerw   r%   lAs       rW   _get_symmatr     sQ    
+
!
!!
$
$CQT4L))A	1B66"$<<r   )r7   rm   )r    )   r   )r   r   )r      c                   t          j        d          }t          |           }t          j        |||f          }t          t          j                            |          t          j                            |          j	        dd           t          t          j                            |d          
                    t          j                  |                    t                              |          d          dd           d S )Nzscipy.linalgF)check_graphcheck_chunksT)lower)r@   importorskipr   r1   r2   r   r5   choleskyr   r:   
map_blocksasnumpy)r7   rm   scipy_linalgr%   ry   s        rW   test_choleskyr     s    &~66LEA	q5%.	)	)B 
	2Q!	    
	2T**55dlCCdll1ooT::	     r   )
__future__r   numpyr;   r@   packaging.versionr   parse_versionmarkgpu
pytestmark
dask.arrayarrayr1   dask.array.utilsr   r   r   __version__cupy_versionskipifparametrize
ValueErrorrX   re   ri   r   r   r    r   rW   <module>r      s}   " " " " " "      4 4 4 4 4 4[_
       & & & & & &v6""}T-.. ==)))O    '.	
	
	
 	"!!	R:&	R:&"		
 
RZ M'* *V-> ->W* *	 ^->` 7O O OR RfD> D>gR RfD>N 	RZ 	R*%	R*-"		
 		
 		
 		
 		
 		
 		
 		
 	  .	RZ u;> >~( (> >~(* udm442[-4PQQ, , RQ 54,^   +-R-R-RSS  TS  r   