a
    7Sic                     @   s  d dl Z d dlmZ e jdddZdd Zdd	 Ze jed
dd Z	e jeddd Z
e jeddd Ze jeddd Ze jeddd Ze jeddd Zdd Zeddd Ze jed!d=d#d$Ze jed%d&d' Ze jed(d)d* Ze jed+d,d-d.d/Ze jed0d1d2 Ze jed3dd4d5d6Ze jed7d8d9 Ze jed:d;d< ZdS )>    N)utilsatenIMPLMetac                 C   s   | st |d S N)RuntimeError)bs r
   U/var/www/html/django/DPS/env/lib/python3.9/site-packages/torch/_meta_registrations.pycheck   s    r   c                 C   s(   t jt jt jt jt jt ji}|| | S r   )torch	complex32halfcfloatfloatcdoubledoubleget)dtypeZfrom_complexr
   r
   r   toRealValueType
   s
    r   index_selectc                 C   s.   t |  }|  dkr$| ||< | |S )Nr   )listsizedimnumel	new_empty)selfr   indexresult_sizer
   r
   r   meta_index_select   s    r    zindex_select.outc                 C   s(   t ||  | j |t | ||S r   )r   _resize_output_r   devicecopy_r   )r   r   r   outr
   r
   r   meta_index_select_out   s    r%   absc                 C   s6   |   r$t| j}| j|  |dS | |  S d S )Nr   )
is_complexr   r   r   r   )r   Z
float_typer
   r
   r   meta_abs   s    
r)   zabs.outc                 C   s$   t ||  | j |t | S r   )r   r!   r   r"   r#   r&   )r   r$   r
   r
   r   meta_abs_out'   s    r*   maxc                 C   s
   |  dS Nr
   r   r   r
   r
   r   meta_max,   s    r/   minc                 C   s
   |  dS r,   r-   r.   r
   r
   r   meta_min0   s    r1   c                 C   sX   |   dksJ | d| d| dksTJ | d| d d| d dd S )N   z3: The input tensor must have at least 2 dimensions.z5: A must be batches of square matrices, but they are z by z	 matrices)r   r   )r   f_namer
   r
   r   squareCheckInputs4   s     r6   )uploc                 C   s6   |   }t| dkr|dks2|dks2J d|  d S )N   ULz1Expected UPLO argument to be 'L' or 'U', but got )upperlen)r7   Zuplo_uppercaser
   r
   r   	checkUplo;   s    r=   linalg_eighr:   c                 C   sd   t | d t| t| j}|  dks,J | j| j|d}|dd | | jd d }||fS )Nr>   r2   r'   r4   r3   )r6   r=   r   r   r   r   shape
transpose_)r   r7   Z
real_dtypevaluesZvectorsr
   r
   r   meta_linalg_eigh@   s    

rB   reflection_pad2dc                 C   s   |  ddko|  ddk}t| jdkr,|pF| jdkoF|oF|  ddkd|   | jdkrl| j\}}}}nd}| j\}}}|\}}}	}
||	 |
 }|| | }| jdkr| |||fS | ||||fS d S )Nr8   r   r2         z:3D or 4D (batch mode) tensor expected for input, but got: )r   r   ndimr?   r   )r   paddingZ
valid_dimsZnbatchZnplaneZinput_hZinput_wZpad_lZpad_rZpad_tZpad_bZoutput_hZoutput_wr
   r
   r   
meta_pad2dK   s     

rH   dotc                 C   s>   t |  dko| dkd|   d|  d | dS )Nr8   z1D tensors expected, but got zD and z	D tensorsr
   )r   r   r   )r   tensorr
   r
   r   meta_dotc   s
    rK   zvar_mean.correctionF)keepdimc                   sf   t j  |r2t fddtjD }nt j }j|tj	d}|}||fS )Nc                 3   s$   | ]}| vrj | nd V  qdS )r8   N)r?   ).0ir   r   r
   r   	<genexpr>o       z+meta_var_mean_correction.<locals>.<genexpr>r'   )
r   Zreduction_dimsr?   tuplerangerF   Zcompute_reduction_output_shaper   r   r   )r   r   
correctionrL   output_shapeZresult1Zresult2r
   rO   r   meta_var_mean_correctionk   s     
rV   inversec                 C   s2   |   dkrt| S | | j}|dd |S )Nr   r4   r3   )r   r   
empty_liker   r?   r@   )r   rr
   r
   r   meta_inversev   s
    
rZ   zbernoulli.out)	generatorc                C   s   t ||  | j |S r   )r   r!   r   r"   )r   r[   r$   r
   r
   r   meta_bernoulli   s    r\   Z_adaptive_avg_pool2dc                 C   s>   t | jdkp| jdkd| j  | | jd d t| S )NrD   rE   z"Expected 3D or 4D tensor, but got r4   r   rF   r?   r   rR   r   output_sizer
   r
   r   meta_adaptive_avg_pool2d   s    "r`   Z_adaptive_avg_pool3dc                 C   s>   t | jdkp| jdkd| j  | | jd d t| S )NrE      z"Expected 4D or 5D tensor, but got r]   r^   r
   r
   r   meta_adaptive_avg_pool3d   s    "rc   )r:   )r   Ztorch._primsr   libraryLibraryZmeta_libr   r   implr    r%   r)   r*   r/   r1   r6   strr=   rB   rH   rK   rV   rZ   r\   r`   rc   r
   r
   r
   r   <module>   sD   	











