a
    Ÿ¬<b-  ã                   @   sN  d 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l
mZ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 ddlmZmZmZmZmZmZmZ ddl m!Z! ddl"m#Z# edƒ\Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.eddd\Z/Z0dd„ Z1dd„ Z2dd„ Z3dd„ Z4dd„ Z5dd„ Z6dd „ Z7d!d"„ Z8d#d$„ Z9d%d&„ Z:d'd(„ Z;d)S )*z@Tests for useful utilities for higher level polynomial classes. é    )ÚMul)ÚIntegerÚpi)ÚEq)ÚS)ÚSymbolÚsymbols)Úexp)Úsqrt)ÚcosÚsin)ÚIntegral)Úraises)Ú_nsortÚ
_sort_gensÚ_unify_gensÚ_analyze_gensÚ_sort_factorsÚparallel_dict_from_exprÚdict_from_expr)ÚPolynomialError)ÚZZzx,y,z,p,q,r,s,t,u,v,wzA,BF)Zcommutativec                  C   s¼   t dƒ} | d | d | d | d g}t| ƒ|ks4J ‚tt| ddd ƒdksPJ ‚tdƒtd	ƒtd
ƒ  }}}t|||fƒ|||gksˆJ ‚tdƒd tdƒd  d }t|gƒ|gks¸J ‚d S )NaP  [3/2 + sqrt(-14/3 - 2*(-415/216 + 13*I/12)**(1/3) - 4/sqrt(-7/3 +
    61/(18*(-415/216 + 13*I/12)**(1/3)) + 2*(-415/216 + 13*I/12)**(1/3)) -
    61/(18*(-415/216 + 13*I/12)**(1/3)))/2 - sqrt(-7/3 + 61/(18*(-415/216
    + 13*I/12)**(1/3)) + 2*(-415/216 + 13*I/12)**(1/3))/2, 3/2 - sqrt(-7/3
    + 61/(18*(-415/216 + 13*I/12)**(1/3)) + 2*(-415/216 +
    13*I/12)**(1/3))/2 - sqrt(-14/3 - 2*(-415/216 + 13*I/12)**(1/3) -
    4/sqrt(-7/3 + 61/(18*(-415/216 + 13*I/12)**(1/3)) + 2*(-415/216 +
    13*I/12)**(1/3)) - 61/(18*(-415/216 + 13*I/12)**(1/3)))/2, 3/2 +
    sqrt(-14/3 - 2*(-415/216 + 13*I/12)**(1/3) + 4/sqrt(-7/3 +
    61/(18*(-415/216 + 13*I/12)**(1/3)) + 2*(-415/216 + 13*I/12)**(1/3)) -
    61/(18*(-415/216 + 13*I/12)**(1/3)))/2 + sqrt(-7/3 + 61/(18*(-415/216
    + 13*I/12)**(1/3)) + 2*(-415/216 + 13*I/12)**(1/3))/2, 3/2 + sqrt(-7/3
    + 61/(18*(-415/216 + 13*I/12)**(1/3)) + 2*(-415/216 +
    13*I/12)**(1/3))/2 - sqrt(-14/3 - 2*(-415/216 + 13*I/12)**(1/3) +
    4/sqrt(-7/3 + 61/(18*(-415/216 + 13*I/12)**(1/3)) + 2*(-415/216 +
    13*I/12)**(1/3)) - 61/(18*(-415/216 + 13*I/12)**(1/3)))/2]é   r   éÿÿÿÿéþÿÿÿT)Ú	separatediüÿÿiüÿÿiüÿÿé   )r   r   Úlenr	   r   r   )ÚrZansÚbÚcÚa© r"   úp/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/polys/tests/test_polyutils.pyÚtest__nsort    s    r$   c                  C   sà  t g ƒdksJ ‚t tgƒtfks$J ‚t tgƒtfks8J ‚t tgƒtfksLJ ‚t ttgƒttfksdJ ‚t ttgƒttfks|J ‚t ttgƒttfks”J ‚t tttgƒtttfks°J ‚t tttgtdtttfksÐJ ‚t tttgtdtttfksðJ ‚t tttgtdtttfksJ ‚t tttgddtttfks4J ‚t tttgddtttfksVJ ‚t tttgddtttfksxJ ‚t tttgddtttfksšJ ‚t tttgddtttfks¼J ‚t tttgddtttfksÞJ ‚t tttgd	dtttfks J ‚t tttgd
dtttfks"J ‚t tttgddtttfksDJ ‚t tttgddtttfksfJ ‚t tttgddtttfksˆJ ‚t tttgtdgdtttfks®J ‚t tttgtdgdtttfksÔJ ‚t tttgtdgdtttfksúJ ‚t tttgtdgdtttfks J ‚t tttgddgdtttfksFJ ‚t tttgddgdtttfkslJ ‚t tttgddgdtttfks’J ‚t tttgddgdtttfks¸J ‚t tttgddtttfksÚJ ‚t tttgddtttfksüJ ‚t tttgddtttfksJ ‚t tttgdddtttfksBJ ‚t tttgdddtttfksfJ ‚t tttgdddtttfksŠJ ‚tdƒ} t | gƒ| fks¨J ‚t t| gƒt| fksÂJ ‚tdƒ}t |ƒ|ksÜJ ‚d S )Nr"   )ÚwrtÚxÚpÚqzx,qzq,xzp,qzq,pzx, qzq, xzp, qzq, pz	x > p > q)Úsortz	p > x > qz	p > q > xzq > p)r%   r)   zq > xzp > xz
1z x0,x1,x2,x10,x11,x12,x20,x21,x22)r   r&   r'   r(   r   r   )Zn1ÚXr"   r"   r#   Útest__sort_gens<   sR      """"""""""""&&&&&&&&"""$$$r+   c                   C   sò  t g g ƒdksJ ‚t tgtgƒtfks*J ‚t tgtgƒtfksBJ ‚t ttgtgƒttfks^J ‚t tgttgƒttfkszJ ‚t ttgttgƒttfks˜J ‚t ttgttgƒttfks¶J ‚t tgtgƒttfksÐJ ‚t tgtgƒttfksêJ ‚t tgttgƒttfksJ ‚t ttgtgƒttfks&J ‚t tttgtttgƒtttfksLJ ‚t tttgtttgƒtttfksrJ ‚t tttgtttgƒtttfks˜J ‚t tttgtttgƒtttfks¾J ‚t tttgtttttgƒttttttfksîJ ‚d S )Nr"   )r   r&   ÚyÚzÚtr'   r(   r"   r"   r"   r#   Útest__unify_gensw   s     &&&&r/   c                   C   sx   t tttfƒtttfksJ ‚t tttgƒtttfks8J ‚t tttgfƒtttfksVJ ‚t tttffƒtttfkstJ ‚d S ©N)r   r&   r,   r-   r"   r"   r"   r#   Útest__analyze_gens‘   s    r1   c                  C   sŒ  t g ddg ksJ ‚t g ddg ks(J ‚g d¢ddgdgg} dgddgg d¢g}t | dd|ksdJ ‚ddgg d¢ddgdgg} dgddgddgg d¢g}t | dd|ks¬J ‚ddgg d¢ddgdgg} dgddgddgg d¢g}t | dd|ksôJ ‚g d¢dfddgdfdgdfg} dgdfddgdfg d¢dfg}t | dd|ksJJ ‚ddgdfg d¢dfddgdfdgdfg} dgdfddgdfddgdfg d¢dfg}t | dd|ks´J ‚ddgdfg d¢dfddgdfdgdfg} dgdfddgdfddgdfg d¢dfg}t | dd|ksJ ‚ddgdfg d¢dfddgdfdgdfg} dgdfddgdfddgdfg d¢dfg}t | dd|ksˆJ ‚d S )NT)ÚmultipleF)r   r   é   r   r   )r   )ÚFÚGr"   r"   r#   Útest__sort_factors™   s.      ******r6   c                   C   sš  t tdƒtfddtdƒitffks(J ‚t tdƒttfddtdƒittffksTJ ‚t tdƒtttfddtdƒitttffks„J ‚t tdƒtfddtdƒitffks¬J ‚t tdƒttfddtdƒittffksØJ ‚t tdƒtttfddtdƒitttffks
J ‚t tdƒt tfddtdƒitffks8J ‚t tdƒt ttfddtdƒittffksjJ ‚t tdƒt tttfdd	tdƒitttffks J ‚t tdƒtd
  tfddtdƒitffksÒJ ‚t tdƒtd
  t ttfddtdƒittffksJ ‚t tdƒtd
  t td  tttfddtdƒitttffksRJ ‚t tdt  dt  tfdtdƒdt dt  dœtffks–J ‚t tdt  dt  ttfdtdƒtdƒdt dœttffksÜJ ‚t tdt  dt  tttfdtdƒtdƒtdƒdœtttffks&J ‚t tt dt t  dt t  tfdtdt  dt t dœtffksvJ ‚t tt dt t  dt t  ttfdtdƒdt dt dœttffksÈJ ‚t tt dt t  dt t  tttfdtdƒtdƒtdƒdœtttffksJ ‚t dt t tfdddt itffksLJ ‚t tttddfƒt ƒdddœttttddfƒffksˆJ ‚ttdd„ ƒ d S )Né   ©Zgens©r   ©r   r   ©r   r   r   iïÿÿÿ©r   ©r   r   ©r   r   r   é   )r?   )r?   r   é   )r?   r   r@   r   r3   r   ©r<   r9   )r=   ©r   r   r:   )r>   )r   r   r   ©r   r   r   )©r   r   r=   rB   )©r   r   r   )r   r   r   )r   r   r   )rB   r=   c                   S   s   t dt t ttfdS )Nr   r8   )r   r,   r&   r"   r"   r"   r#   Ú<lambda>ñ   ó    z.test__dict_from_expr_if_gens.<locals>.<lambda>)r   r   r&   r,   r-   r   r   r   r"   r"   r"   r#   Útest__dict_from_expr_if_gensÁ   sÊ    
ÿÿÿÿÿÿ
ÿÿÿÿÿÿÿ
ÿÿ
ÿÿ
ÿÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
 ÿÿÿÿ
(ÿ
*ÿ
,ÿÿÿÿ
.ÿrH   c                  C   s~  t tdƒƒdtdƒidfks J ‚t tƒdtdƒitffks>J ‚t tƒdtdƒitffks\J ‚t tt ƒdtdƒittffks€J ‚t tt ƒtdƒtdƒdœttffksªJ ‚t tdƒƒdtdƒitdƒffksÐJ ‚t tdƒdd	dtdƒidfksôJ ‚t tt tt d
dtitffksJ ‚t tt tt d
dtitffksDJ ‚t dtdƒ t t t d dddittttdƒffks‚J ‚t dtdƒ t t t ddddtdƒ itttffksÂJ ‚t dtdƒ t t t ddddtdƒ itttffksJ ‚ttƒttƒ ttƒttƒ  ttƒttƒ  ttƒttƒ  } t | ƒdddddœttƒttƒttƒttƒffkszJ ‚d S )Nr7   r"   r<   r   rD   )r=   rB   r   F)Zgreedy)Údomainr3   )Ú	extension)r   r   r   r   T)r   r   r   ))r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )	r   r   r&   r,   r
   r   r   r   r   )Úfr"   r"   r#   Útest__dict_from_expr_no_gensô   st     $ÿÿ&$((ÿÿÿÿÿÿ
ÿÿÿÿÿÿ
ÿÿÿÿÿÿ
@
ÿÿrL   c                   C   sZ   t tdt  dt  tdƒgtfdtdƒdt dt  dœdtdƒigtffksVJ ‚d S )Nr   r3   r?   r8   r   rA   r9   )r   r&   r,   r-   r   r"   r"   r"   r#   Ú%test__parallel_dict_from_expr_if_gens  s    $*ÿrM   c                   C   s²   t tt tdƒgƒdtdƒidtdƒigttffks8J ‚t tt dt tdƒgƒdtdƒidtdƒidtdƒigtttffks‚J ‚t tttd d	d
fƒddigtffks®J ‚d S )Nr3   rD   r   r:   r   rE   rC   r;   F)Úevaluate)r3   )r   r&   r,   r   r-   r   r"   r"   r"   r#   Ú%test__parallel_dict_from_expr_no_gens  s    ÿÿÿÿÿÿrO   c                   C   s`   t ttdƒttd dƒgƒtdƒ tdƒdœtdƒ tdƒdœgtffksNJ ‚ttdd„ ƒ d S )Nr   r   ©r9   r<   )r9   )r   c                   S   s   t tt tt  gƒS r0   )r   ÚAÚBr"   r"   r"   r#   rF   %  rG   z.test_parallel_dict_from_expr.<locals>.<lambda>)r   r   r&   r   r   r   r"   r"   r"   r#   Útest_parallel_dict_from_expr!  s    ÿÿÿÿrS   c                   C   sL   t ttdƒƒtdƒ tdƒdœtffks,J ‚ttdd„ ƒ ttdd„ ƒ d S )Nr   rP   c                   S   s   t tt tt  ƒS r0   )r   rQ   rR   r"   r"   r"   r#   rF   +  rG   z%test_dict_from_expr.<locals>.<lambda>c                   S   s
   t tjƒS r0   )r   r   Útruer"   r"   r"   r#   rF   ,  rG   )r   r   r&   r   r   r   r"   r"   r"   r#   Útest_dict_from_expr(  s
    ÿrU   N)<Ú__doc__Zsympy.core.mulr   Zsympy.core.numbersr   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z&sympy.functions.elementary.exponentialr	   Z(sympy.functions.elementary.miscellaneousr
   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.integrals.integralsr   Zsympy.testing.pytestr   Zsympy.polys.polyutilsr   r   r   r   r   r   r   Zsympy.polys.polyerrorsr   Zsympy.polys.domainsr   r&   r,   r-   r'   r(   r   Úsr.   ÚuÚvÚwrQ   rR   r$   r+   r/   r1   r6   rH   rL   rM   rO   rS   rU   r"   r"   r"   r#   Ú<module>   s4   $
;(3
