o
    ·2úhxï  ã                   @   s  d dl Zd dlm  mZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdPdd„ZdQdd„ZdRdd„ZdRdd „Z d!d"„ Z!d#d$„ Z"dPd%d&„Z#d'd(„ Z$dPd)d*„Z%dPd+d,„Z&dPd-d.„Z'dRd/d0„Z(dSd2d3„Z)d4d5„ Z*d6d7„ Z+d8d9„ Z,d:d;„ Z-d<d=„ Z.d>d?„ Z/d@dA„ Z0dPdBdC„Z1dPdDdE„Z2dTdGdH„Z3dRdIdJ„Z4dUdKdL„Z5dMdN„ Z6dOdP„ Z7dQdR„ Z8dSdT„ Z9dVdUdV„Z:dWdX„ Z;dYdZ„ Z<d[d\„ Z=d]d^„ Z>d_d`„ Z?dWdadb„Z@dcdd„ ZAdedf„ ZBdgdh„ ZCdidj„ ZDdkdl„ ZEdRdmdn„ZFdXdodp„ZGdUdqdr„ZHdUdsdt„ZIdudv„ ZJdWdwdx„ZKdYdydz„ZLdZd{d|„ZMd}d~„ ZNdd€„ ZOdRdd‚„ZPdƒd„„ ZQd…d†„ ZRd‡dˆ„ ZSd‰dŠ„ ZTdRd‹dŒ„ZUddŽ„ ZVdRdd„ZWdRd‘d’„ZXd“d”„ ZYd•d–„ ZZd—d˜„ Z[dRd™dš„Z\d›dœ„ Z]d[dŸd „Z^d¡d¢„ Z_d£d¤„ Z`d¥d¦„ Zad§d¨„ Zbd©dª„ Zc	 d\d­d®„Zdd¯d°„ Zed±d²„ Zfd³d´„ Zgdµd¶„ Zhd·d¸„ Zid¹dº„ Zjd»d¼„ Zkd½d¾„ Zld]dÀdÁ„ZmdÂdÃ„ ZndPdÄdÅ„ZodÆdÇœdÈdÉ„ZpdQdÊdË„ZqdÌdÍ„ ZrdÎdÏ„ ZsdÐdÑ„ Ztd^dÓdÔ„ZudÕdÖ„ Zvd×dØ„ ZwdÙdÚ„ ZxdRdÛdÜ„ZydRdÝdÞ„Zzdßdà„ Z{d_dâdã„Z|dQdädå„Z}d`dçdè„Z~dédê„ Zdëdì„ Z€dídî„ ZdRdïdð„Z‚dñdò„ ZƒdRdódô„Z„dõdö„ Z…d÷dø„ Z†dùdú„ Z‡dûdü„ Zˆdýdþ„ Z‰dTdÿd „ZŠdWdd„Z‹dWdd„ZŒdPdd„Zdd„ ZŽdRd	d
„ZdRdd„Zdd„ Z‘dd„ Z’dadd„Z“dWdd„Z”dd„ Z•dYdd„Z–dbdd„Z—dWdd„Z˜dWdd„Z™d d!„ Zšd"d#„ Z›ddd$œd%d&„ZœdUd'd(„Zd)d*„ Zžd+d,„ ZŸd-d.„ Z d/d0„ Z¡d1d2„ Z¢d3d4„ Z£d5d6„ Z¤dRd7d8„Z¥dRd9d:„Z¦dPd;d<„Z§dPd=d>„Z¨dbd?d@„Z©dAdB„ ZªdCdD„ Z«dEdF„ Z¬dcdHdI„Z­dWdJdK„Z®dLdM„ Z¯dTdNdO„Z°dS (d  é    N)ÚType)Úconfig)Údtypes)Ústandardize_dtype)Ú
DTYPES_MAX)Ú
DTYPES_MIN)ÚOPENVINO_DTYPES)ÚOpenVINOKerasTensor)Úalign_operand_types©Úconvert_to_tensor©Úget_ov_output)Úov_to_keras_typec                 C   óf   d }t | tƒr| j ¡ }t |tƒr|j ¡ }t| |ƒ} t||ƒ}t| |dƒ\} }tt | |¡ d¡ƒS )Nzadd()r   )Ú
isinstancer	   ÚoutputÚget_element_typer   Ú_align_operand_typesÚov_opsetÚadd©Úx1Úx2Úelement_type© r   ú[/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/backend/openvino/numpy.pyr      ó   





r   c                 O   s6   g }|D ]}t |ƒ}| |¡ qtt || ¡ d¡ƒS ©Nr   )r   Úappendr	   r   Úeinsumr   )Ú
subscriptsÚoperandsÚkwargsÚinputsÚoperandr   r   r   r        s
   r    c                 C   r   )Nz
subtract()r   )r   r	   r   r   r   r   r   Úsubtractr   r   r   r   r&   (   r   r&   c                 C   sj   d }t | tƒr| j ¡ }t |tƒr|j ¡ }t| |ƒ} t||ƒ}t| |dƒ\} }tt | |dd¡ d¡ƒS )Nzmatmul()Fr   )r   r	   r   r   r   r   r   Úmatmulr   r   r   r   r'   4   s   





r'   c                 C   r   )Nú
multiply()r   )r   r	   r   r   r   r   r   Úmultiplyr   r   r   r   r)   @   r   r)   Fc                 C   sp   t | ƒ} |d u rt dgtj¡ d¡}t | |d¡ d¡} d}tj|tjd d¡}t | ||¡}t| d¡ƒS )Néÿÿÿÿr   F©Údtype)	r   r   Úconstantr   Úi32r   ÚreshapeÚreduce_meanr	   )ÚxÚaxisÚkeepdimsÚflatten_shapeÚ
axis_constÚmean_opsr   r   r   ÚmeanL   s   r7   c                 C   sD   |d u sJ dƒ‚t | ƒ} t |tj¡ d¡}tt | ||¡ d¡ƒS )Nz@`max` with not None initial is not supported by openvino backendr   )r   r   r-   r   r.   r   r	   Ú
reduce_max)r1   r2   r3   ÚinitialÚreduce_axisr   r   r   ÚmaxW   s   
ÿÿr;   c                 C   s~   t |ƒpt ¡ }t| }t d|¡ d¡}t| tƒrt	| ƒ} nt| t
ƒr'| g} tj| tjd d¡}t ||¡}t| d¡ƒS )Né   r   r+   ©r   r   Úfloatxr   r   r-   r   r   ÚtupleÚlistÚintr   r.   Ú	broadcastr	   )Úshaper,   Úov_typeÚ	const_oneÚoutput_shapeÚonesr   r   r   rG   b   s   


rG   c                 C   s€   t |ƒpt ¡ }t| }tjd|d d¡}t| tƒr t	| ƒ} nt| t
ƒr(| g} tj| tjd d¡}t ||¡}t| d¡ƒS ©Nr   r+   r=   )rC   r,   rD   Ú
const_zerorF   Úzerosr   r   r   rJ   o   s   


rJ   c                 C   ó   t | ƒ} tt | ¡ d¡ƒS r   ©r   r	   r   Úabsoluter   ©r1   r   r   r   rM   |   ó   rM   c                 C   rK   r   rL   rN   r   r   r   Úabs   rO   rP   c                 C   ój   t | ƒ} |d u rt dgtj¡ d¡}t | |d¡ d¡} d}t |tj¡ d¡}tt | ||¡ d¡ƒS ©Nr*   r   F)	r   r   r-   r   r.   r   r/   r	   Úreduce_logical_and©r1   r2   r3   r4   r   r   r   Úall†   ó   ÿrU   c                 C   ó   t dƒ‚)Nz.`angle` is not supported with openvino backend©ÚNotImplementedErrorrN   r   r   r   Úangle’   ó   rZ   c                 C   rQ   rR   )	r   r   r-   r   r.   r   r/   r	   Úreduce_logical_orrT   r   r   r   Úany–   rV   r]   c                 C   óº   |dks|g kr
| S t | ƒ} |  ¡ }|d u r-t dgtj¡ d¡}t | |d¡ d¡} d}t|t	ƒr6t
|ƒ}t |tj¡ d¡}|tjkrQtt | ||¡ d¡ƒS tt | ||¡ d¡ƒS ©Nr   r*   r   F)r   r   r   r-   r   r.   r   r/   r   r?   r@   Úbooleanr	   r\   r8   ©r1   r2   r3   Úx_typer4   r   r   r   Úamax¢   ó    

ÿrc   c                 C   r^   r_   )r   r   r   r-   r   r.   r   r/   r   r?   r@   r`   r	   rS   Ú
reduce_minra   r   r   r   Úaminµ   rd   rf   c                 C   s†   t | ƒt |ƒ} }t| |dƒ\} }|d u r6t dgtj¡ d¡}t | |d¡ d¡} t ||d¡ d¡}d}tt 	| |g|¡ d¡ƒS )Nzappend()r*   r   F)
r   r   r   r-   r   r.   r   r/   r	   Úconcat)r   r   r2   r4   r   r   r   r   È   s   r   r<   c                 C   sÊ   |d u rt dƒt | ƒ} }n	t | ƒt |ƒ} }|d u rt dƒnt |ƒ}d }|d ur0tt|ƒ }ntt t|  ¡ ƒt| ¡ ƒt| ¡ ƒd¡ }t | |¡}t ||¡}t ||¡}t	t 
||||¡ d¡ƒS )Nr   r<   Úint32)r   r   r   r   Úresult_typer   r   r   Úconvertr	   Úranger   )ÚstartÚstopÚstepr,   rD   Ú
start_nodeÚ	stop_nodeÚ	step_noder   r   r   ÚarangeÓ   s*   


üÿ	ÿrr   c                 C   óD   t | ƒ} |  ¡ }| ¡ rtt ¡  }t | |¡} tt 	| ¡ 
d¡ƒS r   )r   r   Úis_integralr   r   r>   r   rj   r	   Úacosr   ©r1   rb   rD   r   r   r   Úarccosñ   ó   rw   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úacoshr   rv   r   r   r   Úarccoshú   rx   rz   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úasinr   rv   r   r   r   Úarcsin  rx   r|   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úasinhr   rv   r   r   r   Úarcsinh  rx   r~   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úatanr   rv   r   r   r   Úarctan  rx   r€   c                 C   s~  t | ƒ} t |ƒ}t|  ¡ ƒ}t| ¡ ƒ}t ||t¡}t| }t | |¡} t ||¡}t 	| |¡}t 
|¡}|  ¡ }t ttjƒ|¡}t ttjd ƒ|¡}	t ttjd ƒ |¡}
t d|¡}t ||¡ d¡}t ||¡ d¡}t | |¡ d¡}t | |¡ d¡}t | |¡ d¡}t |t ||¡t ||¡¡}t |||
¡}t ||	|¡}t |||¡}t |||¡}t| d¡ƒS )Né   ç        r   )r   r   r   r   ri   Úfloatr   r   rj   Údivider   r-   ÚnpÚpiÚgreaterr   ÚlessÚgreater_equalÚequalÚselectr   r&   r	   )r   r   Úx1_typeÚx2_typeri   r1   ÚyrD   r†   Úhalf_piÚneg_half_piÚ
zero_constÚcond_x2_gt0Úcond_x2_lt0Úcond_x1_ge0Úcond_x1_gt0Úcond_x1_eq0Ú
out_x2_lt0Úout_x1_zeroÚout_x2_zeroÚout_not_posÚ	final_outr   r   r   Úarctan2  s<   


ýrœ   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úatanhr   rv   r   r   r   ÚarctanhH  rx   rž   c           	   	   C   óþ   t | ƒ} |  ¡ }|j ¡ }|dkrtt dgtj¡ 	d¡ƒS |d u rKt dgdg|d   tj¡ 	d¡}t 
| |d¡ 	d¡} d}t dtj¡ 	d¡}n|dk rS|| }t dtj¡ 	d¡}tj| ||dddtjd}| 	d¡}|s{t ||g¡ 	d¡}t|ƒS )	Nr   r*   r<   Fr;   ÚvalueT©Úkr2   ÚmodeÚsortÚstableÚindex_element_type©r   Úget_partial_shapeÚrankÚ
get_lengthr	   r   r-   r   r.   r   r/   ÚtopkÚsqueeze©	r1   r2   r3   Úx_shaper©   r4   r¢   Útopk_outputsÚtopk_indicesr   r   r   ÚargmaxQ  ó<   
ÿþù
	r±   c           	   	   C   rŸ   )	Nr   r*   r<   FÚminr    Tr¡   r§   r­   r   r   r   Úargminq  r²   r´   r*   c                 C   s  t | ƒ} |  ¡ }|j ¡ }|dkrtt dgtj¡ 	d¡ƒS |d u rRt dgtj¡ 	d¡}t 
| |d¡ 	d¡} t | tj¡ 	d¡}tj|t dgtj¡dd}d}n,|dk rZ|| }t | tj¡ 	d¡}t |t |tj¡ 	d¡t dtj¡ 	d¡¡ 	d¡}tj| ||ddd 	d¡}t|ƒS )	Nr   r*   F©Ú	keep_dimsr³   r    )r¢   r2   r£   r¤   r<   )r   r¨   r©   rª   r	   r   r-   r   r.   r   r/   Úshape_ofÚreduce_prodÚgatherr«   )r1   r2   r®   r©   r4   Úx_shape_tensorr¢   Úsorted_indicesr   r   r   Úargsort‘  sB   
ÿýüûúr¼   c                 C   s    |d urt j| |dS t  | ¡S )Nr+   )r…   Úarray)r1   r,   r   r   r   r½   ²  s   
r½   c                 C   s>  t | ƒ} |d urt |ƒ}|d u r5t dgtj¡ d¡}t | |d¡ d¡} |d ur3t ||d¡ d¡}d}|d uru|  ¡ }| ¡ }| ¡ sJ|tj	krg| ¡ sS|tj	krgt 
| tj¡ d¡} t 
|tj¡ d¡}t| |dƒ\} }t | |¡} t|tƒr~t|ƒ}|g kr†t| ƒS tj|tjd d¡}t | |d¡}t| d¡ƒS )Nr*   r   Fr(   r+   )r   r   r-   r   r.   r   r/   r   rt   r`   rj   Úf32r   r)   r   r?   r@   r	   r0   )r1   r2   Úweightsr4   rb   Úweights_typer5   r6   r   r   r   Úaverage¸  s6   ÿ

rÁ   c                 C   rW   )Nz1`bartlett` is not supported with openvino backendrX   rN   r   r   r   ÚbartlettØ  ó   ÿrÂ   c                 C   rW   )Nz0`hamming` is not supported with openvino backendrX   rN   r   r   r   ÚhammingÞ  rÃ   rÄ   c                 C   rW   )Nz2`heaviside` is not supported with openvino backendrX   ©r   r   r   r   r   Ú	heavisideä  rÃ   rÆ   c                 C   rW   )Nz/`kaiser` is not supported with openvino backendrX   )r1   Úbetar   r   r   Úkaiserê  r[   rÈ   c                 C   sø  | d u rt dƒ‚|rt dƒ‚t| ƒ} |  ¡ }t | d¡ d¡}t |d¡ d¡}t ||¡ d¡}t g |¡ d¡}t ||d¡ d¡}t d|¡ d¡}t 	||¡ d¡}	t|ƒ}t ||¡ d¡}t d|¡ d¡}
t d|¡ d¡}tj
| |dd d¡}t 	||
¡ d¡}t ||¡ d¡}tj
||dd d¡}tj| ||
|dd	 d¡}|d urãt|ƒ}| ¡ }t |ddgd¡ d¡}t ||¡ d¡}t ||¡ d¡}tj||	dd d¡}t|ƒS tj||	dd d¡}t |tj¡ d¡}t|ƒS )
Nzinput x is NonezUnsupported value `sparse=True`Úi64r   Fr*   r<   rµ   ©r2   )Ú
ValueErrorr   r   r   r·   r   rj   r-   r/   r   r8   ÚmaximumÚone_hotr)   Ú
reduce_sumr	   r   r.   )r1   r¿   Ú	minlengthÚsparserb   Úshape_xÚrank_xÚscalar_shapeÚconst_minus_oneÚrank_minus_onerE   rI   Úmax_elementÚdepthÚdepth_scalarrÍ   rÀ   Úweights_newÚfinal_one_hotÚfinal_outputr   r   r   Úbincountî  sb   ÿþ
ÿþÿþÿþrÜ   c                 C   rW   )Nz1`blackman` is not supported with openvino backendrX   rN   r   r   r   Úblackman  rÃ   rÝ   c                 C   sL   t |ttfƒsJ dƒ‚t t|ƒtj¡ d¡}t| ƒ} t	t 
| |¡ d¡ƒS )Nz;`broadcast_to` is supported only for tuple and list `shape`r   )r   r?   r@   r   r-   r   r.   r   r   r	   rB   )r1   rC   Útarget_shaper   r   r   Úbroadcast_to!  s   ÿrß   c                 C   rW   )Nz-`cbrt` is not supported with openvino backendrX   rN   r   r   r   Úcbrt*  r[   rà   c                 C   rK   r   )r   r	   r   Úceilr   rN   r   r   r   rá   .  rO   rá   c                 C   sP   t | ƒ} t ||  ¡ ƒ}t ||  ¡ ƒ}t | |¡ d¡}t ||¡ d¡}t|ƒS r   )r   r   r   rÌ   r   Úminimumr	   )r1   Úx_minÚx_maxÚclip_by_minÚclip_by_maxr   r   r   Úclip3  s   rç   c                 C   sL   t | tƒs	J dƒ‚g }| D ]}t|ƒ}| |¡ qt ||¡ d¡}t|ƒS )Nz,`concatenate` is supported only for `x` listr   )r   r@   r   r   r   rg   r   r	   )Úxsr2   ÚelemsÚelemÚresr   r   r   Úconcatenate<  s   rì   c                 C   rW   )Nz2`conjugate` is not supported with openvino backendrX   rN   r   r   r   Ú	conjugateF  rÃ   rí   c                 C   rW   )Nz-`conj` is not supported with openvino backendrX   rN   r   r   r   ÚconjL  r[   rî   c                 C   s   | S ©Nr   rN   r   r   r   ÚcopyP  s   rð   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úcosr   rv   r   r   r   rñ   T  rx   rñ   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úcoshr   rv   r   r   r   rò   ]  rx   rò   c                 C   sÔ   t | ƒ} tjdtjd d¡}t || ¡}t | |¡ d¡} t | tj¡ d¡} |d u rCt dgtj¡ d¡}t 	| |d¡ d¡} d}t
|tƒrLt|ƒ}|g krTt| ƒS t |tj¡ d¡}tt | |d¡ d¡ƒS )Nr   r+   r*   F)r   r   r-   r   r.   r   Úconvert_likeÚ	not_equalrj   r/   r   r?   r@   r	   rÎ   )r1   r2   Úzero_constantr4   r   r   r   Úcount_nonzerof  s   
rö   c                 C   rW   )Nz.`cross` is not supported with openvino backendrX   )r   r   ÚaxisaÚaxisbÚaxiscr2   r   r   r   Úcrossx  r[   rú   c                 C   rW   )Nz0`cumprod` is not supported with openvino backendrX   )r1   r2   r,   r   r   r   Úcumprod|  rÃ   rû   c                 C   sŽ   t | ƒ} |d urtt|ƒ }t | |¡ d¡} |d u r2t dgtj¡ d¡}t 	| |d¡ d¡} d}t |tj¡ d¡}t
t | |¡ d¡ƒS )Nr   r*   F)r   r   r   r   rj   r   r-   r   r.   r/   r	   Úcumsum)r1   r2   r,   rD   r4   r   r   r   rü   ‚  s   rü   c                 C   rW   )Nz0`deg2rad` is not supported with openvino backendrX   rN   r   r   r   Údeg2rad  rÃ   rý   c                 C   rW   )Nz-`diag` is not supported with openvino backendrX   )r1   r¢   r   r   r   Údiag•  r[   rþ   c                 C   rW   )Nz1`diagonal` is not supported with openvino backendrX   ©r1   ÚoffsetÚaxis1Úaxis2r   r   r   Údiagonal™  rÃ   r  c                 C   s  |dkr
t t| ƒƒS |dk rtdt|ƒ ƒ‚t| ƒ} |  ¡ }t| tjƒr(| j}n|  	¡ j
 ¡ }|dk r7|| }| }t|ƒD ]Ê}| 	¡ j
 ¡ }t tjdg| tjdtj¡ d¡}dg| }d||< t tj|tjdtj¡ d¡}	t tjdg| tjdtj¡ d¡}
dg| }d||< dg| }tj||	|
|||g g g d	 d¡}t tjdg| tjdtj¡ d¡}dg| }d||< t tj|tjdtj¡ d¡}dg| }dg| }d||< tj||||||g g g d	 d¡}|tjkrþt ||¡ d¡}q=t ||¡ d¡}q=t |ƒS )Nr   z#order must be non-negative but got r<   r+   )	ÚdataÚbeginÚendÚstridesÚ
begin_maskÚend_maskÚnew_axis_maskÚshrink_axis_maskÚellipsis_maskr*   )r	   r   rË   Úreprr   r   r…   ÚndarrayÚndimr¨   r©   rª   rk   r   r-   r½   Úint64r   rÉ   r   Ústrided_slicer`   rô   r&   )ÚaÚnr2   Úa_typer©   ÚresultÚ_r  Úbegin_upper_listÚbegin_upperÚ	end_upperÚbegin_mask_upperÚend_mask_upperÚupperÚbegin_lowerÚend_lower_listÚ	end_lowerÚbegin_mask_lowerÚend_mask_lowerÚlowerr   r   r   ÚdiffŸ  sž   ÿþ
ÿþÿþ

÷
öÿþ
ÿþ

÷
ö
r#  c                 C   rW   )Nz1`digitize` is not supported with openvino backendrX   )r1   Úbinsr   r   r   Údigitizeè  rÃ   r%  c                 C   sœ   d }t | tƒr| j ¡ }t |tƒr|j ¡ }t| |ƒ} t||ƒ}t| |dƒ\} }|  ¡ jdks6| ¡ jdkrAtt 	| |¡ d¡ƒS tt 
| |dd¡ d¡ƒS )Nzdot()r   F)r   r	   r   r   r   r   r¨   r©   r   r)   r'   r   r   r   r   Údotî  s   





r&  c                 C   s~   t |ƒpt ¡ }t| }t| tƒrt| ƒ} nt| tƒr| g} t 	| t
j¡ d¡}tj	d|d d¡}t ||¡ d¡}t|ƒS rH   )r   r   r>   r   r   r?   r@   rA   r   r-   r   r.   r   rB   r	   )rC   r,   rD   Ú
shape_noderI   Úempty_tensorr   r   r   Úemptyü  s   


r)  c                 C   r   )Nzequal()r   )r   r	   r   r   r   r   r   rŠ   r   r   r   r   rŠ   	  r   rŠ   c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úexpr   rv   r   r   r   r*    rx   r*  c                 C   sD   t | ƒ} t|tƒrt|ƒ}t |tj¡ d¡}t	t 
| |¡ d¡ƒS r   )r   r   r?   r@   r   r-   r   r.   r   r	   Ú	unsqueeze©r1   r2   r   r   r   Úexpand_dims  s
   
r-  c                 C   sj   t | ƒ} |  ¡ }| ¡ rtt ¡  }t | |¡} t | ¡ 	d¡}t 
d| ¡ ¡}t ||¡ 	d¡}t|ƒS )Nr   r<   )r   r   rt   r   r   r>   r   rj   r*  r   r-   r&   r	   )r1   rb   rD   Úexp_xrE   r  r   r   r   Úexpm1&  s   r/  c                 C   rW   )Nz-`flip` is not supported with openvino backendrX   r,  r   r   r   Úflip2  r[   r0  c                 C   rK   r   )r   r	   r   Úfloorr   rN   r   r   r   r1  6  rO   r1  c                 C   sX   t |ƒpt ¡ }t| }t||ƒ}t| tƒrt| ƒ} t 	| t
j¡}tt ||¡ d¡ƒS r   )r   r   r>   r   r   r   r?   r@   r   r-   r   r.   r	   rB   r   )rC   Ú
fill_valuer,   rD   rÞ   r   r   r   Úfull;  s   

ÿr3  c                 C   s\   t | ƒ} t | ¡}|d urtt|ƒ }n|  ¡ }t ||¡ d¡}t ||¡ d¡}t	|ƒS r   )
r   r   r·   r   r   r   r-   r   rB   r	   )r1   r2  r,   rÑ   rD   Úconst_valuerë   r   r   r   Ú	full_likeG  s   
r5  c                 C   r   )Nz	greater()r   )r   r	   r   r   r   r   r   r‡   r   r   r   r   r‡   S  r   r‡   c                 C   r   )Nzgreater_equal()r   )r   r	   r   r   r   r   r   r‰   r   r   r   r   r‰   _  r   r‰   c                    s´   t | ttfƒs
| f} dd„ | D ƒ}|d j ¡ ‰ ‡ fdd„|D ƒ}|o.t|d  ¡  ¡ ƒdk}|r3dnd}tdt|ƒƒD ]}t	|d || dƒ\|d< ||< q<t
t ||¡ d¡ƒS )Nc                 S   ó   g | ]}t |ƒ‘qS r   r   ©Ú.0rê   r   r   r   Ú
<listcomp>n  ó    zhstack.<locals>.<listcomp>r   c                    s   g | ]}t |ˆ ƒ‘qS r   r   r7  ©r   r   r   r9  p  s    r<   zhstack())r   r@   r?   r   r   Úlenr¨   Úto_shaperk   r   r	   r   rg   )rè   ré   Úis_1dr2   Úir   r;  r   Úhstackk  s   ÿr@  c                 C   sf   t | ƒ} |d u rtjn|}t|tƒrt| }n|}t | tj¡ 	d¡}tj
||d|d}t| 	d¡ƒS )Nr   )Únum_rowsÚnum_columnsÚdiagonal_indexÚoutput_type)r   r   r¾   r   Ústrr   r   rj   r.   r   Úeyer	   )r  r,   Úov_dtypeÚn32Úidentity_matrixr   r   r   Úidentityz  s   

ÿrJ  c                 C   rW   )Nz-`imag` is not supported with openvino backendrX   rN   r   r   r   Úimagˆ  r[   rK  çñhãˆµøä>ç:Œ0âŽyE>c                 C   s²   t t ¡  }t t| ƒ|¡} t t|ƒ|¡}t t|ƒ|¡}t t|ƒ|¡}t | | ¡}t |¡}|||  }t ||¡}	|rRt t 	| ¡t 	|¡¡}
t 
|	|
¡}	t|	 d¡ƒS r   )r   r   r>   r   rj   r   rP   Ú
less_equalÚlogical_andÚisnanÚ
logical_orr	   r   )r   r   ÚrtolÚatolÚ	equal_nanr,   Úabs_diffÚabs_x2Útotal_toleranceÚis_closeÚboth_nanr   r   r   ÚiscloseŒ  s   
rZ  c                 C   rK   r   )r   r	   r   Ú	is_finiter   rN   r   r   r   ÚisfiniteŸ  rO   r\  c                 C   rK   r   )r   r	   r   Úis_infr   rN   r   r   r   Úisinf¤  rO   r^  c                 C   rK   r   )r   r	   r   Úis_nanr   rN   r   r   r   rP  ©  rO   rP  c                 C   r   )Nzless()r   )r   r	   r   r   r   r   r   rˆ   r   r   r   r   rˆ   ®  r   rˆ   c                 C   r   )Nzless_equal()r   )r   r	   r   r   r   r   r   rN  r   r   r   r   rN  º  r   rN  é2   Tc                 C   rW   )Nz1`linspace` is not supported with openvino backendrX   )rl   rm   ÚnumÚendpointÚretstepr,   r2   r   r   r   ÚlinspaceÆ  s   ÿrd  c                 C   sD   t | ƒ} |  ¡ }| ¡ rtt ¡  }t | |¡} tt 	| ¡ 
d¡ƒS r   )r   r   rt   r   r   r>   r   rj   r	   Úlogr   )r1   rb   r   r   r   re  Î  rx   re  c                 C   ó|   t | ƒ} |  ¡ }| ¡ rtt ¡  }t | |¡} t | ¡ 	d¡}t 
d|¡ 	d¡}t |¡ 	d¡}t ||¡ 	d¡}t|ƒS )Nr   é
   ©r   r   rt   r   r   r>   r   rj   re  r   r-   r„   r	   )r1   rb   Úlog_xÚconst_10Úlog_10r  r   r   r   Úlog10×  ó   rl  c                 C   sl   t | ƒ} |  ¡ }| ¡ rtt ¡  }t | |¡} t d|¡ 	d¡}t 
| |¡ 	d¡}t |¡ 	d¡}t|ƒS ©Nr<   r   )r   r   rt   r   r   r>   r   rj   r-   r   r   re  r	   )r1   rb   Ú	one_constÚaddedr  r   r   r   Úlog1pä  s   rq  c                 C   rf  )Nr   r   rh  )r1   rb   ri  Úconst_2Úlog_2r  r   r   r   Úlog2ò  rm  rt  c                 C   rW   )Nz2`logaddexp` is not supported with openvino backendrX   rÅ   r   r   r   Ú	logaddexpÿ  rÃ   ru  c                 C   óN   t | ƒ} t |ƒ}t | tj¡ d¡} t |tj¡ d¡}tt | |¡ d¡ƒS r   )r   r   rj   r   r`   r   r	   rO  rÅ   r   r   r   rO    ó
   rO  c                 C   s0   t | ƒ} t | tj¡ d¡} tt | ¡ d¡ƒS r   )r   r   rj   r   r`   r   r	   Úlogical_notrN   r   r   r   rx    s   rx  c                 C   rv  r   )r   r   rj   r   r`   r   r	   rQ  rÅ   r   r   r   rQ    rw  rQ  rg  c                 C   rW   )Nz1`logspace` is not supported with openvino backendrX   )rl   rm   ra  rb  Úbaser,   r2   r   r   r   Úlogspace  rÃ   rz  c                 C   ó6   t | ƒ} t |ƒ}t| |dƒ\} }tt | |¡ d¡ƒS )Nz	maximum()r   )r   r   r	   r   rÌ   r   rÅ   r   r   r   rÌ   !  ó   rÌ   c                 C   rW   )Nz/`median` is not supported with openvino backendrX   )r1   r2   r3   r   r   r   Úmedian(  r[   r}  Úxy)Úindexingc                 G   rW   )Nz1`meshgrid` is not supported with openvino backendrX   )r  r1   r   r   r   Úmeshgrid,  rÃ   r€  c                 C   sX  t | ƒ} |  ¡ }|}|  ¡  ¡ }|tjk}|r$t | tj¡ 	d¡} tj}t
|tƒr3t|ƒdkr3t| ƒS |d u rNt dgtj¡ 	d¡}t | |d¡ 	d¡} d}t
|tƒrWt|ƒ}t |tj¡ 	d¡}	t | |	|¡ 	d¡}
|d urt ||¡ 	d¡}t |
|¡ 	d¡}
|rœdgt|ƒ }t |
t |tj¡ 	d¡d¡ 	d¡}
|r¨t |
tj¡ 	d¡}
t|
ƒS )Nr   r*   Fr<   )r   r   r¨   r=  r   r`   r   rj   r.   r   r   r?   r<  r	   r-   r/   r@   re   râ   )r1   r2   r3   r9   Úoriginal_typerb   r®   Úis_boolr4   r5   Ú
min_resultÚinitial_tensorÚresult_shaper   r   r   r³   2  sB   

ýür³   c                 C   r{  )Nz	minimum()r   )r   r   r	   r   râ   r   rÅ   r   r   r   râ   ]  r|  râ   c                 C   r{  )Nzmod()r   )r   r   r	   r   Ú	floor_modr   rÅ   r   r   r   Úmodd  r|  r‡  c                    sº   t | ƒ} t|tƒr|g}t|tƒr|g}|  ¡ j ¡ ‰ ‡ fdd„|D ƒ}‡ fdd„|D ƒ}ttˆ ƒƒ}t||ƒD ]\}}| 	|¡ | 
||¡ q8t |tj¡ d¡}tt | |¡ d¡ƒS )Nc                    ó    g | ]}|d kr
|n|ˆ  ‘qS ©r   r   ©r8  r2   ©r  r   r   r9  s  ó     zmoveaxis.<locals>.<listcomp>c                    rˆ  r‰  r   rŠ  r‹  r   r   r9  t  rŒ  r   )r   r   rA   r¨   r©   rª   r@   rk   ÚzipÚremoveÚinsertr   r-   r   r.   r   r	   Ú	transpose)r1   ÚsourceÚdestinationÚaxesÚsrcÚdstÚ
axes_constr   r‹  r   Úmoveaxisk  s   


r—  r‚   c                 C   sB  t | ƒ} |  ¡ }| ¡ rt| ƒS |tjkrdnd}|r(t | tj¡ 	d¡} tj}t 
||¡ 	d¡}t 
|d ur9|nt| |¡ 	d¡}t 
|d urJ|nt| |¡ 	d¡}t | dddœ¡ 	d¡}	t | dddœ¡ 	d¡}
t | ¡ 	d¡}t ||| ¡ 	d¡} t |	|| ¡ 	d¡} t |
|| ¡ 	d¡} |rt | tj¡ 	d¡} t| ƒS )NTFr   )Údetect_positiveÚdetect_negative)r   r   rt   r	   r   Úf64r   rj   r¾   r   r-   r   r   r]  r_  r‹   )r1   ÚnanÚposinfÚneginfr,   Ú	isfloat64Únan_valÚ
posinf_valÚ
neginf_valÚposinf_maskÚneginf_maskÚnan_maskr   r   r   Ú
nan_to_num  sL   ÿþÿþþýþýr¥  c                 C   s8   t | ƒ} t | tj¡ d¡}t |tj¡ d¡}t|ƒS r   )r   r   r·   r   rÉ   r   r	   )r1   Úshape_tensorÚrank_tensorr   r   r   r     s   r  c                 C   s$   t | ƒ} tj| dd d¡}t|ƒS )Nr.   )r  rD  r   )r   r   Únon_zeror   r	   )r1   rë   r   r   r   Únonzero§  s   r©  c                 C   r   )Nznot_equal()r   )r   r	   r   r   r   r   r   rô   r   r   r   r   rô   ­  r   rô   c                 C   sj   t | ƒ} t | ¡}|d urtt|ƒ }t d|¡ d¡}nt d|  ¡ ¡ d¡}t ||¡ d¡}t	|ƒS r   ©
r   r   r·   r   r   r-   r   r   rB   r	   )r1   r,   rÑ   rD   rI   rë   r   r   r   Ú
zeros_like¹  ó   
r«  c                 C   sj   t | ƒ} t | ¡}|d urtt|ƒ }t d|¡ d¡}nt d|  ¡ ¡ d¡}t ||¡ d¡}t	|ƒS rn  rª  )r1   r,   rÑ   rD   rE   rë   r   r   r   Ú	ones_likeÅ  r¬  r­  c                 C   s’   t | ƒ} t |ƒ}t| |dƒ\} }t ddgtj¡ d¡}t ddgtj¡ d¡}t | |d¡ d¡}t ||d¡ d¡}t ||¡ d¡}t	|ƒS )Nzouter()r*   r<   r   F)
r   r   r   r-   r   r.   r   r/   r)   r	   )r   r   Únew_shape_x1Únew_shape_x2Úx1_reshapedÚx2_reshapedr  r   r   r   ÚouterÑ  s   r²  r-   c                 C   s²   t | ƒ} d }|d ur |dkrtd|› ƒ‚t|tƒsJ dƒ‚|}g }g }|D ]}| |d ¡ | |d ¡ q&t |tj¡ 	d¡}t |tj¡ 	d¡}t
t | ||||¡ 	d¡ƒS )Nr-   zZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=zS`pad` operation supports only scalar pad value in constant mode by openvino backendr   r<   )r   rË   r   rA   r   r   r-   r   r.   r   r	   Úpad)r1   Ú	pad_widthr£   Úconstant_valuesÚ	pad_valueÚ
pads_beginÚpads_endÚ	pads_pairr   r   r   r³  ã  s.   þÿÿÿr³  c                 C   rW   )Nz-`prod` is not supported with openvino backendrX   )r1   r2   r3   r,   r   r   r   Úprod   r[   rº  Úlinearc                 C   rW   )Nz1`quantile` is not supported with openvino backendrX   )r1   Úqr2   Úmethodr3   r   r   r   Úquantile  rÃ   r¾  c                 C   s:   t | ƒ} tjdgtjd d¡}ttj| |dd d¡ƒS )Nr*   r+   r   F)Úspecial_zero)r   r   r-   r   r.   r   r	   r/   )r1   rÞ   r   r   r   Úravel
  s
   ÿrÀ  c                 C   rW   )Nz-`real` is not supported with openvino backendrX   rN   r   r   r   Úreal  r[   rÁ  c                 C   s:   t | ƒ} tjd|  ¡ d d¡}t || ¡ d¡} t| ƒS )Nr<   r+   r   )r   r   r-   r   r   r„   r	   )r1   Úone_constantr   r   r   Ú
reciprocal  s   rÃ  c                 C   rW   )Nz/`repeat` is not supported with openvino backendrX   )r1   Úrepeatsr2   r   r   r   Úrepeat  r[   rÅ  c                 C   sF   t | ƒ} t|tƒrt|ƒ}t |tj¡ d¡}t	t 
| |d¡ d¡ƒS ©Nr   F)r   r   r?   r@   r   r-   r   r.   r   r	   r/   )r1   Únewshaper   r   r   r/   !  s
   
r/   c                 C   rW   )Nz-`roll` is not supported with openvino backendrX   )r1   Úshiftr2   r   r   r   Úroll)  r[   rÉ  c                 C   rK   r   )r   r	   r   Úsignr   rN   r   r   r   rÊ  -  rO   rÊ  c                 C   rW   )Nz0`signbit` is not supported with openvino backendrX   rN   r   r   r   Úsignbit2  rÃ   rË  c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úsinr   rv   r   r   r   rÌ  8  rx   rÌ  c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Úsinhr   rv   r   r   r   rÍ  A  rx   rÍ  c                 C   rW   )Nz-`size` is not supported with openvino backendrX   rN   r   r   r   ÚsizeJ  r[   rÎ  c                 C   rW   )Nz-`sort` is not supported with openvino backendrX   r,  r   r   r   r¤   N  r[   r¤   c                 C   sš  t | ƒ} tj|tjd d¡}t | ¡}tj|gtjd}t ||tjdtjd¡}t|t	ƒrN|}tj
| ||d}g }	t|ƒD ]}
|	 t| |
¡ƒ¡ q?|	S t|tttjfƒrÄt|ƒ}g }| |d ¡ tdt|ƒƒD ]}
| ||
 ||
d   ¡ qktj|d tjd}t ||¡}g }| tj|tjd¡ | |¡ tj|dd}t | ||¡}g }	tt|ƒd ƒD ]}
|	 t| |
¡ƒ¡ qµ|	S tdt|ƒ› ƒ‚)Nr+   r   )Ú
num_splitsr<   r*   rÊ   z)unsupported type of indices_or_sections: )r   r   r-   r   r.   r   r·   r¹   r   rA   Úsplitrk   r   r	   r@   r?   r…   r  r<  rÉ   r&   rg   Úvariadic_splitÚ	TypeErrorÚtype)r1   Úindices_or_sectionsr2   Úaxis_tensorr¦  Úaxis_i32Údim_at_axis_tensorrÏ  Úsplitsr  r?  ÚindicesÚsplit_lengthsÚlast_index_tensorÚremaining_length_tensorÚlength_partsÚlength_tensorr   r   r   rÐ  R  sH   
ÿ
ÿ
ÿrÐ  c                    s®   t | tƒr	t| ƒ} t | tƒsJ dƒ‚dd„ | D ƒ}|d }tdt|ƒƒD ]}t||| dƒ\}||< q$||d< t |tj	¡ 
d¡‰ ‡ fdd„|D ƒ}t ||¡ 
d¡}t|ƒS )Nz*`stack` supports only `x` as list or tuplec                 S   r6  r   r   ©r8  Úer   r   r   r9  „  r:  zstack.<locals>.<listcomp>r   r<   zstack()c                    s   g | ]}t  |ˆ ¡ d ¡‘qS r‰  )r   r+  r   rß  ©Ú
const_axisr   r   r9  Š  s    )r   r?   r@   rk   r<  r   r   r-   r   r.   r   rg   r	   )r1   r2   ré   Úrefr?  rë   r   rá  r   Ústack€  s   
rä  c                 C   sØ   t | ƒ} |d u rt dgtj¡ d¡}t | |d¡ d¡} d}t |tj¡ d¡}t | ||¡ d¡}t d|  ¡ ¡ d¡}t 	| |¡ d¡}t 	||¡ d¡}t |||¡}t 
||¡ d¡}	tt |	¡ d¡ƒ}
|
S ©Nr*   r   Fr   )r   r   r-   r   r.   r   r/   r0   r   Úpowerr&   r	   Úsqrt)r1   r2   r3   r4   r7   Ú	const_twoÚ	squared_xÚsquared_meanÚsquared_x_meanÚvarianceÚstd_varr   r   r   Ústd  s   rî  c                 C   rW   )Nz1`swapaxes` is not supported with openvino backendrX   )r1   r  r  r   r   r   Úswapaxes¢  rÃ   rï  c                 C   sŠ   t | ƒ} t |ƒ}|d u r.tjdgtjd d¡}t | |d¡ d¡} tjdtjd d¡}ntj|tjd d¡}tt | ||¡ d¡ƒS )Nr*   r+   r   F)	r   r   r-   r   r.   r   r/   r	   r¹   )r1   rÙ  r2   rÞ   r   r   r   Útake¨  s   rð  c                 C   s€  t | ƒ} t |ƒ}|d u r:tjdgtjd d¡}t | |d¡ d¡}t ||d¡ d¡}t ||d¡ d¡}t|ƒS t	|  
¡ ƒ}|dk rH||7 }t | tj¡ d¡}t |tj¡ d¡}	tjdtjd d¡}
tj|gtjd d¡}t t |||
¡ d¡|
¡ d¡}t d| ¡ ¡ d¡}t ||¡ d¡}t || ¡ ¡ d¡}t |t ||¡ d¡|¡ d¡}t |tj¡ d¡}g g }}t|ƒD ]D}tj|gtjd d¡}t |||
¡ d¡}t |	||
¡ d¡}||krø| |¡ | |¡ qÇt ||¡ d¡}| |¡ | |¡ qÇtj|dd d¡}tj|dd d¡}t | |¡ d¡}t ||¡ d¡}t |||¡ d¡}t|ƒS )Nr*   r+   r   FrÊ   )r   r   r-   r   r.   r   r/   Úgather_elementsr	   r<  r¨   r·   r¬   r¹   r   rˆ   rj   r‹   r   rk   r   rÌ   rg   rB   )r1   rÙ  r2   rÞ   Úx_flatÚindices_flatr  Úx_rankr®   Úindices_shaper‘   Ú
axis_indexÚdim_sizeÚzero_scalarÚis_negÚdim_size_castÚx_target_partsÚindices_target_partsr?  Údim_idxÚx_dimÚindices_dimÚmax_dimÚx_target_shapeÚindices_target_shapeÚx_broadcastedÚindices_broadcastedr   r   r   Útake_along_axis´  s€   ÿþÿþÿþ
ÿþ

ÿÿþÿþr  c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Útanr   rv   r   r   r   r  û  rx   r  c                 C   rs   r   )r   r   rt   r   r   r>   r   rj   r	   Útanhr   rv   r   r   r   r    rx   r  r   c                 C   rW   )Nz2`tensordot` is not supported with openvino backendrX   )r   r   r“  r   r   r   Ú	tensordot  rÃ   r  c                 C   rW   )Nz.`round` is not supported with openvino backendrX   )r1   Údecimalsr   r   r   Úround  r[   r
  c                 C   rW   )Nz-`tile` is not supported with openvino backendrX   )r1   rÄ  r   r   r   Útile  r[   r  c                 C   rW   )Nz.`trace` is not supported with openvino backendrX   rÿ   r   r   r   Útrace  r[   r  c                 C   s  |d u r| }|d u rd}t | }tjfdd„}|| ƒ}||ƒ}||ƒ}tjt dtj¡|t dtj¡tjd}	tjt dtj¡|t dtj¡tjd}
t |	t dgtj¡¡}t |
t dgtj¡¡}t |t ||¡¡}|tj	kru|}nt 
||¡}t| d¡ƒS )NÚfloat32c                 S   sd   t | ttfƒrt | |¡S t| dƒr,|  ¡ tjkr t 	| tj¡} t 
| t dgtj¡¡S t | |¡S )Nr   r   )r   rA   rƒ   r   r-   Úhasattrr   r   r.   rj   r¬   )r    Údefault_typer   r   r   Úensure_constant'  s   
ztri.<locals>.ensure_constantr   r<   )rD  )r   r   r.   r   rk   r-   r+  rN  r   r`   rj   r	   r   )ÚNÚMr¢   r,   rG  r  ÚN_constÚM_constÚk_constÚ	row_rangeÚ	col_rangeÚrow_idxÚcol_idxÚmaskr  r   r   r   Útri  s8   
üü
r  c                 C   sÈ   t | ƒ} |  ¡ }t | tj¡}t dtj¡}t dgtj¡}t dgtj¡}t t |||¡|¡}t t |||¡|¡}t	|||ddj
}	t |	|¡}
|tjkrWt | |
¡}nt | |
¡}t| 
d¡ƒS )Nr   éþÿÿÿr*   Úbool©r¢   r,   )r   r   r   r·   r   r.   r-   r¬   r¹   r  r   rj   r`   rO  r)   r	   )r1   r¢   rD   rC   r‘   Úminus2Úminus1r  r  Útri_maskr  Úoutr   r   r   ÚtrilQ  s   
r#  c                 C   sú   t | ƒ} |  ¡ }t | tj¡}t dtj¡}t dgtj¡}t dgtj¡}t t |||¡|¡}t t |||¡|¡}t	|||d ddj
}	|tjkrRt |	¡}
nt d|¡}t |	|¡}t ||¡}
|tjkrpt | |
¡}nt | |
¡}t| 
d¡ƒS )Nr   r  r*   r<   r  r  )r   r   r   r·   r   r.   r-   r¬   r¹   r  r   r`   rx  rj   r&   rO  r)   r	   )r1   r¢   rD   rC   r‘   r  r   r  r  r!  r  rE   Úconverted_maskr"  r   r   r   Útriuc  s$   

r%  c                 C   rW   )Nz-`vdot` is not supported with openvino backendrX   rÅ   r   r   r   Úvdotz  r[   r&  c                 C   rW   )Nz/`vstack` is not supported with openvino backendrX   )rè   r   r   r   Úvstack~  r[   r'  )ÚexcludedÚ	signaturec                C   rW   )Nz2`vectorize` is not supported with openvino backendrX   )Úpyfuncr(  r)  r   r   r   Ú	vectorize‚  rÃ   r+  c                 C   sÌ   t | ƒ} |d u r|d u rt | ¡}t| d¡ƒS |d u r t| ƒS |d u r(tdƒ‚dd„ }t|ttfƒr;|||ƒ\}}nt|ttfƒrJ|||ƒ\}}nt |ƒ}t |ƒ}t	||dƒ\}}tt 
| ||¡ d¡ƒS )Nr   z'x2 must be provided if x1 is specified.c                 S   sR   t |ƒ ¡ }|tjk}t| tƒo| ¡ }|s|r t | ƒt |ƒfS t | |ƒt |ƒfS rï   )r   r   r   r`   r   rƒ   rt   )Úliteralr1   rD   r‚  Úis_float_to_intr   r   r   Úcast_literal_like_tensor’  s   
z'where.<locals>.cast_literal_like_tensorzselect())r   r   r¨  r	   r   rË   r   rA   rƒ   r   r‹   )Ú	conditionr   r   Únonzero_indicesr.  r   r   r   Úwhereˆ  s"   
r1  c                 C   s¨   d }t | tƒr| j ¡ }t |tƒr|j ¡ }t| |ƒ} t||ƒ}t|  ¡ ƒ}t| ¡ ƒ}t ||t¡}t	| }t
 | |¡ d¡} t
 ||¡ d¡}tt
 | |¡ d¡ƒS r   )r   r	   r   r   r   r   r   ri   rƒ   r   r   rj   r„   )r   r   r   rŒ   r   ri   r   r   r   r„   ¥  s   





r„   c                 C   rW   )Nz6`divide_no_nan` is not supported with openvino backendrX   rÅ   r   r   r   Údivide_no_nan¶  rÃ   r2  c                 C   s
   t | |ƒS rï   )r„   rÅ   r   r   r   Útrue_divide¼  s   
r3  c                 C   r   )Nzpower()r   )r   r	   r   r   r   r   r   ræ  r   r   r   r   ræ  À  r   ræ  c                 C   rK   r   )r   r	   r   Únegativer   rN   r   r   r   r4  Ì  rO   r4  c                 C   s4   t | ƒ} t d|  ¡ ¡ d¡}tt | |¡ d¡ƒS )Nr   r   )r   r   r-   r   r   r	   ræ  )r1   rè  r   r   r   ÚsquareÑ  s   r5  c                 C   rK   r   )r   r	   r   rç  r   rN   r   r   r   rç  ×  rO   rç  c                 C   sf   t | ƒ} |d u rg }t|  ¡ ƒD ]\}}|dkr| |¡ qt |tj¡ d¡}t	t 
| |¡ d¡ƒS rn  )r   Ú	enumerater¨   r   r   r-   r   r.   r   r	   r¬   )r1   r2   ÚidxÚdimr   r   r   r¬   Ü  s   
€r¬   c                 C   sÖ   t | ƒ} |d u rMt | d¡ d¡}t |d¡ d¡}t g tj¡ d¡}t ||d¡ d¡}t dtj¡ d¡}t 	||¡ d¡}t 
|||d¡ d¡}nt|tƒrVt|ƒ}t |tj¡ d¡}tt | |¡ d¡ƒS )NrÉ   r   Fr*   )r   r   r·   r   r-   r   r.   r/   rÉ   r   rk   r   r?   r@   r	   r  )r1   r“  rÑ   rÒ   rÓ   rÔ   rÕ   r   r   r   r  ç  s"   ÿþ
r  c           
      C   sÈ   t | ƒ} |d u rt dgtj¡ d¡}t | |d¡ d¡} d}t |tj¡ d¡}t | ||¡ d¡}t d|  ¡ ¡ d¡}t 	| |¡ d¡}t 	||¡ d¡}t |||¡}t
t ||¡ d¡ƒ}	|	S rå  )r   r   r-   r   r.   r   r/   r0   r   ræ  r	   r&   )
r1   r2   r3   r4   r7   rè  ré  rê  rë  rì  r   r   r   Úvarû  s   ÿr9  c                 C   rQ   rR   )	r   r   r-   r   r.   r   r/   r	   rÎ   rT   r   r   r   Úsum  s   r:  c                 C   rW   )Nz,`eye` is not supported with openvino backendrX   )r  r  r¢   r,   r   r   r   rF    r[   rF  c                 C   rW   )Nz5`floor_divide` is not supported with openvino backendrX   rÅ   r   r   r   Úfloor_divide  rÃ   r;  c                 C   rv  r   )r   r   rj   r   r`   r   r	   Úlogical_xorrÅ   r   r   r   r<  #  rw  r<  c                 C   rW   )Nz1`corrcoef` is not supported with openvino backendrX   rN   r   r   r   Úcorrcoef+  rÃ   r=  Úvalidc                 C   rW   )Nz2`correlate` is not supported with openvino backendrX   )r   r   r£   r   r   r   Ú	correlate1  rÃ   r?  c                 C   rW   )Nz/`select` is not supported with openvino backendrX   )ÚcondlistÚ
choicelistÚdefaultr   r   r   r‹   7  r[   r‹   c                 C   rW   )Nz0`slogdet` is not supported with openvino backendrX   rN   r   r   r   Úslogdet;  rÃ   rC  c                 C   rW   )Nz5`argpartition` is not supported with openvino backendrX   )r1   Úkthr2   r   r   r   ÚargpartitionA  rÃ   rE  )NF)NFNrï   )Nr<   N)r*   )NNrÆ  r‰  )r*   r*   r*   N)r   r   r<   )r<   r*   )rL  rM  F)r`  TFNr   )r`  Trg  Nr   )r‚   NN)r-   N)Nr»  F)r   )Nr   N)r>  )±Únumpyr…   Úopenvino.runtime.opset14ÚruntimeÚopset14r   Úopenvinor   Úkeras.src.backendr   Úkeras.src.backend.commonr   Ú"keras.src.backend.common.variablesr   Úkeras.src.backend.openvino.corer   r   r   r	   r
   r   r   r   r   r   r    r&   r'   r)   r7   r;   rG   rJ   rM   rP   rU   rZ   r]   rc   rf   r   rr   rw   rz   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ñ   rò   rö   rú   rû   rü   rý   rþ   r  r#  r%  r&  r)  rŠ   r*  r-  r/  r0  r1  r3  r5  r‡   r‰   r@  rJ  rK  rZ  r\  r^  rP  rˆ   rN  rd  re  rl  rq  rt  ru  rO  rx  rQ  rz  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Ë  rÌ  rÍ  rÎ  r¤   rÐ  rä  rî  rï  rð  r  r  r  r  r
  r  r  r  r#  r%  r&  r'  r+  r1  r„   r2  r3  ræ  r4  r5  rç  r¬   r  r9  r:  rF  r;  r<  r=  r?  r‹   rC  rE  r   r   r   r   Ú<module>   sP   					*	  ! -		
		I	ÿ	+!		.G		2
