
    ΧgM                     D   d dl Z ddlmZmZmZmZmZ g Zg dZd  e	 e
e          h dz
            D             Zd Zd Zd	 Zd
 Zd eD             Zd eD             Z e	e                                          Z e	e                                          Zd Zd ZdS )    N   )_map_mt_args_kwargs_masks_match_tensors_match_wrap_resultis_masked_tensor)$addatan2arctan2bitwise_and
bitwise_orbitwise_xorbitwise_left_shiftbitwise_right_shiftdivdividefloor_dividefmod	logaddexp
logaddexp2mulmultiply	nextafter	remaindersubsubtracttrue_divideeqnelegegreatergreater_equalgt
less_equalltlessmaximumminimumfmaxfmin	not_equalc                     g | ]}|d z   S )_ ).0ns     \/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/masked/maskedtensor/binary.py
<listcomp>r3   8   s,       	 G      >   r*   r+   equalr(   r)   r   r   c                    t          |           st          |          st          d          t          | |          st          d          t          |           r|                                 S |                                S )Nz2At least one of `a` and `b` must be a MaskedTensorz a and b must have matching masks)r   	TypeErrorr   
ValueErrorget_mask)abs     r2   _get_at_least_one_maskr<   K   s    A N'7':': NLMMM1 =;<<< zz||::<<r4   c                 ~   t          |          dk    rt          d          |dd          D ]%}t          j        |          rt	          d          &t          |d d          st          d          t          ||d           \  }}t          ||d           \  }}|d         j        }	t          j        |d                   pt          |d                   o|	|d         j        k    }
|	t          j	        k    r!|
rt          |d                                         |d                                                   st          d	          |d                                         |d                                         k    rt          d
          |d                                         |d<   |d                                         }|d                                         }|d                                         |d<    | | }t          j        |||          }n1|	t          j        k    r|
rt          |d                                         |d                                                   r@t          |d                                         |d                                                   st          d          |d                                         |d<   |d                                         }|d                                         }|d                                         |d<    | | }t          j        |||          }n | | }|r*|d                             ||d                    |d         S t)          |d d          }|	t          j        k    r|                    |          }t/          ||          S )Nr   zlen(kwargs) must equal 0   zRMaskedTensor binary ops do not support Tensor arguments aside from the lhs and rhszUInput masks must match. If you need support for this, please open an issue on Github.c                 *    |                                  S N)get_dataxs    r2   <lambda>z _binary_helper.<locals>.<lambda>c        r4   c                 *    |                                  S r@   )r9   rB   s    r2   rD   z _binary_helper.<locals>.<lambda>d   rE   r4   r   z\sparse_coo indices must match. If you need support for this, please open an issue on Github.z?input1 and input2 must have the same size for binary functions.z\sparse_csr indices must match. If you need support for this, please open an issue on Github.)lenr8   torch	is_tensorr7   r   r   layoutr   
sparse_coor   indicessizevaluessparse_coo_tensor
sparse_csrcrow_indicescol_indicessparse_csr_tensor_set_data_maskr<   strided	expand_asr   )fnargskwargsinplacer:   	data_argsdata_kwargs	mask_argsmask_kwargsargs0_layoutsame_layoutirM   vresult_datacrowcolresult_masks                     r2   _binary_helperrg   U   s   
6{{a3444!""X  ?1 	d  	
 bqb" 
c
 
 	
 1v?U?UVVI{0v?U?UVVI{Q<&L	!%%G)9)A,)G)G09Q<..  u''' 
	1!)A,"6"6"8"8)A,:N:N:P:PQQ  r   |  ""il&7&7&9&999 U   %Q<..00IaLaL  ""|  "" |**,,	!B	N-aD99	)	)	) 	1y|88::IaL<U<U<W<WXX"aL,,..	!0H0H0J0J  !r   %Q<..00IaL|((**l&&(( |**,,	!B	N-dC;; b)n 6Q{IaL999Aw,d2A2h75=((%//<<KK555r4   c                 P    t          t          j        j        |           fd}|S )Nc                  *    t          | |d          S )NFrZ   rg   rX   rY   rW   s     r2   	binary_fnz _torch_binary.<locals>.binary_fn   s    b$>>>>r4   getattrrH   opsatenfn_namerm   rW   s     @r2   _torch_binaryrt      s7    		)	)B? ? ? ? ? r4   c                 P    t          t          j        j        |           fd}|S )Nc                  *    t          | |d          S )NTrj   rk   rl   s     r2   rm   z(_torch_inplace_binary.<locals>.binary_fn   s    b$====r4   rn   rr   s     @r2   _torch_inplace_binaryrw      s7    		)	)B> > > > > r4   c                 h    i | ]/}t          t          j        j        |          t	          |          0S r/   )ro   rH   rp   rq   rt   r0   names     r2   
<dictcomp>r{      s=       ;?GEIND!!=#6#6  r4   c                 h    i | ]/}t          t          j        j        |          t	          |          0S r/   )ro   rH   rp   rq   rw   ry   s     r2   r{   r{      sA        EIND!!#8#>#>  r4   c                 &    | t           v p| t          v S r@   )NATIVE_BINARY_FNSNATIVE_INPLACE_BINARY_FNS)rW   s    r2   _is_native_binaryr      s    ""Eb,E&EEr4   c                 |    | t           v rt          |          |i |S | t          v rt          |          |i |S t          S r@   )r~   NATIVE_BINARY_MAPr   NATIVE_INPLACE_BINARY_MAPNotImplemented)rW   rX   rY   s      r2   _apply_native_binaryr      sP    	 $d5f555	&&&(,d=f===r4   )rH   corer   r   r   r   r   __all__BINARY_NAMESlistsetINPLACE_BINARY_NAMESr<   rg   rt   rw   r   r   keysr~   r   r   r   r/   r4   r2   <module>r      s                 % % %N  	C  		
 	
   &  H6 H6 H6V     CO    $   
 D*//1122  D!:!?!?!A!ABB F F F    r4   