a
    <b                     @   s   d Z ddlmZ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 dd	lmZ dd
lmZmZmZ ddlmZ ddlmZmZmZmZ ddlmZ ddlm Z  dd Z!dd Z"dd Z#dd Z$dS )z6Tests for solvers of systems of polynomial equations.     )IIntegerRational)S)symbols)sqrt)QQ)Poly)solve)flatten)xyz)PolynomialError)solve_poly_systemsolve_triangulatedsolve_biquadraticSolveFailed)parallel_poly_from_expr)raisesc                  C   s  t td gttjfgksJ t tt tt d gttd u sBJ t ttd  ttd  gtttjtjfgkstJ t dt d ttdd dt  tdt  gttttddtdtdfgksJ t tt dt  dtd  td  gttddt	d fdt	dfgksJ t ttd  ttd  d gttt
 t	tj tddft
t	tj tddfgksrJ td t t d } ttd  t d }tt td  d }t	dd t	d d  }}t | ||gtttdd	d
|||f|||fgksJ ddg}t ttd td  ttd g|ks4J t td td  td gtt|ks^J t td td  td g|ksJ t ttt  d ttt  d gttddgksJ ttdd  ttdd  ttdd  ttdd  ttdd  d S )N            
   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      ))r   r   c                   S   s   t td td  gttS )Nr   r   r   r    r%   r%   p/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/solvers/tests/test_polysys.py<lambda>5       z(test_solve_poly_system.<locals>.<lambda>c                   S   s<   t tdt td  t td t  td t d  d gS )Nr#   r   r!   )r   r   r   r   r%   r%   r%   r&   r'   6   s   6c                   S   s   t dt gtS Nr   )r   r   r%   r%   r%   r&   r'   8   r(   c                   S   s   t td gttfS r)   r$   r%   r%   r%   r&   r'   :   s   c                   S   s   t td gttfS r)   )r   r   r   r%   r%   r%   r&   r'   <   s   )r   r   r   ZOner   ZZeror   r   r   r   r   Halfr	   r   NotImplementedErrorr   )f_1f_2f_3abZsolutionr%   r%   r&   test_solve_poly_system   sB    $24*
"0

.*&"
r1   c                     sH  t d\} }}}}td d td d  |d  }td d td d  |d  }td|d  d }d| d }d| d }	t||gtt||	f|	|fgksJ td d td d  |d  }td d td d  |d  }t||gttdtd| d d| d  d  tddfdtd| d d| d  d  tddfgksTJ dd td d td d  |d  }t| d td d  |d  }t||gtt}
t|
dkrtdd |
D sJ tfd	dt|
D sJ t|  d t| d  |d  }t| d t| d  |d  }t||gtt}
t|
dkrdtd
d |
D shJ tfddt|
D sJ tt t td t f}t	|tditdtdigksJ tt t td t f}t	|tditdtdigksJ ttf}||fD ]4}t
|g|R  \\ tt fdd qtd td  d td d f}t
|g|R  \\ t g dksJ ddg}td td  d td d f}t
|g|R  \\ t |ksJ td td  d td t td  d f}t
|g|R  \\ t |ksDJ d S )Nzx0 y0 x1 y1 rr   r   r   c                 S   s   | j o| jtju S N)Zis_Powexpr   r*   )exprr%   r%   r&   r'   Q   r(   z(test_solve_biquadratic.<locals>.<lambda>c                 s   s   | ]}t |d kV  qdS r   Nlen.0rr%   r%   r&   	<genexpr>X   r(   z)test_solve_biquadratic.<locals>.<genexpr>c                 3   s   | ]}|  d kV  qdS r   N)countr8   queryr%   r&   r;   Y   r(   c                 s   s   | ]}t |d kV  qdS r5   r6   r8   r%   r%   r&   r;   `   r(   c                 3   s    | ]}t | d kV  qdS r<   )r7   findr8   r>   r%   r&   r;   a   r(   r   c                      s   t  S r2   )r   r%   )fgoptr%   r&   r'   j   r(   ))r   r   )r   r   r   r    )r   r   )r   r   )r   r   r   r   r   r   r7   allr   r
   r   r   r   r   )Zx0Zy0x1y1r:   r,   r-   sr/   r0   results1s2ZgensseqZansr%   )rA   rB   rC   r?   r&   test_solve_biquadratic@   sV      $  ,,
  &   & ""  ,rL   c                  C   s   t d t t d } t td  t d }t t td  d }tdd td d  }}t| ||gt ttg dksxJ ttd}t| ||gt tt|dddd|||f|||fgksJ d S )Nr   r   )r   r   r   )domainr   r   r   )r   r   r   r   r   r   Zalgebraic_field)r,   r-   r.   r/   r0   domr%   r%   r&   test_solve_triangulatedx   s    rO   c                  C   s  t td d d ttdd d d  d tgtt} | dtjdtd  fdtjdtd  fgksjJ t td d d td	 d d  d tgtt} t| dksJ | d d dksJ | d d d
dsJ | d d dksJ | d d ddsJ d S )Nr   r   i r   r   r      iW  g      ?g7g   mBgG@)	r   r   r   r   r   r*   r   r7   Z
epsilon_eq)rootsr%   r%   r&   test_solve_issue_3686   s    640rR   N)%__doc__Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z!sympy.polys.domains.rationalfieldr   Zsympy.polys.polytoolsr	   Zsympy.solvers.solversr
   Zsympy.utilities.iterablesr   Z	sympy.abcr   r   r   Zsympy.polysr   Zsympy.solvers.polysysr   r   r   r   r   Zsympy.testing.pytestr   r1   rL   rO   rR   r%   r%   r%   r&   <module>   s"   -8