U
    qh                     @  s   d dl mZ d dlZdddddZeeZdddd	d
ZdddddZdddddZ	dddddZ
dddddZeeZdddddZdS )    )annotationsNfloat)valreturnc                 C  s.   ddt t |    }| dk r*d| S |S )N      ?r   )npexpabs)r   v r   R/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/aionnxml/_common_classifier.pycompute_logistic   s    r   z
np.ndarray)valuesr   c                 C  s   |   }t| }d}tt| D ]L}| | }|dks@|dk rTt|| | |< n| |  |9  < || | 7 }q$|dkrd| dd< n| dd  |  < | S )z(The function modifies the input inplace.r   gHz>gHz      ?N)maxr   r   rangelen)r   v_maxZexp_neg_v_maxsir
   r   r   r   compute_softmax_zero   s    r   c                 C  s0   t | jdkrt|  | S | D ]}t| q| S )Modifications in place.   )r   shaper   )r   rowr   r   r   softmax_zero"   s    
r   c                 C  s~   t | jdkrL| jddd}| |8 } tj| | d | jddd}| | } | S |  }t| | | dd< |  }| | } | S )r      r   )ZaxisZkeepdims)outN)r   r   r   r   r   sum)r   r   r   Zthis_sumr   r   r   softmax,   s    r   )xr   c                 C  s~   | dk rdnd}d|  d|   } | dkr,dS t | }dt jd  d|  }d| }| t || |  }|t | } | S )	Nr   g      r   r   g       @g7A`?r   gΎZ5@)r   logpisqrt)r    Zsgnr!   r
   Zv2Zv3r   r   r   erf_inv<   s    
r$   c                 C  s   dt | d d  S )Ng'e?r   r   )r$   )r   r   r   r   compute_probitI   s    r%   c                 C  s   ddt |    | jS )Nr   )r   r   ZastypeZdtype)r    r   r   r   expitP   s    r&   )
__future__r   Znumpyr   r   Z	vectorizeZlogisticr   r   r   r$   r%   Zprobitr&   r   r   r   r   <module>   s   


