o
    Xi;                     @  s   d dl mZ d dlZd dlmZmZ edej ZedZ	G dd dej
ZG dd dej
Ze Ze ZeeegZeeZdS )	    )annotationsN)_fusion_utilspatterng       @c                   @     e Zd Zdd Zdd ZdS )GeluTanhFusionc                 C  sb   | |d}|d|}|||}|t|}||}||d}|d|}	|||	}
|
S )N   gHm?         ?)PowMulAdd_SQRT_TWO_OVER_PITanh)selfopxt1t2t3t4t5t6t7result r   X/home/ubuntu/.local/lib/python3.10/site-packages/onnxscript/rewriter/ort_fusions/gelu.pyr      s   
zGeluTanhFusion.patternc                 C     |j |ddS Nzcom.microsoft)_domain)FastGelur   r   r   r   r   r   rewrite      zGeluTanhFusion.rewriteN__name__
__module____qualname__r   r!   r   r   r   r   r      s    r   c                   @  r   )GeluErfFusionc                 C  s>   | |t}||}||d}|||}||d}|S )Ng      ?r	   )Div	_SQRT_TWOErfr   r   )r   r   r   r   r   r   r   r   r   r   r   r       s   
zGeluErfFusion.patternc                 C  r   r   )Gelur    r   r   r   r!   )   r"   zGeluErfFusion.rewriteNr#   r   r   r   r   r'      s    	r'   )
__future__r   mathonnxscript.rewriterr   r   sqrtpir   r)   RewriteRuleClassBaser   r'   rule
_tanh_rule	_erf_ruleRewriteRuleSet
gelu_rulesapply_fusion_rules	fuse_gelur   r   r   r   <module>   s   
