a
    ¬<b  ć                   @   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s0J tdttd d ksJJ tdttd dtd   d kspJ td	ttd
 dtd   dtd   dtd   d ks®J dd tddD } tdd tddd ” D ttdd t	| D ksžJ d S )Nc                   S   s
   t dtS ©Nr   )r
   r   © r   r   śs/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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>(   r   z-test_swinnerton_dyer_poly.<locals>.<listcomp>é   c                 S   s   g | ]}|  d ”qS ©r"   )Śnr&   r   r   r   r)   )   r   c                 S   s   g | ]}t |  d ”qS r+   )r   r,   r&   r   r   r   r)   +   r   )
r	   Ś
ValueErrorr
   r   r   ŚrangeŚstrZ	all_rootsŚsortedr   )Śpr   r   r   Śtest_swinnerton_dyer_poly   s    "&’.’’žr2   c                   C   są   t tdd  tdtddttd ks,J tdttd ksBJ tdttd ksXJ tdttd t d ksvJ tdttd d ksJ td	ttd td  td  t d ks¾J td
ttd t d ksÜJ 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   Śtest_cyclotomic_poly.   s    .r3   c                   C   sź   t tdd  t tdd  tdtttddttt t ksBJ tdtttfddttt t ksjJ tdtttdksJ tdttttt t ksJ tdttttt tt  tt  ksČJ td	ttttt t ksęJ 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*   r5   r   r   r   r   r   =   r   r   Tr   r   r   r"   )r	   r-   r   r   r   r   r   r   r   r   r   Śtest_symmetric_poly;   s    &(*r6   c                  C   s   t tddddd} t|  ” dks&J tdd t|  ” D du sHJ t tddddd} |  ” dksjJ td	d |  ” D du sJ d S )
Nr!   é’’’éd   Fr   c                 s   s&   | ]}d |  kodkn  V  qdS ©r7   r8   Nr   ©r'   Zcoeffr   r   r   Ś	<genexpr>L   r   z#test_random_poly.<locals>.<genexpr>Tc                 s   s&   | ]}d |  kodkn  V  qdS r9   r   r:   r   r   r   r;   Q   r   )r   r   r   ZdegreeŚallZcoeffs)Zpolyr   r   r   Śtest_random_polyH   s    "r=   c                  C   sb  t d\} }}}}}}}tdtdks*J tdt|ks<J tdt|t|  | |  |t|   ||    ksrJ tdt|t|  t|  | | | |   |t|   t|  ||  ||    |t|   t|  ||  ||    ksģJ tdt|t|  t|  t|  | | | |  | |   |t|   t|  t|  ||  ||  ||    |t|   t|  t|  ||  ||  ||    |t|   t|  t|  ||  ||  ||    ksĢJ 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*J tdtdddksBJ tdtddtd ks^J 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"   r@   )r%   rA   r#   rB   r   r   r   r   r   p   s    )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ż’
rF   c                  C   s   t d\} }}tdt\}}}dd | ||fD |||gks@J t d\} }}tdt\}}}dd | ||fD |||gksJ d S )Nr   c                 S   s   g | ]}|j j qS r   ©Śrep©r'   Śtr   r   r   r)   {   r   z)test_fateman_poly_F_1.<locals>.<listcomp>r"   c                 S   s   g | ]}|j j qS r   rG   rI   r   r   r   r)      r   )r   r   r   ©ŚfŚgŚhŚFŚGŚHr   r   r   Śtest_fateman_poly_F_1w   s    "rR   c                  C   s   t d\} }}tdt\}}}dd | ||fD |||gks@J t d\} }}tdt\}}}dd | ||fD |||gksJ d S )Nr   c                 S   s   g | ]}|j j qS r   rG   rI   r   r   r   r)      r   z)test_fateman_poly_F_2.<locals>.<listcomp>r"   c                 S   s   g | ]}|j j qS r   rG   rI   r   r   r   r)      r   )r   r   r   rK   r   r   r   Śtest_fateman_poly_F_2   s    "rS   c                  C   s   t d\} }}tdt\}}}dd | ||fD |||gks@J t d\} }}tdt\}}}dd | ||fD |||gksJ d S )Nr   c                 S   s   g | ]}|j j qS r   rG   rI   r   r   r   r)      r   z)test_fateman_poly_F_3.<locals>.<listcomp>r"   c                 S   s   g | ]}|j j qS r   rG   rI   r   r   r   r)      r   )r   r   r   rK   r   r   r   Śtest_fateman_poly_F_3   s    "rT   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   r2   r3   r6   r=   rF   rR   rS   rT   r   r   r   r   Ś<module>   s$   4#