
    ug                         d Z ddlmZmZ ddlZddlmZ eeej                  ej                  ej                  ej                  f      ZdededefdZdededefd	Zdededefd
Zy)z4
These functions match what the spec of hnswlib is.
    )UnioncastN)NDArrayxyreturnc                 h    t         j                  j                  | |z
        dz  j                         S )N   )nplinalgnormitemr   r   s     V/var/www/openai/venv/lib/python3.12/site-packages/chromadb/utils/distance_functions.pyl2r      s'    IINN1q5!Q&,,..    c           	      n   d}| j                   t        j                  k(  s|j                   t        j                  k(  rd}t        t        dt        j
                  | |      t        j                  j                  |       t        j                  j                  |      z  |z   z  z
  j                               S )NgKH9gHz>      ?)	dtyper   float16r   floatdotr   r   r   )r   r   NORM_EPSs      r   cosiner      s    
 Hww"**2:: 5"&&A,299>>!#4ryy~~a7H#HH"TUU
$&	 r   c                 l    t        t        dt        j                  | |      z
  j	                               S )Nr   )r   r   r   r   r   r   s     r   ipr      s'    bffQl*00233r   )__doc__typingr   r   numpyr   numpy.typingr   int32float32int16r   Vectorr   r   r   r    r   r   <module>r&      s       	rxxRXXrzzAB	C/& /V / /f  E  4& 4V 4 4r   