K ipdZddlmZmZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZmZmZmZmZmZddlmZmZmZddlmZddlmZdd lmZmZm Z m!Z!d Z"ejFed Z$ejFed Z$ejFe d Z$ejFe dZ$ejFedZ$ejJeeee dZ$ejFedZ$ejFedZ$ejFedZ$ejFedZ$ejFedZ$dZ&e jFedZ$e jFedZ$e jFe dZ$e jFedZ$e jFe dZ$e jFedZ$e jJeeee dZ$e jFedZ$e jFedZ$e jFed Z$e jFed!Z$e jFed"Z$e!jFed#Z$e!jFed$Z$y%)&zD Handlers for keys related to number theory: prime, even, odd, etc. )Qask)AddBasicExprFloatMulPowS) ImaginaryUnitInfinityIntegerNaNNegativeInfinity NumberSymbolRational int_valued)Absimreisprime)MDNotImplementedError)PrimePredicateCompositePredicate EvenPredicate OddPredicatec|jt } t|j}||z j ddurt  |r t |Sy#t $rYywxYw)NrF)atomsrintroundequals TypeErrorr)expr assumptionsexactis h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/assumptions/handlers/ntheory.py_PrimePredicate_numberr*sq 5! !E   1H  Q 5 (O ) qz  s5A A('A(c.|j}|t|SN)is_primerr%r&rets r)_r0"s --C {## Jc4|jr t||Syr,) is_numberr*r%r&s r)r0r0)s ~~%dK88r1c|jr t||S|jD]#}tt j ||r#y|jD]}|js|j syyNF)r3r*argsrrinteger is_composite)r%r&args r)r0r0.se ~~%dK88yy199S>;/yy ==S--r1c|jr t||Sttj|j |rttj|j |rhttj|j |}|duryttj|j d|}|dury|dur|duryyyyy)z( Integer**Integer -> !Prime FTN) r3r*rrr8expbaseprimeeq)r%r& prime_base is_exp_ones r)r0r09s  ~~%dK88 199TXX  ,  $))$k 2+[9  dhh*K8    *"4#5  3-r1ct|Sr,rr4s r)r0r0Ks 4=r1cyr6r4s r)r0r0O r1ct||Sr,r*r4s r)r0r0S !$ 44r1ct||Sr,rHr4s r)r0r0WrIr1cyr,rEr4s r)r0r0[ r1c.|j}|t|Sr,)r9rr.s r)r0r0bs   C {## Jr1c$ttj||}|rnttj||}|rKttj||}|yttj |d|}|ry|y| S|S|S)Nr<F)rrpositiver8r?r@)r%r& _positive_integer_prime_is_ones r)r0r0isAJJt$k2Iqyy 4  4F~!$$tQ-5G: Or1ct|ttfr t|ryy t |j }||z jdsy|dzdk(S#t $rYywxYw)NFrr) isinstancefloatrrr!r"r$r#)r%r&r(s r)_EvenPredicate_numberrWsl$' d    1H  Q  q5A: sA A'&A'c.|j}|t|Sr,)is_evenrr.s r)r0r0s ,,C {## Jr1c4|jr t||Syr,)r3rWr4s r)r0r0s ~~$T;77r1c|jr t||Sd\}}}}|jD]}tt j ||rstt j ||rd}nytt j||r|dz }nT|sR|dk7rMtt j||z|r+d}n(tt j||r|ryd}ny|}|ry|ry|t|jk(ryy)z Even * Integer -> Even Even * Odd -> Even Integer * Odd -> ? Odd * Odd -> Odd Even * Even -> Even Integer * Integer -> Even if Integer + Integer = Odd otherwise -> ? )FrFr<Tr<FN) r3rWr7rrr8evenodd irrationallen)r%r&r\r]r^accr:s r)r0r0s ~~$T;77!3D#z3yy qyy~{ +166#; ,QUU3Z-qcQhquuS3Y'5D c"K 0J %(   #dii.  !r1c|jr t||Sd}|jD]F}tt j ||r#tt j ||r| }Fy|S)zM Even + Odd -> Odd Even + Even -> Even Odd + Odd -> Even TN)r3rWr7rrr\r])r%r&_resultr:s r)r0r0sh ~~$T;77Gyy qvvc{K (  s[ )!kG  r1c|jr t||Sttj|j |rttj |j |r)ttj|j|Sttj|j tj|jz|ry|jtjuryyyr6) r3rWrrr8r=rOr\r>negativer]r NegativeOner4s r)r0r0s ~~$T;77 199TXX  , qzz$((#[ 1qvvdii(+6 6 !**TXX&&tyy)99; G YY!-- '( -r1c4t|jdz S)Nr<)boolpr4s r)r0r0sDFFQJ r1cyr6rEr4s r)r0r0rFr1ct||Sr,)rWr4s r)r0r0s { 33r1cttj|jd|r,ttj|jd|SyNrrrrealr7r\r4s r)r0r0@ 166$))A, -166$))A,'55.r1cttj|jd|r,ttj|jd|Syrlrmr4s r)r0r0ror1c^ttj|jd|ryy)NrT)rrrnr7r4s r)r0r0s% 166$))A, -.r1cyr,rEr4s r)r0r0rLr1c.|j}|t|Sr,)is_oddrr.s r)r0r0s ++C {## Jr1cttj||}|r%ttj||}|y| S|Sr,)rrr8r\)r%r&rQ_evens r)r0r0sB199T?K0HAFF4L+. =y Or1N)'__doc__sympy.assumptionsrr sympy.corerrrrr r r sympy.core.numbersr r rrrrrrsympy.functionsrrr sympy.ntheoryrsympy.multipledispatchrpredicates.ntheoryrrrrr*registerr0 register_manyrWrEr1r)rs%;;;:::''!8!!  9 9"!"h2BMRS5 5&5'5 T"# U#$0  88&&P(    ! Xx1A=QR %4&46666 t ur1