
    \hG                     ^   S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  S SKJr  S SKJr  S SKJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrI  S SKJJKrKJLrLJMrM  S SKNJOrO  \" SSS9u  rPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_\" SSS9u  r`rarbrcrdrerf\" SSS9u  rgrhri\" SSS9rjS rkS rlS rmS rnS roS rpS rqS rrS rsS  rtS! ruS" rvS# rw\KS$ 5       rxS% ryS& rzS' r{S( r|S) r}S* r~S+ rS, rS- rS. rS/ rS0 rS1 rS2 rS3 rS4 rS5 rS6 rS7 rS8 rS9 rS: rS; rS< rS= rS> rS? rS@ r\MSA 5       rSB rSC rSD rSE rSF rSG r\MSH 5       rSI rSJ rSK rSL rSM rgN)O    )Add)Mul)Rationaloopi)Eq)S)symbols)Matrix)	factorint)powsimp)_mexpand)default_sort_keyordered)sin)diophantine),diop_DN
diop_solvediop_ternary_quadratic_normaldiop_general_pythagoreandiop_ternary_quadraticdiop_lineardiop_quadraticdiop_general_sum_of_squaresdiop_general_sum_of_even_powersdescent
diop_bf_DN	divisible
equivalentfind_DNldescentlengthreconstruct	partitionpower_representationprime_as_sum_of_two_squaressquare_factorsum_of_four_squaressum_of_three_squarestransformation_to_DNtransformation_to_normalclassify_diopbase_solution_linear
cornacchia
sqf_normalgaussian_reduceholzercheck_paramparametrize_ternary_quadraticsum_of_powerssum_of_squares_diop_ternary_quadratic_normal_nint_or_floor_odd_even_remove_gcd_can_do_sum_of_squaresDiophantineSolutionSetGeneralPythagoreanBinaryQuadratic)slowraisesXFAIL)signed_permutationsz.a, b, c, d, p, q, x, y, z, w, t, u, v, X, Y, ZTintegerzt_:7zm1:4n1c                 <    [        [        [        U 5      5      5      $ N)r   r   eqs    h/var/www/auris/envauris/lib/python3.13/site-packages/sympy/solvers/diophantine/tests/test_diophantine.pydiop_simplifyrK   '   s    GHRL)**    c                  H    [        [        S 5        [        [        S 5        g )Nc                  2    [        [        [        5      5      $ rG   )r   r   x rL   rJ   <lambda>#test_input_format.<locals>.<lambda>,   s    k#a&1rL   c                  4    [        [        [        -  S-
  5      $ N   )r   rO   r   rP   rL   rJ   rQ   rR   -   s    k!B$(3rL   )r@   	TypeErrorrP   rL   rJ   test_input_formatrW   +   s    
912
934rL   c                  z    [        S5      [        5       :X  d   e[        [        S5      5      [        5       :X  d   eg rT   )r   setr	   rP   rL   rJ   test_nosolsrZ   0   s/    q>SU"""qt%%%rL   c                      [        [        S-
  [        S-
  S-  -  5      SS1:X  d   e[        [        S-
  [        S-
  -  5      SS1:X  d   eg )N      r\   r]   r   rO   rP   rL   rJ   test_univariatera   6   sM    q1uq1uqj()dD\999q1uq1uo&4,666rL   c            
         [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [	        S[
        S-  -  S[
        -  -   S-
  5      [
        /S	S
[
        S[
        S-  S0S4:X  d   e[	        [
        [        -  [        -   5      [
        [        [        /[
        [        -  S	[        S	0S4:X  d   e[	        [
        [        -  [        -   [        -   [
        S-  -   5      [        [
        [        [        /[
        [        -  S	[        S	[
        S-  S	[        S	0S4:X  d   e[	        [
        [        -  [
        [        -  -   [
        S-  -   S	-   5      [
        [        [        /[
        [        -  S	[
        [        -  S	[
        S-  S	S	S	0S4:X  d   e[	        [
        [        -  [        -   [        -   S-   5      [        [
        [        [        /[
        [        -  S	[        S	S	S[        S	0S4:X  d   e[	        [
        [        -  [        [        -  -   5      [        [
        [        [        /[
        [        -  S	[        [        -  S	0S4:X  d   e[	        [
        [        S-  -  S	-   5      [
        [        /[
        [        S-  -  S	S	S	0S4:X  d   e[	        [
        S-  [        S-  -   [        S-  -   S-
  5      [
        [        [        /S	S[
        S-  S	[        S-  S	[        S-  S	0S4:X  d   e[	        [
        S-  [        S-  -   [        S-  -   5      [
        [        [        /[
        S-  S	[        S-  S	[        S-  S	0S4:X  d   eg )Nc                  2    [        [        S-  S-  S-
  5      $ )Nr]   rU   r\   )r,   rO   rP   rL   rJ   rQ   $test_classify_diop.<locals>.<lambda><   s    mAqDFQJ7rL   c                      [        S5      $ Nr\   r,   rP   rL   rJ   rQ   rd   =   s	    }Q/rL   c                  P    [        [        [        -  [        -  [        -  S-
  5      $ rf   )r,   wrO   yzrP   rL   rJ   rQ   rd   >   s    ac!eAgk(BrL   c                  T    [        [        S-  [        S-  -   [        S-  -   S-
  5      $ )NrU      Z   )r,   rO   rj   rk   rP   rL   rJ   rQ   rd   ?   s#    adQTkAqD6H26M(NrL      r]      *   r\   i
univariateinhomogeneous_ternary_quadraticinhomogeneous_general_quadratichomogeneous_general_quadratic
cubic_thuerm   b   igeneral_sum_of_even_powers$homogeneous_ternary_quadratic_normal)	r@   rV   
ValueErrorNotImplementedErrorr,   rO   rj   rk   ri   rP   rL   rJ   test_classify_diopr|   ;   s)   
978
:/0
 BC
 NOAqD2a4",-	
aaQT2&26 6 6 61q!	
Aq	AaCAq>#D&F F F F1q1q!t+,	
Aq!qsAq!QT1a35V1X X X X1qsQT)A-.	
Aq	AaCAaCAqD!Q24U3W W W W1q1r)*	
Aq!qsAq!QAq13T/V V V V1qs#	
Aq!qsAqsA&(G(I I I I1a4!$	
A1a4Aq!<)1 1 1 1A1q!t+{;<	
Aq	AsAqD!QT1adA68TAV V V VA1q!t+,	
Aq	AqD!QT1adA.0V1X X X XrL   c                  	   [        [        5      S:X  d   e[        S[        -  5      S:X  d   e[        S[        -  5      S:X  d   e[        [        S-   5      S:X  d   e[        S[        -  S-   5      S:X  d   e[        S[        -  S-   5      S:X  d   e[        [        [        -   5      [        [        * 4:X  d   e[        [        [        -   S	-   5      [        [        * 4:X  d   e[        [        [        -   S	-
  5      [        [        * 4:X  d   e[        S	[        -  [        -
  S
-
  5      S:X  d   e[        S[        -  S[        -  -   S
-
  5      S[        -  S
-
  S[        -  S
-   4:X  d   e[        S[        -  S[        -  -
  S
-
  5      S[        -  S
-
  S[        -  S
-
  4:X  d   e[        S[        -  S[        -  -
  S
-
  5      S[        -  S
-   S[        -  S
-
  4:X  d   e[        S[        -  S
[        -  -   5      S
[        -  S[        -  4:X  d   e[        S[        -  S[        -  -   5      S[        -  [        4:X  d   e[        S[        -  S[        -  -   S-
  5      S[        -  S-
  S[        -  S-   4:X  d   e[        S[        -  S[        -  -   S-
  5      S:X  d   e[        S	[        -  S[        -  -   S[        -  -
  S
-   5      S[        -  S
-   S[        -  S
-   4:X  d   e[        S[        -  S[        -  -   S[        -  -
  S
-   5      [        S[        -  S[
        -  -   S
-   S[        -  S[
        -  -   S
-   4:X  d   e[        S[        -  S[        -  -   S[        -  -
  S
-   S 5      S:X  d   e[        S[        -  S[        -  -   S[        -  -   S
-
  5      S:X  d   e[        S
[        -  S[        -  -   S[        -  -
  S-
  5      [        S[        -  S[
        -  -   S-   S[        -  S[
        -  -   S-   4:X  d   e[        S[        -  S[        -  -
  S[        -  -   S-
  5      S[        -  S-   [        S[
        -  -   [
        4:X  d   e[        S[        -  S[        -  -   S[        -  -   [        -
  5      [        [
        [
        [        -   S[        -  S[
        -  -   S[        -  -   4:X  d   e[        [        S 5        g )N)r   r\   rU   )r]   rG   rm   )r      )r         )NN   )r   r   r   NNN      	         c                  &    [        [        S-  5      $ Nr]   r`   rP   rL   rJ   rQ   test_linear.<locals>.<lambda>o   s    j1orL   )
r   rO   rj   t_0rk   t_1ri   t_2r@   rV   rP   rL   rJ   test_linearr   T   sP   a=D   ac?d"""ac?d"""a!e%%%acAg')))acAg%'''a!esd+++a!eai S3$K///a!eai S3$K///acAgk"e+++acAaCi!m$3BsFQJ(????acAaCi!m$3AcEAI(>>>>bdQqSj1n%!C%!)RVaZ)@@@@acAaCi QsUBsFO333acAaCi RVSM111acAaCi!m$3BsFQJ(????acAaCi!m$444acAaCi!A#o)*quqy!C%!).DDDDacAaCi!A#o)*sAcEAcEMA4EquqQTu}WXGX.YYYYacAaCi!A#o)40I===acAaCi!A#o)*.@@@@acAaCi!A#o)*sBsFQsUNQ4F3QRSVQVY[H[.\\\\acAaCi"Q$&*+#	33;/LLLLacAaCi"Q$&*+S#)QsURPSV^VXY\V\E\/]]]] 9-.rL   c                  n   [        S[        -  [        -  S[        -  -   S[        -  -
  S-   5      SS1:X  d   e[        S[        -  [        -  S[        -  -   S[        -  -   S-   5      [        5       :X  d   e[        S	[        -  [        -  S[        -  -   S
[        -  -
  S-
  5      S1:X  d   e[        S[        -  [        -  S[        -  -
  S[        -  -
  S-
  5      S1:X  d   e[        S[        -  [        -  S[        -  -   S[        -  -   S-   5      1 Sk:X  d   e[        S[        -  [        -  S[        -  -   S[        -  -   S-   5      [        5       :X  d   e[        [        [        -  [        -   [        -   S-   5      S[        4[        S41:X  d   e[        S[        -  [        -  5      (       d   eg )NrU   "   r   r\   )i{)r   ir   r]   rm   6   )   r      )r~   r   8   r   >   i_r   iiiiir   i   r   r   @   r\   r   r~   0   )r   rO   rj   rY   tr   rP   rL   rJ   %test_quadratic_simple_hyperbolic_caser   r   s   ac!ebdlRT)A-."# # #ac!eackAaC'!+,555c!eAg!mac)B./G9<<<c!eAg1nr!t+b01i[@@@ac!eackBqD(1,- 2F F F F ac!eackAaC'!+,555acAgkAo&B7QG*<<<<r!tAvrL   c                     [        S[        S-  -  S[        -  [        -  -   S[        S-  -  -   S[        -  -   S[        -  -   S-
  5      S1:X  d   e[        S	[        S-  -  S
[        S-  -  -   S[        -  -   S[        -  -
  S-   5      [        5       :X  d   e[        [        S-  [        S-  -   S[        -  -   S[        -  -   S-   5      S1:X  d   e[        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S[        -  -
  S[        -  -
  S-
  5      S1:X  d   e[        S[        S-  -  S[        -  [        -  -   S[        S-  -  -   S-
  5      1 Sk:X  d   eg )Nrq   r]   r   rp         i3  )r   r~   rm   rU   r      r   r~   r~   r   ro   V  )r   
   r      r\   r\   r\   r   r   r~   r]   )r   rO   rj   rY   rP   rL   rJ   test_quadratic_elliptical_caser      sW    bAg!Ao1a4/"Q$6A=DE)TTTa1fqAvo!+bd2R78CEAAAadQTkAaC'!A#-12xj@@@bAg!Ao1a4/"Q$6A=DE(SSSbAg1Q&AqD0256/0 0 0rL   c                     [        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S[        -  -   S[        -  -   S-   5      (       d   e[        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S[        -  -   S	[        -  -   S-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -   S[        S-  -  -   S
[        -  -   S[        -  -   S-
  5      (       d   e[        S[        S-  -  S
[        -  [        -  -   [        S-  -
  S[        -  -   S-
  5      (       d   e[        [        S-  S[        -  [        -  -   [        S-  -   S[        -  -   S[        -  -   S-   5      (       d   e[        [        S-  S[        -  [        -  -
  [        S-  -   S[        -  -   S[        -  -   S-   5      (       d   e[        [        S-  S[        -  -
  S-   5      (       d   eg )Nr   r]      r   r   r      r   r   rm   rU   r\   )   (   check_solutionsrO   rj   rP   rL   rJ   test_quadratic_parabolic_caser      s   1QT6BqDF?R1W4qs:QqS@2EFFFF1QT6BqDF?R1W4qs:RTAAEFFFF1QT6BqDF?R1W4qs:QqS@1DEEEE2ad7QqSU?QT1AaC7!;<<<<1a4!A#a%<!Q$.14qs:Q>????1a4!A#a%<!Q$.14qs:Q>????1a4"Q$;+,,,,rL   c                     [        S[        -  [        -  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  [        S-  -   S-   5      (       d   e[        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S[        -  -
  S[        -  -
  S-   5      (       d   e[        S	[        S-  -  S
[        -  [        -  -   S[        S-  -  -   S[        -  -
  S[        -  -   S	-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -   S[        S-  -  -   S[        -  -
  S
[        -  -
  S-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  S[        -  -
  S[        -  -
  S-
  5      (       d   e[        S[        -  [        -  S[        S-  -  -
  S[        -  -
  S[        -  -
  S-
  5      (       d   e[        [        S-  [        S-  -
  S[        -  -
  S[        -  -
  5      (       d   e[        [        S-  S[        S-  -  -
  S[        -  -
  S[        -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        -  -
  S	[        -  -
  S-
  5      (       d   eg )Nr   rm   r]   r   r   rU   r      r      r   r       r   r   r   r   r   rP   rL   rJ   test_quadratic_perfect_squarer      sC    2a46""""1QT6AaCE>AqD01455552ad7QqSU?Qq!tV3QqS82a4?"DEEEE2ad7RT!V+a1f4qs:QqS@2EFFFF1QT6BqDF?Qq!tV3bd:RTABFGGGG1QT6AaCE>AaC/14q899993q57Qq!tV+ac11Q36;<<<<1a4!Q$;1,qs233331a4!AqD&=1Q3.1455551QT6AadF?QqS02a47!;<<<<rL   c                  X   [        [        S-  S[        -  -
  S[        S-  -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        -  -
  S[        -  -
  5      (       d   e[        [        S-  [        [        -  -
  [        S-  -
  S[        -  -
  5      (       d   e[        [        S-  S[        S-  -  -
  S[        -  -
  S[        -  -
  5      (       d   e[        [        S-  [        S-  -   S[        -  -   S[        -  -   S-   5      R	                  5       S1:X  d   eg )Nr]   r   rU   r   r   r   )r   rO   rj   r>   solverP   rL   rJ   !test_quadratic_non_perfect_squarer      s    1a4!A#:!Q$.////1QT6AadF?QqS01Q3677771a4!A#:1,qs233331a4!AqD&=1Q3.1455551a4!Q$;1,qs2Q67==?H:MMMrL   c                      SS[         -  S[         -  S-
  -  -
  [        S[        -  S-
  -  -   n [         [        4n[        U 5       H6  n[        U R	                  [        [        X5      5      5      5      (       d  M6   e   g )Nir]   rU   r\   rO   rj   r   rK   xreplacedictziprI   vsols      rJ   test_issue_9106r      sg    	qsAaC!G}	q!A#'{	*B	
AA2 T#a+->!?@@@@ rL   c                      [         S-  [         -
  [        S-  -
  n [         [        4n[        U 5       H6  n[        U R	                  [        [        X5      5      5      5      (       d  M6   e   g r   r   r   s      rJ   test_issue_18138r      sQ    	
AAqDB	
AA2 T#a+->!?@@@@ rL   c                  f   [        S[        S-  -  S[        -  [        -  -   S[        S-  -  -
  S[        -  -
  S[        -  -
  S-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S	[        -  -
  S-
  5      (       d   e[        S
[        -
  S[        S-  -  -   [        -
  S[        -  [        -  -
  S[        S-  -  -
  5      (       d   e[        SS[        -  -   S[        S-  -  -   S[        -  -   [        [        -  -   S[        S-  -  -
  5      (       d   eg )Nr   r]   r   r   r   r   r   r   r   r   rm   rU   r\   r   rP   rL   rJ   test_quadratic_non_perfect_slowr      s   1QT6BqDF?Qq!tV3bd:RTABFGGGG 2ad7QqSU?Qq!tV3ac9A=>>>>26AadF?Q.1Q61a4?@@@@1qs7Qq!tV+ac1AaC7!AqD&@AAAArL   c                  |   [        SS5      S/:X  d   e[        SS5      / :X  d   e[        SS5      S/:X  d   e[        S	S
5      S/:X  d   e[        SS5      / :X  d   e[        SS5      / :X  d   e[        SS5      S[        4/:X  d   e[        SS5      S[        -  [        4/:X  d   e[        SS5      / :X  d   e[        SS5      S/:X  d   e[        SS5      S/:X  d   e[        SS5      S/:X  d   e[        SS5      SS/:X  d   e[        SS5      / SQ:X  d   e[        SS5      S/:X  d   e[        SS5      S/:X  d   e[        SS5      S/:X  d   e[        S S5      S!/:X  d   e[        S"S5      S#/:X  d   e[        S
S5      S$/:X  d   e[        S%S5      S&/:X  d   e[        SS5      S'/:X  d   e[        S"S5      / :X  d   e[        S(S5      S)/:X  d   e[        S*S5      S+/:X  d   e[        S,S5      S-/:X  d   e[        S.S5      / :X  d   e[        SS/5      / S0Q:X  d   e[        S1SS2S3SS/5      S4:X  d   e[        SS55      / S6Q:X  d   e[        [        S7S85      5      1 S9k:X  d   e[        SS:5      S;/:X  d   e[        S<S=5      / :X  d   e[        SS5      S>S?/:X  d   e[        S@SA5      SB/:X  d   e[        S@SC5      / :X  d   e[        SDSC5      SE/:X  d   e[        SFSSGSSDSC5      (       d   e[        SDSH5      SISJ/:X  d   e[        SS[        5      S[        4/:X  d   e[        SS[        5      / :X  d   eg )KNrU   r   r   r   r   ir   r]   r\   r   r   r   r   r   r   r   r      )r   rm   iL)r   r   r   r~   r\   r]      ))r   r   )r   r   )r   r   )r   r   r\   )i  r   i  )i  ix  i  )l   INd? l   j\i  )i  i"  i  )l   WRlQ]>I2l   AAJtWjU^	 )!   r      )   '   )r   r   r   )r   r   i"  )r   r\   	S  l   !K2l   uGoX r   r   )rU   r\   )  m   $   r   r   r   r   Tr   ))   =   r   r   )      r   rU      r   >   iX i  ipi"'Mi)  iS  l   )fMOl   ?_l   ;>x< i|r   r\   r   )i  i     r   )r   r\   )r   r\      r]   r   r   {   )r   r\   r   r   i)r\   )r   r\   )r   r   r   rY   rP   rL   rJ   test_DNr      s    1a=VH$$$3r!!!3x'''3x'''3r!!!1a=B1a=aVH$$$1a=ac1XJ&&&2r?b   1c?wi'''1dy(((1a=VH$$$ 2q>ff----2sCCCC
 2q>j\)))3?}o---3??@@@@3?}o---3?^____2q>gY&&&2q>i[((( 2r?wi'''3r!!!2r?wi'''3y(((5""?!@@@@2r?b    2r?<<<< b!S#r2.$6662r?HHHHwsB  %F F F F 2r?{m+++3r!!!2r?w////3?wi'''3r!!!3y((( b!S!S"----37 33331aAx'''1b!"""rL   c                  B   [        SS5      / SQ:X  d   e[        SS5      / SQ:X  d   e[        SS5      / :X  d   e[        SS	5      S
/:X  d   e[        SS5      SS/:X  d   e[        SS5      S/:X  d   e[        SS5      S/:X  d   e[        SS[        5      S/:X  d   e[        SS[        5      S[        4/:X  d   e[        SS[        5      S[        -  [        4S[        -  [        4/:X  d   e[        SS[        5      S/:X  d   e[        S	S[        5      / :X  d   eg )Nr   r   )r   )r   r\   r   r   )r   )r   rU   r   )ir   r   r     r\   )l   uL" l   EY   r   r   r\   r   r   r~   r   iT  )i  r   r   r   rm   r]   rU   )r   r   rP   rL   rJ   test_bf_pellr    s8   b"!<<<<b"!IIIIc2"$$$dA#B"CCCCb"&'!2222eR %B$CCCCc29+---b!QF8+++aAAq6(***aAAaC8bdAY"7777aA6(***aQ2%%%rL   c                      [        SSS5      S:X  d   e[        SSS5      S:X  d   e[        SSS	5      S:X  d   e[        SSS
5      S:X  d   e[        SS
S5      S:X  d   e[        SSS5      S:X  d   eg )Nr]   r\   r   r   rm   r   rU   r   r   r   r   r   r   r   )r"   rP   rL   rJ   test_lengthr  #  s    !Q?a"aq   "a!!!!Qq   !R"""!Q?arL   c                    [        U 5      u  pU[        [        [        /5      -  U-   S   nU[        [        [        /5      -  U-   S   n[	        U R                  [        [        [        4X445      5      5      n[        UR                   Vs/ s H%  n[        UR                  " [        [        /6 5      PM'     sn5      n[        [        -  [        [        4 H  nXR                  5       ;   d  M    g   [        S-  [        S-  S4 H  nXR                  5       ;  d  M  SXx'   M     U[        S-     S:w  a@  [        U[        S-     U[        S-     5      =(       a    [        US   U[        S-     5      $ gs  snf )a!  
Test whether X*Y, X, or Y terms are present in the equation
after transforming the equation using the transformation returned
by transformation_to_pell(). If they are not present we are good.
Moreover, coefficient of X**2 should be a divisor of coefficient of
Y**2 and the constant term.
r   r\   Fr]   T)r*   r   XYrK   subsr   rO   rj   r   argsreversedas_independentkeysr   )	rI   ABur   
simplifiedr   coeffterms	            rJ   is_pell_transformation_okr  ,  s@     #DA	
61a&>	A	q!A	
61a&>	A	q!ArwwsAq6A6':;<JzO!(1++aV45OPE1a::<  Aq!tQzz|#EK   QT{aq!teAqDk2 )%(E!Q$K(	)  Ps   ,E7c                  ^   [        S[        S-  -  S[        -  [        -  -
  [        S-  -   S[        -  -   S[        -  -
  S-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -   S[        S-  -  -
  S[        -  -
  S[        -  -
  S	-
  5      (       d   e[        [        S-  [        S-  -
  S
-   5      (       d   e[        [        S-  * S[        S-  -  -   S	-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S[        -  -
  S[        -  -
  S-   5      (       d   e[        S[        S-  -  S[        -  [        -  -   [        S-  -   S[        -  -
  S[        -  -
  S-
  5      (       d   e[        [        S-  S[        -  [        -  -
  S[        S-  -  -
  S[        -  -
  S	[        -  -
  S-
  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  S[        S-  -  -   S	[        -  -
  S[        -  -
  S-
  5      (       d   eg )Nr   r]   r   ro   r   r   r   r   r   r   r   -   r      r   rU   r      r   rp   r   r   )r  rO   rj   rP   rL   rJ   test_transformation_to_pellr  J  s   $SAX!A%51%<qs%BQqS%H2%MNNNN$SAX1Q%61a4%?!A#%E1%Lr%QRRRR$QTAqD[2%56666$adUQq!tV^b%89999$R1Wr!tAv%5!Q$%>1%Dr!t%Ka%OPPPP$SAX1Q%6A%=!%Cc!e%Kc%QRRRR$QTAaCE\3q!t8%;ac%ABqD%H2%MNNNN$R1Wqs1u_r!Q$w%>A%E1%Lt%STTTTrL   c                     [        [        S-  S[        -  -
  [        S-  -
  5      S:X  d   e[        [        S-  S[        S-  -  -
  S-
  5      S:X  d   e[        [        S-  S[        -  [        -  -
  S[        S-  -  -
  S-
  5      S:X  d   e[        S[        S-  -  S	[        -  [        -  -
  [        S-  -
  S
-
  5      S:X  d   e[        S[        S-  -  S[        -  [        -  -
  [        S-  -
  S-
  5      S:X  d   e[        S[        S-  -  S[        -  [        -  -   [        S-  -
  5      S:X  d   e[        S[        S-  -  S[        -  [        -  -
  [        S-  -   S[        -  -   S[        -  -
  S-
  5      S:X  d   eg )Nr]   r   rU   r   )rU   r   rm   r   )r   r   r   r   )r   r   r   )r   T   r   )r\   r   r   ro   )e   i)r    rO   rj   rP   rL   rJ   test_find_DNr  U  si   1a4!A#:1$%///1a4!AqD&=1$%///1a4!A#a%<!AqD&(1,-7771QT6AaCE>AqD(1,-9991QT6AaCE>AqD(2-.'9992ad7QqSU?AqD()V3333q!t8ac!e#ad*QqS01Q36:;NNNrL   c                      / SQn U  H+  u  p[        X5      u  p4nXS-  -  X%S-  -  -   US-  :X  a  M+   e   [        SS5      b   e[        SS5      b   eg )N)r   r   rU   r   r   i)rm   r   )r   rm   [   r   r   r\   r~   )rm   r   r   r   i) r\   r   ir]   r~   r   )r!   r  abri   rO   rj   s         rJ   test_ldescentr*  _  sk    
4A1.aAvQ$!Q$&&&  B###Aq>!!!rL   c                     [        S[        S-  -  S[        S-  -  -
  [        S-  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  5      (       d   e[        S[        S-  -  S	[        S-  -  -   S[        S-  -  -
  5      (       d   e[        [        S-  S[        S-  -  -   [        S-  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  5      (       d   e[        [        S-  [        S-  -   [        S-  -
  5      (       d   e[        S
[        S-  -  [        S-  -   S[        S-  -  -
  5      (       d   e[        S	[        S-  -  [        S-  -
  S[        S-  -  -   5      (       d   e[        S[        S-  -  S[        S-  -  -   S[        S-  -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        S-  -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        S-  -  -
  5      (       d   eg )N   r]   A  r   ih  r   rm   rU   r   r   r   r   r   r   r   r   i-  |   r   1  r   rO   rj   rk   rP   rL   rJ   "test_diop_ternary_quadratic_normalr1  j  s3   3q!t8eAqDj01a4788882ad7SAX-1455551QT6AadF?QT122221QT6AadF?Qq!tV344441a4!AqD&=1a4/00001QT6AadF?QT122221a4!Q$;A-....2ad7QT>Bq!tG344441QT6AqD=2ad7233333q!t8bAg-!Q$677772ad7Qq!tV+c!Q$h677773q!t8bAg-QT	9::::rL   c                    [        U 5      nU[        [        [        [        /5      -  u  p#n[        U R                  [        [        [        [        4X#U45      5      5      n[        UR                   Vs/ s H  n[        UR                  " X#U/6 5      PM     sn5      nX#-  X4-  X$-  4 H  nXR                  5       ;   d  M    g   gs  snf )NFT)r+   r   rO   rj   rk   rK   r  r   r   r	  r
  r  r  )	rI   r  r  r  Zr  r   r  r  s	            rJ   is_normal_transformation_okr4  y  s     $A1ay!!GA!rwwsAq!9qQi'@ABJ*//R/Q(1++aAY78/RSEac13::<    Ss   4$Cc                     [        [        S-  S[        S-  -  -   [        S-  -   S[        -  [        -  -
  S[        -  [        -  -
  S[        -  [        -  -   5      (       d   e[        [        S-  S[        S-  -  -   S[        S-  -  -
  5      (       d   e[        [        S-  S[        -  [        -  -   5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        -  [        -  -
  5      (       d   e[        [        S-  S[        -  [        -  -   S[        -  [        -  -
  S[        -  [        -  -   5      (       d   e[        [        S-  S[        -  [        -  -   S[        -  [        -  -
  [        [        -  -   5      (       d   e[        [        S-  [        S-  -   [        S-  -   [        [        -  -
  [        [        -  -
  [        [        -  -
  5      (       d   e[        [        S-  S[        -  [        -  -   S[        S-  -  -   5      (       d   e[        [        [        -  S[        -  [        -  -   S[        -  [        -  -   5      (       d   e[        S[        -  [        -  S[        -  [        -  -   5      (       d   eg )	Nr]   rU   r   r   r   d   r   r   )r4  rO   rj   rk   rP   rL   rJ   test_transformation_to_normalr7    s   &q!ta1f}q!t';bd1f'Dr!tAv'MPRSTPTUVPV'VWWWW&q!ta1f}s1a4x'?@@@@&q!tbd1f}5555&qAvAqD'82a46'ABBBB&q!tbd1f}r!tAv'=1Q'FGGGG&q!tbd1f}r!tAv'=!'CDDDD&q!tad{QT'9AaC'?!A#'E!'KLLLL&q!tac!e|a1f'<====&qsQqSU{QqSU':;;;;&qs1uqs1u}5555rL   c                     [        S[        S-  -  [        S-  -   [        S-  -   S[        -  [        -  -
  5      (       d   e[        [        S-  [        S-  -
  [        S-  -
  [        [        -  -
  [        [        -  -
  5      (       d   e[        S[        S-  -  [        [        -  -
  [        [        -  -
  [        [        -  -
  5      (       d   e[        [        S-  [        [        -  -
  [        [        -  -
  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  [        [        -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  [        [        -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  S[        -  [        -  -
  S[        -  [        -  -   S[        -  [        -  -
  5      (       d   e[        S[        S-  -  S[        -  [        -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        -  [        -  -
  [        S-  -
  5      (       d   e[        [        S-  S	[        S-  -  -
  [        S-  -
  S
[        -  [        -  -   S[        -  [        -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   S[        -  [        -  -   S[        -  [        -  -   S[        -  [        -  -   5      (       d   e[        [        S-  S[        S-  -  -   [        S-  -   [        [        -  -
  S[        -  [        -  -
  5      (       d   e[        [        S-  S[        S-  -  -   [        S-  -   [        [        -  -
  S[        -  [        -  -
  S[        -  [        -  -   5      (       d   e[        [        S-  S[        S-  -  -   [        S-  -   S
[        -  [        -  -
  S[        -  [        -  -
  S[        -  [        -  -   5      (       d   e[        [        [        -  S[        -  [        -  -
  S
[        -  [        -  -   5      (       d   e[	        [        S-  [        S-  -   [        S-  -   5      S:X  d   e[	        [        S-  [        S-  -   5      b   e[        [        S 5        S[        -  [        -  S[        -  [        -  -
  S[        S-  -  -   S[        -  [        -  -
  S[        S-  -  -   n [        U 5      S:X  d   e[	        S[        S-  -  S[        S-  -  -   [        S-  -
  5      S:X  d   e[        [        [        -  S[        -  [        -  -   5      SS[        4:X  d   eS[        -  [        -  S[        -  [        -  -
  S[        -  [        -  -
  S[        S-  -  -   n [        U 5      S[        S-  -  S[        -  [        -  -
  S[        -  [        -  S[        S-  -  -   S[        -  [        -  4:X  d   e[        [        [        -  S[        -  [        -  -   5      S[        -  [        -  [        * [        S-  -  [        S-  -   [        [        -  4:X  d   eg )Nr]   rm   rU   r   r   r   r   r  1   r   rn   r   r   r   c                      [        [        [        [        4[        [        -  S[        S-  S[        S-  S[        S-  S05      $ )Nr\   r]   rU   r   )r6   rO   rj   rk   rP   rL   rJ   rQ   -test_diop_ternary_quadratic.<locals>.<lambda>  s6    &1ay	
1aAq!Q$1a4+	-rL   r   r   )r   r]   r   )r\   r   r]   r   r   r   )r   rO   rk   rj   r   r@   rz   r   rE   r3   pqr   rH   s    rJ   test_diop_ternary_quadraticr>    sX   1QT6AqD=1a4/!A#a%788881a4!Q$;A-!3ac9::::1QT6AaC<!A#-!344441a4!A#:!+,,,,1QT6AaCE>AaC/00001QT6AadF?QqS011111QT6AadF?QT1AaCE9AaCEAAaCEIJJJJ1QT6BqDF?++++2ad7Qq!tV+ac!e3ad:;;;;1a4"QT'>AqD02a4691Q3q5@AAAA2ad7Qq!tV+ac!e3ac!e;ac!eCDDDD1a4!AqD&=1a4/!A#51Q>????1a4!AqD&=1a4/!A#51Q>AaGHHHH1a4!AqD&=1a4/"Q$q&82a46ABqDFJKKKK1Q31Q;Aa/0000(A1q!t);<@RRRR(A15===
: - . 
Aa!A#a%!AqD&	 1Q3q5	(1QT6	1B!"%222(1a4!AqD&1a4)?@  !!A#!A+.	Q  	Aa!A#a%!A#a%	!AqD&	(B(,	
1a4!A#a%Aa!AqD&!A#a%01 1 1 acAaCEk"r!tAvs1a4x!Q$!&DDDDrL   c                  $   [        S5      [        S5      s=:X  a  S:X  d   e   e[        S5      S:X  d   e[        S5      [        S5      s=:X  a  S:X  d   e   e[        S5      [        S5      s=:X  a  S:X  d   e   e[        S	5      [        S
5      s=:X  a  S:X  d   e   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        [        S
5      5      S:X  d   eg )Nr\   r~   r   r   r   rm   r   r]   r   r   r   r   rU   4   r9  r   i  ro   )r'   r   rP   rL   rJ   test_square_factorrA    s   }R05A55555q   }R05A55555}R05A55555c 27a77777q   !!!!!!!!!###3(A---rL   c                     [        [        S-  [        S-  -   [        S-  -
  5      (       d   e[        [        S-  S[        -  [        -  -   [        S-  -   5      (       d   e[        S[        S-  -  S[        S-  -  -
  [        S-  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  S[        -  [        -  -
  S[        -  [        -  -   S[        -  [        -  -
  5      (       d   e[        [        S-  [        S-  -
  [        S-  -
  5      (       d   e[        [        S-  S[        S-  -  -
  [        S-  -
  S[        -  [        -  -   S	[        -  [        -  -
  5      (       d   e[        S	[        -  [        -  [        S-  -   5      (       d   e[        S
[        S-  -  S[        S-  -  -
  S[        S-  -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -
  S[        -  [        -  -
  S[        -  [        -  -
  S[        -  [        -  -
  5      (       d   e[        S[        S-  -  S[        S-  -  -   S[        -  [        -  -   S[        -  [        -  -   S[        -  [        -  -   5      (       d   e[        S
[        S-  -  S[        S-  -  -
  S[        S-  -  -
  5      (       d   eg )Nr]   r,  r-  rU   r   r   r9  r   r   r.  r   r/        r   r   rn   r0  rP   rL   rJ   "test_parametrize_ternary_quadraticrE    sa   1a4!Q$;A-....1a4!A#a%<!Q$.////3q!t8eAqDj01a4788881QT6AadF?QT1AaCE9AaCEAAaCEIJJJJ1a4!Q$;A-....1a4"QT'>AqD02a469AaCEABBBB1Q3q51a4<((((3q!t8bAg-QT	9::::3q!t8c!Q$h.Aa7"Q$q&@2a46IJJJJ2ad7Qq!tV+ac!e3ac!e;ac!eCDDDD3q!t8bAg-QT	9::::rL   c                  ^   [        S[        -  [        -  [        [        -  -   S[        -  [        -  -
  5      (       d   e[        S[        -  [        -  S[        -  [        -  -
  S[        -  [        -  -
  5      (       d   e[        S[        -  [        -  S[        -  [        -  -   5      (       d   e[        [        [        -  [        [        -  -   [        [        -  -   5      (       d   e[        S[        -  [        -  S[        -  [        -  -   S[        -  [        -  -   5      (       d   eg )Nr]   rU      iY  r   r   r   r0  rP   rL   rJ    test_no_square_ternary_quadraticrH    s    1Q3q51Q3;1Q.////3q57SU1W,r!tAv566662a46BqDF?++++1Q319qs?++++2a46BqDF?RT!V34444rL   c                      / SQn U  H+  u  p[        X5      u  p4nXS-  -  X%S-  -  -   US-  :X  a  M+   e   [        [        S 5        [        [        S 5        [        [        S 5        g )N)	r  r  r   r!  r   r#  r$  r%  r&  r]   c                      [        SS5      $ )Nr~   r   r   rP   rL   rJ   rQ   test_descent.<locals>.<lambda>  s
    gb"orL   c                      [        SS5      $ )Nr   rU   rK  rP   rL   rJ   rQ   rL    s
    gamrL   c                      [        SS5      $ )Nrm   rU   rK  rP   rL   rJ   rQ   rL    s
    gamrL   )r   r@   rV   ZeroDivisionErrorr'  s         rJ   test_descentrP    sf    	gA!-aAvQ$!Q$&&& 
 9-.
34
9+,rL   c                  2   [        [        [        -
  [        [        -
  -  [        [        -
  -  5      (       d   e[        [        [        -
  [        S-  [        S-  -   [        S-  -
  -  5      (       d   e[        [        S[        -  -
  S[        -  -   [        S-  [        S-  -   [        S-  -
  -  5      (       d   e[        [        S-  S[        S-  -  -
  S-
  5      (       d   e[        [        S-  S[        -  [        -  -   5      (       d   e[        [        S-  S[        -  [        -  -
  [        S-  -   5      (       d   e[        [        [        S-  [        S-  -
  S-
  -  5      (       d   e[        [        S[        -  S[        -  -
  S-   -  5      (       d   e[        [        S-  S[        S-  -  -
  S-
  [        S-  [        S-  -
  S-
  -  5      (       d   e[        [        S-  S[        S-  -  -
  S-
  [        S[        -  -
  -  5      (       d   e[        [        S-  [        S-  -   [        S-  -
  [        S[        -  -
  S[        -  -
  S[        -  -   -  5      (       d   e[        [        S-  S[        -  [        -  -
  S[        -  [        -  -   5      (       d   e[        [        S-  S[        -  -
  S-   5      (       d   e[        [        [        -
  5      [        [        [        [        5      5      :X  d   e[        S-  [        S-  -   S-
  n [        U S	S
9[        U * S	S
9:X  d   e[        S[        -  [        -  S[        -  [        -  -
  5      S[        -  S[        -  41:X  d   e[        S-  [        S-  -   [        S-  -   S-
  n S1n[        U 5      U:X  d   e[        [        UR                  5       5      5      n[        U S	S
9U:X  d   e[        [        S-  [        [        SS5      -  -   S-
  5      [        5       :X  d   eS[        S-  -  S[        S-  -  -
  [        S-  -
  n U R                  5       n[        [        [        [        4U5      S1:X  d   e[        U 5      S[        S-  -  S[         S-  -  -   S[        S-  -  S[        -  [         -  -
  S[         S-  -  -   S[        S-  -  S[        -  [         -  -
  S[         S-  -  -
  41:X  d   eS[        S-  -  S[        S-  -  -   [        S-  -
  n U R                  5       n[        [        [        [        4U5      S1:X  d   e[        U 5      S[        S-  -  [         S-  -
  S[        S-  -  S[        -  [         -  -   [         S-  -
  S[        S-  -  S[        -  [         -  -
  S[         S-  -  -   41:X  d   eS[        S-  -  S[        S-  -  -   S[        S-  -  -
  n U R                  5       n[        [        [        [        4U5      S1:X  d   e[        U 5      S[        S-  -  S[         S-  -  -
  S[        S-  -  S [        -  [         -  -   S![         S-  -  -
  S"[        S-  -  S#[        -  [         -  -
  S$[         S-  -  -   41:X  d   eS%[        S-  -  S&[        S-  -  -   S'[        S-  -  -
  n U R                  5       n[        [        [        [        4U5      S(1:X  d   e[        U 5      S)[        S-  -  S*[         S-  -  -
  S+[        S-  -  S,[        -  [         -  -   S-[         S-  -  -
  S.[        S-  -  S/[        -  [         -  -
  S0[         S-  -  -   41:X  d   e[        S-  S[        S-  -  -   S1[        S-  -  -
  n U R                  5       n[        [        [        [        4U5      S21:X  d   e[        U 5      S3[        -  [         -  S[        S-  -  S3[         S-  -  -
  [        S-  S1[         S-  -  -   41:X  d   e[#        [$        S4 5        [        S[        -  5      [        5       :X  d   e[        S[        -  S[        -  -   [&        R(                  -
  5      1 S5k:X  d   e[        [        S-  [        S-  -   S[        -  -   S-
  S	S
91 S6k:X  d   e[        [        S-  [        S-  -   S7-
  S8-
  [        [        4S	S991 S:k:X  d   e[        [        S-  [        S-  -   S7-
  S8-
  [        [        4S	S991 S:k:X  d   e[        [        S-  [        -
  5      (       d   e[        [        S-  [        -
  5      (       d   e[        [        S-  [        -
  [*        5      [*        [*        S-  41:X  d   e[        [        S-  [        -
  [*        5      [*        S-  [*        41:X  d   eg );Nr]   rU   r   r\   rp   r   rm   a   Tpermutero   r\   r]   rU   \   c   )r   r   3   i{  r   iKf   i  ij  rX  )r\   r\   r]   r   i  9      )i  iU
  i  i i ii ia i iڙ iV
 i=  i  i  )r9        i	  i>  iipE i* i',  i  i  r   )r   r]   r\   r   c                  :    [        [        [        S-  -  S-   5      $ )Nr]   r\   r   rO   rj   rP   rL   rJ   rQ   "test_diophantine.<locals>.<lambda>-  s    AadFQJ(?rL   >   r   rU   r   rm   rm   r   rU   r   r\   >   r   r#  rm   r\   rm   r~   r   r\   r   r~   r   r~   r\   r   Q   )symsrT  >   r]   rU   r]   r   rU   r]   rU   r   r   r]   r   r   r   rU   r   r   )r   rO   rj   rk   ri   r   r   r   r   rY   rB   popr   as_coefficients_dictr6   r<  r=  r@   r{   r	   Halfr   )rI   base_solcomplete_solnr  s       rJ   test_diophantinery    s	   AEAE?AE23333AEAqD1a4K!Q$$678888A!GacMAqD1a4K!Q$,>?@@@@1a4!AqD&=1,----1a4!A#a%<((((1a4!A#a%<!Q$.////1adQTkB./00001acAaCi!m,----AqD1QT6MA-1q!tb0@ABBBBAqD1QT6MA-AaC89999AqD1a4K!Q$.QqS1Q311DEFFFF 1a4!A#a%<!A#a%/00001a4!A#:>****q1uR1X!6666	
A1r	Br4(KT,JJJJqs2v!B'QsUAcEN+;;;;	
A1q!t	b	 B{Hr?h&&&+HLLN;<Mr4(M999q!taR 000145>>>	AqD2ad7	QT	!B##%E)1a)U;<  r?AqD1QT6419s1uQw.1a47QT	DF1Hr!Q$w& ( ) ) ) ) 
1a4!AqD&1a4	B##%E)1a)U;;  r?	!Q$Ar!Q$w1QA-	!Q$1Q1a4 ! " " " " 
QT"QT'	#ad(	"B##%E)1a)U;     r?AqD[6!Q$;&1wqy{(BAqD[) A+q
2VAqD[@B CC C C 
QT#ad(	3q!t8	#B##%E)1a)U;  r?!Q$Yq!t#VAqD[5719%<uQTz%I1a4Z%'!)#eAqDj02 33 3 3 
A!Q$AqD	 B##%E)1a)U;;  r?T!VQq!tVbAg%q!tbAg~678 8 8  ?@ qssu$$$qsQqSy166)*.XXXXq!tad{AaC'*D9ST T T
 q!tad{T)D01vtLST T Tq!tad{T)D01vtLST T T 1a4!8$$$$1a4!8$$$$1q1%1ad)4441q1%1a4)444rL   c                     SSK Jn JnJnJnJn  [        U S-  US-  -   US-  -   US-  -
  5      (       d   e[        U S-  SUS-  -  -   SUS-  -  -   US-  -
  5      (       d   e[        SU S-  -  SUS-  -  -   SUS-  -  -   US-  -
  5      (       d   e[        SU S-  -  SUS-  -  -   SUS-  -  -
  SUS-  -  -   5      (       d   e[        SU S-  -  SUS-  -  -
  SUS-  -  -   SUS-  -  -   5      (       d   e[        US-  * SU S-  -  -   SUS-  -  -   SUS-  -  -   SUS-  -  -   5      (       d   e[        SU S-  -  US-  -
  SUS-  -  -   US-  -   SUS-  -  -   5      (       d   e[        U S-  US-  -   US-  -   US-  -
  5      R                  [        [        [        /S9[        S-  [        S-  -   [        S-  -
  S[        -  [        -  S[        -  [        -  [        S-  [        S-  -   [        S-  -   41:X  d   eg )	Nr   r(  r)  cder]   rm   r   r   r   
parameters)	sympy.abcr(  r)  r|  r}  r~  r   r=   r   rO   rj   rk   r{  s        rJ   test_general_pythagoreanr  C  sL   ''1a4!Q$;A-1455551a4!AqD&=1QT61AqD899991QT6AadF?Qq!tV3ad:;;;;1QT6AadF?R1W4qAv=????1QT6Bq!tG+a1f4qAv=>>>>AqD51QT6>AadF2Qq!tV;bAgEFFFF2ad7QT>AadF2QT9Bq!tGCDDDDadQTkAqD01a478>>1aQR)>TTAqD[1a41Q!Aq!tad{QT/ABCD D DrL   c            
        ^ [        SS5       H4  n [        [        S [        SU -  5       5       5      U -
  5      (       a  M4   e   [	        [
        S-  [        S-  -   S-
  5      b   e[	        [
        S-  [        S-  -   [        S-  -   S-   5      [        5       :X  d   e[
        S-  [        S-  -   [        S-  -   S-
  m[	        T5      S1:X  d   e[        S-  [        S-  -   [
        S-  -   [        S-  -   [        S-  -   S-
  m[        [	        TS5      5      S:X  d   e[        S	5      [        S
SS94-   n[        U V s/ s H  o S-  PM	     sn 6 S-
  m1 Skn[        T5      U:X  d   e[        [        TSS95      S:X  d   e[        S[
        S-  -
  [        S-  -
  [        S-  -
  5      S1:X  d   e[        S-  [        S-  -   [         S-  -   ["        S-  -   S-
  m[%        [&        U4S j5        g s  sn f )NrU   r   c              3   *   #    U  H	  oS -  v   M     g7fr]   NrP   .0is     rJ   	<genexpr>9test_diop_general_sum_of_squares_quick.<locals>.<genexpr>T  s     "D1CAa41C   z:%ir]   ro   rU  i!  z:56Tnegativep   >   r   r   r]   r]   r]   r   r   r   r]   r   r   r   r   r   rm   rm   rm   r   r   r\   r\   r\   rU   r   r   r\   r\   r]   r   r   r   r\   r\   r   r   r   r   r\   r]   rU   r   r   r   r\   r   r   r   r   r   r]   r]   r]   r   r   r   r]   rU   rU   rU   r   r   r]   rU   r   r   r   r   rU   rU   rU   r   r   r\   r\   r\   rU   r   r   r\   r\   r]   rU   rm   r   r\   r\   rU   rm   r   r   r\   r]   rU   rU   r   r   r\   rU   rm   r   r   r   r]   r]   rm   rm   r   r   r]   rU   rU   rm   r   r   rS  i  r   )r]   r]   r]   rm   c                     > [        T * 5      $ rG   rg   rH   s   rJ   rQ   8test_diop_general_sum_of_squares_quick.<locals>.<lambda>o  s    rc(:rL   )ranger   sumr
   r   rO   rj   rk   rY   r  r   lenr   r   r(  r)  r|  r}  r@   r{   )r  var	base_solnrI   s      @rJ   &test_diop_general_sum_of_squares_quickr  R  s   1b\s"D1C"DDqHIIII  'q!tad{Q7???&q!tad{QT'9A'=>#%GGG	
A1q!t	y	)B&r*;  	
A1q!t	ad	"QT	)D	0B*2q12a777
$-7368
8C	S!S!tS!	"S	(BPI
 r?i'''{2t,-777 rAqDy1a4'!Q$./I;>>> 
A1q!t	ad	"Q	&B
 :;! "s    G2c                  n    [         S-  [        S-  -   [        S-  -   S-
  n 1 Skn[        U 5      U:X  d   eg )Nr]   i@B >   i    r   r   r     r       r   X     r   `  i  r     r   r  @  r   `   h  i  r  r  ih  r  r  `  r  r  r     r  r     r  r  r     r  r   r  i  r   r  iX  r  r  r   r  r  r  )rO   rj   rk   r   )rI   r  s     rJ   test_issue_23807r  r  s=    	
A1q!t	g	%BBI
 r?i'''rL   c                     S H9  n [        SS5       H&  n[        X5       H  n[        U5      U:X  a  M   e   M(     M;     [        [        SS5      5      / :X  d   e[        SSS5       Vs/ s H  n[        U5      PM     sn/ SQ/ SQ/ SQ/:X  d   e[        [        S	5      5      S
/:X  d   e[        [        SS	5      5      S
/:X  d   e[        S5       Vs/ s H  n[        U5      PM     sn/ SQSS/S//:X  d   eg s  snf s  snf )N)r   r   r\   r   rU   r   )r   r   r   r   rU   )r   r   r   r\   r]   )r   r   r\   r\   r\   r   rP   )r\   r\   r\   r]   )r  r$   r  list)nkr<  r  s       rJ   test_diop_partitionr  }  s   q!Aq_1v{"{ %   	!Q B&&&&q!Q/0/DG/0/5; ; ; ;	!"%%%	!Q RD(((&q\*\DG\*y1a&1#.FFFF	 1 +s   *C<Dc                      S H!  n [        U 5      u  pUS-  US-  -   U :X  a  M!   e   [        S5      b   e[        S5      nUS:X  a  [        US   5      [        L d   eg )N)
r   r   r   r   %   r   i%	  i  i  iY  r]   r   i5 )i  i  r   )r&   typeint)r  r(  r)  anss       rJ    test_prime_as_sum_of_two_squaresr    so    >*1-!tad{a ? 'q)111
%f
-C*c!f!444!4rL   c                     S H0  n [        U 5      u  pnUS-  US-  -   US-  -   U :X  d   eUS:  a  M0   e   [        [        S 5        [        S5      b   e[        S5      b   e[        S5      S:X  d   e[        S	5      S
:X  d   eg )N)r   r\   r]   r   r   l   my l   85Jdl   8l9_	 r  i!  i"  i#  i$  i%  i&  r]   r   c                      [        S5      $ Nr~   )r)   rP   rL   rJ   rQ   +test_sum_of_three_squares.<locals>.<lambda>  s
    3B7rL   r   i <  r   )r   r   r   rm   r   r   r]   )r)   r@   rz   )r  r(  r)  r|  s       rJ   test_sum_of_three_squaresr    s    1&q)a!tad{QT!Q&&&Avv	1 :78"***	*222  #y000"i///rL   c                  x   SSK Jn   U " SS5      n[        S [        U5       5       5      U:X  d   e[	        [
        S 5        [        S5       Hj  n[        U5      n[        U5      S:X  d   e[        S	 U 5       5      (       d   e[        S
 U 5       5      U:X  d   e[        U5      [        U5      :X  a  Mj   e   g )Nr   )randintr\   l    @ k c              3   *   #    U  H	  oS -  v   M     g7fr  rP   r  s     rJ   r  +test_sum_of_four_squares.<locals>.<genexpr>  s     43!t3r  c                      [        S5      $ r  )r(   rP   rL   rJ   rQ   *test_sum_of_four_squares.<locals>.<lambda>  s
    226rL   r  rm   c              3   *   #    U  H	  oS :  v   M     g7fr   NrP   r  rs     rJ   r  r    s     *6a66r  c              3   *   #    U  H	  oS -  v   M     g7fr  rP   r  s     rJ   r  r    s     (Aa4r  )sympy.core.randomr  r  r(   r@   rz   r  r  allr  sorted)r  r  results      rJ   test_sum_of_four_squaresr    s    ) 	?#A40344999 :674[$Q'6{a*6*****(((A---F|vf~--- rL   c            	      P   / SQn U  HL  nUu  p#n[        X#U5      n  [        U5      n[        U5      U:X  d   eSnU H
  nXxU-  -   nM     Xr:X  d   e M9     [	        [        SSSS5      5      SS/:X  d   e[        [        S	 5        [        [        S
 5        [        [        S 5        [	        [        SSS5      5      / :X  d   e[	        [        SSS5      5      S/:X  d   e[	        [        SSS5      5      / :X  d   e[	        [        SSS5      5      S/:X  d   e[	        [        SSSSS95      SS/:X  d   e[	        [        SSSSS95      / :X  d   e[	        [        SSS5      5      S/:X  d   e[	        [        SSS5      5      / :X  d   e[	        [        SSSS5      5      S/:X  d   e[	        [        SSSS5      5      / :X  d   e[        [	        [        SSS5      5      5      S:X  d   eSn	S H!  n
[	        [        U	SX-
  5      5      / :X  a  M!   e   g ! [         a     GM  f = f)N))r   rU   r]   )r,  r]   rm   )r]   r\   r]   )rU   r\   rU   )r   r]   r]   )i@0  r]   rm   )i  r]   rU   Tr   r   r]   rm   )r\   r\   rU   rU   )r   r   r]   rm   c                  .    [        [        SSS5      5      $ )Ng333333?r]   r  r%   rP   rL   rJ   rQ   +test_power_representation.<locals>.<lambda>  s    t$8a$CDrL   c                  .    [        [        SSS5      5      $ Nr]   r   r  rP   rL   rJ   rQ   r        t$8Aq$ABrL   c                  .    [        [        SSS5      5      $ r  r  rP   rL   rJ   rQ   r    r  rL   r~   r\   r^   rU   r_   rj  r   )zeros)r\   r]   r]   r]   r]   r]   )r   r   r   r   r   rU   r   Fr   r   r   i  pi   @)r   r   r   r   rm   r]   r\   )r%   nextr  StopIterationr  r@   rz   r4   )teststestr  r<  r  flchk_suml_ibigr  s              rJ   test_power_representationr    sf   E a q)
G1v{"{C%Q.G |#| 	 " $RAt45	|$% % %
:DE
:BC
:BC$RA./2555$Q1-.4&888$Q1-."444$Q1-.4&888$T1at<=	/01 1 1$T1au=>"DDD$RA./H:===$RA./2555$Q1d34@@@$Q1e45;;;t()91a@ABaGGG
C$M#q#'23r999 %/ ! s   5H
H%$H%c                     [        SSSS9u  p[        US-  X-  -   S-
  5      nU1 Sk:X  d   e[        SSSS9u  p4[        X4-  SU-  -   S	U-  -   S
-
  5      nU1 Sk:X  d   e[        SSS9u  pV[        SUS-  -  SU-  U-  -   S	U-  -
  5      nU1 Sk:X  d   e[        SSSS9u  pV[        SUS-  -  SU-  U-  -   S	U-  -
  5      nU[        5       :X  d   e[        SSSS9u  pV[        SUS-  -  SU-  U-  -   S	U-  -
  5      nUS1:X  d   eg)z4
Test whether diophantine respects the assumptions.
zm nT)rD   positiver]   i  >   i  r\   r   r   r   r   _   r   y   rm      r]   za bFrU   r   >   r   r   r   r   r   r   r   r   r   r   r   r   zx yrC   r   r   >   r   r\   r   r   r   )rD   r  r   N)r
   r   rY   )mr  diofr(  r)  rO   rj   s          rJ   test_assumptionsr    sL    5$6DAq!taczC'(DMMMM5$7DAqsQqSy1Q3*+DQQQQ5$'DAr!Q$w1Q1,-D----5$6DAr!Q$w1Q1,-D35==5$7DAr!Q$w1Q1,-DF8rL   c           	      <   [        U 5      n[        R                  " U 5      n[        U R                  5      nUR                  [        S9  U(       aL  UR                  5       nU H,  n[        UR                  [        X45      5      5      S:X  d  M,    O   gU(       a  ML  g)z
Determines whether solutions returned by diophantine() satisfy the original
equation. Hope to generalize this so we can remove functions like check_ternay_quadratic,
check_solutions_normal, check_solutions()
)keyr   FT)r   r   	make_argsr  free_symbolssortr   rt  rK   r  r   )rI   sfactorsr  solutionr  s         rJ   r   r      s     	BAmmBG
r
CHH!H"
557AQVVC$678A=   ! rL   c            	      x   S[         -  [        -   S-   S-  n [        U 5      [        S[        -  S-
  41:X  d   eS[         S-  -  S[         -  [        -  -   S[         -  -   S[        S-  -  -   S[        -  -   S-   n [        U 5      [        [        * S-
  4S[        -  S-
  [        41:X  d   e[        [         [        S-  -   S-
  5      [        S-  * S-   [        41:X  d   e[        [         [        -   S-
  5      [        S[        -
  4:X  d   e[        S	SSS S
9S:X  d   eS[        -  S-
  S[        -  S-   4n[        SSS[        5      U:X  d   e[        SSSS S
9[        S U 5       5      :X  d   e[        SSS5      [        5       :X  d   e[        SSS5      S1:X  d   e[        SSS5      S1:X  d   e[        [        S 5        [        SSS5      S:X  d   e[        S-  * [         S-  -
  [        S-  -
  [        S-  -   n [!        U 5      [!        U * 5      s=:X  a]  ["        S-  [$        S-  -   [&        S-  -
  S["        -  [&        -  S[$        -  [&        -  ["        S-  [$        S-  -   [&        S-  -   4:X  d   e   e[)        [+        [-        S5      [         S-  -   [-        S5      [         S-  -   [-        S5      [         /5      5      S	:X  d   e[)        [+        [/        SS5      [-        S5      [         -   [-        S5      [         /5      5      S	:X  d   e[)        [+        [-        S5      [         -   [/        SS5      [-        S5      [         /5      5      S	:X  d   e[1        SS5      S:X  d   e[3        S5      [5        S5      (       + s=:X  a  S:X  d   e   e[3        S	5      [5        S	5      (       + s=:X  a  S:X  d   e   e[7        SSS5      S:X  d   e[        [8        S 5        [;        SSS5      S:X  d   e[        [<        S 5        [        [<        S  5        [        [         S-  [        S-  -   S-
  S!-
  5      1 S"k:X  d   eg )#Nr]   r\   r   r   r   rm   r   rU   r   r   r   r   c              3   L   #    U  H  oR                  [        S 5      v   M     g7fr  )r  r   )r  _s     rJ   r  $test_diopcoverage.<locals>.<genexpr>#  s     :UQTA66!Q<<QTs   "$r   r   r   r   rn  c                      [        SSS5      $ )Nrm   r   r\   )r#   rP   rL   rJ   rQ   #test_diopcoverage.<locals>.<lambda>)  s    {1b!4rL   r   r   r   TFrU  c                      [        S5      $ )N)r]   rm   r   )r:   rP   rL   rJ   rQ   r&  ;  s	    k)4rL   rn   n   i6  )r   r\   r   c                  ~    [        [        S-  [        S-  -   [        [        -  -   S[        -  [        -  -   S-
  5      $ )Nr]   r   r   rO   rj   rk   rP   rL   rJ   rQ   r&  @  s1    AqD1a4K!A#4E!A4MPR4R(SrL   c                  :    [        [        S-  [        S-  -   5      $ )NrU   r]   r_  rP   rL   rJ   rQ   r&  A  s    AqD1a4K(@rL   rj  >   r\   r   r\   r   r  r   r~   r   r   r~   r~   r   r~   r   )rO   rj   r   r   r   r   r   r-   tupler.   rY   r@   rz   r0   ri   rk   r   m1m2m3r  r2   r	   r   r7   r8   r9   r:   rV   r/   r{   )rI   r  s     rJ   test_diopcoverager6    s   
A#'A+	Bb>sBsFQJ/0000	
1a4!A#a%"Q$	1a4	'"Q$	.	3Bb>q1"q&kBqD1Ha=9999!ad(Q,'adUQYN+;;;;q1uqy!c1s7^3331a40F:::Q37BqD1H
C1b!,3331bD1U:UQT:U5UUUUaB35(((aA6(***aBF8+++
:451a#v---
Q$A1	q!t	#B#B' "%,URU]RU"AbDGbDGRURU]RU*,, , , , ,
 {1Q4!A#:qtacz1Q4!=>!CCC{8Aq>1Q4!8QqTA3?@AEEE{1Q4!8Xa^QqTA3?@AEEE"b!Q&&&758|,,,,,,758|------q!Q9,,,
945h	2    ST
 @A!Q$A+,t34ST T TrL   c                  ~    [        SSSSSS5      S:X  d   e[        SSSS	S	S
5      S:X  d   e[        [        S 5        g )Nr]   r   r   rm   O   r   r]   r   r   r   r\   r   )r]   r   r]   c                  "    [        SSSSSS5      $ )Nr]   r   ro   rm   r8  r   )r1   rP   rL   rJ   rQ   test_holzer.<locals>.<lambda>O  s    vaB2r:rL   )r1   r@   rz   rP   rL   rJ   test_holzerr<  F  sK     !QAr2&*444 !Q1a$	111
::;rL   c                  B  ^
^^ U
UU4S jn Su  m
mmS=u  pp4S=u  pVpxU " U6 S:X  d   eU " U6 S:X  d   e[        T
US-  -  TUS-  -  TUS-  -  5      T
T-  T-  ::  d   e[        T
US-  -  TUS-  -  TUS-  -  5      T
T-  T-  ::  d   e[        XUT
TT5      n	X:X  d   eg )Nc                 8   > TU S-  -  TUS-  -  -   TUS-  -  -
  $ r   rP   )rO   rj   rk   r(  r)  r|  s      rJ   rQ   "test_fail_holzer.<locals>.<lambda>T  s&    1a4!AqD&1QT61rL   )rm   r8  r   )   r\   r   r9  r   r]   )maxr1   )rI   rO   rj   rk   xyzr  r  r3  r  hr(  r)  r|  s             @@@rJ   test_fail_holzerrD  R  s    	1BGAq!GA!GA!s8q==s8q==qAvqAvqAv&!A#a%///qAvqAvqAv&!A#a%///qQ1a A8O8rL   c                      [        S[        -  S[        -  -   S[        -  -   [        -
  5      [
        [        [        [        -   S[
        -  S[        -  -   S[        -  -   41:X  d   eg )Nr   r   r   r   )r   ri   rj   rO   rk   r   r   r   rP   rL   rJ   test_issue_9539rF  `  s[    qsQqSy2a4'!+,#sSy!C%"S&.1S5"89:; ; ;rL   c                      [        S[        S-  [        S-  -   [        S-  -   -  S[        [        -  [        [        -  -   [        [        -  -   -  -
  5      S1:X  d   eg )NrU   r]   ro   r   r   r   r*  rP   rL   rJ   test_issue_8943rI  e  sY    	1a4!Q$;AQqS1Q3Y1_!557;  rL   c                    ^ [         S-  [        S-  -   [        S-  -   S-
  m[        T5      SS1:X  d   e[	        TS5      SS1:X  d   e[        [        U4S j5        [        SSS	9n [         S-  [        S-  -   U S-  -   S-
  m[	        T5      S
1:X  d   e[        [         S-  [        S-  -   S-   5      [        5       :X  d   e[	        [         S-  [        S-  -   S-
  SS9[        5       :X  d   eg )Nrm   iq
  )rU   r   r   )r]   rm   r   r]   c                     > [        T * S5      $ r   )r   rH   s   rJ   rQ   .test_diop_sum_of_even_powers.<locals>.<lambda>o  s    (GQ(OrL   negTr  )r   r   r   r   )limit)
rO   rj   rk   r   r   r@   r{   r
   r   rY   )rM  rI   s    @rJ   test_diop_sum_of_even_powersrO  k  s    	
A1q!t	d	"Bb>i3333*2q1i5KKKK
 OP
%$
'C	
A1sAv		$B*2.:,>>>q!tad{Q'35000*1a4!Q$;?!DMMMrL   c                    ^ 1 Skn [         S-  [        S-  -   [        S-  -   [        S-  -   [        S-  -   S-
  n[        U[        5      n[        U5      S:X  d   eX :X  d   e[        [        S 5        [        [        SS5      5      S/:X  d   e[        [        SS5      5      / :X  d   e[        [        SSS5      5      S	/:X  d   e[        [        S
S5      5      / :X  d   e[        [        SS5      5      / :X  d   e[        [        SSS5      5      S/:X  d   e[        [        SS5      5      / :X  d   e[        [        SS5      5      S/:X  d   e[        [        SS5      5      / :X  d   e[        [        SS5      5      SS/:X  d   e[        [        SSS5      5      SS/:X  d   e[        [        SS5      5      S/:X  d   e[        S5       Vs/ s H"  n[        [        [        USS5      5      5      PM$     sn/ SQ:X  d   e[        S5       Vs/ s H!  n[        [        [        US5      5      5      PM#     sn/ SQ:X  d   e[        S5       Hm  m[        [        TSS5      5      nU(       a  [        U4S jU 5       5      (       d   e[        [        TS5      5      n[        U4S jU 5       5      (       a  Mm   e   [        [        S 5        [        [        S 5        [        [        S SS5      5      S!/:X  d   e[        [        S SS5      5      / :X  d   e[        [        SSS5      5      S/:X  d   e[        [        SSSS5      5      S"S#/:X  d   e[        [        SSSS5      5      / S$Q:X  d   e[        [        S%SS5      5      / :X  d   e[        [        S&SS5      5      / :X  d   e[        [        S'SS5      5      S(/:X  a  S'S':X  d   e[        [        SS)-  SS5      5      / :X  d   eg s  snf s  snf )*N>   r   r   r\   r\   r   r   r   r   r   r   r   r\   rU   r   r   r   r\   rm   r   r   r   rU   rm   r   r   r   rU   r   r   r   r\   r\   r]   r   r   r\   r\   r   r   r   r\   r]   rU   rU   r   r\   rU   rm   rm   r   r\   r   r   r   r   r]   r]   rU   r   r   r]   rU   r   r   r   rU   rU   rm   r   r   r]   r   ro   c                  ,    [        [        SS5      5      $ )Nr   r~   )r  r5   rP   rL   rJ   rQ   ,test_sum_of_squares_powers.<locals>.<lambda>  s    tN2r$:;rL   r\   r^   T)r   r\   r   rU   r   rH  rm   r_   r   2   )r   r   )r\   r   r   )r\   r\   r\   r]   r]   )r   r   r\   r\   rU   r   )r\   r\   r\   r\   r\   r\   r\   r\   r   )r\   r\   r\   r\   r]   r]   r\   r\   r]   r]   r]   r]   r]   rU   r]   r\   rU   rU   rU   rU   rm   rU   rU   r]   r]   rm   rm   rm   rm   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\   r\   r\   rU   c              3   N   >#    U  H  n[        S  U 5       5      T:H  v   M     g7f)c              3   *   #    U  H	  oS -  v   M     g7fr  rP   r  js     rJ   r  7test_sum_of_squares_powers.<locals>.<genexpr>.<genexpr>  s      1q!Aqr  Nr  r  r   r  s     rJ   r  -test_sum_of_squares_powers.<locals>.<genexpr>  s!     C1S 1q 11Q6   "%c              3   N   >#    U  H  n[        S  U 5       5      T:H  v   M     g7f)c              3   *   #    U  H	  oS -  v   M     g7fr  rP   rd  s     rJ   r  rf    s     'Q!tQr  Nrg  rh  s     rJ   r  ri    s!     9b3'Q''1,brj  c                  .    [        [        SSS5      5      $ )Nr]   r~   r\   r  r4   rP   rL   rJ   rQ   r`    s    tM!R$;<rL   c                  .    [        [        SSS5      5      $ )Nr]   r\   r~   rn  rP   rL   rJ   rQ   r`    s    tM!Q$;<rL   r   r   r  )r   r\   r\   ))r   r   )r\   rm   rl  r      i  )r   r  )r  r   rO   rj   rk   r   r   r  r@   rz   r  r5   r  rY   r  r4   )trurI   r  r  s1s2s      `  rJ   test_sum_of_squares_powersrt  w  s   -C 
A1q!t	ad	"QT	)C	/B
%b"
-Cs8r>>::
:;<q!$%$///q!$%+++q!T*+x777sA&'2---q!$%+++q!T*+	{:::q!$%+++q!$%$///q!$%+++r1%&66*::::r1d+,1* * * *q!$%*B)CCCC;@9E9aC^Aq$/019E J    6;2Y?YC^Aq)*+Y? D    2Y1d+,CCCCCC1%&9b99999	  :<=
:<=b!Q'(XJ666b!Q'(B...aA&'D6111aAt,-)Y1GGGGaAt,-1IIIIaA&'2---dAq)*b000dAq)*tf4$$,GGagq!,-333= F @s   )O1(O6c                     [        SS5      SL d   e[        SS5      SL d   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      SL d   eg )	NrU   r~   Fr   r\   r   rm   r]   )r;   rP   rL   rJ   test__can_do_sum_of_squaresrv    s    !!R(E111!"a(E111!!Q''''!!Q''''!!Q''''!!Q''''!!Q'5000rL   c                     SSK Jn JnJnJnJn  U S-  US-  -   S-
  nS1n[        U5      U:X  d   e[        [        UR                  5       5      5      n[        USS9U:X  d   eU S-  US-  -   US-  -   US-  -   US-  -   S	-
  n[        [        U5      5      S
:X  d   e[        [        USS95      S:X  d   e1 Skn[        S[        S-  -  S[        -  [        -  -   S[        S-  -  -   S-
  SS9U:X  d   eg )Nr   r{  rm   rR  rl  TrS  r]   r,  #   i0  r   r   r   r   )r  r(  r)  r|  r}  r~  r   rY   rB   rt  r  rO   rj   )	r(  r)  r|  r}  r~  rI   rw  rx  solns	            rJ   test_diophantine_permute_signrz    s   ''	
A1	$BxHr?h&&&+HLLN;<Mr4(M999	
A1q!t	ad	"QT	)C	/B{22%%%{2t,-666/Dr!Q$wAa'"QT'1B6EMMMrL   c                  n    [         S-  [        S-  -   S-
  S-
  n [        U [         [        /S9SS1:X  d   eg )Nr]   rm   r\   rj  rk  r  )r\   rU   rO   rj   r   rH   s    rJ   test_not_implementedr~    s;    	
A1t	d	"BrA'FF+;;;;rL   c                     ^  [         S[        -  -
  S-   m [        T [        [         /S9[        S[        -  S-
  41:X  d   e[	        [
        U 4S j5        g )NrU   r]   r|  c                  ,   > [        T [        [        1S9$ )Nr|  )r   rj   rO   rH   s   rJ   rQ   !test_issue_9538.<locals>.<lambda>  s    k"Aq6:rL   )rO   rj   r   r   r@   rV   rH   s   @rJ   test_issue_9538r    sH    	
QqS1Br1&C3+;*<<<<
9:;rL   c                     [        S[        S-  -  [        S-  -   S[        S-  -  -
  5      n [	        [        U 5      R                  5      u  pnU US-  SUS-  -  -
  SUS-  -  SU-  U-  -   SU-  U-  -
  SUS-  -  -
  US-  SU-  U-  -
  SUS-  -  -   SU-  U-  -
  41:X  d   e[        [        S-  S[        S-  -  -   S[        S-  -  -
  5      n U SU-  U-  US-  SUS-  -  -
  US-  SUS-  -  -   41:X  d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  5      n U SUS-  -  US-  -
  SUS-  -  SU-  U-  -   US-  -
  SUS-  -  SU-  U-  -
  SUS-  -  -   41:X  d   e[        S[        S-  -  S[        S-  -  -   S[        S-  -  -
  5      n U SUS-  -  SUS-  -  -
  S	U-  U-  S
US-  -  SUS-  -  -   41:X  d   e[        S[        S-  -  S[        S-  -  -   [        S-  -
  S[        -  [        -  -
  S[        -  [        -  -   S[        -  [        -  -
  5      SUS-  -  SU-  U-  -
  US-  -
  SUS-  -  SU-  U-  -   US-  -
  SUS-  -  SU-  U-  -
  SUS-  -  -   4:X  d   e[        S[        S-  -  S[        S-  -  -
  S[        S-  -  -
  5      SUS-  -  SUS-  -  -
  SUS-  -  SU-  U-  -   SUS-  -  -
  SUS-  -  SU-  U-  -   SUS-  -  -   4:X  d   eg )Nr]   r   rm   rU   H   r   r   r   r   r   r   r   r.  r   r/  i~i i
  ix  i:
 ii  ib<  )r   rO   rj   rk   r   r	   r  r3   )r  r<  r=  r  s       rJ   test_ternary_quadraticr    s   AadFQTMAadF*+Aad''(GA!	1qAv
1a4!A#a%!A#a%!AqD&(	1qs1uqAv!A%' ( ( ( (
 	AqD1QT6MAadF*+A!A#a%A!Q$1qAv67777AadFQq!tVOad*+A!AqD&1a4-AqD1Q3q51a4!7	!Q$1Q1a4! " " " " 	AadFR1W$r!Q$w./A"QT'AadF"AaCE1QT6AadF?;<<<<(	!Q$1a4!Q$1Q&1Q.1Q68	!Q$1QAqAv!A~14a1f	!A7!Q$7<   )AqD2ad7T!Q$Y&(ad
VAqD[ $q!t)eAgai"7q!t#AXQq(5A:5,77 7 7rL   c                  j	  ^^^ [        / / 5      m[        T5      [        5       :X  d   eTR                  S:X  d   eTR                  S:X  d   e[	        [
        U4S j5        [        TR                  5       5      / :X  d   e[        [        [        /[        [        /5      mTR                  [        [        4:X  d   eTR                  [        [        4:X  d   e[	        [
        U4S j5        TR                  S5        [        T5      S1:X  d   eTR                  SS[        45        [        T5      SS[        41:X  d   e[	        [
        UU4S j5        [        TR                  5       5      [        S[        [        0[        S[        S0/:X  d   e[        [        [        [        /[        [        /5      m[        TR                  5      S	:X  d   eTR                  [        S	-  [        -   [        [        -
  S
45        [        T5      [        S	-  [        -   [        [        -
  S
41:X  d   eTR!                  [        S	5      [        S-   S	[        -
  S
41:X  d   eT" S	5      [        S-   S	[        -
  S
41:X  d   eTR!                  [        S[        S05      S1:X  d   eT" SS5      S1:X  d   eTR!                  [        S05      [        S-   S[        -
  S
41:X  d   eT" S5      [        S-   S[        -
  S
41:X  d   eTR!                  [        S5      [        S	-  S-
  [        S-   S
41:X  d   eT" S S5      [        S	-  S-
  [        S-   S
41:X  d   eTR!                  [        S	[        S05      S1:X  d   eT" S	S5      S1:X  d   eTR!                  [        S[        S05      S1:X  d   eT" SS5      S1:X  d   e[	        ["        U4S j5        [	        ["        U4S j5        [	        [
        U4S j5        [	        [
        U4S j5        [	        [
        U4S j5        [	        [
        U4S j5        [	        ["        U4S j5        [        [        [        /[        [        /5      n U R                  [        S[        -  45        U R                  [        * S[        -  45        U " SS5      S1:X  d   eg )NrP   c                  0   > T R                  [        45      $ rG   )addrO   )rr  s   rJ   rQ   /test_diophantine_solution_set.<locals>.<lambda>  s    rvvqd|rL   c                  &   > T R                  S5      $ )Nr^   r  )rs  s   rJ   rQ   r    s    rvvd|rL   )rU   rm   r~   c                  &   > T R                  T5      $ rG   )update)rr  rs  s   rJ   rQ   r    s    ryy}rL   rU   rm   r]   r\   r   r   )rZ  r~   r\   r   r   r   )r   r   r\   )   r   r\   c                  "   > T R                  SS9$ )Nr\   )rO   r  s3s   rJ   rQ   r    s    bggglrL   c                  *   > T R                  SSS5      $ Nr\   r]   rU   r  r  s   rJ   rQ   r    s    bggaA.rL   c                  &   > T R                  S5      $ )NrP   r  r  s   rJ   rQ   r    s    rvvbzrL   c                  &   > T R                  S5      $ )N)r\   r]   rU   rm   r  r  s   rJ   rQ   r    s    rvvl3rL   c                  &   > T R                  S5      $ )Nr   r  r  s   rJ   rQ   r    s    rvvf~rL   c                     > T " SSS5      $ r  rP   r  s   rJ   rQ   r    s    r!Q{rL   c                     > T " SS9$ )Nr\   r!  rP   r  s   rJ   rQ   r    s	    b1grL   r   r  r   r   )r<   rY   r
   r  r@   rz   r  dict_iteratorrO   rj   r   r  r  r  rk   r  r  rV   )s4rr  rs  r  s    @@@rJ   test_diophantine_solution_setr    s   	B	'Br7ce::==B
:+,  "#r)))	AA	/B::!Q==QF"""
:+,FF6Nr7vhIIfr1gr7vAw''''
:,-  "#B11a|'DDDD	Aq	Aq6	2Br}}"""FFAqD1Ha!eQ r71q!a%+,,,,771a=a!eQUA.////a5a!eQUA&''''77Aq!Q< [M111a8}$$$77Aq6?BAq12222a5a"fa!eQ'((((771b>q!taxQ23333dB<QTAXq1ua0111177Aq!Q< [M111a8}$$$77Aq!R=!j\111a9$$$
9*+
9./
:)*
:34
:-.
:*+
9o&	AA	/BFFAr!t9FFQB1:a8xrL   c                      S[         -  [        -  S[        S-  -  -   n [        U 5      R                  [        [
        /S9nU[        S[        -  4[        S[        -  41:X  d   eU" SS5      S1:X  d   eg )	NirU   r]   r  r   ir   r   )rO   rj   r>   r   r   r  )rI   r  s     rJ    test_quadratic_parameter_passingr  "  sq    	Qq1QT6	Br"((QF(;HBqD	As1u:....Aq>fX%%%rL   c                     [         S-  S[         -  -
  [        S-  -   S[        -  -
  n [        U 5      nU1 Sk:X  d   eS[         S-  -  S[         -  -
  S[        S-  -  -   S[        -  -
  S-   n[        U5      nUS1:X  d   eg )	Nr]   rp   r   >   r   r   r   rp   r   rp   r   r   rm   r~   rm   r   rm   ro   r   r}  )eq1r   eq2s      rJ   test_issue_18628r  )  s    
Q$A+1
qs
"C
c
CFFFF
AqD&1Q3,1a4
!A#
%
*C
c
C6(??rL   N)sympy.core.addr   sympy.core.mulr   sympy.core.numbersr   r   r   sympy.core.relationalr   sympy.core.singletonr	   sympy.core.symbolr
   sympy.matrices.denser   sympy.ntheory.factor_r   sympy.simplify.powsimpr   sympy.core.functionr   sympy.core.sortingr   r   (sympy.functions.elementary.trigonometricr   sympy.solvers.diophantiner   %sympy.solvers.diophantine.diophantiner   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   sympy.testing.pytestr?   r@   rA   sympy.utilities.iterablesrB   r(  r)  r|  r}  r<  r=  rO   rj   rk   ri   r   r  r   r  r  r3  r   r   r   t_3t_4t_5t_6r3  r4  r5  rE   rK   rW   rZ   ra   r|   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r*  r1  r4  r7  r>  rA  rE  rH  rP  ry  r  r  r  r  r  r  r  r  r  r   r6  r<  rD  rF  rI  rO  rt  rv  rz  r~  r  r  r  r  r  rP   rL   rJ   <module>r     s<     1 1 $ " % ' + * ( 8 8 1            5 4 294d2D .1aAq!Q1aAq!Q$+FD$A !S#sCcVT*
BT4 +5
&7
X2/<0-=NAA B BH#V& <UO";

6!EH.;5-V5rD<@(
G50&.$*:Z6.,T^	< 
 
;
	N64r1N < <
<78. b&rL   