[qbNdZddlmZddlmZmZmZddlmZm Z d dZ dZ dgZ dS) zD ``python-future``: pure Python implementation of Python 3 round(). )division)PYPYPY26 bind_method)DecimalROUND_HALF_EVENNcd}|d}d}t|dr||Std| z}dtt |vrt |}t |tr|}n+tstj|}nt|}|dkrt||z |z}n| |t}|rt|St |S) a See Python 3 documentation: uses Banker's Rounding. Delegates to the __round__ method if for some reason this exists. If not, rounds a number to a given precision in decimal digits (default 0 digits). This returns an int when called with one argument, otherwise the same type as the number. ndigits may be negative. See the test_round method in future/tests/test_builtins.py for examples. FNTr __round__10numpy)rounding)hasattrr rreprtypefloat isinstancer from_float from_float_26newroundquantizerint)numberndigits return_intexponentdresults /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/future/builtins/newround.pyrr s J v{##)(((t}}'*H$tF||$$$$v&'""&  &"6**AAf%%A{{!h,''(2H??6{{V}}cddl}ddlm}t|tt frt |S||s||rt t|S| d|dkrd}nd}t| \}}d}||dz }||t|d|zz| }|S)aConverts a float to a decimal number, exactly. Note that Decimal.from_float(0.1) is not the same as Decimal('0.1'). Since 0.1 is not exactly representable in binary floating point, the value is stored as the nearest representable value which is 0x1.999999999999ap-4. The exact equivalent of the value in decimal is 0.1000000000000000055511151231257827021181583404541015625. >>> Decimal.from_float(0.1) Decimal('0.1000000000000000055511151231257827021181583404541015625') >>> Decimal.from_float(float('nan')) Decimal('NaN') >>> Decimal.from_float(float('inf')) Decimal('Infinity') >>> Decimal.from_float(-float('inf')) Decimal('-Infinity') >>> Decimal.from_float(-0.0) Decimal('-0') rN)_dec_from_tripleg?cj|dkr,ttt|dz SdS)Nr)lenbinabs)rs r bit_lengthz!from_float_26..bit_length_s/ 66s3q66{{##a' '1r)mathdecimalr!rrlongrisinfisnanrcopysignr'as_integer_ratiostr) f_mathr!signnrr(krs rrr=s*((((((!c4[!!qzz {{1~~ Q tAww ~~c1$$ q66 " " $ $DAq  1 A  dC!Q$KK! 4 4F Mrr)N) __doc__ __future__r future.utilsrrrr+rrrr__all__rrr<s 0000000000-,,,,,,,++++`)))X ,r