�
I�g�h � �v � d Z ddlZddlmZmZmZmZmZ ddlm Z m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR e efZSeefZTe!efZUe"efZVe#e$fZWe#e$e%fZXd� ZYd� ZZd � Z[d
efd�Z\d� Z]efd
�Z^d� Z_efd�Z`efd�Zadefd�Zbdefd�Zcefd�Zddefd�Zed� Zfefd�Zgefd�Zhefd�Ziefd�Zjefd�Zkefd�Zlefd�Zmefd�Znefd�Zoefd�Zpefd �Zqefd!�Zrefd"�Zsefd#�Ztefd$�Zud%� Zvefd&�Zwefd'�Zxefd(�Zyefd)�Zzd*� Z{efd+�Z|efd,�Z}efd-�Z~efd.�Zefd/�Z�efd0�Z�efd1�Z�efd2�Z�efd3�Z�efd4�Z�efd5�Z�efd6�Z�efd7�Z�efd8�Z�efd9�Z� ed:� � Z� ed;� � Z�d<� Z�efd=�Z�efd>�Z�efd?�Z�efd@�Z�efdA�Z�efdB�Z�dJdD�Z�dJdE�Z�dJdF�Z�dJdG�Z�edHk r6 ddl�m�c m�c m�Z� e�j~ Z~e�jz ZzdS # e�e�f$ r e�dI� � Y dS w xY wdS )Kz-
Low-level functions for complex arithmetic.
� N� )�MPZ�MPZ_ZERO�MPZ_ONE�MPZ_TWO�BACKEND)1�round_floor�
round_ceiling�
round_down�round_up�
round_nearest�
round_fast�bitcount�bctable� normalize�
normalize1�reciprocal_rnd�rshift�lshift�giant_steps�negative_rnd�to_str�to_fixed�from_man_exp�
from_float�to_float�from_int�to_int�fzero�fone�ftwo�fhalf�finf�fninf�fnan�fnone�mpf_abs�mpf_pos�mpf_neg�mpf_add�mpf_sub�mpf_mul�mpf_div�mpf_mul_int� mpf_shift�mpf_sqrt� mpf_hypot�mpf_rdiv_int� mpf_floor�mpf_ceil�mpf_nint�mpf_frac�mpf_sign�mpf_hash�
ComplexResult)�mpf_pi�mpf_exp�mpf_log�mpf_cos_sin�
mpf_cosh_sinh�mpf_tan�mpf_pow_int�
mpf_log_hypot�mpf_cos_sin_pi�mpf_phi�mpf_cos�mpf_sin�
mpf_cos_pi�
mpf_sin_pi�mpf_atan� mpf_atan2�mpf_cosh�mpf_sinh�mpf_tanh�mpf_asin�mpf_acos� mpf_acosh�mpf_nthroot�
mpf_fibonaccic �<