
    Rǻi                     v    d dl mZ g dZd Zd Zd Z ej                  dee	      Z
de
de	d	eee
f   fd
Zd Zy)   )_typing)nano_addnano_divnano_divmodround_half_to_evensymmetric_divmodc                 B    t        d| z        t        d|z        z   dz  S )a  
    Add with nanosecond precission.

        >>> 0.7 + 0.2
        0.8999999999999999
        >>> -0.7 + 0.2
        -0.49999999999999994
        >>> nano_add(0.7, 0.2)
        0.9
        >>> nano_add(-0.7, 0.2)
        -0.5

    :param x:
    :param y:
    :returns:
     ʚ;)intxys     T/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/neo4j/time/_arithmetic.pyr   r      s&    " 
Q#j1n"55CC    c                 <    t        d| z        t        d|z        z  S )a  
    Div with nanosecond precission.

        >>> 0.7 / 0.2
        3.4999999999999996
        >>> -0.7 / 0.2
        -3.4999999999999996
        >>> nano_div(0.7, 0.2)
        3.5
        >>> nano_div(-0.7, 0.2)
        -3.5

    :param x:
    :param y:
    :returns:
    r
   )floatr   r   s     r   r   r   1   s!    " a 3zA~#666r   c                     t        |       }t        d| z        }t        d|z        }t        ||      \  }}t        |       ||dz        fS )z
    Divmod with nanosecond precission.

        >>> divmod(0.7, 0.2)
        (3.0, 0.09999999999999992)
        >>> nano_divmod(0.7, 0.2)
        (3, 0.1)

    :param x:
    :param y:
    :returns:
    r
   )typer   divmod)r   r   numbernxnyqrs          r   r   r   E   sP     !WF	Z!^	B	Z!^	B"b>DAqq66!j.)))r   
_TDividenddividenddivisorreturnc                     t        |       }| dk\  r"t        | |      \  }}t        |       ||      fS t        |  |      \  }}t        |        ||       fS )N    )r   r   r   )r   r   r   quotient	remainders        r   r   r   \   se     (^F1}$Xw7)8}fY///$hY8)H~y 1111r   c                     d| z  }|t        |      k(  r0|dz  dk(  r(t        | dz         }t        | dz
        }|dz  dk(  r|S |S t        |       S )a  
    Round x.5 towards the nearest even integer.

    >>> round_half_to_even(3)
        3
        >>> round_half_to_even(3.2)
        3
        >>> round_half_to_even(3.5)
        4
        >>> round_half_to_even(3.7)
        4
        >>> round_half_to_even(4)
        4
        >>> round_half_to_even(4.2)
        4
        >>> round_half_to_even(4.5)
        4
        >>> round_half_to_even(4.7)
        5

    :param n:
    :returns:
    
      g      ?r   r    )r   round)nten_nupdowns       r   r   r   h   s[    0 FEE
urzQS\1s7|!Vq[r*d*Qxr   N) r   t__all__r   r   r   TypeVarr   r   r   tupler   r    r   r   <module>r1      sb   " D(7(*( QYY|S%0
	2	2#(	2
3
?	2r   