
    biI4                    z   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                  j'                  e ed      k  d      ej                  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                  j)                  dg d       d!        Zej                  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                  j)                  d3d4d5g      ej                  j)                  d6d7d8g      d9               Zd: Zej                  j)                  d;g d<      d=        Zy)>    )annotationsN)Version)	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                  j                         j                  | |f      }t        j                  ||dd      }| }t        | |      }|}|}	| }
t        | |      }|}|}|}t        ||      }|Pt        j                  j                  |      \  }}t        ||f|j                         t        ||	f|j                         t        |t        j                  ||             t        t         j                  ||      t        j                  |j                  |             t        |t        j                  |j!                  |j                  d                      t        j                  j                  |d      \  }}}t        j                  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 |              y t'        j(                  |      5  t        j                  j                  |      \  }}d d d        t'        j(                  |      5  t        j                  j                  |d      \  }}}d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)	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                         \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_cupy_linalg.py	test_tsqrrX      s   ` ++
!
!
#
*
*Aq6
2C==V#uED C
a)C
C
C C
a)C
CDDtT?Dyy~~d#13*agg&3*agg&#rvva|$$((3$bffQSS!n5!RWWQYYqwwqz234 99>>$D>91b))--$Q'!W3*agg&3&!''"4,)FF3bffQSS!n	
 	FF4r244 0U	
 	#rvvbffQ
3RX>?]]:& 	(99>>$'DAq	(]]:& 	>yy~~d~=HAq"	> 	>	( 	(	> 	>s   ##M#&MMM'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                  j                         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	kD  d d f   }||	d	kD  d d f   }|j
                  d   }|r'|d d |d	kD  f   }|d d |
d	kD  f   }|j
                  d   }|}t        ||      }|}|}|}t        ||      }|}|}|}t        ||      }|t        j                  j                  |      \  }}|j                         }|j                         }t        ||f|j
                         t        ||f|j
                         t        |t        j                  ||             t        t        j                  ||      t        j                  |j                  |      d
       t        |t        j                   |             t        j                  j                  |d      \  }}}|j                         }|j                         }|j                         }t        j                  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
       y t'        j(                  |      5  t        j                  j                  |      \  }}d d d        t'        j(                  |      5  t        j                  j                  |d      \  }}}d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)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%
OqO
ad)C
ad)C	s5sE	BB	s5sE	BB==V#uEDBHaK #)Q,IIaLArCxK !S3Y,IIaL C
a)C
C
C C
a)C
CDDtT?Dyy~~d#1IIKIIK3*agg&3*agg&#rvva|$FF3bffQSS!n	
 	!RWWQZ  99>>$D>91bIIKIIKZZ\))--$Q'!W3*agg&3&!''"4,)FF3bffQSS!n	
 	FF4r244 0U	
 	q"''!*-r$3x8U	
 ]]:& 	(99>>$'DAq	(]]:& 	>yy~~d~=HAq"	> 	>	( 	(	> 	>s   #P;&Q;QQ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           	     .   t         j                  j                         j                  | |f      }t        j                  ||d      }| }t        | |      }|}|}	|}
|t        j                  j                  |      \  }}t        ||f|j                         t        ||	f|j                         t        |t        j                  ||             t        t        j                  |
|
      t        j                  |j                  |             t        |t        j                  |j                  |j                  d                      y t        j                   |      5  t        j                  j                  |      \  }}d d d        y # 1 sw Y   y xY w)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
0C==V#6D
C
a)C
C
CEyy~~d#13*agg&3*agg&#rvva|$"&&&qssA7!RWWQYYqwwqz234]]:& 	(99>>$'DAq	( 	( 	(s   #FF	iscomplexFT)nrowncolchunk)r   r	   r   )d   r	   r	   c           	        t         j                  j                  d      }|j                  dd| |f      }|j                  dd|       }|rF|d|j                  dd|j                        z  z   }|d|j                  dd|j                        z  z   }t        j                  |||f      }t        j                  ||      }t         j                  j                  ||d      \  }	}
}}t
        j                  j                  ||      \  }}}}t        ||	       t        ||
       |j                         |k(  sJ t        ||       |d d df   |d d df<   t        j                  |||f      }t        j                  ||      }t         j                  j                  ||t         j                  t         j                        j                  t        | |      z        \  }	}
}}||dz
  k(  sJ t
        j                  j                  ||      \  }}}}|j                         |k(  sJ |j                  dd| |f      }|j                  dd| |dz  f      }|rF|d|j                  dd|j                        z  z   }|d|j                  dd|j                        z  z   }t        j                  |||f      }t        j                  |||dz  f      }t         j                  j                  ||d      \  }	}
}}t
        j                  j                  ||      \  }}}}t        ||	       t        ||
       |j                         |k(  sJ t        ||       y )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   ]  s    ++
!
!!
$CQT4L)AQD!As||Ar177333s||Ar177333	q5$-	(B	q%	 BKK%%a"%5MAq$		B/BE2b!b!==?d"""b! 1gAadG	q5$-	(B	q%	 BKK%%	1DJJt{{+//#dD/A & MAq$ 4!8		B/BE2==?d""" 	QT4L)A
,,q"tTQY/
0Cs||Ar177333D3<<2syy999	q5$-	(B==udai01DKK%%aB%7MAq$		D1BE2b!b!==?d"""b!    c                    t         j                  j                  d      }|j                  dd| | f      }t         j	                  |      }|j                  |j                        S )Nr,      )r   r/   r0   rr   trilr8   r:   )sizerw   r%   lAs       rW   _get_symmatr     sK    
++
!
!!
$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                  j                  |      t        j                  j                  |      j                  dd       t        t        j                  j                  |d      j                  t        j                        |j                  t        j                  |      d      dd       y )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    &&~6LEA	q5%.	)B 
		2Q!!	 
		2T*55dllCdll1oT:	r   )
__future__r   numpyr;   r@   packaging.versionr   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   "   %[[__
  &v6"t''( 77##O   '.	
	
	
 	"!!	R:&	R:&"		
 
RZ M'*V->W*	^->` 7ORfD>gRfD>N 	RZ 	R*%	R*-"		
 		
 		
 		
 		
 		
 		
 		
 	  .	RZ u;>~(>~(* udm42[-4PQ, R 5,^ +-RS Tr   