U
    ZÊ¹j§  ã                   @   sð   d Z 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
 ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZm Z  dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dS )z<Tests for functions for generating interesting polynomials. é    )ÚAdd)Úsymbols)Úsqrt)Úprime)ÚZZ)ÚPoly)Úpermute_signs)Úraises)Úswinnerton_dyer_polyÚcyclotomic_polyÚsymmetric_polyÚrandom_polyÚinterpolating_polyÚfateman_poly_F_1Údmp_fateman_poly_F_1Úfateman_poly_F_2Údmp_fateman_poly_F_2Úfateman_poly_F_3Údmp_fateman_poly_F_3)ÚxÚyÚzc                  C   s  t tdd„ ƒ tdtdd�ttd d ƒks0t‚tdtƒtd d ksJt‚tdtƒtd dtd   d kspt‚td	tƒtd
 dtd   dtd   dtd   d ks®t‚dd„ tddƒD ƒ} tdd„ tddd� ¡ D ƒƒtt	dd„ t
| ƒD ƒƒƒksþt‚d S )Nc                   S   s
   t dtƒS ©Nr   )r
   r   © r   r   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_specialpolys.pyÚ<lambda>   ó    z+test_swinnerton_dyer_poly.<locals>.<lambda>é   T©Zpolysé   é   é
   é   é   é(   é   i`  iÀ  i@  c                 S   s   g | ]}t t|ƒƒ‘qS r   )r   r   ©Ú.0Úir   r   r   Ú
<listcomp>(   s     z-test_swinnerton_dyer_poly.<locals>.<listcomp>é   c                 S   s   g | ]}|  d ¡‘qS ©r"   )Únr&   r   r   r   r)   )   s     c                 S   s   g | ]}t |Ž  d ¡‘qS r+   )r   r,   r&   r   r   r   r)   +   s     )r	   Ú
ValueErrorr
   r   r   ÚAssertionErrorÚrangeÚstrZ	all_rootsÚsortedr   )Úpr   r   r   Útest_swinnerton_dyer_poly   s     "& ÿ.ÿÿþr3   c                   C   sà   t tdd„ ƒ tdtdd�ttd ƒks,t‚tdtƒtd ksBt‚tdtƒtd ksXt‚tdtƒtd t d ksvt‚tdtƒtd d ks�t‚td	tƒtd td  td  t d ks¾t‚td
tƒtd t d ksÜt‚d S )Nc                   S   s
   t dtƒS r   )r   r   r   r   r   r   r   /   r   z&test_cyclotomic_poly.<locals>.<lambda>r   Tr   r   r"   r    r*   r%   )r	   r-   r   r   r   r.   r   r   r   r   Útest_cyclotomic_poly.   s    .r4   c                   C   sê   t tdd„ ƒ t tdd„ ƒ tdtttdd�ttt t ƒksBt‚tdtttfdd�ttt t ƒksjt‚tdtttƒdks€t‚tdtttƒtt t ksžt‚tdtttƒtt tt  tt  ksÈt‚td	tttƒtt t ksæt‚d S )
Nc                   S   s   t dtttƒS )Néÿÿÿÿ©r   r   r   r   r   r   r   r   r   <   r   z%test_symmetric_poly.<locals>.<lambda>c                   S   s   t dtttƒS )Nr*   r6   r   r   r   r   r   =   r   r   Tr   r   r   r"   )r	   r-   r   r   r   r   r   r.   r   r   r   r   Útest_symmetric_poly;   s    &(*r7   c                  C   sŒ   t tddddd�} t| ƒ ¡ dks&t‚tdd„ t| ƒ ¡ D ƒƒdksHt‚t tddddd�} |  ¡ dksjt‚td	d„ |  ¡ D ƒƒdksˆt‚d S )
Nr!   éœÿÿÿéd   Fr   c                 s   s&   | ]}d |  kodkn  V  qdS ©r8   r9   Nr   ©r'   Zcoeffr   r   r   Ú	<genexpr>L   s     z#test_random_poly.<locals>.<genexpr>Tc                 s   s&   | ]}d |  kodkn  V  qdS r:   r   r;   r   r   r   r<   Q   s     )r   r   r   Zdegreer.   ÚallZcoeffs)Zpolyr   r   r   Útest_random_polyH   s    "r>   c                  C   sb  t dƒ\} }}}}}}}tdtƒdks*t‚tdtƒ|ks<t‚tdtƒ|t|  | |  |t|   ||    ksrt‚tdtƒ|t|  t|  | | | |   |t|   t|  ||  ||    |t|   t|  ||  ||    ksìt‚tdtƒ|t|  t|  t|  | | | |  | |   |t|   t|  t|  ||  ||  ||    |t|   t|  t|  ||  ||  ||    |t|   t|  t|  ||  ||  ||    k�sÌt‚ttdd„ ƒ ttd	d„ ƒ ttd
d„ ƒ ttdd„ ƒ ttdd„ ƒ tdtddƒdk�s*t‚tdtddƒdk�sBt‚tdtddƒtd k�s^t‚d S )Nzx:4, y:4r   r   r   r"   r    c                   S   s   t dttdfdƒS ©Nr   )r   r"   )r   r   r   r   r   r   r   h   s    z)test_interpolating_poly.<locals>.<lambda>c                   S   s   t dttt dfdƒS r?   ©r   r   r   r   r   r   r   r   j   s    c                   S   s   t dtt tdfdƒS r?   r@   r   r   r   r   r   l   s    c                   S   s   t ddddƒS )Nr   r"   ©r    r*   )r%   é   ©r   r   r   r   r   r   n   s    c                   S   s   t ddddƒS )Nr   r"   rA   )r%   rB   r#   rC   r   r   r   r   r   p   s    )r   r   )r"   r    )r   r   r   r.   r	   r-   )Zx0Úx1Zx2Zx3Zy0Úy1Úy2Zy3r   r   r   Útest_interpolating_polyT   s<    &ÿ""ÿ"þÿ22ÿ2þ2ýÿ
rG   c                  C   s„   t dƒ\} }}tdtƒ\}}}dd„ | ||fD ƒ|||gks@t‚t dƒ\} }}tdtƒ\}}}dd„ | ||fD ƒ|||gks€t‚d S )Nr   c                 S   s   g | ]}|j  ¡ ‘qS r   ©ÚrepZto_list©r'   Útr   r   r   r)   {   s     z)test_fateman_poly_F_1.<locals>.<listcomp>r"   c                 S   s   g | ]}|j  ¡ ‘qS r   rH   rJ   r   r   r   r)   €   s     )r   r   r   r.   ©ÚfÚgÚhÚFÚGÚHr   r   r   Útest_fateman_poly_F_1w   s    "rS   c                  C   s„   t dƒ\} }}tdtƒ\}}}dd„ | ||fD ƒ|||gks@t‚t dƒ\} }}tdtƒ\}}}dd„ | ||fD ƒ|||gks€t‚d S )Nr   c                 S   s   g | ]}|j  ¡ ‘qS r   rH   rJ   r   r   r   r)   ‡   s     z)test_fateman_poly_F_2.<locals>.<listcomp>r"   c                 S   s   g | ]}|j  ¡ ‘qS r   rH   rJ   r   r   r   r)   Œ   s     )r   r   r   r.   rL   r   r   r   Útest_fateman_poly_F_2ƒ   s    "rT   c                  C   s„   t dƒ\} }}tdtƒ\}}}dd„ | ||fD ƒ|||gks@t‚t dƒ\} }}tdtƒ\}}}dd„ | ||fD ƒ|||gks€t‚d S )Nr   c                 S   s   g | ]}|j  ¡ ‘qS r   rH   rJ   r   r   r   r)   “   s     z)test_fateman_poly_F_3.<locals>.<listcomp>r"   c                 S   s   g | ]}|j  ¡ ‘qS r   rH   rJ   r   r   r   r)   ˜   s     )r   r   r   r.   rL   r   r   r   Útest_fateman_poly_F_3�   s    "rU   N))Ú__doc__Zsympy.core.addr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.ntheory.generater   Zsympy.polys.domains.integerringr   Zsympy.polys.polytoolsr   Zsympy.utilities.iterablesr   Zsympy.testing.pytestr	   Zsympy.polys.specialpolysr
   r   r   r   r   r   r   r   r   r   r   Z	sympy.abcr   r   r   r3   r4   r7   r>   rG   rS   rT   rU   r   r   r   r   Ú<module>   s$   4#