
    [h                     j    S r SSK7  SSK7  S rS rS rS rS rS rS	 r	S
 r
S rS rS rS rS rg)z+
Test bit-level integer and mpf operations
    )*c                      [        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        SS-  5      S	:X  d   e[        SS-  S-
  5      S:X  d   eg )
Nr                     d   e   )bitcount     Q/var/www/auris/envauris/lib/python3.13/site-packages/mpmath/tests/test_bitwise.pytest_bitcountr      s|    A;!A;!A;!A;!AsFs"""AsF1H$$$r   c                     [        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        SS-  5      S:X  d   e[        SS-  S-
  5      S:X  d   eg )Nr   r   r
   r   r   r   r   )trailingr   r   r   test_trailingr      s    A;!A;!A;!A;!A;!AsFs"""AsF1H"""r   c                  ~   [        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        S	SS[        5      S S S:X  d   e[        S
SS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   eg )Nr   r	   r   r   r   r      r      r         r   r   r   )from_man_exp
round_downr   r   r   test_round_downr#      s    2q*-bq1Y>>>b!Z0!4
BBBb!Z0!4
BBBb!Z0!4
BBBr1j1"15CCCr1j1"15CCCr1j1"15CCCr   c                  ~   [        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S	:X  d   e[        S
SS[        5      S S S	:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   eg )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(+BQ/9<<<b!X.r2j@@@b!X.r2i???b!X.r2i???r1h/3zAAAr1h/3y@@@r1h/3y@@@r   c                  ~   [        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        S	SS[        5      S S S:X  d   e[        S
SS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   eg )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2i???b![1"15CCCb![1"15CCCb![1"15CCCr1k22A6*DDDr1k22A6)CCCr1k22A6)CCCr   c                  ~   [        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S	:X  d   e[        S
SS[        5      S S S	:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   eg )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!4	AAAb!]3BQ7:EEEb!]3BQ79DDDb!]3BQ79DDDr1m4Ra8JFFFr1m4Ra8JFFFr1m4Ra8JFFFr   c                     [        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        S	SS[        5      S S S
:X  d   e[        SSS[        5      S S S
:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   e[        SSS[        5      S S S:X  d   eg )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!4	AAAb!]3BQ7:EEEb!]3BQ7:EEEb!]3BQ79DDDb!]3BQ79DDDb!]3BQ79DDDb!]3BQ7:EEEr1m4Ra8JFFFr1m4Ra8JFFFr1m4Ra8IEEEr1m4Ra8IEEEr1m4Ra8IEEEr1m4Ra8JFFFr   c                  $   [        SSS[        5      S:X  d   e[        SSS[        5      S:X  d   e[        SS	S
[        5      S:X  d   e[        SS	S
[        5      S:X  d   e[        SS	S[        5      S:X  d   e[        SS	S[        5      S:X  d   eg )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,c2}EUUUAq(+|;;;Q;/<???Q8,<<<aK0L@@@r   c                      [        SS5      n [        SS5      n[        SS5      nSn[        XSS5      U:X  d   e[        XSS5      U:X  d   e[        X SS5      U:X  d   e[        X!SS5      U:X  d   eg )	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1S!Q&&&1S!Q&&&1S!Q&&&1S!Q&&&r   c                  >   [         n [        S5      n[        S5      n[        U SS[        5      U :X  d   e[        U SS[        5      U :X  d   e[        U SS[        5      U:X  d   e[        U SS[
        5      U:X  d   e[        U SS[        5      U :X  d   e[        U SS[        5      U :X  d   e[        U SS[        5      U :X  d   e[        U SS[
        5      U :X  d   e[        U SS[        5      U:X  d   e[        U SS[        5      U:X  d   e[        U 5      n [        U5      n[        U5      n[        U SS[        5      U :X  d   e[        U SS[        5      U :X  d   e[        U SS[        5      U :X  d   e[        U SS[        5      U :X  d   e[        U SS[        5      U:X  d   e[        U SS[
        5      U:X  d   e[        U SS[        5      U:X  d   e[        U SS[        5      U:X  d   e[        U SS[        5      U :X  d   e[        U SS[
        5      U :X  d   eg )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q!R/1444q!R*a///q!R/1444q!R,111q!R-222q!R*a///q!R/1444q!R,111q!R-222
A
A
Aq!R/1444q!R/1444q!R*a///q!R-222q!R,111q!R/1444q!R*a///q!R-222q!R,111q!R/1444r   c                  d   [         n [        U " S5      U " S5      5      U " S5      :X  d   e[        U " S5      U " S5      5      U " S5      :X  d   e[        U " S5      U " S5      5      U " S5      :X  d   e[        U " S5      U " S5      5      U " S5      :X  d   e[        [        [        U " S	5      5      [        5      U " S	5      :X  d   e[        [        U " S	5      [        5      [        5      U " S	5      :X  d   e[        [        [        U " S
5      5      [        5      U " S
5      :X  d   e[        [        U " S
5      [        5      [        5      U " S
5      :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   eg )Ng      @g      @g      @g      g      ?g      g      g      g0.++g0.+)rH   r@   mpf_subrG   fzero)ffs    r   test_add_exactrP   {   sZ   	B2c7BsG$3///2c7BtH%C0002d8RW%D1112d8RX&"T(22274F,d3r&zAAA72f:t,d3r&zAAA74G-t47CCC72g;-t47CCC44'''5$4'''5% E)))r   c                     S[         l        [        S5      n S GHc  n[        SSUS-
  -  5      n[        SSU-  5      n[        SSUS-   -  5      n[        SSUS-
  -  * 5      n[        SSU-  * 5      n[        SSUS-   -  * 5      nX-   U:X  d   eX-   U:X  d   eX-   U:X  d   eX-   U :X  d   eX-   U :X  d   eX-   U :X  d   eX -   U:X  d   eX0-   U:X  d   eX@-   U:X  d   eXP-   U :X  d   eX`-   U :X  d   eXp-   U :X  d   eX-
  U* :X  d   eX-
  U* :X  d   eX-
  U* :X  d   eX-
  U :X  d   eX-
  U :X  d   eX-
  U :X  d   eX -
  U:X  d   eX0-
  U:X  d   eX@-
  U:X  d   eXP-
  U * :X  d   eX`-
  U * :X  d   eXp-
  U * :X  a  GMd   e   g )Nr   r   )    @   r
   )mpdpsmpfldexp)xprA   rB   rC   r?   efs           r   test_long_exponent_shiftsr\      s   BF 	AA!A!H!AqDM!A!H!Q1XI!QTEN!Q1XIzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{zzzzzzzzzzzz{{{{{{= r   c                     S[         l        [        S5      [        S5      [        -   [        S5      [        -
  [        S5      * [        -   [        S5      * [        -
  4 H  n [	        U 5      n[	        [        U SSSS95      nX:X  d   e[        X 5      n[        U5      n[        [        USSSS95      nXE:X  d   eS H<  n[        U R                  US9n[        [        U SSUS9R                  US9nX:X  a  M<   e   M     S[         l        g )	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      s    BG!fc!fSj#a&*s1vgckCF73;G1X4!S12xxHQZT!A2s34xx,C!''s+B$qC8>>CHB8O8 - H BGr   N)__doc__mpmathmpmath.libmpr   r   r#   r(   r+   r.   r6   r;   rE   rK   rP   r\   rn   r   r   r   <module>rr      sZ     %#DADGGA'58*#Jr   