o
    i                     @   s@   d dl Z d dlZd dlmZ d dlmZ d dlmZ dd ZdS )    N)device)_util)sparsec                 C   s  ddl m} t| st| } t|  t| | jd }|j	dks*t
||kr.td| jdks8| jdkr<| j}nt| jd}t }| j}d}d}tj||d}	tdtj}
|dkrd|j}n|j}||||| jj| jjj| jjj| jjj|jj|||	jj|
jj |	tj}	|	S )	aE  Solves linear system with cholesky decomposition.

    Find the solution to a large, sparse, linear system of equations.
    The function solves ``Ax = b``. Given two-dimensional matrix ``A`` is
    decomposed into ``L * L^*``.

    Args:
        A (cupy.ndarray or cupyx.scipy.sparse.csr_matrix): The input matrix
            with dimension ``(N, N)``. Must be positive-definite input matrix.
            Only symmetric real matrix is supported currently.
        b (cupy.ndarray): Right-hand side vector.

    Returns:
        ret (cupy.ndarray): The solution vector ``x``.

    r   )cusolver   z+b must be 1-d array whose size is same as Afdg      ?)dtype) cupy_backends.cuda.libsr   r   isspmatrix_csr
csr_matrixr   _assert_stacked_square_assert_cupy_arrayshapendimlen
ValueErrorr	   numpypromote_typesr   get_cusolver_sp_handlennzcupyemptyint32scsrlsvcholdcsrlsvchol_descr
descriptordataptrindptrindicesctypesastypefloat64)Abr   mr	   handler   tolreorderxsingularity
csrlsvchol r.   W/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/cupyx/linalg/sparse/_solve.pylschol	   s6   




r0   )	r   r   	cupy.cudar   cupy.linalgr   cupyx.scipyr   r0   r.   r.   r.   r/   <module>   s    