U
    ZÊ¹jä  ã                   @   sˆ   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZ d
d„ Zdd„ ZdS )é    )Úx)ÚS)ÚAlgebraicNumber)Úsqrt)ÚPolyÚcyclotomic_poly)ÚQQ)ÚDomainMatrixÚDM)Ú	round_two)Úraisesc                  C   s   t tdd„ ƒ t tdd„ ƒ tdƒt dt¡dftdƒt dt¡d	ftd
 d tddgddggtƒdftd
 d tddgddggtƒdftd td
  d
t  d tdddgdddgdddggtƒ ¡ dftd dtd
   dt  d tdddgtƒ ¡ dftd dtd
   dt  d tdddgtƒ ¡ dftd dtd
   t d tdddgtƒ ¡ dftd dtd
   dt  d tdddgtƒ ¡ dftd dtd
   d tdddgtƒ ¡ dftd dtd
   dt  d tdddgtƒ ¡ dftd dtd
   d tddd gtƒ ¡ dftd dtd
   dt  d tdddgtƒ ¡ d!ftd dtd
   t d tdddgtƒ ¡ d"ftd dtd
   dt  d tdddgtƒ ¡ d#ftd dtd
   dt  d td$ddgtƒ ¡ d%ftd dtd
   dt  d td&ddgtƒ ¡ d!ftd dtd
   d
t  d td'ddgtƒ ¡ d(ftd dtd
   dt  d td'd)dgtƒ ¡ d*ftd d+td
   dt  d td'ddgtƒ ¡ d,ftd d-td
   d+t  d. td/ddgtƒ ¡ d0fdtd  dtd
   d1t  d2 tdddgdddgdddggtƒ ¡ dftddƒtd  tddƒtd
   td1dƒt  td2dƒ tdddgdddgdddggtƒ ¡ dff} | D ]T\}}}t 	|¡}| 
¡ j}| ¡ }||k�sÚt‚| ¡ |  ¡ d
 dk�s¦t‚�q¦d S )3Nc                   S   s   t ttd d ƒƒS )Né   é   )r   r   r   © r   r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/numberfields/tests/test_basis.pyÚ<lambda>   ó    z test_round_two.<locals>.<lambda>c                   S   s   t ttd tdƒ ƒƒS )Nr   )r   r   r   r   r   r   r   r   r      r   é   é   é}   é   é   iY¾ÿÿr   r   ©r   r   r   é   é   é   i	þÿÿ)r   ©r   r   r   )r   r   r   )r   r   r   i­ÿÿÿ)r   r   r   )r   r   r   i”ÿÿÿ)r   r   )r   r   iáÿÿÿi  )©r   r   r   r   iyÿÿÿéQ   )r   )r   r   r   )r   r   r   é1   iøÿÿitÿÿÿ))r   r   ©r   r   r    iQÿÿÿ))r   r   )r   r   )r   r   )r   r   r   i”Æÿÿ)r   r   r   i]ýÿÿé	   i�  é   é   )©r   r   r   r$   iTëÿÿé
   é(   )r   Ú
ValueErrorr   r	   Úeyer   r   r
   Z	transposeZalg_field_from_polyZmaximal_orderZ	QQ_matrixZdiscriminantÚAssertionErrorÚinvZdet)ZcasesÚfZB_expZd_expÚKÚBÚdr   r   r   Útest_round_two   s@    ""B4404,4,404444444JbÒ0

r/   c                  C   s¤   t tdƒdd�} t | ¡}| ¡ }|jdd�}|jdd�}||dgƒ|tjtjgƒgks\t‚|dtj| d  gksvt‚||j 	dg¡|j 	tjtjg¡gks t‚d S )	Nr   Úalpha)ÚaliasZsympy)ÚfmtÚalgr   r   )
r   r   r   Zalgebraic_fieldZintegral_basisr   ZHalfr)   ÚextZfield_element)r0   ÚkÚB0ZB1ZB2r   r   r   Ú"test_AlgebraicField_integral_basisL   s    
"ÿr7   N)Z	sympy.abcr   Z
sympy.corer   Zsympy.core.numbersr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.polysr   r   Zsympy.polys.domainsr   Zsympy.polys.matricesr	   r
   Zsympy.polys.numberfields.basisr   Zsympy.testing.pytestr   r/   r7   r   r   r   r   Ú<module>   s   @