o
    …º¥g7  ã                   @   sÐ   d dl mZ d dlmZmZ d dlmZ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 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d„ Zdd„ ZdS )é    )Úsymbols)ÚcosÚsin)ÚQQÚZZ)ÚPoly)ÚNotInvertible)ÚFiniteExtension)ÚDomainMatrix)Úraises)ÚxÚyÚtc                     sª  t ttd d tƒƒ‰ ˆ jdksJ ‚tˆ ƒdksJ ‚ˆ j‰ˆ ¡ ˆ u s%J ‚ˆˆ ˆ dƒks/J ‚tt‡fdd„ƒ ˆ j	ˆ j
ˆfksBJ ‚ˆ dƒˆ j
ksKJ ‚ˆd ˆ dƒksUJ ‚ˆd dks]J ‚dˆ dˆ  dˆ kskJ ‚dˆ d ˆ d	ƒkswJ ‚ˆ dƒ ¡ ˆ dƒksƒJ ‚tt‡ fd
d„ƒ t ttd t d tddƒ‰ˆjdks¢J ‚ˆj} ˆj	ˆdƒ| | d fks³J ‚| d | ks»J ‚| d ˆdƒksÅJ ‚| d ˆdƒksÏJ ‚| d | d ksÙJ ‚| d | d ksãJ ‚| d | d |  d ksñJ ‚ˆtd t ƒ ¡ d|  ksJ ‚ˆtd ƒd ˆtd ƒ ¡ ksJ ‚| d | d  ˆdƒks$J ‚| d d| d  d  | d d ks9J ‚| d d| d  d  | d d ksNJ ‚d| d d  | d |  d ksaJ ‚| d d d | d  d kssJ ‚tt‡fdd„ƒ t ttd td  t d tddƒ}|jdks—J ‚t|ƒdks J ‚|j}dtd td  t d  }|t |t   ¡ ||ƒksÂJ ‚|t |t  | |dƒksÓJ ‚d S )Né   é   zZZ[x]/(x**2 + 1)éÿÿÿÿc                      s   ˆ d S )N© r   r   )Úir   ú]/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/agca/tests/test_extensions.pyÚ<lambda>   ó    z&test_FiniteExtension.<locals>.<lambda>é   é   é   c                      ó   ˆ dƒ  ¡ S )Nr   ©Úinverser   )ÚAr   r   r       ó    )Úmodulusé   é   é   é	   é   é   iíÿÿÿc                      r   )Nr   r   r   )ÚFr   r   r   4   r   T)ÚfieldzZZ(x)[t]/(t**2 - x**3 - x + 1))r	   r   r   ÚrankÚstrÚ	generatorÚparentr   Ú	TypeErrorÚbasisÚoner   ÚNotImplementedErrorr   r   )ÚaÚKr   Úcr   )r   r&   r   r   Útest_FiniteExtension   sP   "&**&$&"&r3   c                  C   s’   t td d ttd} t td d ttd}t| ƒ}t|ƒ}|tt td d ƒƒks,J ‚|tt td d ƒƒks:J ‚t||t| ƒhƒdksGJ ‚d S )Nr   ©Údomain)r   r   r   r   r	   Úlen)Úp1Úp2ÚK1ÚK2r   r   r   Útest_FiniteExtension_eq_hash@   s   r;   c                     s<  t ttd d ttdƒ} | tƒ‰ ˆ d d d | jksJ ‚dˆ d d  | jks+J ‚ˆ d d ˆ d  ˆ d ks;J ‚ˆ d d ˆ d  ˆ d ksKJ ‚ˆ d d ˆ d  | jksZJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t ttd d ttdƒ} | tƒ‰ ˆ d d d | jks“J ‚tt	‡ fd	d„ƒ d S )
Nr   r   r4   r   c                      s   ˆ d d d S )Nr   r   r   r   r   ©Úxfr   r   r   T   s    z*test_FiniteExtension_mod.<locals>.<lambda>c                      s   ˆ g  S ©Nr   r   r<   r   r   r   U   r   c                      s   g ˆ  S r>   r   r   r<   r   r   r   V   r   c                      s   ˆ d d ˆ d  S )Nr   r   r   r   r<   r   r   r   \   s    )
r	   r   r   r   Úzeror   ÚZeroDivisionErrorr,   r   r/   ©r1   r   r<   r   Útest_FiniteExtension_modK   s     rB   c                  C   sJ   t ttd d ttdƒ} | tƒ}|  t¡|ksJ ‚|  |¡tks#J ‚d S )Nr   r   r4   )r	   r   r   r   Ú
from_sympyÚto_sympy©r1   r=   r   r   r   Útest_FiniteExtension_from_sympy_   s   rF   c                  C   sJ   t ttd d tddƒ} t ttd d tddƒ}|  t¡|ks#J ‚d S )Nr   r   r   r4   r   )r	   r   r   Ú
set_domainr   )ÚKZÚKQr   r   r   Útest_FiniteExtension_set_domaing   s   rJ   c                  C   sD   t ttd d ƒƒ} | tƒ}|  |d d |d ¡|d ks J ‚d S )Né   r   r   )r	   r   r   ÚexquorE   r   r   r   Útest_FiniteExtension_exquom   s   (rM   c                  C   sŽ   t ttd d ƒƒ} tt }| tƒ|tƒ}}|  |¡|ks J ‚| |¡|ks)J ‚t ttd d tdƒ}| tddƒt¡|jd ksEJ ‚d S ©Nr   r   r4   )r	   r   r   r   ÚconvertÚconvert_fromr.   )r9   r:   Úx1Úx2r1   r   r   r   Útest_FiniteExtension_convertt   s   $rS   c                     s²  t ttd d ttdƒ} t ttd d ttdƒ}t ttd d ttt dƒ}t ttd d tt t¡dƒ}| jdu s@J ‚|jdu sGJ ‚|jdu sNJ ‚|jdu sUJ ‚| |||fD ]{‰ ˆ  t¡‰ˆˆ j	 ˆkskJ ‚ˆˆ j	 ˆkstJ ‚ˆˆ j	 ˆ j
ks~J ‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fd	d„ƒ ˆ jr»ˆˆ ˆ j	ks¨J ‚ˆˆ ˆ j	ks±J ‚ˆˆ ˆ j
ksºJ ‚q[tt‡fd
d„ƒ tt‡fdd„ƒ tt‡fdd„ƒ q[d S )Nr   r   r4   TFc                      s
   ˆˆ j  S r>   ©r?   r   ©r1   ÚxKr   r   r      ó   
 z4test_FiniteExtension_division_ring.<locals>.<lambda>c                      s
   ˆˆ j  S r>   rT   r   rU   r   r   r      rW   c                      s
   ˆˆ j  S r>   rT   r   rU   r   r   r   ‘   rW   c                      s   ˆ ˆ  S r>   r   r   ©rV   r   r   r   —   r   c                      s   ˆ ˆ  S r>   r   r   rX   r   r   r   ˜   r   c                      s   ˆ ˆ  S r>   r   r   rX   r   r   r   ™   r   )r	   r   r   r   r   r   Ú
frac_fieldÚis_FieldrO   r.   r?   r   r@   r/   )rI   rH   ÚKQtÚKQtfr   rU   r   Ú"test_FiniteExtension_division_ring€   s0    
ñr]   c                  C   s  t ttd d ƒƒ} ttt| d}|j| ksJ ‚| ¡ tks J ‚|d  ¡ dks*J ‚t ttd d ttdƒ} t ttd d t| dƒ}t|ƒdksLJ ‚| 	tt ¡}| 
|¡tt ks^J ‚| 
|d ¡ddt t  ksoJ ‚ttt t|d}|d tddt t  t|dks‹J ‚d S )Nr   r4   zQQ[x]/(x**2 - 2)[t]/(t**2 - 2)rK   )r	   r   r   r   r5   Úas_exprr   r   r)   rO   rD   )r1   Úpr:   ÚeKr   r   r   Útest_FiniteExtension_Polyœ   s   "*ra   c                     s  t dƒ\} ‰‰tˆƒtˆƒ | tˆƒ tˆƒ |  tˆƒ tˆƒ gtˆƒtˆƒ | tˆƒ tˆƒ | tˆƒ tˆƒ gtˆƒ|  tˆƒ dgg}‡‡fdd„}|t|  ƒ}|tƒ|  }||fD ],‰ ‡ fdd„|D ƒ}t|dˆ ƒ}| ¡ d ˆ j d	  }|ˆ  | d
 tˆƒ ¡ksŒJ ‚q`d S )Nzrho, phi, thetar   c                    sp   t ttˆ ƒd tˆ ƒd  d tˆ ƒ| tˆ ƒ dƒ} t ttˆƒd tˆƒd  d tˆƒ| tˆƒ dƒ} | S rN   )r	   r   r   r   rA   )r_   r   r   r   Úmake_extension¸   s   66z<test_FiniteExtension_sincos_jacobian.<locals>.make_extensionc                    s   g | ]}‡ fd d„|D ƒ‘qS )c                    s   g | ]}ˆ   |¡‘qS r   )rO   )Ú.0ÚerA   r   r   Ú
<listcomp>Á   s    zCtest_FiniteExtension_sincos_jacobian.<locals>.<listcomp>.<listcomp>r   )rc   ÚrowrA   r   r   re   Á   s    z8test_FiniteExtension_sincos_jacobian.<locals>.<listcomp>)r   r   r   r   r   )r   r   r   r   r
   Úcharpolyr.   rO   )ÚrÚelementsrb   ÚKsc1ÚKsc2Ú
elements_KÚJÚdetr   )r1   r_   r   r   Ú$test_FiniteExtension_sincos_jacobian®   s   64ý üro   N) Úsympy.core.symbolr   Ú(sympy.functions.elementary.trigonometricr   r   Úsympy.polysr   r   Úsympy.polys.polytoolsr   Úsympy.polys.polyerrorsr   Úsympy.polys.agca.extensionsr	   Úsympy.polys.domainmatrixr
   Úsympy.testing.pytestr   Ú	sympy.abcr   r   r   r3   r;   rB   rF   rJ   rM   rS   r]   ra   ro   r   r   r   r   Ú<module>   s&    2