
    g                     h    d Z ddlT ddlT d Zd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd ZdS )z+
Test bit-level integer and mpf operations
    )*c                     t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          ddz            d	k    sJ t          ddz  dz
            dk    sJ d S )
Nr                     d   e   )bitcount     U/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/tests/test_bitwise.pytest_bitcountr      s    A;;!A;;!A;;!A;;!AsFs""""AsF1H$$$$$$r   c                  >   t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          ddz            dk    sJ t          ddz  dz
            dk    sJ d S )Nr   r   r
   r   r   r   r   )trailingr   r   r   test_trailingr      s    A;;!A;;!A;;!A;;!A;;!AsFs""""AsF1H""""""r   c                     t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          d	ddt                    d d         dk    sJ t          d
ddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ d S )Nr   r	   r   r   r   r      r      r         r   r   r   )from_man_exp
round_downr   r   r   test_round_downr#      s    2q*--bqb1Y>>>>b!Z00!4
BBBBb!Z00!4
BBBBb!Z00!4
BBBBr1j11"1"5CCCCr1j11"1"5CCCCr1j11"1"5CCCCCCr   c                     t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         d	k    sJ t          d
ddt                    d d         d	k    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ d S )Nr   r   r	   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r	   r    )r!   round_upr   r   r   test_round_upr(   "   s    2q(++BQB/9<<<<b!X..rr2j@@@@b!X..rr2i????b!X..rr2i????r1h//3zAAAAr1h//3y@@@@r1h//3y@@@@@@r   c                     t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          d	ddt                    d d         dk    sJ t          d
ddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ d S )Nr   r   r	   r   r   r   r   r   r   r   r   r   r&   r    )r!   round_floorr   r   r   test_round_floorr+   +   s    2q+..rr2i????b![11"1"5CCCCb![11"1"5CCCCb![11"1"5CCCCr1k222A26*DDDDr1k222A26)CCCCr1k222A26)CCCCCCr   c                     t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         d	k    sJ t          d
ddt                    d d         d	k    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ d S )Nr   r   r	   r   r   r   r   r   r%   r   r   r   r   r    )r!   round_ceilingr   r   r   test_round_ceilingr.   4   s    2q-00!4	AAAAb!]33BQB7:EEEEb!]33BQB79DDDDb!]33BQB79DDDDr1m44RaR8JFFFFr1m44RaR8JFFFFr1m44RaR8JFFFFFFr   c                     t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          d	ddt                    d d         d
k    sJ t          dddt                    d d         d
k    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ t          dddt                    d d         dk    sJ d S )Nr   r   r	   r   r   r   r         r%         )r   r   r      r   r   i	ir&   ii)r   r   r   i)r!   round_nearestr   r   r   test_round_nearestr6   =   s   2q-00!4	AAAAb!]33BQB7:EEEEb!]33BQB7:EEEEb!]33BQB79DDDDb!]33BQB79DDDDb!]33BQB79DDDDb!]33BQB7:EEEEr1m44RaR8JFFFFr1m44RaR8JFFFFr1m44RaR8IEEEEr1m44RaR8IEEEEr1m44RaR8IEEEEr1m44RaR8JFFFFFFr   c                  b   t          dddt                    dk    sJ t          dddt                    dk    sJ t          dd	d
t                    dk    sJ t          dd	d
t                    dk    sJ t          dd	dt                    dk    sJ t          dd	dt                    dk    sJ d S )Nl   i5   )r   r   r   r   l   ~? i)r   r   r   r      r   r	   )r   r      r   i)r   r   r:   r   r   r   )r   r   r   r   r    )r   r   r   r   )r!   r'   r5   r*   r   r   r   test_rounding_bugsr;   L   s    )3H==MMMM,c2}EEUUUUAq(++|;;;;Q;//<????Q8,,<<<<aK00L@@@@@@r   c                  *   t          dd          } t          dd          }t          dd          }d}t          | |dd          |k    sJ t          ||dd          |k    sJ t          || dd          |k    sJ t          ||dd          |k    sJ d S )	Ni&  ii8r   )r   i  i
   r>   d)r!   mpf_add)abczs       r   test_rounding_issue_200rE   U   s    T$AT$ARAA1aS!!Q&&&&1aS!!Q&&&&1aS!!Q&&&&1aS!!Q&&&&&&r   c                  2   t           } t          d          }t          d          }t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt                    |k    sJ t          | ddt
                    |k    sJ t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt
                    | k    sJ t          | ddt                    |k    sJ t          | ddt                    |k    sJ t          |           } t          |          }t          |          }t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt                    |k    sJ t          | ddt
                    |k    sJ t          | ddt                    |k    sJ t          | ddt                    |k    sJ t          | ddt                    | k    sJ t          | ddt
                    | k    sJ d S )Ng?g     ?r   r8   r   )	fone
from_floatmpf_perturbr5   r'   r-   r"   r*   mpf_neg)rA   rB   rC   s      r   test_perturbrK   _   s   A&''A%&&Aq!R//14444q!R//14444q!R**a////q!R//14444q!R,,1111q!R--2222q!R**a////q!R//14444q!R,,1111q!R--2222

A

A

Aq!R//14444q!R//14444q!R**a////q!R--2222q!R,,1111q!R//14444q!R**a////q!R--2222q!R,,1111q!R//1444444r   c                  z   t           } t           | d           | d                     | d          k    sJ t           | d           | d                     | d          k    sJ t           | d           | d                     | d          k    sJ t           | d           | d                     | d          k    sJ t          t          t           | d	                    t                     | d	          k    sJ t          t           | d	          t                    t                     | d	          k    sJ t          t          t           | d
                    t                     | d
          k    sJ t          t           | d
          t                    t                     | d
          k    sJ t          t          t                    t          k    sJ t          t          t                    t          k    sJ t          t          t                    t          k    sJ d S )Ng      @g      @g      @g      g      ?g      g      g      g0.++g0.+)rH   r@   mpf_subrG   fzero)ffs    r   test_add_exactrP   {   s   	B22c77BBsGG$$3////22c77BBtHH%%C000022d88RRWW%%D111122d88RRXX&&""T((222274F,,d33rr&zzAAAA722f::t,,d33rr&zzAAAA74G--t447CCCC722g;;--t447CCCC44''''5$4''''5%  E))))))r   c                  h   dt           _        t          d          } dD ]}t          dd|dz
  z            }t          dd|z            }t          dd|dz   z            }t          dd|dz
  z             }t          dd|z             }t          dd|dz   z             }| |z   |k    sJ | |z   |k    sJ | |z   |k    sJ | |z   | k    sJ | |z   | k    sJ | |z   | k    sJ || z   |k    sJ || z   |k    sJ || z   |k    sJ || z   | k    sJ || z   | k    sJ || z   | k    sJ | |z
  | k    sJ | |z
  | k    sJ | |z
  | k    sJ | |z
  | k    sJ | |z
  | k    sJ | |z
  | k    sJ || z
  |k    sJ || z
  |k    sJ || z
  |k    sJ || z
  |  k    sJ || z
  |  k    sJ || z
  |  k    sJ d S )Nr   r   )    @   r
   )mpdpsmpfldexp)xprA   rB   rC   r?   efs           r   test_long_exponent_shiftsr\      sY   BF 	AA  !A!H!AqDMM!A!H!Q1XI!QTENN!Q1XI!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!{{{{!{{{{!{{{{!zzzz!zzzz!zzzz!zzzz!zzzz!zzzz!{{{{!{{{{!{{{{{= r   c            
         dt           _        t          d          t          d          t          z   t          d          t          z
  t          d           t          z   t          d           t          z
  fD ]} t	          |           }t	          t          | ddd                    }||k    sJ t          | |           }t          |          }t          t          |ddd                    }||k    sJ dD ]G}t          | j	        |          }t          t          | dd|          j	        |          }||k    sJ Hdt           _        d S )	NrS   r   r   r8   n)precrounding)r^   r?   ur[   rC   )rnd)
rT   r_   rV   epsfloatfaddmpccomplexto_float_mpf_)rX   fafbrD   cacbrb   s          r   test_float_roundingrn      s8   BG!ffc!ffSj#a&&*s1vvgckCFF73;G  1XX4!S11122Rxxxx!HHQZZT!A2s33344Rxxxx, 	 	C!'s+++B$qC888>CHHHB88888	 BGGGr   N)__doc__mpmathmpmath.libmpr   r   r#   r(   r+   r.   r6   r;   rE   rK   rP   r\   rn   r   r   r   <module>rr      s	           % % %# # #D D DA A AD D DG G GG G GA A A' ' '5 5 58* * *# # #J    r   