
    Vh              
          d dl Z d dlmZmZ d dl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mZmZmZmZ d dlmZmZ d dlmZmZmZ g dZej:                  j<                  j>                  Z eej@                        d	ed
efd       Z! eej@                        d	ed
efd       Z" eejF                         e        ede
j"                  j@                        d	ed
efd                     Z$ eejJ                         e        ede
j"                  j@                        d	ed
efd                     Z& eejN                  d      Z( eej@                        d	ed
efd       Z) eej@                        d	ed
efd       Z* eej@                        d	ed
efd       Z+ eejX                         e        ede
j"                  j@                        d	ed
efd                     Z- eej\                         e        ede
j"                  j@                        d(dedee/   d
efd                     Z. eej`                         e        edej@                        d	eeef   deeef   fd                     Z1 eejd                         e        ede
j"                  j@                        d	ede3d
efd                     Z4 eejj                         e        ede
j"                  j@                        d	ed
efd                     Z6 eejn                         e        ede
j"                  j@                        d	ed
efd                      Z8	 d(d	ed!e3d"eejr                     d
efd#Z:	 d(d	ed!e3d"eejr                     d
efd$Z; eej@                        d	ed
efd%       Z< ee
j"                  j@                  &      d	eded
efd'       Z=y))    N)OptionalUnion)Tensor)register_decomposition)ELEMENTWISE_TYPE_PROMOTION_KINDNumber
NumberType
TensorLikeTensorLikeType)"elementwise_type_promotion_wrapperout_wrapper)_make_alias"_make_elementwise_binary_reference!_make_elementwise_unary_reference)	bessel_j0	bessel_j1entrerfcxexpiti0ei1i1elog_ndtrlogitlog_softmaxmultigammalnndtrndtrisoftmaxspherical_bessel_j0xlog1pyzetaareturnc                 ,    t        j                  |       S N)primsr   r#   s    L/home/dcms/DCMS/lib/python3.12/site-packages/torch/_refs/special/__init__.pyr   r   1        ??1    c                 ,    t        j                  |       S r&   )r'   r   r(   s    r)   r   r   8   r*   r+   r(   )type_promoting_argstype_promotion_kindc                    t        j                  t        j                  |       | t        j                  | dkD  |  t        j                  |       z  t        j                  | dk(  dt         j                                     S )Nr   )torchwhereisnanloginfr(   s    r)   r   r   ?   s]     ;;A	AEA2		!,ekk!q&!eiiZ.PQ r+   c                 ,    t        j                  |       S r&   )r'   r   r(   s    r)   r   r   M        ;;q>r+   r   c                 ,    t        j                  |       S r&   )r'   
bessel_i0er(   s    r)   r   r   [        Ar+   c                 ,    t        j                  |       S r&   )r'   	bessel_i1r(   s    r)   r   r   b   r*   r+   c                 ,    t        j                  |       S r&   )r'   
bessel_i1er(   s    r)   r   r   i   r9   r+   c           	         d}| |z  }t        j                  | dk  t        j                  t         j                  j	                  |       dz        ||z  z
  t        j
                  t        j                  |       dz              S )N;f?g      ?   )r0   r1   r3   specialr   log1perfc)r#   	M_SQRT1_2ts      r)   r   r   p   sp     7I	IA;;	C		%--%%qb)A-.Q6UZZ]NQ&' r+   )selfrF   epsc           	          |d}|}d|z
  }t        j                  | |k  |t        j                  | |kD  ||             } t        j                  t        j                  | t        j                  d|                   S )Ng         )r0   r1   r3   true_dividesub)rF   rG   lohis       r)   r   r      sj     {	B	
SB;;tby"ekk$)R&FGD99U&&tUYYq$-?@AAr+   r#   brO   c           
         t        j                  t        | t              xs t        |t              d        t        | t              r=t        |t              r-t        j                  || j                  | j                        }nLt        |t              r<t        | t              r,t        j                  | |j                  |j                        } t        | t              sJ t        |t              sJ t        j                  t        j                  | d      dt        j                  | t        j                  |                  }t        j                  t        j                  |      t        d      |      S )Nc                       y)Nz/Expected either argument a or b to be a Tensor" rR   r+   r)   <lambda>zxlog1py.<locals>.<lambda>   s    r+   )dtypedevicer   nan)r0   _check
isinstancer
   r   refsscalar_tensorrT   rU   r1   eqmulrB   r2   float)r#   rO   rhss      r)   r!   r!      s     
LL1j!>Z:%>A !Z Z6%:qA	Az	"z!V'<qA a$$$a$$$
++ehhq!na1ekk!n)E
FC;;u{{1~uU|S99r+   pc                 F   d|z  |dz
  z  t        j                  t         j                        z  }dt        j                  d|z
  dd| j
                  | j                        z  }t        j                  t        j                  | j                  d      |z         d      |z   S )Ng      ?rI         ?)startendsteprT   rU   )dim)
mathr3   pir0   arangerT   rU   sumlgamma	unsqueeze)r#   r_   crO   s       r)   r   r      s{     	qAETXXdgg..Aell!a%aaqwwqxxXXA99U\\!++b/A"56B?!CCr+   c                 F    d}| |z  }dt        j                  |      z   dz  S )Nr?   rI   ra   )r0   erf)r#   rD   a_sqrt_2s      r)   r   r      s+     7I9}H		(##s**r+   c                 ,    t        j                  |       S r&   )r'   r   r(   s    r)   r   r      r6   r+   rf   rT   c                 2    t        j                  | ||      S Nr#   rf   rT   )r0   r   rt   s      r)   r   r      s    
 qc77r+   c                 2    t        j                  | ||      S rs   )r0   r   rt   s      r)   r   r      s    
 ==1#U33r+   c                 ,    t        j                  |       S r&   )r'   r    r(   s    r)   r    r       s     $$Q''r+   )r.   c                 .    t        j                  | |      S r&   )r'   r"   rN   s     r)   r"   r"      s     ::ar+   r&   )>rg   typingr   r   r0   torch._prims_primsr'   torch._prims_common_prims_commonutilstorch._refs_refsrY   r   torch._decompr   r   r   r	   r
   r   torch._prims_common.wrappersr   r   r   r   r   __all___opsopsatenINT_TO_FLOATr   r   special_entrr   special_erfcxr   sigmoidr   r   r   r   special_log_ndtrr   r   r]   special_xlog1pyr!   mvlgammaintr   special_ndtrr   special_ndtrir   rT   r   r   r    r"   rR   r+   r)   <module>r      s    "   #   0  Y ( zz~~ ##00 N  ##00 N  ))*#==JJN ~ 	  + **+#==JJ^  	  ,
 	EMM7+ ##00> n  ##00. ^  ##00> n  --.#==JJ > 	  / 

##!==JJB BXe_ B B	  $B ,,-#"7DD:u^Z/0 :U>:;U5V :	  .:& &#==JJDN Ds D~ D	  'D ))*#==JJ+N +~ +	  ++ **+#==JJ^  	  , $(88	8 EKK 8 	8 $(44	4 EKK 4 	4 ##00(> (n ((
 $==JJN ~ . r+   