
    gk                     0    d dl T d dlT d dlZd Zd Zd ZdS )    )*Nc                     dt           _        t          d          dz  dk    sJ t          d          dz  dk    sJ t          d          dz  d	k    sJ t          d          d
z  dk    sJ t          d          dz                      d          sJ t          d          dz                      d          sJ t          d          dz                      d          sJ t          d          d
z                      d          sJ t          d          dz                      d          sJ t          d          dz                      d          sJ d S )N      g      @i   @   g      ?   g      g      ?g      g      P?
   gR[:XL	@gXs@gIHb=?g3i?g333333?g[-?g333333ӿgRB3Ϲ	?)mpdpsmpfae     S/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/tests/test_power.pytest_fractional_powr      sY   BFr77c>T!!!!r77c>Qr77d?e####r77d?l****GGsN122222GGsN011111GGtO 344444GGtO 566666GGsN122222GGtO 34444444r   c            
         t          j        d           dD ]} t          d          D ]}t          j        d| dz
  z  d| z            }t          j        dd          }||z  }t	          t          t          |          t          |          | t                              |k     sJ t	          t          t          |          t          |          | t                              |k    sJ ÌdS )zR
    Test that inexact integer powers are rounded in the right
    direction.
    i  )r	   5      2         d   N)	randomseedrangerandintto_intmpf_powfrom_int
round_downround_up)preciababs        r   test_pow_integer_directionr'      s    
 K R Rr 	R 	RAq46{AtG44Aq#&&AAB'(1++x{{D*MMNNQSSSSS'(1++x{{D(KKLLrQQQQQ	RR Rr   c                  
   d } dD ]L\  }}|t           _        t          d          t          d          | dz   z  z   }t          d          t          d          | dz   z  z
  }| }| }|t           _        t          } | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d	|          dk    sJ  | |d	|          dk    sJ  | |d	|          dk    sJ  | |d	|          dk    sJ t          } | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d	|          dk     sJ  | |d	|          dk    sJ  | |d	|          dk     sJ  | |d	|          dk    sJ t
          } | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d	|          dk    sJ  | |d	|          dk    sJ  | |d	|          dk    sJ  | |d	|          dk    sJ t          } | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d|          dk     sJ  | |d|          dk    sJ  | |d|          dk    sJ  | |d|          dk     sJ  | |d	|          dk     sJ  | |d	|          dk    sJ  | |d	|          dk     sJ  | |d	|          dk    sJ Nd
t           _        dS )a  
    Stress test directed rounding for powers with integer exponents.
    Basically, we look at the following cases:

    >>> 1.0001 ** -5 # doctest: +SKIP
    0.99950014996500702
    >>> 0.9999 ** -5 # doctest: +SKIP
    1.000500150035007
    >>> (-1.0001) ** -5 # doctest: +SKIP
    -0.99950014996500702
    >>> (-0.9999) ** -5 # doctest: +SKIP
    -1.000500150035007

    >>> 1.0001 ** -6 # doctest: +SKIP
    0.99940020994401269
    >>> 0.9999 ** -6 # doctest: +SKIP
    1.0006002100560125
    >>> (-1.0001) ** -6 # doctest: +SKIP
    0.99940020994401269
    >>> (-0.9999) ** -6 # doctest: +SKIP
    1.0006002100560125

    etc.

    We run the tests with values a very small epsilon away from 1:
    small enough that the result is indistinguishable from 1 when
    rounded to nearest at the output precision. We check that the
    result is not erroneously rounded to 1 in cases where the
    rounding should be done strictly away from 1.
    c                 ^    t          t          | j        |t          j        |                    S )N)make_mpfmpf_pow_int_mpf_r
   r"   )xnrs      r   powrz'test_pow_epsilon_rounding.<locals>.powrC   s"    AGQ;;<<<r   ))r      )i  i  r   r         ir   N)r
   r"   r   r!   r    round_ceilinground_floorr   )r0   inprecoutprecpos10001pos09999neg10001neg09999r/   s           r   test_pow_epsilon_roundingr>   #   sj   @= = = 7 T* T*q66CFFfWQY//q66CFFfWQY//99tHa##a''''tHa##q((((tHa##b((((tHa##r))))tHa##a''''tHa##q((((tHa##a''''tHa##q((((tHb!$$))))tHb!$$q((((tHb!$$****tHb!$$r))))tHb!$$))))tHb!$$q((((tHb!$$))))tHb!$$q((((tHa##q((((tHa##a''''tHa##r))))tHa##b((((tHa##q((((tHa##a''''tHa##q((((tHa##a''''tHb!$$q((((tHb!$$))))tHb!$$r))))tHb!$$****tHb!$$q((((tHb!$$))))tHb!$$q((((tHb!$$))))tHa##a''''tHa##q((((tHa##r))))tHa##b((((tHa##a''''tHa##q((((tHa##a''''tHa##q((((tHb!$$))))tHb!$$q((((tHb!$$r))))tHb!$$****tHb!$$))))tHb!$$q((((tHb!$$))))tHb!$$q((((tHa##q((((tHa##a''''tHa##b((((tHa##r))))tHa##q((((tHa##a''''tHa##q((((tHa##a''''tHb!$$q((((tHb!$$))))tHb!$$****tHb!$$r))))tHb!$$q((((tHb!$$))))tHb!$$q((((tHb!$$)))))BFFFr   )mpmathmpmath.libmpr   r   r'   r>   r   r   r   <module>rA      se            5 5 5R R R y y y y yr   