K ik2ddlddlddlZdZdZdZy))*Nc&dt_tddzdk(sJtddzdk(sJtddzd k(sJtdd zd k(sJtd dzjd sJtd dzjdsJtd dzjdsJtd d zjdsJtd dzjdsJtd dzjdsJy)Ng@i@g?gg?ggP? gR[:XL @gXs@gIHb=?g3i?g333333?g[-?g333333ӿgRB3Ϲ ?)mpdpsmpfae]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mpmath/tests/test_power.pytest_fractional_powrs BF r7c>T !! ! r7c>Q   r7d?e ## # r7d?l ** * GsN  1 22 2 GsN  0 11 1 GtO   3 44 4 GtO   5 66 6 GsN  1 22 2 GtO   3 44 4rc tjddD]}tdD]}tjd|dz zd|z}tjdd}||z}t t t |t ||t|ksJt t t |t ||t|kDrJy)zR Test that inexact integer powers are rounded in the right direction. i)r 52dN) randomseedrangerandintto_intmpf_powfrom_int round_downround_up)preciababs rtest_pow_integer_directionr's  KKRr RAq46{AtG4Aq#&AAB'(1+x{D*MNQSS SS'(1+x{D(KLrQ QQ  RRrcd}dD]6\}}|t_tdtd| dzzz}tdtd| dzzz }| }| }|t_t}||d|dkDsJ||d|dk(sJ||d|dksJ||d|dk(sJ||d|dkDsJ||d|dk(sJ||d|dkDsJ||d|dk(sJ||d|dk(sJ||d|dkDsJ||d|dk(sJ||d|dksJ||d |dk(sJ||d |dkDsJ||d |dk(sJ||d |dkDsJt}||d|dk(sJ||d|dksJ||d|dk(sJ||d|dkDsJ||d|dk(sJ||d|dksJ||d|dk(sJ||d|dksJ||d|dksJ||d|dk(sJ||d|dkDsJ||d|dk(sJ||d |dksJ||d |dk(sJ||d |dksJ||d |dk(sJt }||d|dkDsJ||d|dk(sJ||d|dk(sJ||d|dkDsJ||d|dkDsJ||d|dk(sJ||d|dkDsJ||d|dk(sJ||d|dk(sJ||d|dkDsJ||d|dkDsJ||d|dk(sJ||d |dk(sJ||d |dkDsJ||d |dk(sJ||d |dkDsJt }||d|dk(sJ||d|dksJ||d|dksJ||d|dk(sJ||d|dk(sJ||d|dksJ||d|dk(sJ||d|dksJ||d|dksJ||d|dk(sJ||d|dk(sJ||d|dksJ||d |dksJ||d |dk(sJ||d |dksJ||d |dk(r7Jd t_y ) 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`tt|j|tj|S)N)make_mpf mpf_pow_int_mpf_r r")xnrs rpowrz'test_pow_epsilon_rounding..powrCs  AGGQ;<#sU@=7T*q6CFfWQY//q6CFfWQY//99 Ha#a'''Ha#q(((Ha#b(((Ha#r)))Ha#a'''Ha#q(((Ha#a'''Ha#q(((Hb!$)))Hb!$q(((Hb!$***Hb!$r)))Hb!$)))Hb!$q(((Hb!$)))Hb!$q((( Ha#q(((Ha#a'''Ha#r)))Ha#b(((Ha#q(((Ha#a'''Ha#q(((Ha#a'''Hb!$q(((Hb!$)))Hb!$r)))Hb!$***Hb!$q(((Hb!$)))Hb!$q(((Hb!$))) Ha#a'''Ha#q(((Ha#r)))Ha#b(((Ha#a'''Ha#q(((Ha#a'''Ha#q(((Hb!$)))Hb!$q(((Hb!$r)))Hb!$***Hb!$)))Hb!$q(((Hb!$)))Hb!$q((( Ha#q(((Ha#a'''Ha#b(((Ha#r)))Ha#q(((Ha#a'''Ha#q(((Ha#a'''Hb!$q(((Hb!$)))Hb!$***Hb!$r)))Hb!$q(((Hb!$)))Hb!$q(((Hb!$)))iT*lBFr)mpmath mpmath.libmprrr'r>rrrrAs  5 R yr