
    `i                     b    d dl Z d dlZd dlZd dlmZ d Zg dZdZd Zej	        d             Z
dS )    N)_utilc                 \   t          j        |            t          j        |           | j        d         |j        d         k    rt          d          | dddt          j        ddf         |dt          j        ddddf         z  }|                    d|j        dd         z             S )av  
    Khatri-rao product

    A column-wise Kronecker product of two matrices

    Parameters
    ----------
    a : (n, k) array_like
        Input array
    b : (m, k) array_like
        Input array

    Returns
    -------
    c:  (n*m, k) ndarray
        Khatri-rao product of `a` and `b`.

    See Also
    --------
    .. seealso:: :func:`scipy.linalg.khatri_rao`

       z6The number of columns for both arrays should be equal..N)   )r   
_assert_2dshape
ValueErrorcupynewaxisreshape)abcs      p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/scipy/linalg/_matfuncs.py
khatri_raor      s    0 
Q	QwqzQWQZ , - - 	- 	
#qqq$,
!"QsDL!!!QQQ'>%??A99UQWQRR[()))    )g D`lCg D`\Cg `=Hb;Cg 	eCg JXBg  "5Bg  /cBg   \L8Bg   pķAg    syAg    S-Ag     @g     f@g      ?g{Gz@c           	         | j         dk    rt          j        d| j                  S | j        d         }t          j        | j        t          j                  r| j        nt          j        }t          j        |           	                                |z  }| t          j
        ||          |z  z
  }t          j                            |d                                          }|t          k    }|rLt          t!          j        t!          j        t'          |          t          z                                dz   }nd}|d|z  z  }||z  }||z  }	||	z  }
t          j
        |j        d         |          }t          j        t*          |          }t-          |||	|
|          \  }}}}||
|z  |z   z  }|
|z  |z   }t          j                            | |z   ||z             }|}t1          |          D ]}||z  }t          j        |j        t          j                  rt5          j        |          nt!          j        |          }||z  }|S )a  Compute the matrix exponential.

    Parameters
    ----------
    a : ndarray, 2D

    Returns
    -------
    matrix exponential of `a`

    Notes
    -----
    Uses (a simplified) version of Algorithm 2.3 of [1]_:
    a [13 / 13] Pade approximant with scaling and squaring.

    Simplifications:

        * we always use a [13/13] approximate
        * no matrix balancing

    References
    ----------
    .. [1] N. Higham, SIAM J. MATRIX ANAL. APPL. Vol. 26(4), p. 1179 (2005)
       https://doi.org/10.1137/04061101X

    r   )r   r   )dtyper   )ordr   )sizer   zerosr   r	   
issubdtypeinexactfloat64diagsumeyelinalgnormitemth13intmathceillog2floatasarrayr   _expm_innersolverangecomplexfloatingcmathexp)r   na_dtypemuAnrmAscalesA2A4A6Ebbu1u2v1v2uvr13x_emus                          r   expmrE   >   s5   6 	v{{z&0000	
A 	  1agg$(L  
1				a	B	DHQg&&&r))A ;A1%%**,,D4KE 	$)E$KK$$6778899A=AIA 
QB	bB	bB7+++A	aw	'	'	'B BB33NBB	R"Wr\A
R"A
+

QBFAE
*
*C 	A1XX  E  ?
$&( ( :%)B----1Xb\\ HAHr   c                 V   |d         |z  |d         |z  z   |d         |z  z   }|d         |z  |d         |z  z   |d         |z  z   |d         | z  z   }|d         |z  |d	         |z  z   |d
         |z  z   }|d         |z  |d         |z  z   |d         |z  z   |d         | z  z   }||||fS )N      	            r      
            r   r    )	r9   r6   r7   r8   r   r;   r<   r=   r>   s	            r   r)   r)      s    	
2rAbE"H	qtBw	&B	
1b1Q47	QqT"W	$qtAv	-B	
2rAbE"H	qtBw	&B	
1b1Q47	QqT"W	$qtAv	-Br2r>r   )r$   r-   r   cupy.linalgr   r   r   r"   rE   fuser)   rR   r   r   <module>rU      s             *  *  *H
 
 
 K K K\     r   