+
    iG                     x   ^ RI Ht ^ RIHt ^ RIHtHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItI ^ RIJHKtKHLtLHMtM ^ RINHOtO ]! RRR7      w  tPtQtRtStTtUtVtWtXtYtZt[t\t]t^t_]! RRR7      w  t`tatbtctdtetf]! RRR7      w  tgthti]! RRR7      tjR tkR tlR tmR tnR toR tpR tqR trR tsR  ttR! tuR" tvR# tw]KR$ 4       txR% tyR& tzR' t{R( t|R) t}R* t~R+ tR, tR- tR. tR/ tR0 tR1 tR2 tR3 tR4 tR5 tR6 tR7 tR8 tR9 tR: tR; tR< tR= tR> tR? tR@ t]MRA 4       tRB tRC tRD tRE tRF tRG t]MRH 4       tRI tRJ tRK tRL tRM tRN# )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                 <    \        \        \        V 4      4      4      # N)r   r   eqs   &n/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/solvers/diophantine/tests/test_diophantine.pydiop_simplifyrK   '   s    GHRL)**    c                  J    \        \        R  4       \        \        R 4       R# )c                  2    \        \        \        4      4      # rG   )r   r   x rL   rJ   <lambda>#test_input_format.<locals>.<lambda>,   s    k#a&1rL   c                  D    \        \        \        ,          ^,
          4      #    )r   rO   r   rP   rL   rJ   rQ   rR   -   s    k!B$(3rL   N)r@   	TypeErrorrP   rL   rJ   test_input_formatrW   +   s    
912
934rL   c                      \        ^4      \        4       8X  g   Q h\        \        ^4      4      \        4       8X  g   Q hR# )rU   N)r   setr	   rP   rL   rJ   test_nosolsrZ   0   s/    q>SU"""qt%%%rL   c                      \        \        ^,
          \        ^,
          ^,          ,          4      RR08X  g   Q h\        \        ^,
          \        ^,
          ,          4      RR08X  g   Q hR# )   Nr\      r   rO   rP   rL   rJ   test_univariatera   6   sM    q1uq1uqj()dD\999q1uq1uo&4,666rL   c            
         \        \        R  4       \        \        R 4       \        \        R 4       \        \        R 4       \	        ^\
        ^,          ,          ^\
        ,          ,           ^*,
          4      \
        .^R\
        ^\
        ^,          ^/R38X  g   Q h\	        \
        \        ,          \        ,           4      \
        \        \        .\
        \        ,          ^\        ^/R38X  g   Q h\	        \
        \        ,          \        ,           \        ,           \
        ^,          ,           4      \        \
        \        \        .\
        \        ,          ^\        ^\
        ^,          ^\        ^/R38X  g   Q h\	        \
        \        ,          \
        \        ,          ,           \
        ^,          ,           ^,           4      \
        \        \        .\
        \        ,          ^\
        \        ,          ^\
        ^,          ^^^/R38X  g   Q h\	        \
        \        ,          \        ,           \        ,           ^*,           4      \        \
        \        \        .\
        \        ,          ^\        ^^^*\        ^/R38X  g   Q h\	        \
        \        ,          \        \        ,          ,           4      \        \
        \        \        .\
        \        ,          ^\        \        ,          ^/R38X  g   Q h\	        \
        \        ^,          ,          ^,           4      \
        \        .\
        \        ^,          ,          ^^^/R38X  g   Q h\	        \
        ^,          \        ^,          ,           \        ^,          ,           ^b,
          4      \
        \        \        .^R\
        ^,          ^\        ^,          ^\        ^,          ^/R	38X  g   Q h\	        \
        ^,          \        ^,          ,           \        ^,          ,           4      \
        \        \        .\
        ^,          ^\        ^,          ^\        ^,          ^/R
38X  g   Q hR# )c                  J    \        \        ^,          ^,          ^,
          4      # r^   )r,   rO   rP   rL   rJ   rQ   $test_classify_diop.<locals>.<lambda><   s    mAqDFQJ7rL   c                      \        ^4      # r]   r,   rP   rL   rJ   rQ   rd   =   s	    }Q/rL   c                  p    \        \        \        ,          \        ,          \        ,          ^,
          4      # r]   )r,   wrO   yzrP   rL   rJ   rQ   rd   >   s    ac!eAgk(BrL   c                      \        \        ^,          \        ^,          ,           \        ^,          ,           ^Z,
          4      # rT   )r,   rO   ri   rj   rP   rL   rJ   rQ   rd   ?   s#    adQTkAqD6H26M(NrL   
univariateinhomogeneous_ternary_quadraticinhomogeneous_general_quadratichomogeneous_general_quadratic
cubic_thuegeneral_sum_of_even_powers$homogeneous_ternary_quadratic_normalNii)	r@   rV   
ValueErrorNotImplementedErrorr,   rO   ri   rj   rh   rP   rL   rJ   test_classify_diopru   ;   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                     \        \        4      R8X  g   Q h\        ^\        ,          4      R8X  g   Q h\        ^\        ,          4      R8X  g   Q h\        \        ^,           4      R8X  g   Q h\        ^\        ,          ^,           4      R8X  g   Q h\        ^\        ,          ^,           4      R8X  g   Q h\        \        \        ,           4      \        \        ) 38X  g   Q h\        \        \        ,           ^ ,           4      \        \        ) 38X  g   Q h\        \        \        ,           ^ ,
          4      \        \        ) 38X  g   Q h\        ^ \        ,          \        ,
          ^,
          4      R8X  g   Q h\        ^\        ,          ^\        ,          ,           ^,
          4      ^\        ,          ^,
          R\        ,          ^,           38X  g   Q h\        ^\        ,          ^\        ,          ,
          ^,
          4      ^\        ,          ^,
          ^\        ,          ^,
          38X  g   Q h\        R\        ,          ^\        ,          ,
          ^,
          4      ^\        ,          ^,           R\        ,          ^,
          38X  g   Q h\        ^\        ,          ^\        ,          ,           4      ^\        ,          R	\        ,          38X  g   Q h\        ^\        ,          ^\        ,          ,           4      R\        ,          \        38X  g   Q h\        ^\        ,          ^\        ,          ,           ^,
          4      ^\        ,          ^,
          R\        ,          ^,           38X  g   Q h\        ^\        ,          ^\        ,          ,           ^,
          4      R
8X  g   Q h\        ^ \        ,          ^\        ,          ,           ^\        ,          ,
          ^,           4      ^\        ,          ^,           ^\        ,          ^,           38X  g   Q h\        ^\        ,          ^\        ,          ,           ^\        ,          ,
          ^,           4      \        ^\        ,          ^\
        ,          ,           ^,           ^\        ,          ^\
        ,          ,           ^,           38X  g   Q h\        ^\        ,          ^\        ,          ,           ^\        ,          ,
          ^,           R4      R8X  g   Q h\        ^\        ,          ^\        ,          ,           ^\        ,          ,           ^,
          4      R8X  g   Q h\        ^\        ,          ^\        ,          ,           ^\        ,          ,
          ^,
          4      \        R\        ,          ^\
        ,          ,           ^,           R\        ,          ^\
        ,          ,           ^,           38X  g   Q h\        ^\        ,          ^\        ,          ,
          ^\        ,          ,           ^	,
          4      ^\        ,          ^,           \        ^\
        ,          ,           \
        38X  g   Q h\        ^\        ,          ^	\        ,          ,           ^\        ,          ,           \        ,
          4      \        \
        \
        \        ,           ^\        ,          ^\
        ,          ,           ^\        ,          ,           38X  g   Q h\        \        R 4       R# )r   Nc                  .    \        \        ^,          4      # r^   r`   rP   rL   rJ   rQ   test_linear.<locals>.<lambda>o   s    j1orL   r   )rG   )r{   ))NN)r      r~   NNN)
r   rO   ri   t_0rj   t_1rh   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                      \        ^\        ,          \        ,          ^"\        ,          ,           ^\        ,          ,
          ^,           4      RR08X  g   Q h\        ^\        ,          \        ,          ^\        ,          ,           ^\        ,          ,           ^,           4      \        4       8X  g   Q h\        R\        ,          \        ,          ^\        ,          ,           ^\        ,          ,
          ^6,
          4      R08X  g   Q h\        R\        ,          \        ,          ^\        ,          ,
          ^\        ,          ,
          ^6,
          4      R08X  g   Q h\        ^\        ,          \        ,          ^\        ,          ,           ^8\        ,          ,           ^,           4      0 R	m8X  g   Q h\        ^\        ,          \        ,          ^	\        ,          ,           ^\        ,          ,           ^,           4      \        4       8X  g   Q h\        \        \        ,          \        ,           \        ,           ^,           4      R\        3\        R308X  g   Q h\        ^0\        ,          \        ,          4      '       g   Q hR# )
rU   N)i{)r~   i)   r   rz   )rz   >   i_r   iiiii   i   r{   r   @   r\   )r   rO   ri   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                  z   \        ^*\        ^,          ,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,           ^\        ,          ,           ^\        ,          ,           R,
          4      R08X  g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           ^\        ,          ,           ^\        ,          ,
          ^,           4      \        4       8X  g   Q h\        \        ^,          \        ^,          ,           ^\        ,          ,           ^\        ,          ,           ^,           4      R08X  g   Q h\        ^\        ^,          ,          ^	\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^\        ,          ,
          R,
          4      R08X  g   Q h\        ^
\        ^,          ,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,           ^",
          4      0 Rm8X  g   Q hR# )*   i3  V  N)r   rz   rz   rz   )      r\   r\   r\   r{   r   rz   r_   )r   rO   ri   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                  R   \        ^\        ^,          ,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,           ^\        ,          ,           ^,           4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,           ^\        ,          ,           ^,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,           ^\        ,          ,           ^\        ,          ,           ^,
          4      '       g   Q h\        R\        ^,          ,          ^\        ,          \        ,          ,           \        ^,          ,
          ^\        ,          ,           ^,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,           \        ^,          ,           ^\        ,          ,           ^\        ,          ,           ^,           4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,
          \        ^,          ,           ^\        ,          ,           ^\        ,          ,           ^,           4      '       g   Q h\        \        ^,          ^)\        ,          ,
          ^(,           4      '       g   Q hR# )   Ncheck_solutionsrO   ri   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                     \        ^0\        ,          \        ,          4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          \        ^,          ,           ^,           4      '       g   Q h\        R\        ^,          ,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^\        ,          ,
          ^,           4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,           ^\        ,          ,
          ^\        ,          ,           ^,
          4      '       g   Q h\        ^\        ^,          ,          ^
\        ,          \        ,          ,           ^\        ^,          ,          ,           ^ \        ,          ,
          ^\        ,          ,
          ^,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          ^\        ,          ,
          ^\        ,          ,
          ^,
          4      '       g   Q h\        R\        ,          \        ,          ^\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          ^
,
          4      '       g   Q h\        \        ^,          \        ^,          ,
          ^\        ,          ,
          ^\        ,          ,
          4      '       g   Q h\        \        ^,          ^	\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^	\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          ^,
          4      '       g   Q hR# )0   Nr{   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                     \        \        ^,          ^\        ,          ,
          ^\        ^,          ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          4      '       g   Q h\        \        ^,          \        \        ,          ,
          \        ^,          ,
          ^\        ,          ,
          4      '       g   Q h\        \        ^,          ^	\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          4      '       g   Q h\        \        ^,          \        ^,          ,           ^\        ,          ,           ^\        ,          ,           ^,           4      P	                  4       R08X  g   Q hR# )r_   Nr   )r   rO   ri   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                  L   R^\         ,          ^\         ,          ^,
          ,          ,
          \        ^\        ,          ^,
          ,          ,           p \         \        3p\        V 4       F7  p\        V P	                  \        \        W4      4      4      4      '       g   K7  Q h	  R# )r   NirO   ri   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                      \         ^,          \         ,
          \        ^,          ,
          p \         \        3p\        V 4       F7  p\        V P	                  \        \        W4      4      4      4      '       g   K7  Q h	  R# r_   Nr   r   s      rJ   test_issue_18138r      sQ    	
AAqDB	
AA2 T#a+->!?@@@@ rL   c                     \        ^\        ^,          ,          ^
\        ,          \        ,          ,           ^\        ^,          ,          ,
          ^ \        ,          ,
          ^\        ,          ,
          ^,
          4      '       g   Q h\        R\        ^,          ,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^,
          4      '       g   Q h\        R\        ,
          ^\        ^,          ,          ,           \        ,
          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,
          4      '       g   Q h\        ^^\        ,          ,           ^\        ^,          ,          ,           ^\        ,          ,           \        \        ,          ,           ^\        ^,          ,          ,
          4      '       g   Q hR# )r   Nr   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                     \        ^^ 4      R
.8X  g   Q h\        RR4      . 8X  g   Q h\        R^4      R.8X  g   Q h\        R^4      R.8X  g   Q h\        R^4      . 8X  g   Q h\        ^ ^4      . 8X  g   Q h\        ^ ^	4      ^\        3.8X  g   Q h\        ^	^ 4      ^\        ,          \        3.8X  g   Q h\        ^^4      . 8X  g   Q h\        ^	^4      R.8X  g   Q h\        ^	R4      R.8X  g   Q h\        ^^ 4      R
.8X  g   Q h\        R^4      RR.8X  g   Q h\        R^4      . RO8X  g   Q h\        ^^4      R.8X  g   Q h\        R^4      R.8X  g   Q h\        R^4      R.8X  g   Q h\        R^4      R.8X  g   Q h\        R^4      R.8X  g   Q h\        ^^4      R.8X  g   Q h\        ^^4      R.8X  g   Q h\        ^R4      R.8X  g   Q h\        RR4      . 8X  g   Q h\        ^)R4      R.8X  g   Q h\        RR4      R .8X  g   Q h\        RR4      R!.8X  g   Q h\        ^ R4      . 8X  g   Q h\        ^R"4      . R#O8X  g   Q h\        R$^R^m^R"4      R8X  g   Q h\        ^^4      . R%O8X  g   Q h\        \        ^^4      4      0 R'm8X  g   Q h\        ^^4      R(.8X  g   Q h\        ^^4      . 8X  g   Q h\        ^^4      R)R*.8X  g   Q h\        ^^4      R&.8X  g   Q h\        ^R+4      . 8X  g   Q h\        ^{R+4      R,.8X  g   Q h\        ^^R-^^{R+4      '       g   Q h\        ^{R.4      R/R0.8X  g   Q h\        ^ ^ \        4      ^ \        3.8X  g   Q h\        ^ R\        4      . 8X  g   Q hR	# )1rU   i  i  i  i  i"  	S    TNr   r   r|   ir_   r\   r   r   )      iL)   r   rz   r\   r_   ))r   r~   )r~   r   )   r   )r   r   )i     )i  ix  )l   INd? l   j\)i  i"  )l   WRlQ]>I2l   AAJtWjU^	 )!   r   )   '   )r   r~   )    r~   )   r\   l   !K2l   uGoX r   )rU   r\   )r   m   $   
   r   ))   =   (      )      r   rU   r   r\   >   iX i  ipi"'Mi)  iS  l   )fMOl   ?_l   ;>x< i|r   )i  i  )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                  l   \        ^R4      . RO8X  g   Q h\        ^^4      . RO8X  g   Q h\        ^R4      . 8X  g   Q h\        R^4      R	.8X  g   Q h\        ^YR
4      RR.8X  g   Q h\        RR4      R.8X  g   Q h\        RR4      R.8X  g   Q h\        R^ \        4      R.8X  g   Q h\        ^ ^ \        4      ^ \        3.8X  g   Q h\        ^^ \        4      ^\        ,          \        3R\        ,          \        3.8X  g   Q h\        ^^ \        4      R.8X  g   Q h\        ^R\        4      . 8X  g   Q hR# )r     r   iT  Nr   )r   )r   r\   r   )r   )r   rU   r   )ir   r{   )l   uL" l   Er   	   r\   r   rz   r   )i  )   r   )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                      \        ^^^ 4      ^8X  g   Q h\        R^^4      ^8X  g   Q h\        R^^4      ^8X  g   Q h\        ^ ^^4      ^8X  g   Q h\        ^^^4      ^8X  g   Q h\        ^^^4      ^8X  g   Q hR# )r_   Nr{   r|   )r"   rP   rL   rJ   test_lengthr   #  s    !Q?a"aq   "a!!!!Qq   !R"""!Q?arL   c                   \        V 4      w  rV\        \        \        .4      ,          V,           ^ ,          pV\        \        \        .4      ,          V,           ^,          p\	        V P                  \        \        \        3W434      4      4      p\        VP                   Uu. uF&  p\        VP                  ! \        \        .!  4      NK(  	  up4      p\        \        ,          \        \        3 F  pWP                  4       9   g   K   R# 	  \        ^,          \        ^,          ^3 F  pWP                  4       9  g   K  ^ Wx&   K  	  V\        ^,          ,          ^ 8w  d^   \        V\        ^,          ,          V\        ^,          ,          4      ;'       d&    \        V^,          V\        ^,          ,          4      # R# u upi )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.
FT)r*   r   XYrK   subsr   rO   ri   r   argsreversedas_independentkeysr   )	rI   ABur   
simplifiedr   coeffterms	   &        rJ   is_pell_transformation_okr   ,  sE     #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   $,Gc                     \        R\        ^,          ,          ^\        ,          \        ,          ,
          \        ^,          ,           ^\        ,          ,           ^\        ,          ,
          ^,
          4      '       g   Q h\        R\        ^,          ,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          ^,
          4      '       g   Q h\        \        ^,          \        ^,          ,
          ^,           4      '       g   Q h\        \        ^,          ) ^\        ^,          ,          ,           ^,
          4      '       g   Q h\        ^\        ^,          ,          ^-\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^
\        ,          ,
          ^,           4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,           \        ^,          ,           ^\        ,          ,
          ^\        ,          ,
          ^,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ,
          ^Y,
          4      '       g   Q h\        ^\        ^,          ,          ^	\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^\        ,          ,
          R,
          4      '       g   Q hR# )r   r   Nr   r   )r   rO   ri   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                     \        \        ^,          ^\        ,          ,
          \        ^,          ,
          4      R8X  g   Q h\        \        ^,          ^\        ^,          ,          ,
          ^,
          4      R8X  g   Q h\        \        ^,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,
          ^,
          4      R8X  g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          \        ^,          ,
          ^	,
          4      R8X  g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          \        ^,          ,
          ^,
          4      R8X  g   Q h\        R\        ^,          ,          ^\        ,          \        ,          ,           \        ^,          ,
          4      R8X  g   Q h\        R	\        ^,          ,          ^\        ,          \        ,          ,
          \        ^,          ,           ^\        ,          ,           ^\        ,          ,
          ^,
          4      R
8X  g   Q hR# )r_   Nr   )rU   r~   )r~   r   )   r   )r   T   r   )r\   r   r   )e   i)r    rO   ri   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                      . ROp V  FD  w  r\        W4      w  r4pW^,          ,          W%^,          ,          ,           V^,          8X  d   KD  Q h	  \        RR4      e   Q h\        ^^4      e   Q hR# )r   Nrz   )r      rU   r   r   i)r   r}   )r}   r   [   r   r   r\   rz   )r   r   r   r   i) r\      i)r!   r   abrh   rO   ri   s         rJ   test_ldescentr  _  sk    
4A1.aAvQ$!Q$&&&  B###Aq>!!!rL   c                     \        ^\        ^,          ,          R\        ^,          ,          ,
          \        ^,          ,
          4      '       g   Q h\        ^\        ^,          ,          R\        ^,          ,          ,           \        ^,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           ^\        ^,          ,          ,
          4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,           \        ^,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          4      '       g   Q h\        \        ^,          \        ^,          ,           \        ^,          ,
          4      '       g   Q h\        ^\        ^,          ,          \        ^,          ,           ^\        ^,          ,          ,
          4      '       g   Q h\        ^\        ^,          ,          \        ^,          ,
          ^
\        ^,          ,          ,           4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           ^	\        ^,          ,          ,
          4      '       g   Q h\        ^"\        ^,          ,          ^\        ^,          ,          ,
          R\        ^,          ,          ,
          4      '       g   Q h\        ^|\        ^,          ,          ^\        ^,          ,          ,
          R\        ^,          ,          ,
          4      '       g   Q hR# )   A  ih  i-  1  Nr   rO   ri   rj   rP   rL   rJ   "test_diop_ternary_quadratic_normalr  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                    \        V 4      pV\        \        \        \        .4      ,          w  r#p\        V P                  \        \        \        \        3W#V34      4      4      p\        VP                   Uu. uF  p\        VP                  ! W#V.!  4      NK   	  up4      pW#,          W4,          W$,          3 F  pWP                  4       9   g   K   R # 	  R# u upi )FT)r+   r   rO   ri   rj   rK   r   r   r   r   r   r   r   )	rI   r   r   r   Zr   r   r   r   s	   &        rJ   is_normal_transformation_okr  y  s     $A1ay!!GA!rwwsAq!9qQi'@ABJ*//R/Q(1++aAY78/RSEac13::<    Ss   8$Cc                     \        \        ^,          ^\        ^,          ,          ,           \        ^,          ,           ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,           ^d\        ^,          ,          ,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,           4      '       g   Q h\        ^\        ^,          ,          ^d\        ^,          ,          ,
          ^\        ,          \        ,          ,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,           ^"\        ,          \        ,          ,
          ^\        ,          \        ,          ,           4      '       g   Q h\        \        ^,          ^"\        ,          \        ,          ,           ^\        ,          \        ,          ,
          \        \        ,          ,           4      '       g   Q h\        \        ^,          \        ^,          ,           \        ^,          ,           \        \        ,          ,
          \        \        ,          ,
          \        \        ,          ,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,           4      '       g   Q h\        \        \        ,          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           4      '       g   Q h\        ^\        ,          \        ,          ^\        ,          \        ,          ,           4      '       g   Q hR# r   )r  rO   ri   rj   rP   rL   rJ   test_transformation_to_normalr     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                     \        ^\        ^,          ,          \        ^,          ,           \        ^,          ,           ^\        ,          \        ,          ,
          4      '       g   Q h\        \        ^,          \        ^,          ,
          \        ^,          ,
          \        \        ,          ,
          \        \        ,          ,
          4      '       g   Q h\        ^\        ^,          ,          \        \        ,          ,
          \        \        ,          ,
          \        \        ,          ,
          4      '       g   Q h\        \        ^,          \        \        ,          ,
          \        \        ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          \        \        ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,
          \        \        ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ,          \        ,          ,
          4      '       g   Q h\        ^-\        ^,          ,          ^\        ^,          ,          ,
          ^\        ,          \        ,          ,
          \        ^,          ,
          4      '       g   Q h\        \        ^,          ^1\        ^,          ,          ,
          \        ^,          ,
          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,
          4      '       g   Q h\        ^Z\        ^,          ,          ^\        ^,          ,          ,           ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,           \        ^,          ,           \        \        ,          ,
          ^\        ,          \        ,          ,
          4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,           \        ^,          ,           \        \        ,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,           \        ^,          ,           ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           4      '       g   Q h\        \        \        ,          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           4      '       g   Q h\	        \        ^,          \        ^,          ,           \        ^,          ,           4      R8X  g   Q h\	        \        ^,          \        ^,          ,           4      e   Q h\        \        R 4       R\        ,          \        ,          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           p \        V 4      R8X  g   Q h\	        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          4      R8X  g   Q h\        \        \        ,          ^\        ,          \        ,          ,           4      R^ \        38X  g   Q hR\        ,          \        ,          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,
          ^\        ^,          ,          ,           p \        V 4      ^\        ^,          ,          ^\        ,          \        ,          ,
          R\        ,          \        ,          ^\        ^,          ,          ,           ^\        ,          \        ,          38X  g   Q h\        \        \        ,          ^\        ,          \        ,          ,           4      R\        ,          \        ,          \        ) \        ^,          ,          \        ^,          ,           \        \        ,          38X  g   Q hR# )	r_   Nc                      \        \        \        \        3\        \        ,          ^\        ^,          ^\        ^,          ^\        ^,          ^ /4      # r]   )r6   rO   ri   rj   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   rO   rj   ri   r   r@   rs   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                  D   \        ^4      \        R4      u;8X  d	   ^8X  g   Q h Q h\        ^ 4      ^8X  g   Q h\        ^4      \        R4      u;8X  d	   ^8X  g   Q h Q h\        ^4      \        R4      u;8X  d	   ^8X  g   Q h Q h\        ^4      \        R4      u;8X  d	   ^8X  g   Q h Q h\        ^4      ^8X  g   Q h\        ^4      ^8X  g   Q h\        ^44      ^8X  g   Q h\        ^14      ^8X  g   Q h\        R4      ^8X  g   Q h\        \        R4      4      ^8X  g   Q hR# )r\   i  Nrz   r|   r   r   )r'   r   rP   rL   rJ   test_square_factorr(    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                     \        \        ^,          \        ^,          ,           \        ^,          ,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,           \        ^,          ,           4      '       g   Q h\        ^\        ^,          ,          R\        ^,          ,          ,
          \        ^,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,
          4      '       g   Q h\        \        ^,          \        ^,          ,
          \        ^,          ,
          4      '       g   Q h\        \        ^,          ^1\        ^,          ,          ,
          \        ^,          ,
          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,
          4      '       g   Q h\        ^\        ,          \        ,          \        ^,          ,           4      '       g   Q h\        ^|\        ^,          ,          ^\        ^,          ,          ,
          R\        ^,          ,          ,
          4      '       g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,
          4      '       g   Q h\        ^Z\        ^,          ,          ^\        ^,          ,          ,           ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           4      '       g   Q h\        ^|\        ^,          ,          ^\        ^,          ,          ,
          R\        ^,          ,          ,
          4      '       g   Q hR# )r_   r  r  Nr  rP   rL   rJ   "test_parametrize_ternary_quadraticr*    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                  r   \        ^\        ,          \        ,          \        \        ,          ,           ^\        ,          \        ,          ,
          4      '       g   Q h\        ^\        ,          \        ,          R\        ,          \        ,          ,
          ^\        ,          \        ,          ,
          4      '       g   Q h\        ^\        ,          \        ,          ^"\        ,          \        ,          ,           4      '       g   Q h\        \        \        ,          \        \        ,          ,           \        \        ,          ,           4      '       g   Q h\        ^\        ,          \        ,          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           4      '       g   Q hR# )r_   iY  Nr  rP   rL   rJ    test_no_square_ternary_quadraticr,    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                     . ROp V  FD  w  r\        W4      w  r4pW^,          ,          W%^,          ,          ,           V^,          8X  d   KD  Q h	  \        \        R 4       \        \        R 4       \        \        R 4       R# )r   c                      \        RR4      # )r\   rz   r   r   rP   rL   rJ   rQ   test_descent.<locals>.<lambda>  s
    gb"orL   c                      \        ^ ^4      # ry   r/  rP   rL   rJ   rQ   r0    s
    gamrL   c                      \        ^^4      # r   r/  rP   rL   rJ   rQ   r0    s
    gamrL   N)	r  r	  r
  r  r   r  r  r  r  )r   r@   rV   ZeroDivisionErrorr  s         rJ   test_descentr5    sf    	gA!-aAvQ$!Q$&&& 
 9-.
34
9+,rL   c                     \        \        \        ,
          \        \        ,
          ,          \        \        ,
          ,          4      '       g   Q h\        \        \        ,
          \        ^,          \        ^,          ,           \        ^,          ,
          ,          4      '       g   Q h\        \        ^\        ,          ,
          ^\        ,          ,           \        ^,          \        ^,          ,           \        ^,          ,
          ,          4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,
          ^,
          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,           4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,
          \        ^,          ,           4      '       g   Q h\        \        \        ^,          \        ^,          ,
          ^,
          ,          4      '       g   Q h\        \        ^\        ,          ^\        ,          ,
          ^,           ,          4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,
          ^,
          \        ^,          \        ^,          ,
          ^,
          ,          4      '       g   Q h\        \        ^,          ^\        ^,          ,          ,
          ^,
          \        ^\        ,          ,
          ,          4      '       g   Q h\        \        ^,          \        ^,          ,           \        ^,          ,
          \        ^\        ,          ,
          ^\        ,          ,
          ^\        ,          ,           ,          4      '       g   Q h\        \        ^,          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           4      '       g   Q h\        \        ^,          ^\        ,          ,
          ^,           4      '       g   Q h\        \        \        ,
          4      \        \        \        \        4      4      8X  g   Q h\        ^,          \        ^,          ,           ^a,
          p \        V RR7      \        V ) RR7      8X  g   Q h\        ^\        ,          \        ,          ^\        ,          \        ,          ,
          4      ^\        ,          ^\        ,          308X  g   Q h\        ^,          \        ^,          ,           \        ^,          ,           ^,
          p R0p\        V 4      V8X  g   Q h\        \        VP                  4       4      4      p\        V RR7      V8X  g   Q h\        \        ^,          \        \        ^^4      ,          ,           ^,
          4      \        4       8X  g   Q h^\\        ^,          ,          ^c\        ^,          ,          ,
          \        ^,          ,
          p V P                  4       p\        \        \        \        3V4      R08X  g   Q h\        V 4      R\        ^,          ,          ^	\         ^,          ,          ,           R\        ^,          ,          ^f\        ,          \         ,          ,
          ^\         ^,          ,          ,           R\        ^,          ,          R\        ,          \         ,          ,
          ^3\         ^,          ,          ,
          308X  g   Q h^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          p V P                  4       p\        \        \        \        3V4      R08X  g   Q h\        V 4      ^\        ^,          ,          \         ^,          ,
          R\        ^,          ,          ^\        ,          \         ,          ,           \         ^,          ,
          ^\        ^,          ,          ^\        ,          \         ,          ,
          ^\         ^,          ,          ,           308X  g   Q hR\        ^,          ,          ^9\        ^,          ,          ,           ^\        ^,          ,          ,
          p V P                  4       p\        \        \        \        3V4      R 08X  g   Q h\        V 4      R\        ^,          ,          R\         ^,          ,          ,
          R!\        ^,          ,          R	\        ,          \         ,          ,           R
\         ^,          ,          ,
          R\        ^,          ,          R\        ,          \         ,          ,
          R\         ^,          ,          ,           308X  g   Q hR\        ^,          ,          R\        ^,          ,          ,           R\        ^,          ,          ,
          p V P                  4       p\        \        \        \        3V4      R"08X  g   Q h\        V 4      R\        ^,          ,          R\         ^,          ,          ,
          R#\        ^,          ,          R\        ,          \         ,          ,           R\         ^,          ,          ,
          R\        ^,          ,          R\        ,          \         ,          ,
          R\         ^,          ,          ,           308X  g   Q h\        ^,          ^\        ^,          ,          ,           ^\        ^,          ,          ,
          p V P                  4       p\        \        \        \        3V4      R$08X  g   Q h\        V 4      ^\        ,          \         ,          ^\        ^,          ,          ^\         ^,          ,          ,
          \        ^,          ^\         ^,          ,          ,           308X  g   Q h\#        \$        R 4       \        ^\        ,          4      \        4       8X  g   Q h\        ^\        ,          ^\        ,          ,           \&        P(                  ,
          4      0 R%m8X  g   Q h\        \        ^,          \        ^,          ,           ^\        ,          ,           ^,
          RR7      0 R&m8X  g   Q h\        \        ^,          \        ^,          ,           ^,
          ^Q,
          \        \        3RR7      0 R'm8X  g   Q h\        \        ^,          \        ^,          ,           ^,
          ^Q,
          \        \        3RR7      0 R'm8X  g   Q h\        \        ^,          \        ,
          4      '       g   Q h\        \        ^,          \        ,
          4      '       g   Q h\        \        ^,          \        ,
          \*        4      \*        \*        ^,          308X  g   Q h\        \        ^,          \        ,
          \*        4      \*        ^,          \*        308X  g   Q hR# )(r_   Tpermutei{  i  ij  i  i i i ia i iڙ iV
 i=  i  i  i	  i>  ipE i* i',  i  i  c                  R    \        \        \        ^,          ,          ^,           4      # r^   r   rO   ri   rP   rL   rJ   rQ   "test_diophantine.<locals>.<lambda>-  s    AadFQJ(?rL   )symsr8  Nr\   r_   rU   )r   r   3   iK)r\   r\   r_   r{   )i  iU
  i  i)1         i)r   r_   r\   >   r   rU   r   r   r   r   rU   r{   r\   >   r   r  r   r\   r   rz   r   r\   r   rz   r   rz   r\   >   r_   rU   r_   r   rU   r_   rU   r{   r   r_   r   r{   r{   rU   r{   r   )r   rO   ri   rj   rh   r   r   r   r   rY   rB   popr   as_coefficients_dictr6   r$  r%  r@   rt   r	   Halfr   )rI   base_solcomplete_solnr   s       rJ   test_diophantinerX    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                     ^ RI Hp HpHpHpHp \        V ^,          V^,          ,           V^,          ,           V^,          ,
          4      '       g   Q h\        V ^,          ^V^,          ,          ,           ^V^,          ,          ,           V^,          ,
          4      '       g   Q h\        ^	V ^,          ,          ^V^,          ,          ,           ^V^,          ,          ,           V^,          ,
          4      '       g   Q h\        ^	V ^,          ,          ^V^,          ,          ,           ^V^,          ,          ,
          ^V^,          ,          ,           4      '       g   Q h\        ^	V ^,          ,          ^V^,          ,          ,
          ^V^,          ,          ,           ^V^,          ,          ,           4      '       g   Q h\        V^,          ) ^	V ^,          ,          ,           ^V^,          ,          ,           ^V^,          ,          ,           ^V^,          ,          ,           4      '       g   Q h\        ^V ^,          ,          V^,          ,
          ^	V^,          ,          ,           V^,          ,           ^V^,          ,          ,           4      '       g   Q h\        V ^,          V^,          ,           V^,          ,           V^,          ,
          4      P                  \        \        \        .R7      \        ^,          \        ^,          ,           \        ^,          ,
          ^\        ,          \        ,          ^\        ,          \        ,          \        ^,          \        ^,          ,           \        ^,          ,           308X  g   Q hR# )r   r  r  cde
parametersN)	sympy.abcr  r  r[  r\  r]  r   r=   r   rO   ri   rj   rZ  s        rJ   test_general_pythagoreanra  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            
      t  a \        ^^
4       F=  p \        \        R \        RV ,          4       4       4      V ,
          4      '       d   K=  Q h	  \	        \
        ^,          \        ^,          ,           ^,
          4      e   Q h\	        \
        ^,          \        ^,          ,           \        ^,          ,           ^,           4      \        4       8X  g   Q h\
        ^,          \        ^,          ,           \        ^,          ,           ^,
          o\	        S4      R08X  g   Q h\        ^,          \        ^,          ,           \
        ^,          ,           \        ^,          ,           \        ^,          ,           R,
          o\        \	        S^4      4      ^8X  g   Q h\        R4      \        RRR7      3,           p\        V U u. uF  q ^,          NK  	  up !  ^p,
          o0 Rmp\        S4      V8X  g   Q h\        \        SRR	7      4      R
8X  g   Q h\        ^\
        ^,          ,
          \        ^,          ,
          \        ^,          ,
          4      R08X  g   Q h\        ^,          \        ^,          ,           \         ^,          ,           \"        ^,          ,           ^,
          o\%        \&        V3R l4       R# u up i )rU   c              3   2   "   T F  q^,          x  K  	  R# 5ir   rP   .0is   & rJ   	<genexpr>9test_diop_general_sum_of_squares_quick.<locals>.<genexpr>T  s     "D1CAa441C   z:%iNi!  z:56Tnegativer7  i  c                     < \        S ) 4      # rG   rf   rH   s   rJ   rQ   8test_diop_general_sum_of_squares_quick.<locals>.<lambda>o  s    rc(:rL   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   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   r   r   r\   r\   rU   r   r   r}   r\   r_   rU   rU   r~   r   r\   rU   r   r~   r~   r   r_   r_   r   r   r   r   r_   rU   rU   r   r~   r}   )r_   r_   r_   )ranger   sumr
   r   rO   ri   rj   rY   r   r   lenr   r   r  r  r[  r\  r@   rt   )rf  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!ttS!	"S	(BPI
 r?i'''{2t,-777 rAqDy1a4'!Q$./I;>>> 
A1q!t	ad	"Q	&B
 :;! "s   <J5c                      \         ^,          \        ^,          ,           \        ^,          ,           R,
          p 0 Rmp\        V 4      V8X  g   Q hR# )r_   i@B N>   i    r   r   r     r       r   X     r   `  i       r   r  @  r   `   h  i  r  r  ih  r  r  `  r  r  r     r  r     r  r  r     r     r  i  r  r  iX  r  r  r   r  r  r  )rO   ri   rj   r   )rI   r  s     rJ   test_issue_23807r  r  s=    	
A1q!t	g	%BBI
 r?i'''rL   c                     R F:  p \        ^^4       F'  p\        W4       F  p\        V4      V8X  d   K  Q h	  K)  	  K<  	  \        \        ^^4      4      . 8X  g   Q h\        ^^^4       Uu. uF  p\        V4      NK  	  up. RO. RO. RO.8X  g   Q h\        \        ^ 4      4      R.8X  g   Q h\        \        ^^ 4      4      R.8X  g   Q h\        ^4       Uu. uF  p\        V4      NK  	  up. RO^^.^..8X  g   Q hR# u upi u upi )r   N)r   r   )r   r   r   r   rU   )r   r   r   r\   r_   )r   r   r\   r\   r\   rP   )r\   r\   r\   )r  r$   r  list)nkr$  rf  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   ,DDc                      R F.  p \        V 4      w  rV^,          V^,          ,           V 8X  d   K.  Q h	  \        ^4      e   Q h\        R4      pVR8X  d   \        V^ ,          4      \        J g   Q hR# )r~   Ni5 )
r~   r   r      %   r   i%	  i  i  iY  )i  i  )r&   typeint)rf  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                  D   R FF  p \        V 4      w  rpV^,          V^,          ,           V^,          ,           V 8X  g   Q hV^ 8  d   KF  Q h	  \        \        R 4       \        ^4      e   Q h\        R4      e   Q h\        ^4      R8X  g   Q h\        ^4      R8X  g   Q hR# )r   c                      \        R4      # r  )r)   rP   rL   rJ   rQ   +test_sum_of_three_squares.<locals>.<lambda>  s
    3B7rL   N)r   r\   r_   "   {   l   my l   85Jdl   8l9_	 r  i!  i"  i#  i$  i%  i&  i <  )r   r   r~   r   r   r_   )r)   r@   rs   )rf  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                     ^ RI Hp  V ! ^R4      p\        R \        V4       4       4      V8X  g   Q h\	        \
        R 4       \        R4       F  p\        V4      p\        V4      ^8X  g   Q h\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   Q h\        R	 V 4       4      V8X  g   Q h\        V4      \        V4      8X  d   K  Q h	  R
# )r   )randintl    @ k c              3   2   "   T F  q^,          x  K  	  R# 5ir   rP   rd  s   & rJ   rg  +test_sum_of_four_squares.<locals>.<genexpr>  s     43!tt3ri  c                      \        R4      # r  )r(   rP   rL   rJ   rQ   *test_sum_of_four_squares.<locals>.<lambda>  s
    226rL   r  c              3   *   "   T F	  q^ 8  x  K  	  R# 5ir   NrP   re  rs   & rJ   rg  r    s     *6a66s   FTc              3   2   "   T F  q^,          x  K  	  R# 5ir   rP   r  s   & rJ   rg  r    s     (Aa44ri  N)sympy.core.randomr  r  r(   r@   rs   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s*6*sss*6*****(((A---F|vf~--- rL   c            	         . ROp V  FU  pVw  r#p\        W#V4      p  \        V4      p\        V4      V8X  g   Q h^ pV F  pWxV,          ,           pK  	  Wr8X  g   Q hKC  	  \	        \        ^^^R4      4      R	R
.8X  g   Q h\        \        R 4       \        \        R 4       \        \        R 4       \	        \        R^^4      4      . 8X  g   Q h\	        \        ^^^4      4      R.8X  g   Q h\	        \        ^^^4      4      . 8X  g   Q h\	        \        ^^^4      4      R.8X  g   Q h\	        \        ^Q^^RR7      4      RR.8X  g   Q h\	        \        ^Q^^RR7      4      . 8X  g   Q h\	        \        R^^4      4      R.8X  g   Q h\	        \        R^^4      4      . 8X  g   Q h\	        \        ^ ^^R4      4      R.8X  g   Q h\	        \        ^ ^^R4      4      . 8X  g   Q h\        \	        \        R^^4      4      4      ^ 8X  g   Q hRp	R F&  p
\	        \        V	^W,
          4      4      . 8X  d   K&  Q h	  R#   \         d     EK?  i ; i)r   Tc                  .    \        \        R ^^4      4      # )g333333?r  r%   rP   rL   rJ   rQ   +test_power_representation.<locals>.<lambda>  s    t$8a$CDrL   c                  .    \        \        ^^ ^4      4      # r^   r  rP   rL   rJ   rQ   r        t$8Aq$ABrL   c                  .    \        \        ^^^ 4      4      # r^   r  rP   rL   rJ   rQ   r    r  rL   )zerosFN))r   rU   r_   )r  r_   r   )r_   r\   r_   )rU   r\   rU   )r~   r_   r_   )i@0  r_   r   )i  r_   rU   )r\   r\   rU   rU   )r   r   r_   r   rz   r]   r^   )r\   r_   r_   r_   r_   r_   )r   r   r   r   r   rU   r{   r   r   i  pi   @)r   r   r   r~   r   r_   r\   )r%   nextr  StopIterationr  r@   rs   r4   )teststestr  r$  r  flchk_suml_ibigrf  s              rJ   test_power_representationr    sa   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   ?H77IIc                 8   \        RRRR7      w  r\        V^,          W,          ,           R,
          4      pV0 Rm8X  g   Q h\        RRRR7      w  r4\        W4,          ^V,          ,           ^V,          ,           ^,
          4      pV0 Rm8X  g   Q h\        RRR7      w  rV\        ^
V^,          ,          ^V,          V,          ,           ^V,          ,
          4      pV0 Rm8X  g   Q h\        RRRR7      w  rV\        ^
V^,          ,          ^V,          V,          ,           ^V,          ,
          4      pV\        4       8X  g   Q h\        RRRR	7      w  rV\        ^
V^,          ,          ^V,          V,          ,           ^V,          ,
          4      pVR08X  g   Q hR
# )z4
Test whether diophantine respects the assumptions.
zm nT)rD   positivei  za bFzx yrC   )rD   rl  N>   i  r\   r~   r  r   r   _   r~   y   r      r_   >   r   r   r   r   r}   r|   r   r   r|   r   r   r   r   >   r   r\   r|   r   r~   )r
   r   rY   )mr  diofr  r  rO   ri   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           	     :   \        V 4      p\        P                  ! V 4      p\        V P                  4      pVP                  \        R7       V'       dG   VP                  4       pV F.  p\        VP                  \        W44      4      4      ^ 8X  g   K-   KJ  	  R# R# )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()
)keyFT)r   r   	make_argsr  free_symbolssortr   rS  rK   r   r   )rI   sfactorsr  solutionr  s   &     rJ   r   r      sv     	BAmmBG
r
CHH!H"
557AQVVC$678A=  rL   c            	      
   ^\         ,          \        ,           ^,           ^,          p \        V 4      \        R
\        ,          ^,
          308X  g   Q h^\         ^,          ,          ^\         ,          \        ,          ,           ^\         ,          ,           ^\        ^,          ,          ,           ^\        ,          ,           ^,           p \        V 4      \        \        ) ^,
          3R
\        ,          ^,
          \        308X  g   Q h\        \         \        ^,          ,           ^,
          4      \        ^,          ) ^,           \        308X  g   Q h\        \         \        ,           ^,
          4      \        ^\        ,
          38X  g   Q h\        ^ ^^RR7      R8X  g   Q h^\        ,          ^,
          R
\        ,          ^,           3p\        ^^^\        4      V8X  g   Q h\        ^^^RR7      \        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      8X  g   Q h\        ^^^4      \        4       8X  g   Q h\        ^^^4      R08X  g   Q h\        ^^^4      R08X  g   Q h\        \        R 4       \        ^^^4      R8X  g   Q h\        ^,          ) \         ^,          ,
          \        ^,          ,
          \        ^,          ,           p \!        V 4      \!        V ) 4      u;8X  d   \"        ^,          \$        ^,          ,           \&        ^,          ,
          ^\"        ,          \&        ,          ^\$        ,          \&        ,          \"        ^,          \$        ^,          ,           \&        ^,          ,           38X  g   Q h Q h\)        \+        \-        ^4      \         ^,          ,           \-        ^4      \         ^,          ,           \-        ^4      \         .4      4      ^ 8X  g   Q h\)        \+        \/        ^^4      \-        ^4      \         ,           \-        ^4      \         .4      4      ^ 8X  g   Q h\)        \+        \-        ^4      \         ,           \/        ^^4      \-        ^4      \         .4      4      ^ 8X  g   Q h\1        ^^
4      ^8X  g   Q h\3        ^4      \5        ^4      '       * u;8X  d	   R8X  g   Q h Q h\3        ^ 4      \5        ^ 4      '       * u;8X  d	   R8X  g   Q h Q h\7        ^^^4      R8X  g   Q h\        \8        R 4       \;        ^Z^nR4      R8X  g   Q h\        \<        R 4       \        \<        R	 4       \        \         ^,          \        ^,          ,           ^,
          ^Q,
          4      0 Rm8X  g   Q hR# )r_   Nr   c              3   L   "   T F  qP                  \        ^ 4      x  K  	  R# 5ir  )r   r   )re  _s   & rJ   rg  $test_diopcoverage.<locals>.<genexpr>#  s     :UQTA66!Q<<QTs   "$c                      \        ^^^4      # r3  )r#   rP   rL   rJ   rQ   #test_diopcoverage.<locals>.<lambda>)  s    {1b!4rL   TFc                      \        R4      # )r_   )r_   r   r   )r:   rP   rL   rJ   rQ   r  ;  s	    k)4rL   c                      \        \        ^,          \        ^,          ,           \        \        ,          ,           ^\        ,          \        ,          ,           ^,
          4      # r^   r   rO   ri   rj   rP   rL   rJ   rQ   r  @  s1    AqD1a4K!A#4E!A4MPR4R(SrL   c                  R    \        \        ^,          \        ^,          ,           4      # rT   r:  rP   rL   rJ   rQ   r  A  s    AqD1a4K(@rL   r{   r   r   rM  r   r=  i6  )r   r\   r~   >   r\   r   r\   r   r   r   rz   r   r   rz   rz   r   rz   r   )rO   ri   r   r   r   r   r   r-   tupler.   rY   r@   rs   r0   rh   rj   r   m1m2m3r  r2   r	   r   r7   r8   r9   r:   rV   r/   rt   )rI   r  s     rJ   test_diopcoverager    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1UU:UQT:UUU: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                      \        ^^^^^O^4      R8X  g   Q h\        ^^^^^^
4      R8X  g   Q h\        \        R 4       R# )r_   c                  "    \        ^^^^^O^4      # r^   )r1   rP   rL   rJ   rQ   test_holzer.<locals>.<lambda>O  s    vaB2r:rL   Nr_   r   r   )r_   r   r_   )r1   r@   rs   rP   rL   rJ   test_holzerr  F  sK     !QAr2&*444 !Q1a$	111
::;rL   c                    a
aa V
VV3R  lp ^^O^uo
ooR;w  rr4R;w  rVrxV ! V!  ^ 8X  g   Q hV ! V!  ^ 8X  g   Q h\        S
V^,          ,          SV^,          ,          SV^,          ,          4      S
S,          S,          8:  g   Q h\        S
V^,          ,          SV^,          ,          SV^,          ,          4      S
S,          S,          8:  g   Q h\        WVS
SS4      p	W8X  g   Q hR# )c                 x   < SV ^,          ,          SV^,          ,          ,           SV^,          ,          ,
          # r^   rP   )rO   ri   rj   r  r  r[  s   &&&rJ   rQ   "test_fail_holzer.<locals>.<lambda>T  s&    1a4!AqD&1QT61rL   N)   r\   r   r  )maxr1   )rI   rO   ri   rj   xyzr   r   r  r  hr  r  r[  s             @@@rJ   test_fail_holzerr"  R  s    	1BRGAq!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                  4   \        ^\        ,          ^	\        ,          ,           ^\        ,          ,           \        ,
          4      \
        \        \        \        ,           ^\
        ,          ^\        ,          ,           ^	\        ,          ,           308X  g   Q hR# )r   N)r   rh   ri   rO   rj   r   r   r   rP   rL   rJ   test_issue_9539r$  `  s[    qsQqSy2a4'!+,#sSy!C%"S&.1S5"89:; ; ;rL   c                  *   \        ^\        ^,          \        ^,          ,           \        ^,          ,           ,          ^\        \        ,          \        \        ,          ,           \        \        ,          ,           ,          ,
          4      R08X  g   Q hR# )rU   Nr   r   r   r	  rP   rL   rJ   test_issue_8943r'  e  sY    	1a4!Q$;AQqS1Q3Y1_!557;  rL   c                    a \         ^,          \        ^,          ,           \        ^,          ,           R,
          o\        S4      RR	08X  g   Q h\	        S^4      RR	08X  g   Q h\        \        V3R l4       \        RRR7      p \         ^,          \        ^,          ,           V ^,          ,           R,
          o\	        S4      R
08X  g   Q h\        \         ^,          \        ^,          ,           ^,           4      \        4       8X  g   Q h\	        \         ^,          \        ^,          ,           ^,
          ^ R7      \        4       8X  g   Q hR# )r   iq
  c                     < \        S ) ^4      # r^   )r   rH   s   rJ   rQ   .test_diop_sum_of_even_powers.<locals>.<lambda>o  s    (GQ(OrL   negTrk  )limitN)rU   r   r   )r_   r   r   )r   r   r   )
rO   ri   rj   r   r   r@   rt   r
   r   rY   )r+  rI   s    @rJ   test_diop_sum_of_even_powersr-  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                  	  a 0 R
mp \         ^,          \        ^,          ,           \        ^,          ,           \        ^,          ,           \        ^,          ,           ^{,
          p\        V\        4      p\        V4      ^8X  g   Q hW 8X  g   Q h\        \        R 4       \        \        ^^4      4      R.8X  g   Q h\        \        ^^4      4      . 8X  g   Q h\        \        ^^R4      4      R.8X  g   Q h\        \        R^4      4      . 8X  g   Q h\        \        ^^4      4      . 8X  g   Q h\        \        ^ ^R4      4      R.8X  g   Q h\        \        ^ ^4      4      . 8X  g   Q h\        \        ^^4      4      R.8X  g   Q h\        \        ^^4      4      . 8X  g   Q h\        \        ^2^4      4      RR.8X  g   Q h\        \        ^^R4      4      RR.8X  g   Q h\        \        ^^4      4      R.8X  g   Q h\        ^4       Uu. uF"  p\        \        \        V^R4      4      4      NK$  	  up. RO8X  g   Q h\        ^4       Uu. uF!  p\        \        \        V^4      4      4      NK#  	  up. RO8X  g   Q h\        ^4       F  o\        \        S^R4      4      pV'       dC   \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       g   Q h\        \        S^4      4      p\        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       d   K  Q h	  \        \        R 4       \        \        R 4       \        \        R^^4      4      R.8X  g   Q h\        \        R^^4      4      . 8X  g   Q h\        \        ^^^4      4      R.8X  g   Q h\        \        ^^^R4      4      RR.8X  g   Q h\        \        ^^^R4      4      . RO8X  g   Q h\        \        ^^^4      4      . 8X  g   Q h\        \        ^^^4      4      . 8X  g   Q h\        \        R^^4      4      R.8X  d   RR8X  g   Q h\        \        ^R,          ^^4      4      . 8X  g   Q hR	# u upi u upi )r   c                  ,    \        \        ^
R4      4      # )r   rz   )r  r5   rP   rL   rJ   rQ   ,test_sum_of_squares_powers.<locals>.<lambda>  s    tN2r$:;rL   Tc              3   N   <"   T F  p\        R  V 4       4      S8H  x  K  	  R# 5i)c              3   2   "   T F  q^,          x  K  	  R# 5ir   rP   re  js   & rJ   rg  7test_sum_of_squares_powers.<locals>.<genexpr>.<genexpr>  s      1q!Aqri  Nr  re  r   rf  s   & rJ   rg  -test_sum_of_squares_powers.<locals>.<genexpr>  s!     C1S 1q 11Q6   "%Fc              3   N   <"   T F  p\        R  V 4       4      S8H  x  K  	  R# 5i)c              3   2   "   T F  q^,          x  K  	  R# 5ir   rP   r3  s   & rJ   rg  r5    s     'Q!ttQri  Nr6  r7  s   & rJ   rg  r8    s!     9b3'Q''1,br9  c                  .    \        \        ^R^4      4      # r_   rz   r  r4   rP   rL   rJ   rQ   r0    s    tM!R$;<rL   c                  .    \        \        ^^R4      4      # r=  r>  rP   rL   rJ   rQ   r0    s    tM!Q$;<rL   r  N>   r   r   r\   r\   r   r   r   r~   r   r   r   r\   rU   r   r   r   r\   r   r~   r   r   rU   r   r   r   r   rU   r~   r~   r   r\   r\   r_   r   r   r\   r\   r   r   r   r\   r_   rU   rU   r   r\   rU   r   r   r   r\   r~   r~   r   r   r_   r_   rU   r~   r   r_   rU   r~   r   r   rU   rU   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\   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   r   rU   rU   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\   r\   r\   r\   r\   r\   r\   rU   r{   r   r  )r   r\   r\   ))r   r~   )r\   r   rK  i  )r   )r   r   rO   ri   rj   r   r   r  r@   rs   r  r5   r  rY   r  r4   )trurI   r  rf  s1s2s      `  rJ   test_sum_of_squares_powersrQ  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CC1%&s9b9sss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   (R'Rc                     \        ^R4      RJ g   Q h\        R^4      RJ g   Q h\        ^ ^4      '       g   Q h\        ^^4      '       g   Q h\        ^^4      '       g   Q h\        ^^4      '       g   Q h\        ^^4      RJ g   Q hR# )rU   FNrz   r   )r;   rP   rL   rJ   test__can_do_sum_of_squaresrS    s    !!R(E111!"a(E111!!Q''''!!Q''''!!Q''''!!Q''''!!Q'5000rL   c                     ^ RI Hp HpHpHpHp V ^,          V^,          ,           ^a,
          pR0p\        V4      V8X  g   Q h\        \        VP                  4       4      4      p\        VRR7      V8X  g   Q hV ^,          V^,          ,           V^,          ,           V^,          ,           V^,          ,           ^,
          p\        \        V4      4      ^#8X  g   Q h\        \        VRR7      4      R8X  g   Q h0 Rmp\        ^
\        ^,          ,          ^\        ,          \        ,          ,           ^\        ^,          ,          ,           ^",
          RR7      V8X  g   Q hR# )r   rZ  Tr7  i0  NrK  r   )r`  r  r  r[  r\  r]  r   rY   rB   rS  r  rO   ri   )	r  r  r[  r\  r]  rI   rV  rW  solns	            rJ   test_diophantine_permute_signrV    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                      \         ^,          \        ^,          ,           ^,
          ^Q,
          p \        V \         \        .R7      RR08X  g   Q hR# )r_   r<  Nr   )r\   rU   rO   ri   r   rH   s    rJ   test_not_implementedrZ    s;    	
A1t	d	"BrA'FF+;;;;rL   c                     a  \         ^\        ,          ,
          ^,           o \        S \        \         .R7      \        ^\        ,          ^,
          308X  g   Q h\	        \
        V 3R l4       R# )rU   rX  c                  2   < \        S \        \        0R 7      # )rX  )r   ri   rO   rH   s   rJ   rQ   !test_issue_9538.<locals>.<lambda>  s    k"Aq6:rL   N)rO   ri   r   r   r@   rV   rH   s   @rJ   test_issue_9538r^    sH    	
QqS1Br1&C3+;*<<<<
9:;rL   c                  
   \        ^\        ^,          ,          \        ^,          ,           ^\        ^,          ,          ,
          4      p \	        \        V 4      P                  4      w  rpV V^,          ^V^,          ,          ,
          R	V^,          ,          ^V,          V,          ,           ^V,          V,          ,
          ^V^,          ,          ,
          V^,          ^V,          V,          ,
          ^V^,          ,          ,           ^V,          V,          ,
          308X  g   Q h\        \        ^,          ^\        ^,          ,          ,           ^\        ^,          ,          ,
          4      p V ^V,          V,          V^,          ^V^,          ,          ,
          V^,          ^V^,          ,          ,           308X  g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          4      p V ^V^,          ,          V^,          ,
          R	V^,          ,          ^V,          V,          ,           V^,          ,
          ^V^,          ,          ^V,          V,          ,
          ^V^,          ,          ,           308X  g   Q h\        ^\        ^,          ,          ^H\        ^,          ,          ,           ^\        ^,          ,          ,
          4      p V ^V^,          ,          ^	V^,          ,          ,
          ^V,          V,          ^V^,          ,          ^V^,          ,          ,           308X  g   Q h\        ^\        ^,          ,          ^\        ^,          ,          ,           \        ^,          ,
          ^\        ,          \        ,          ,
          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,
          4      ^V^,          ,          ^V,          V,          ,
          V^,          ,
          ^V^,          ,          ^V,          V,          ,           V^,          ,
          ^V^,          ,          ^V,          V,          ,
          ^V^,          ,          ,           38X  g   Q h\        ^|\        ^,          ,          ^\        ^,          ,          ,
          R\        ^,          ,          ,
          4      R
V^,          ,          RV^,          ,          ,
          RV^,          ,          RV,          V,          ,           RV^,          ,          ,
          RV^,          ,          RV,          V,          ,           RV^,          ,          ,           38X  g   Q hR# )r_   r  i i
  ix  i:
 i  ib<  Nr{   i~i)r   rO   ri   rj   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                  L
  aaa \        . . 4      o\        S4      \        4       8X  g   Q hSP                  R8X  g   Q hSP                  R8X  g   Q h\	        \
        V3R  l4       \        SP                  4       4      . 8X  g   Q h\        \        \        .\        \        .4      oSP                  \        \        38X  g   Q hSP                  \        \        38X  g   Q h\	        \
        V3R l4       SP                  R4       \        S4      R08X  g   Q hSP                  RR\        34       \        S4      RR\        308X  g   Q h\	        \
        VV3R l4       \        SP                  4       4      \        R\        \        /\        ^\        ^/.8X  g   Q h\        \        \        \        .\        \        .4      o\        SP                  4      ^8X  g   Q hSP                  \        ^,          \        ,           \        \        ,
          ^34       \        S4      \        ^,          \        ,           \        \        ,
          ^308X  g   Q hSP!                  \        ^4      \        ^,           ^\        ,
          ^308X  g   Q hS! ^4      \        ^,           ^\        ,
          ^308X  g   Q hSP!                  \        ^\        ^/4      R08X  g   Q hS! ^^4      R08X  g   Q hSP!                  \        ^/4      \        ^,           ^\        ,
          ^308X  g   Q hS! ^4      \        ^,           ^\        ,
          ^308X  g   Q hSP!                  \        R4      \        ^,          ^,
          \        ^,           ^308X  g   Q hS! RR4      \        ^,          ^,
          \        ^,           ^308X  g   Q hSP!                  \        ^\        ^/4      R08X  g   Q hS! ^^4      R08X  g   Q hSP!                  \        ^\        R/4      R08X  g   Q hS! ^R4      R08X  g   Q h\	        \"        V3R l4       \	        \"        V3R l4       \	        \
        V3R l4       \	        \
        V3R l4       \	        \
        V3R l4       \	        \
        V3R	 l4       \	        \"        V3R
 l4       \        \        \        .\        \        .4      p V P                  \        ^\        ,          34       V P                  \        ) ^\        ,          34       V ! ^ ^ 4      R08X  g   Q hR# )c                  0   < S P                  \        34      # rG   )addrO   )rO  s   rJ   rQ   /test_diophantine_solution_set.<locals>.<lambda>  s    rvvqd|rL   c                  &   < S P                  R4      # )r\   r]   rc  )rP  s   rJ   rQ   rd    s    rvvd|rL   c                  &   < S P                  S4      # rG   )update)rO  rP  s   rJ   rQ   rd    s    ryy}rL   Nc                  (   < S P                  ^R7      # )r\   )rO   r   s3s   rJ   rQ   rd    s    bggglrL   c                  *   < S P                  ^^^4      # r]   rj  rk  s   rJ   rQ   rd    s    bggaA.rL   c                  &   < S P                  R4      # )NrP   rf  rk  s   rJ   rQ   rd    s    rvvbzrL   c                  &   < S P                  R4      # )r\   )r\   r_   rU   r   rf  rk  s   rJ   rQ   rd    s    rvvl3rL   c                  &   < S P                  R4      # )r\   r   rf  rk  s   rJ   rQ   rd    s    rvvf~rL   c                     < S ! ^^^4      # r]   rP   rk  s   rJ   rQ   rd    s    r!Q{rL   c                     < S ! ^R7      # )r\   r  rP   rk  s   rJ   rQ   rd    s	    b1grL   rP   )rU   r   rz   )9   rz   r\   r   )r   r   r\   )   r   r\   r   )r<   rY   r
   r_  r@   rs   r  dict_iteratorrO   ri   r   r   rc  rh  rj   r  r   rV   )s4rO  rP  rl  s    @@@rJ   test_diophantine_solution_setrw    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                  .   R\         ,          \        ,          ^\        ^,          ,          ,           p \        V 4      P                  \        \
        .R7      pV\        ^\        ,          3\        R\        ,          308X  g   Q hV! ^ ^ 4      R08X  g   Q hR# )r   r^  Niir   )rO   ri   r>   r   r   r   )rI   r  s     rJ    test_quadratic_parameter_passingry  "  sq    	Qq1QT6	Br"((QF(;HBqD	As1u:....Aq>fX%%%rL   c                     \         ^,          ^\         ,          ,
          \        ^,          ,           ^\        ,          ,
          p \        V 4      pV0 Rm8X  g   Q h^\         ^,          ,          ^	\         ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^,           p\        V4      pVR08X  g   Q hR# )r_   N>   r   r   r      r   r}  r      r   rz   r   r   rY  )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   ri   rj   rh   r   r   r   r   r   r  r   r   r   t_3t_4t_5t_6r  r  r  rE   rK   rW   rZ   ra   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r&  r(  r*  r,  r5  rX  ra  r  r  r  r  r  r  r  r  r   r  r  r"  r$  r'  r-  rQ  rS  rV  rZ  r^  r`  rw  ry  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   