o
    i                     @   s  d dl Z d dlZ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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  e j!"dd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,e'e(e)e*e+e,dZ-dd Z.i ddddddddd dd!dd"dd#dd$dd%dd&d'd(d'd)dd*dd+dd,d'd-d'd'd'd.d.d'd/Z/e/0 D ]\Z1Z2e#re.e1e2ne3e
e1Z4e4ej5e6 j7e1< qe8e/Z9dS )0    N)array_namespacescipy_namespace_foris_numpy   )_ufuncs)log_ndtrndtrndtrierferfci0i0ei1i1egammalngammainc	gammaincclogitexpitentrrel_entrxlogychdtrchdtrcbetaincbetainccstdtrZSCIPY_ARRAY_APIFzscipy._lib.array_api_compatc                    s   t |}d }t|rtt| d }n|d urt|j| d }|d ur"|S | tv r4t|  ||d}|d ur4|S tt| d }||d fdd
}|S )N)xpspx)_f_xpc                    sH   |d   }| d  }dd |D }| g ||R i |}| |S )Nc                 S   s   g | ]}t |qS  )npasarray.0argr!   r!   e/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/special/_support_alternative_backends.py
<listcomp>,   s    z7get_array_special_func.<locals>.__f.<locals>.<listcomp>r#   )r   r    argskwargsZ
array_argsZ
other_argsoutn_array_argsr!   r'   __f)   s
   
z#get_array_special_func.<locals>.__f)r   r   getattrr   special_generic_implementations)f_namer   r.   r   fr   r/   r!   r-   r'   get_array_special_func   s   r5   c                    sN   j | }|d j}j|   dr"j  fdd|D }|| fS )Nr   Zintegralc                    s   g | ]	}j | d qS )dtyper)   r$   r7   r   r!   r'   r(   9   s    z$_get_shape_dtype.<locals>.<listcomp>)Zbroadcast_arraysshapeZresult_typeZisdtypeZfloat64)r   r*   r9   r!   r8   r'   _get_shape_dtype3   s   



r:   c                 C      | ddd}|S )Nr   c                S   s   t | ||d\}}}|\} }|j| j|j|d}|jd|d|| dk|dk@ < | dk|dk@ }| | || | |||   ||< |S )Nr<   r6   r   )r:   fullr9   infr#   log)xyr   r*   r9   r7   resir!   r!   r'   
__rel_entr>   s   (z_rel_entr.<locals>.__rel_entrr!   )r   r   rD   r!   r!   r'   	_rel_entr=   s   rE   c                 C   r;   )Nr<   c                S   sZ   t jddd | || }W d    n1 sw   Y  || dk|jd|jd|S )Nignore)divideinvalidg        r6   )r"   Zerrstater?   wherer#   r7   )r@   rA   r   tempr!   r!   r'   __xlogyJ   s   z_xlogy.<locals>.__xlogyr!   )r   r   rK   r!   r!   r'   _xlogyI   s   rL   c                    T   |r	t |jdd nd   d u rtdrt jdd   d u r!d S  fdd}|S )Nr   r1   c                    sT    | d |d }| dk|dk@ } |d|}| |@ } |j|S )N   r   g      ?)rI   isinfnan)vr@   rB   maskr   r   r!   r'   __chdtr\   s
   z_chdtr.<locals>.__chdtrr0   r1   hasattr)r   r   rT   r!   rS   r'   _chdtrQ   s   rW   c                    rM   )Nr   r1   c                    s`    |dk | d |d d}|dk| dk@ |B | B | dkB } |j|}|S )Nr   rN   r   )rI   isnanrP   )rQ   r@   rB   Zi_nanr   r   r!   r'   __chdtrcq   s    ,z_chdtrc.<locals>.__chdtrcrU   )r   r   rZ   r!   rY   r'   _chdtrcf   s   r[   c                    sR   |r	t |jdd nd   d u rt| drt | jdd   d u r!d S  fdd}|S )Nr   r1   c                    s    || d| S )Nr   r!   )abr@   r   r!   r'   
__betaincc   s   z_betaincc.<locals>.__betainccrU   )r   r   r_   r!   r^   r'   	_betainccy   s   r`   c                    rM   )Nr   r1   c                    s:   | |d |   } | d d|d } |dk |d| S )NrN   g      ?r   r   )rI   )Zdftr@   tailr   r   r!   r'   __stdtr   s   z_stdtr.<locals>.__stdtrrU   )r   r   rd   r!   rc   r'   _stdtr   s   re   )r   r   r   r   r   r   c                    s&   t t }t| fdd}|S )Nc                     s*   t | d   }t |}|| i |S )N)r   r5   )r*   r+   r   r4   r3   r.   r!   r'   wrapped   s   z-support_alternative_backends.<locals>.wrapped)r0   r   	functoolswraps)r3   r.   funcrg   r!   rf   r'   support_alternative_backends   s   
rk   r   r   r	   r
   r   r   r   r   r   r   r   rN   r   r   r   r   r   r      )r   r   r   r   r   ):ossysrh   numpyr"   Zscipy._lib._array_apir   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   environgetZ_SCIPY_ARRAY_APIZarray_api_compat_prefixr5   r:   rE   rL   rW   r[   r`   re   r2   rk   Zarray_special_func_mapitemsr3   r.   r0   r4   modules__name____dict__list__all__r!   r!   r!   r'   <module>   s    `
	
