
    \h                     p   S r SSKJrJr  SSKJrJrJrJrJ	r	J
r
Jr  SSKJrJrJrJrJrJrJrJr  SSKJrJrJr  SSKJr  SSKJr  SS	KJrJrJ r J!r!  S
 r"\RF                  " \5      S 5       r$\RF                  " \5      S 5       r$\RF                  " \	5      S 5       r$\RF                  " \
5      S 5       r$\RF                  " \5      S 5       r$\RJ                  " \\\\5      S 5       r$\RF                  " \5      S 5       r$\RF                  " \5      S 5       r$\RF                  " \5      S 5       r$\RF                  " \5      S 5       r$\RF                  " \5      S 5       r$S r&\ RF                  " \5      S 5       r$\ RF                  " \5      S 5       r$\ RF                  " \	5      S 5       r$\ RF                  " \5      S 5       r$\ RF                  " \
5      S 5       r$\ RF                  " \5      S 5       r$\ RJ                  " \\\\5      S 5       r$\ RF                  " \5      S 5       r$\ RF                  " \5      S 5       r$\ RF                  " \5      S  5       r$\ RF                  " \5      S! 5       r$\ RF                  " \5      S" 5       r$\!RF                  " \5      S# 5       r$\!RF                  " \5      S$ 5       r$g%)&zD
Handlers for keys related to number theory: prime, even, odd, etc.
    )Qask)AddBasicExprFloatMulPowS)ImaginaryUnitInfinityIntegerNaNNegativeInfinityNumberSymbolRational
int_valued)Absimreisprime)MDNotImplementedError   )PrimePredicateCompositePredicateEvenPredicateOddPredicatec                     U R                  [        5      (       + n [        U R                  5       5      nX-
  R	                  S5      SL a  [
        e U(       a  [        U5      $ g ! [
         a     gf = f)Nr   F)atomsr   introundequals	TypeErrorr   )exprassumptionsexactis       Z/var/www/auris/envauris/lib/python3.13/site-packages/sympy/assumptions/handlers/ntheory.py_PrimePredicate_numberr*      so    

5!!E

HQ5(O ) qz   s   5A% %
A21A2c                 0    U R                   nUc  [        eU$ N)is_primer   r%   r&   rets      r)   _r0   "   s    
--C
{##J    c                 <    U R                   (       a  [        X5      $ g r,   )	is_numberr*   r%   r&   s     r)   r0   r0   )   s    ~~%d88 r1   c                 "   U R                   (       a  [        X5      $ U R                   H*  n[        [        R
                  " U5      U5      (       a  M*    g    U R                   H)  nUR                   (       d  M  UR                  (       d  M)    g   g NF)r3   r*   argsr   r   integeris_composite)r%   r&   args      r)   r0   r0   .   sa    ~~%d88yy199S>;//  yy===S--- r1   c                    U R                   (       a  [        X5      $ [        [        R                  " U R
                  5      U5      (       a  [        [        R                  " U R                  5      U5      (       an  [        [        R                  " U R                  5      U5      nUSL a  g[        [        R                  " U R
                  S5      U5      nUSL a  gUSL a  USL a  ggggg)z 
Integer**Integer     -> !Prime
F   TN)	r3   r*   r   r   r8   expbaseprimeeq)r%   r&   
prime_base
is_exp_ones       r)   r0   r0   9   s    
 ~~%d88
199TXX,,		$))$k22+[9
dhh*K8
*"4 #5 3 -r1   c                     [        U 5      $ r,   r   r4   s     r)   r0   r0   K   s    4=r1   c                     gr6    r4   s     r)   r0   r0   O       r1   c                     [        X5      $ r,   r*   r4   s     r)   r0   r0   S       !$44r1   c                     [        X5      $ r,   rH   r4   s     r)   r0   r0   W   rI   r1   c                     g r,   rE   r4   s     r)   r0   r0   [       r1   c                 0    U R                   nUc  [        eU$ r,   )r9   r   r.   s      r)   r0   r0   b   s    


C
{##Jr1   c                 V   [        [        R                  " U 5      U5      nU(       a  [        [        R                  " U 5      U5      nU(       aX  [        [        R                  " U 5      U5      nUc  g [        [        R
                  " U S5      U5      nU(       a  gUc  g U(       + $ U$ U$ )Nr<   F)r   r   positiver8   r?   r@   )r%   r&   	_positive_integer_prime_is_ones         r)   r0   r0   i   s    AJJt$k2Iqyy44F~ !$$tQ-5G:Or1   c                     [        U [        [        45      (       a  [        U 5      (       a  g g [	        U R                  5       5      nX-
  R                  S5      (       d  gUS-  S:H  $ ! [         a     gf = f)NFr   r   )
isinstancefloatr   r   r!   r"   r$   r#   )r%   r&   r(   s      r)   _EvenPredicate_numberrW      ss    $''d

 HQq5A:	  s   A) )
A65A6c                 0    U R                   nUc  [        eU$ r,   )is_evenr   r.   s      r)   r0   r0      s    
,,C
{##Jr1   c                 <    U R                   (       a  [        X5      $ g r,   )r3   rW   r4   s     r)   r0   r0      s    ~~$T77 r1   c                    U R                   (       a  [        X5      $ Su  p#pEU R                   H  n[        [        R
                  " U5      U5      (       a  [        [        R                  " U5      U5      (       a  SnO[        [        R                  " U5      U5      (       a  US-  nOjU(       d/  US:w  a)  [        [        R                  " XV-   5      U5      (       a  SnO3[        [        R                  " U5      U5      (       a  U(       a    gSnO  gUnM     U(       a  gU(       a  gU[        U R                  5      :X  a  gg)z
Even * Integer    -> Even
Even * Odd        -> Even
Integer * Odd     -> ?
Odd * Odd         -> Odd
Even * Even       -> Even
Integer * Integer -> Even if Integer + Integer = Odd
otherwise         -> ?
)Fr   Fr<   Tr<   FN)
r3   rW   r7   r   r   r8   evenodd
irrationallen)r%   r&   r\   r]   r^   accr:   s          r)   r0   r0      s     ~~$T77!3Dzyyqyy~{++166#;,,QUU3Z--qcQhquuSY'55Dc"K00 J% ( #dii.  !r1   c                    U R                   (       a  [        X5      $ SnU R                   HX  n[        [        R
                  " U5      U5      (       a  M*  [        [        R                  " U5      U5      (       a	  U(       + nMX    g   U$ )z=
Even + Odd  -> Odd
Even + Even -> Even
Odd  + Odd  -> Even

TN)r3   rW   r7   r   r   r\   r]   )r%   r&   _resultr:   s       r)   r0   r0      sg     ~~$T77Gyyqvvc{K((s[))!kG  r1   c                 .   U R                   (       a  [        X5      $ [        [        R                  " U R
                  5      U5      (       a  [        [        R                  " U R
                  5      U5      (       a*  [        [        R                  " U R                  5      U5      $ [        [        R                  " U R
                  5      ) [        R                  " U R                  5      -  U5      (       a  gU R                  [        R                  L a  gg g r6   )r3   rW   r   r   r8   r=   rO   r\   r>   negativer]   r   NegativeOner4   s     r)   r0   r0      s    ~~$T77
199TXX,,qzz$((#[11qvvdii(+66!**TXX&&tyy)99;GGYY!--' ( -r1   c                 <    [        U R                  S-  5      (       + $ )Nr<   )boolpr4   s     r)   r0   r0      s    DFFQJr1   c                     gr6   rE   r4   s     r)   r0   r0      rF   r1   c                     [        X5      $ r,   )rW   r4   s     r)   r0   r0      s     33r1   c                     [        [        R                  " U R                  S   5      U5      (       a-  [        [        R                  " U R                  S   5      U5      $ g Nr   r   r   realr7   r\   r4   s     r)   r0   r0      C    
166$))A,--166$))A,'55 .r1   c                     [        [        R                  " U R                  S   5      U5      (       a-  [        [        R                  " U R                  S   5      U5      $ g rl   rm   r4   s     r)   r0   r0      ro   r1   c                 j    [        [        R                  " U R                  S   5      U5      (       a  gg )Nr   T)r   r   rn   r7   r4   s     r)   r0   r0      s(    
166$))A,-- .r1   c                     g r,   rE   r4   s     r)   r0   r0     rL   r1   c                 0    U R                   nUc  [        eU$ r,   )is_oddr   r.   s      r)   r0   r0     s    
++C
{##Jr1   c                     [        [        R                  " U 5      U5      nU(       a+  [        [        R                  " U 5      U5      nUc  g U(       + $ U$ r,   )r   r   r8   r\   )r%   r&   rQ   _evens       r)   r0   r0     sB    199T?K0HAFF4L+.=yOr1   N)'__doc__sympy.assumptionsr   r   
sympy.corer   r   r   r   r	   r
   r   sympy.core.numbersr   r   r   r   r   r   r   r   sympy.functionsr   r   r   sympy.ntheoryr   sympy.multipledispatchr   predicates.ntheoryr   r   r   r   r*   registerr0   register_manyrW   rE   r1   r)   <module>r      s_   % ; ; ;: : : ' ' ! 8! !
   9  9    " ! " h2BMR S 5  5 &5 '5   T" # U# $0   8 8 & &P  ( 	 	    !  Xx1A=Q R %4 &4 6 6 6 6     t  u r1   