Ë
    [^(h”‰  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZmZ d dlmZ d dlZd dlmZmZ d dlZd dlmZ d dlmZ dd	lmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, dd
l-m.Z. ddl/m0Z0m1Z1m2Z2  ejf                  e4«      Z5ddgZ6 edejn                  e«      Z8 G d„ de9«      Z:d„ Z;d„ Z<dd„Z=dd„Z>ee?e@ejn                  f   ZAeeBef   ZCeeAeCf   ZDe	ejn                  gejn                  f   ZEe	ejn                  ejn                  gejn                  f   ZFe	egef   ZGe	eegef   ZHeeEeGf   ZIeeFeHf   ZJ ej–                  d¬«       G d„ de
e8   «      «       ZL G d„ d«      ZM	 d	 	 	 	 	 dd„ZNy)é    )ÚannotationsN)ÚCallableÚGenericÚOptionalÚoverloadÚSupportsFloatÚTYPE_CHECKINGÚTypeVarÚUnion)Ú	TypeGuard)ÚBooleanÚBooleanAtom)Ú
LazyString)Údtype_to_typeé   )Ú_keep_floatÚFloatTrueDivÚFloorDivÚ
IntTrueDivÚOpaqueUnaryFn_expÚOpaqueUnaryFn_logÚOpaqueUnaryFn_log2ÚOpaqueUnaryFn_sqrtÚPowByNaturalÚRoundDecimalÚ
RoundToIntÚsafe_powÚToFloatÚTruncToFloatÚ
TruncToInt)Úsympy_interp)Úint_ooÚIntInfinityÚNegativeIntInfinityÚValueRangesÚbound_sympyÚ_Tc                  ó   — e Zd Zy)ÚValueRangeErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/utils/_sympy/value_ranges.pyr)   r)   9   s   „ Ør.   r)   c                óP  — t        | t        «      r"| rt        j                  S t        j                  S t        | t
        «      rt        j                  | «      S t        | t        «      rPt        j                  | «      r&| dkD  rt        j                  S t        j                   S t        j                  | «      S t        | t        j                  «      r*| j                  sJ | «       ‚| t        j                  k7  sJ ‚| S t        | t        «      r| S t!        dt#        | «      › d| › �«      ‚)Nr   znot simple sympy type ú: )Ú
isinstanceÚboolÚsympyÚtrueÚfalseÚintÚIntegerÚfloatÚmathÚisinfÚooÚFloatÚExprÚ	is_numberÚnanr   ÚAssertionErrorÚtype)Úes    r/   Úsimple_sympifyrD   ?   sÚ   € Ü�!”TÔÙŒu�z‰zÐ/¤E§K¡KÐ/Ü	�A”sÔ	Ü�}‰}˜QÓÐÜ	�A”uÔ	ä�:‰:�aŒ=Ø  1šu”5—8‘8Ð3¬5¯8©8¨)Ð3Ü�{‰{˜1‹~ÐÜ	�A”u—z‘zÔ	"Ø�{Š{Ð˜AÓˆ{ð
 ”E—I‘IŠ~Ðˆ~ØˆÜ	�A”{Ô	#ØˆäÐ5´d¸1³g°Y¸bÀÀÐDÓEÐEr.   c                óÚ   — t        | t        j                  «      r!t        |t        j                  «      sJ ‚|| k\  S t        | t        «      rt        |t        «      s	J | |f«       ‚| xr |  S ©N)r2   r4   r>   ÚSympyBoolean©ÚlowerÚuppers     r/   Úsympy_generic_lerK   X   sp   € Ü�%œŸ™Ô$Ü˜%¤§¡Ô,Ð,Ð,ð ˜‰~Ðô ˜%¤Ô.´:¸eÄ\Ô3Rð 	
ØØðU
ó 	
ÐRð Ò' %˜iÐ(Ð(r.   c                ó   — | j                   S rF   ©Úis_bool©Úvrs    r/   Ú
vr_is_boolrQ   g   s   € Ø�:‰:Ðr.   c                ó   — | j                    S rF   rM   rO   s    r/   Ú
vr_is_exprrS   k   s   € Ø�z‰zˆ>Ðr.   T)Úfrozenc                  ó`  — e Zd ZU ereej                     Zee   Z	e
ee	f   Zded<   ded<   ded<   ded<   ded<   d(d„Ze	 	 	 	 	 	 	 	 d)d	„«       Ze	 	 	 	 	 	 	 	 d*d
„«       Zd+d„Zd,d„Zd-d„Zd„ Zd.d„Ze	 	 	 	 	 	 d/d„«       Ze	 	 	 	 	 	 d0d„«       Zd1d„Ze	 	 	 	 	 	 d/d„«       Ze	 	 	 	 	 	 d0d„«       Zd1d„Zd2d„Zeej2                  d3d„«       «       Zeej2                  d3d„«       «       Zeej2                  d,d„«       «       Zeed4d„«       «       Zeed5d„«       «       Zed6d„«       Zed7d„«       Zeed7d„«       «       Zeed8d„«       «       Zed9d „«       Zed7d!„«       Z ed7d"„«       Z!ee	 	 	 	 	 	 	 	 d:d#„«       «       Z"ee	 	 	 	 	 	 	 	 d;d$„«       «       Z"e	 	 	 	 	 	 	 	 d<d%„«       Z"e#d&„ «       Z$y')=r%   r'   rI   rJ   r3   rN   Úis_intÚis_floatc                ó<   — d| j                   › d| j                  › d�S )NzVR[z, ú]rH   ©Úselfs    r/   Ú__repr__zValueRanges.__repr__‹   s   € Ø�T—Z‘Z�L  4§:¡: ,¨aÐ0Ð0r.   c                 ó   — y rF   r-   ©r[   rI   rJ   s      r/   Ú__init__zValueRanges.__init__Ž   ó   € ð 	r.   c                 ó   — y rF   r-   r^   s      r/   r_   zValueRanges.__init__–   r`   r.   c                óè  — t        |«      }t        |«      }	 t        ||«      st        d|› d|› d�«      ‚	 t	        |t
        «      }t	        |t
        «      }||k(  s	J ||f«       ‚t	        |t        j                  «      r|t        j                  k(  rt        }t	        |t        j                  «      r|t        j                   k(  rt         }t        j                  t        t        f}t	        ||«      }t	        ||«      }t        j                  | d|«       t        j                  | d|«       t        j                  | d|«       t        j                  | d	| j                   xr |xr |«       	 t        j                  | d
| j                   xr | j                   «       | j                  s#| j                  s| j                   s	J ||f«       ‚y y y # t        $ r}t        d|› d|› �«      |‚d }~ww xY w)NzInvalid ranges [ú:rY   zCould not compare z <= rI   rJ   rN   rV   rW   )rD   rK   r)   Ú	TypeErrorr2   rG   r4   r8   r<   r"   r$   r#   ÚobjectÚ__setattr__rN   rV   rW   )	r[   rI   rJ   rC   Úis_bool_lowerÚis_bool_upperÚinteger_typesÚis_int_lowerÚis_int_uppers	            r/   r_   zValueRanges.__init__ž   sÇ  € Ü˜uÓ%ˆÜ˜uÓ%ˆð	LÜ# E¨5Ô1Ü%Ð(8¸¸¸qÀÀÀqÐ&IÓJÐJð 2ô
 # 5¬,Ó7ˆÜ" 5¬,Ó7ˆØ Ò-Ð=°°u¨~Ó=Ð-ô �eœUŸ]™]Ô+°¼¿¹Ò0AÜˆEÜ�eœUŸ]™]Ô+°¼%¿(¹(¸Ò0BÜ�GˆEäŸ™Ô(;¼[ÐIˆÜ! %¨Ó7ˆÜ! %¨Ó7ˆô 	×Ñ˜4 ¨%Ô0Ü×Ñ˜4 ¨%Ô0ô 	×Ñ˜4 ¨MÔ:Ü×ÑØØØ—‘ÐÒ> Ò>°,ô	
ð
	ô 	×Ñ˜4 °·±Ð-=Ò-QÀdÇkÁkÀ/ÔRØ�|Š|˜tŸ{š{¨d¯mªmÐK¸eÀU¸^ÓKÐ;¨m˜{ˆ|øôa ò 	LÜÐ0°°°t¸E¸7ÐCÓDÈ!ÐKûð	Lús   ˜G Ç	G1ÇG,Ç,G1c                óŽ   — t        | «      r| S | t        j                  «       k(  rt        j                  «       S t	        d| › �«      ‚)Nznot bool like )rQ   r%   ÚunknownÚunknown_boolrA   rZ   s    r/   ÚboolifyzValueRanges.boolifyØ   sA   € Ü�dÔØˆKØ”[×(Ñ(Ó*Ò*Ü×+Ñ+Ó-Ð-ä  >°$°Ð!8Ó9Ð9r.   c                óJ   — t         j                  |«      j                  | «      S rF   )r%   ÚwrapÚissubset)r[   Úxs     r/   Ú__contains__zValueRanges.__contains__à   s   € Ü×Ñ Ó"×+Ñ+¨DÓ1Ð1r.   c                ó¬   — || j                  «       u ryt        |j                  | j                  «      xr  t        | j                  |j                  «      S )NT)Úunknown_intrK   rI   rJ   ©r[   Úothers     r/   rr   zValueRanges.issubsetã   sG   € Ø�D×$Ñ$Ó&Ñ&ØÜ §¡¨T¯Z©ZÓ8ò 
Ô=MØ�J‰J˜Ÿ™ó>
ð 	
r.   c                ó   — | |z  S )z1Given two ValueRanges, returns their intersectionr-   rw   s     r/   ÚtightenzValueRanges.tightenê   s   € à�e‰|Ðr.   c                 ó   — y rF   r-   rw   s     r/   Ú__and__zValueRanges.__and__ï   ó   € ð
 	r.   c                 ó   — y rF   r-   rw   s     r/   r|   zValueRanges.__and__ö   r}   r.   c                ó  — |t         j                  «       t         j                  «       fv r| S | t         j                  «       t         j                  «       fv r|S | j                  |j                  k(  s	J | |f«       ‚| j                  |j                  k(  s	J | |f«       ‚| j
                  |j
                  k(  s	J | |f«       ‚| j                  r\t        t        j                  | j                  |j                  «      t        j                  | j                  |j                  «      «      S t        t        j                  | j                  |j                  «      t        j                  | j                  |j                  «      «      S rF   )r%   rm   rv   rN   rV   rW   r4   ÚOrrI   ÚAndrJ   ÚMaxÚMinrw   s     r/   r|   zValueRanges.__and__ý   s   € Ø”[×(Ñ(Ó*¬K×,CÑ,CÓ,EÐFÑFØˆKØ”K×'Ñ'Ó)¬;×+BÑ+BÓ+DÐEÑEØˆLØ�|‰|˜uŸ}™}Ò,Ð;¨t°U¨mÓ;Ð,Ø�{‰{˜eŸl™lÒ*Ð9¨T°5¨MÓ9Ð*Ø�}‰} §¡Ò.Ð=°°u°Ó=Ð.Ø�<Š<ÜÜ—‘˜Ÿ™ U§[¡[Ó1´5·9±9¸T¿Z¹ZÈÏÉÓ3Uóð ô Ü—	‘	˜$Ÿ*™* e§k¡kÓ2´E·I±I¸d¿j¹jÈ%Ï+É+Ó4Vóð r.   c                 ó   — y rF   r-   rw   s     r/   Ú__or__zValueRanges.__or__  r}   r.   c                 ó   — y rF   r-   rw   s     r/   r…   zValueRanges.__or__  r}   r.   c                ó®  — t         j                  «       | |fv rt         j                  «       S | j                  |j                  k(  s	J | |f«       ‚| j                  |j                  k(  s	J | |f«       ‚| j                  |j                  k(  s	J | |f«       ‚| j                  r\t        t        j                  | j                  |j                  «      t        j                  | j                  |j                  «      «      S t        t        j                  | j                  |j                  «      t        j                  | j                  |j                  «      «      S rF   )r%   rm   rN   rV   rW   r4   r�   rI   r€   rJ   rƒ   r‚   rw   s     r/   r…   zValueRanges.__or__  sü   € Ü×ÑÓ  T¨5 MÑ1Ü×&Ñ&Ó(Ð(Ø�|‰|˜uŸ}™}Ò,Ð;¨t°U¨mÓ;Ð,Ø�{‰{˜eŸl™lÒ*Ð9¨T°5¨MÓ9Ð*Ø�}‰} §¡Ò.Ð=°°u°Ó=Ð.Ø�<Š<ÜÜ—	‘	˜$Ÿ*™* e§k¡kÓ2´E·H±H¸T¿Z¹ZÈÏÉÓ4Uóð ô Ü—	‘	˜$Ÿ*™* e§k¡kÓ2´E·I±I¸d¿j¹jÈ%Ï+É+Ó4Vóð r.   c                ó4   — | j                   | j                  k(  S rF   rH   rZ   s    r/   Úis_singletonzValueRanges.is_singleton,  s   € Ø�z‰z˜TŸZ™ZÑ'Ð'r.   c                 óT   — t        t        j                   t        j                  «      S rF   ©r%   r4   r<   r-   r.   r/   rm   zValueRanges.unknown/  ó   € ô œEŸH™H˜9¤e§h¡hÓ/Ð/r.   c                 ó,   — t        t         t        «      S rF   )r%   r"   r-   r.   r/   rv   zValueRanges.unknown_int4  s   € ô œF˜7¤FÓ+Ð+r.   c                 óR   — t        t        j                  t        j                  «      S rF   )r%   r4   r6   r5   r-   r.   r/   rn   zValueRanges.unknown_bool9  s   € ô œ5Ÿ;™;¬¯
©
Ó3Ð3r.   c                 ó   — y rF   r-   ©Úargs    r/   rq   zValueRanges.wrap>  s   € ð 	r.   c                 ó   — y rF   r-   r�   s    r/   rq   zValueRanges.wrapD  ó   € ð 	r.   c                ó°   — t        | t        «      r| S t        | t        «      r)t        j                  | «      rt        j                  «       S t        | | «      S rF   )r2   r%   r9   r:   Úisnanrm   r�   s    r/   rq   zValueRanges.wrapI  sA   € ä�cœ;Ô'ØˆJÜ�cœ5Ô!¤d§j¡j°¤oÜ×&Ñ&Ó(Ð(ä˜3 Ó$Ð$r.   c                ó„   — t         j                  | «      } t         || j                  «       || j                  «      «      S )z#Increasing: x <= y => f(x) <= f(y).©r%   rq   rI   rJ   ©rs   Úfns     r/   Úincreasing_mapzValueRanges.increasing_mapR  s1   € ô ×Ñ˜QÓˆÜ™2˜aŸg™g›;©¨1¯7©7«Ó4Ð4r.   c                 ó   — y rF   r-   r˜   s     r/   Údecreasing_mapzValueRanges.decreasing_mapX  r“   r.   c                 ó   — y rF   r-   r˜   s     r/   rœ   zValueRanges.decreasing_map]  r“   r.   c                ó„   — t         j                  | «      } t         || j                  «       || j                  «      «      S )z#Decreasing: x <= y => f(x) >= f(y).)r%   rq   rJ   rI   r˜   s     r/   rœ   zValueRanges.decreasing_mapb  s1   € ô ×Ñ˜QÓˆä™2˜aŸg™g›;©¨1¯7©7«Ó4Ð4r.   c                ó´   — t         j                  | «      }  || j                  «      } || j                  «      }t        t	        ||«      t        ||«      «      S )zIt's increasing or decreasing.)r%   rq   rI   rJ   ÚminÚmax)rs   r™   ÚlÚus       r/   Úmonotone_mapzValueRanges.monotone_mapi  sG   € ô ×Ñ˜QÓˆÙˆq�w‰w‹KˆÙˆq�w‰w‹KˆÜœ3˜q !›9¤c¨!¨Q£iÓ0Ð0r.   c                óX  — t         j                  | «      } d| v r|t         || j                  «       || j                  «      «      }t        |«      }t        |t        j                  «      s|t        j                  k(  rt        d|«      S t        d|«      S t         j                  | |«      S )z$Fn is convex and has a minimum at 0.r   ç        )r%   rq   r¡   rI   rJ   rD   r2   r4   r=   r<   r¤   )rs   r™   rJ   s      r/   Úconvex_min_zero_mapzValueRanges.convex_min_zero_mapq  s‡   € ô ×Ñ˜QÓˆØ�‰6Ü™˜1Ÿ7™7›¡R¨¯©£[Ó1ˆEÜ" 5Ó)ˆEÜ˜%¤§¡Ô-°¼%¿(¹(Ò1BÜ" 3¨Ó.Ð.Ü˜q %Ó(Ð(Ü×'Ñ'¨¨2Ó.Ð.r.   c                 ó   — y rF   r-   ©rs   Úyr™   s      r/   Úcoordinatewise_increasing_mapz)ValueRanges.coordinatewise_increasing_map}  ó   € ð 	r.   c                 ó   — y rF   r-   r©   s      r/   r«   z)ValueRanges.coordinatewise_increasing_map†  r¬   r.   c                óÚ   — t         j                  | «      t         j                  |«      }} t         || j                  |j                  «       || j                  |j                  «      «      S )z¶
        It's increasing on each coordinate.

        Mathematically:
        For every 1 <= i <= n and x_i <= y_i we have that
        f(x1, .., xn) <= f(x1, , yi, ..., xn)
        r—   r©   s      r/   r«   z)ValueRanges.coordinatewise_increasing_map�  sT   € ô ×Ñ Ó"¤K×$4Ñ$4°QÓ$7ˆ1ˆÜÙˆq�w‰w˜Ÿ™Ó Ùˆq�w‰w˜Ÿ™Ó ó
ð 	
r.   c                óD  — | j                  |«      | j                  |«      }}t        j                  |j                  |j                  g|j                  |j                  g«      D ��cg c]  \  }} |||«      ‘Œ }}}t        t        |«      t        |«      «      S c c}}w )z1It's increasing or decreasing on each coordinate.)rq   Ú	itertoolsÚproductrI   rJ   r%   r    r¡   )Úclsrs   rª   r™   ÚaÚbÚproductss          r/   Úcoordinatewise_monotone_mapz'ValueRanges.coordinatewise_monotone_map¢  s‰   € ð �x‰x˜‹{˜CŸH™H Q›Kˆ1ˆô "×)Ñ)¨1¯7©7°A·G±GÐ*<¸q¿w¹wÈÏÉÐ>PÓQ÷
á��1ñ ˆq�!�Hð
ˆñ 
ô œ3˜x›=¬#¨h«-Ó8Ð8ùó	
s   Á(BN)ÚreturnÚstr)r[   úValueRanges[sympy.Expr]rI   ÚExprInrJ   rº   r·   ÚNone)r[   úValueRanges[SympyBoolean]rI   ÚBoolInrJ   r½   r·   r»   )rI   ÚAllInrJ   r¾   r·   r»   )r·   r¼   )rs   r¾   r·   r3   )r·   r%   )r[   r¹   rx   r¹   r·   r¹   )r[   r¼   rx   r¼   r·   r¼   )r[   ÚAllVRrx   r¿   r·   r¿   )r·   r3   )r·   r¹   )r‘   úUnion[ExprIn, ExprVR]r·   ÚExprVR)r‘   úUnion[BoolIn, BoolVR]r·   ÚBoolVR)r‘   úUnion[AllIn, AllVR]r·   r¿   )rs   rÀ   r™   ÚExprFnr·   rÁ   )rs   rÂ   r™   ÚBoolFnr·   rÃ   )rs   rÄ   r™   ÚAllFnr·   r¿   )rs   rÀ   rª   rÀ   r™   ÚExprFn2r·   rÁ   )rs   rÂ   rª   rÂ   r™   ÚBoolFn2r·   rÃ   )rs   rÄ   rª   rÄ   r™   ÚAllFn2r·   r¿   )%r*   r+   r,   r	   r%   r4   r>   rÁ   rG   rÃ   r   r¿   Ú__annotations__r\   r   r_   ro   rt   rr   rz   r|   r…   r‰   ÚstaticmethodÚ	functoolsÚcacherm   rv   rn   rq   rš   rœ   r¤   r§   r«   Úclassmethodr¶   r-   r.   r/   r%   r%   z   s�  … áà˜UŸZ™ZÑ(ˆØ˜\Ñ*ˆØ�f˜f�nÑ%ˆð
 ƒIØƒIØƒMØƒLØƒNó1ð ðØ%ðàðð ðð 
ò	ó ðð ðØ'ðàðð ðð 
ò	ó ðó8Lót:ó2ò
óð
 ðØ%ðà&ðð 
!òó ðð ðØ'ðà(ðð 
#òó ðóð$ ðØ%ðà&ðð 
!òó ðð ðØ'ðà(ðð 
#òó ðóó(ð Ø‡_�_ò0ó ó ð0ð Ø‡_�_ò,ó ó ð,ð Ø‡_�_ò4ó ó ð4ð Øòó ó ðð Øòó ó ðð ò%ó ð%ð ò5ó ð5ð
 Øòó ó ðð Øòó ó ðð ò5ó ð5ð ò1ó ð1ð ò	/ó ð	/ð ØðØ ðà ðð ðð 
ò	ó ó ðð ØðØ ðà ðð ðð 
ò	ó ó ðð ð
Øð
àð
ð ð
ð 
ò	
ó ð
ð$ ñ9ó ñ9r.   c                  ór  — e Zd ZdZed„ «       Zed9d„«       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z ed„ «       Z!ed„ «       Z"ed „ «       Z#ed!„ «       Z$ed"„ «       Z%ed#„ «       Z&ed$„ «       Z'ed%„ «       Z(ed&„ «       Z)ed'„ «       Z*ed(„ «       Z+ed)„ «       Z,ed*„ «       Z-ed+„ «       Z.ed,„ «       Z/ed-„ «       Z0ed.„ «       Z1ed/„ «       Z2ed0„ «       Z3ed1„ «       Z4ed2„ «       Z5ed3„ «       Z6ed4„ «       Z7ed5„ «       Z8ed6„ «       Z9ed7„ «       Z:ed8„ «       Z;y):ÚSymPyValueRangeAnalysisz°
    It gives bounds on a SymPy operator given bounds on its arguments
    See the function `bound_sympy` for a function that applies this logic to a full SymPy expression
    c                ó  — t        | t        «      r| j                  «       sJ ‚| j                  } t        | t        t
        t        f«      }|s1t        | t        t        j                  t        j                  f«      sJ ‚t        | t        «      rpt        j                  | «      r[|t        j                  k(  rt        j                  «       S |j                   rt        j#                  «       S t        j%                  «       S |rt'        |«      } || «      } nY|t        j                  k(  rt        | t        «      s6J ‚|j                   r| j(                  r| j*                  sJ ‚| j,                  sJ ‚t        j/                  | «      }|S rF   )r2   r%   r‰   rI   r7   r9   r3   r   r4   r8   ÚNumberr   r:   r•   Útorchrn   Úis_floating_pointrm   rv   r   Ú	is_finiteÚis_realÚ
is_integerrq   )ÚvalueÚdtypeÚ	is_pythonÚtype_Úrs        r/   Úconstantz SymPyValueRangeAnalysis.constant³  s1  € ä�eœ[Ô)Ø×%Ñ%Ô'Ð'Ð'Ø—K‘KˆEä˜u¤s¬E´4Ð&8Ó9ˆ	ÙœJØ”K¤§¡´·±Ð=ô
ð 	
ð 
ô �eœ]Ô+´·
±
¸5Ô0AØœŸ
™
Ò"Ü"×/Ñ/Ó1Ð1Ø×(Ò(Ü"×*Ñ*Ó,Ð,ä"×.Ñ.Ó0Ð0áÜ! %Ó(ˆEÙ˜%“L‰Eð œŸ
™
Ò"Ü! %¬Ô5Ð5Ð5Ø×(Ò(Ø Ÿ?š?¨e¯mªmÐ;Ð;ð ×'Ò'Ð'Ð'ä×Ñ˜UÓ#ˆØˆr.   Nc                ó  — |t         j                  k(  rt        j                  | t        «      S |t         j
                  k(  rt        j                  «       S |j                  st        j                  «       S t        j                  «       S rF   )
rÔ   Úfloat64r%   rš   r   r3   rn   rÕ   rv   rm   )r³   rÚ   Ú	src_dtypes      r/   Úto_dtypez SymPyValueRangeAnalysis.to_dtypeÙ  sc   € à”E—M‘MÒ!Ü×-Ñ-¨a´Ó9Ð9Ø”e—j‘jÒ Ü×+Ñ+Ó-Ð-Ø×(Ò(Ü×*Ñ*Ó,Ð,Ü×"Ñ"Ó$Ð$r.   c                ó6   — t         j                  | t        «      S rF   )r%   rš   r    )r³   rÚ   s     r/   Útrunc_to_intz$SymPyValueRangeAnalysis.trunc_to_intã  s   € ä×)Ñ)¨!¬ZÓ8Ð8r.   c                ó°   — t         j                  | «      } | j                  «       } | j                  sJ ‚t         j	                  | t
        j                  «      S rF   )r%   rq   ro   rN   rœ   r4   ÚNot)r³   s    r/   Únot_zSymPyValueRangeAnalysis.not_ç  s@   € ä×Ñ˜QÓˆØ�I‰I‹KˆØ�yŠyÐˆyÜ×)Ñ)¨!¬U¯Y©YÓ7Ð7r.   c                óL   — t         j                  | |t        j                  «      S rF   )r%   r«   r4   r€   ©r³   r´   s     r/   Úor_zSymPyValueRangeAnalysis.or_î  s   € ä×8Ñ8¸¸A¼u¿x¹xÓHÐHr.   c                óL   — t         j                  | |t        j                  «      S rF   )r%   r«   r4   r�   ré   s     r/   Úand_zSymPyValueRangeAnalysis.and_ò  s   € ä×8Ñ8¸¸A¼u¿y¹yÓIÐIr.   c                ó  — | j                  «       r>t        j                  t        j                  | j
                  r
d«      «      S d«      «      S t        t        j                  d«      t        j                  d«      «      S ©Nr   r   )r‰   r%   rq   r4   r8   rI   ©rs   s    r/   Ú_bool_to_intz$SymPyValueRangeAnalysis._bool_to_intö  sV   € à�>‰>ÔÜ×#Ñ#¤E§M¡M°q·w²w°!Ó$FÓGÐGÀAÓ$FÓGÐGäœuŸ}™}¨QÓ/´·±¸qÓ1AÓBÐBr.   c                ón  — t         j                  |«      t         j                  |«      }}|j                  r|j                  r| j                  ||«      S |j                  r| j	                  |«      }|j                  r| j	                  |«      }t        |j                  |j                  «      }|dk  rA|t        j                   k7  r-|t         k7  r#	 dt        | dz
  «      j                  «       z   }nd}t        |t        |j                  |j                  «      «      S # t        $ r
 t         }Y Œ<w xY w)Nr   r   )r%   rq   rN   rì   rð   r    rI   r4   r<   r"   r7   Ú
bit_lengthÚ	Exceptionr¡   rJ   )r²   r³   r´   rI   s       r/   Úbitwise_andz#SymPyValueRangeAnalysis.bitwise_andý  sý   € ä×Ñ Ó"¤K×$4Ñ$4°QÓ$7ˆ1ˆØ�9Š9˜ŸšØ—8‘8˜A˜q“>Ð!Ø�9Š9Ø× Ñ  Ó#ˆAØ�9Š9Ø× Ñ  Ó#ˆAÜ�A—G‘G˜QŸW™WÓ%ˆØ�1Š9˜¤5§8¡8 )Ò+°¼&¸Ò0@ð Øœs E 6¨A¡:›×9Ñ9Ó;Ñ;Ð<‘ð ˆEÜ˜5¤# a§g¡g¨q¯w©wÓ"7Ó8Ð8øô	 ò  Ü˜’ð ús   Ã!D! Ä!D4Ä3D4c                ó~  — t         j                  |«      t         j                  |«      }}|j                  r|j                  r| j                  ||«      S |j                  r| j	                  |«      }|j                  r| j	                  |«      }t        |j                  |j                  «      }|dk(  rd}nI|dkD  r=|t        j                  k7  r*|t        k7  r!	 dt        |«      j                  «       z  dz
  }n|dk  rd}t        t        |j                  |j                  «      |«      S # t        $ r	 t        }Y Œ;w xY w)Nr   r   éÿÿÿÿ)r%   rq   rN   rê   rð   r¡   rJ   r4   r<   r"   r7   rò   ró   r    rI   )r²   r³   r´   rJ   s       r/   Ú
bitwise_orz"SymPyValueRangeAnalysis.bitwise_or  s  € ä×Ñ Ó"¤K×$4Ñ$4°QÓ$7ˆ1ˆØ�9Š9˜ŸšØ—7‘7˜1˜a“=Ð Ø�9Š9Ø× Ñ  Ó#ˆAØ�9Š9Ø× Ñ  Ó#ˆAÜ�A—G‘G˜QŸW™WÓ%ˆØ�AŠ:Ø‰EØ�QŠY˜5¤E§H¡HÒ,°¼&²ðØœc %›j×3Ñ3Ó5Ñ5¸Ñ:‘ð �QŠYØˆEÜœ3˜qŸw™w¨¯©Ó0°%Ó8Ð8øô	 ò Ü’ðús   ÃD* Ä*D<Ä;D<c                ó  — t         j                  | «      } t         j                  |«      }| j                  «       rL|j                  «       r<| j                  |j                  k(  r#t         j                  t        j
                  «      S | j                  |j                  kD  s|j                  | j                  kD  r#t         j                  t        j                  «      S t        t        j                  t        j
                  «      S rF   )r%   rq   r‰   rI   r4   r5   rJ   r6   ré   s     r/   ÚeqzSymPyValueRangeAnalysis.eq+  s¢   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�>‰>Ô §¡Ô 0°Q·W±WÀÇÁÒ5GÜ×#Ñ#¤E§J¡JÓ/Ð/Ø�W‰W�q—w‘wÒ !§'¡'¨A¯G©GÒ"3Ü×#Ñ#¤E§K¡KÓ0Ð0Üœ5Ÿ;™;¬¯
©
Ó3Ð3r.   c                óD   — | j                  | j                  ||«      «      S rF   )rç   rù   ©r²   r³   r´   s      r/   ÚnezSymPyValueRangeAnalysis.ne5  ó   € à�x‰x˜Ÿ™˜q !›Ó%Ð%r.   c                ó,   — t         j                  |«      S rF   )r%   rq   )r²   r³   s     r/   Úidentityz SymPyValueRangeAnalysis.identity9  s   € ä×Ñ Ó"Ð"r.   c                ó&  — t         j                  |«      }t         j                  |«      }|j                  |j                  k(  sJ ‚|j                  r!| j                  | j	                  |«      |«      S |j
                  |j                  k  r#t         j                  t        j                  «      S |j                  |j
                  k\  r#t         j                  t        j                  «      S t        t        j                  t        j                  «      S rF   )
r%   rq   rN   rì   rç   rJ   rI   r4   r5   r6   rû   s      r/   ÚltzSymPyValueRangeAnalysis.lt=  s·   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�y‰y˜AŸI™IÒ%Ð%Ð%Ø�9Š9Ø—8‘8˜CŸH™H Q›K¨Ó+Ð+à�w‰w˜Ÿ™Ò Ü"×'Ñ'¬¯
©
Ó3Ð3Ø—‘˜AŸG™GÒ#Ü"×'Ñ'¬¯©Ó4Ð4ÜœuŸ{™{¬E¯J©JÓ7Ð7r.   c                ó&   — | j                  ||«      S rF   )r  rû   s      r/   ÚgtzSymPyValueRangeAnalysis.gtK  s   € à�v‰v�a˜‹|Ðr.   c                óD   — | j                  | j                  ||«      «      S rF   )rç   r  rû   s      r/   ÚlezSymPyValueRangeAnalysis.leO  rý   r.   c                óD   — | j                  | j                  ||«      «      S rF   )rç   r  rû   s      r/   ÚgezSymPyValueRangeAnalysis.geS  rý   r.   c                ó^   — t         j                  | |t        t        j                  «      «      S rF   )r%   r«   r   ÚoperatorÚaddré   s     r/   r
  zSymPyValueRangeAnalysis.addW  s%   € ä×8Ñ8Øˆq”+œhŸl™lÓ+ó
ð 	
r.   c                ó  — t         j                  |«      }t         j                  |«      }|j                  |j                  k(  sJ ‚|j                  r| j                  ||«      S d„ }t         j	                  ||t        |«      «      S )Nc                ó<   — | dk(  s| dk(  r| S |dk(  s|dk(  r|S | |z  S )Nr¦   r   r-   ré   s     r/   Úsafe_mulz-SymPyValueRangeAnalysis.mul.<locals>.safe_mulf  s/   € à�CŠx˜1 š6Ø�Ø�c’˜Q !šVØ�à˜1‘u�r.   )r%   rq   rN   rì   r¶   r   )r²   r³   r´   r  s       r/   ÚmulzSymPyValueRangeAnalysis.mul]  sp   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆà�y‰y˜AŸI™IÒ%Ð%Ð%Ø�9Š9Ø—8‘8˜A˜q“>Ð!ò	ô ×6Ñ6°q¸!¼[ÈÓ=RÓSÐSr.   c                ó  — t         j                  | «      } t         j                  |«      }d|v s"t         | v st        | v r%t         |v st        |v rt         j                  «       S t         j	                  | |t        t        «      «      S ©Nr   )r%   rq   r"   rm   r¶   r   r   ré   s     r/   Úint_truedivz#SymPyValueRangeAnalysis.int_truedivq  st   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�‰6œ�w !‘|¤v°¡{¼&¸ÀA¹ÌÐSTÉÜ×&Ñ&Ó(Ð(ä×:Ñ:Ø�1”k¤*Ó-óð r.   c                ób  — t         j                  | «      } t         j                  |«      }d|v sJt        j                   | v st        j                  | v r9t        j                   |v st        j                  |v rt         j	                  «       S t         j                  | |t        t        «      «      S r  )r%   rq   r4   r<   rm   r¶   r   r   ré   s     r/   ÚtruedivzSymPyValueRangeAnalysis.truediv|  s…   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�‰6Ü�h‰hˆY˜!‰^œuŸx™x¨1™}´E·H±H°9À±>ÄUÇXÁXÐQRÁ]ä×&Ñ&Ó(Ð(ä×:Ñ:Ø�1”k¤,Ó/óð r.   c                ó<  — t         j                  | «      } t         j                  |«      }d|v rt         j                  «       S g }t        j                  | j
                  | j                  g|j
                  |j                  g«      D ]v  \  }}t        ||«      }|t        j                  u rB|j                  t        j                  |«      t        j                  |«      z  t        z  «       Œf|j                  |«       Œx t        t        |«      t        |«      «      S r  )r%   rq   rv   r°   r±   rI   rJ   r   r4   r@   ÚappendÚsignr"   r    r¡   )r³   r´   rµ   rs   rª   rÝ   s         r/   Úfloordivz SymPyValueRangeAnalysis.floordiv‰  sÖ   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�‰6Ü×*Ñ*Ó,Ð,ØˆÜ×%Ñ% q§w¡w°·±Ð&8¸1¿7¹7ÀAÇGÁGÐ:LÓMò 	#‰DˆAˆqÜ˜˜A“ˆAØ”E—I‘I‰~Ø—‘¤§¡¨A£´·±¸A³Ñ!>Ä&Ñ HÕIà—‘ Õ"ð	#ô œ3˜x›=¬#¨h«-Ó8Ð8r.   c                ó°  ‡‡— t         j                  |«      }t         j                  |«      }d„ Šd„ }d|v rt         j                  «       S |j                  «       rÒt	        |j
                  «      Š ||j
                  ‰«       ||j                  ‰«      k(  rt         j                  |ˆˆfd„«      S |j                  dk  rt        ‰ dz   d«      S |j
                  dkD  rt        d‰dz
  «      S t        ‰ dz   |j
                  «      }t        ‰dz
  |j                  «      }t        ||«      S | j	                  |«      j                  dz
  }t        | |«      S )Nc                óH   — t        | «      t        |«      z  }| dk  r|dz  }|S )Nr   rö   )Úabs)r³   r´   Úrets      r/   Úc_modz*SymPyValueRangeAnalysis.mod.<locals>.c_modŸ  s(   € Ü�a“&œ3˜q›6‘/ˆCØ�1ŠuØ�r‘	�ØˆJr.   c                óp   — | |z  }|j                   r$|t        t         fvrt        j                  |«      S |S rF   )rÖ   r"   r4   r8   )r³   r´   rs   s      r/   Úc_divz*SymPyValueRangeAnalysis.mod.<locals>.c_div¥  s4   € Ø�A‘ˆAØ'(§{¢{°qÄÌ&ÈÐ@QÑ7Q”5—=‘= Ó#ÐXÐWXÐXr.   r   c                ó   •—  ‰| ‰«      S rF   r-   )r£   r  Úy_vals    €€r/   ú<lambda>z-SymPyValueRangeAnalysis.mod.<locals>.<lambda>±  s   ø€ ¹uÀQÈ»€ r.   r   )
r%   rq   rv   r‰   r  rI   rJ   rš   r¡   r    )r²   rs   rª   r  rI   rJ   r  r   s         @@r/   ÚmodzSymPyValueRangeAnalysis.mod™  s-  ù€ ä×Ñ˜QÓˆÜ×Ñ˜QÓˆò	ò	Yð �‰6Ü×*Ñ*Ó,Ð,Ø�^‰^ÔÜ˜Ÿ™“LˆEñ �Q—W‘W˜eÓ$©¨a¯g©g°uÓ(=Ò=Ü"×1Ñ1°!Ô5NÓOÐOØ�w‰w˜Š{ä" E 6¨A¡:¨qÓ1Ð1Ø—‘˜1’ä" 1 e¨a¡iÓ0Ð0ô ˜U˜F Q™J¨¯©Ó0�Ü˜E A™I q§w¡wÓ/�Ü" 5¨%Ó0Ð0ð —G‘G˜A“J×$Ñ$ qÑ(ˆEÜ ˜v uÓ-Ð-r.   c                óF   — | j                  | j                  ||«      |«      S rF   )r"  r  )r²   r³   r´   Úcs       r/   Úmodular_indexingz(SymPyValueRangeAnalysis.modular_indexingÂ  s   € à�w‰w�s—|‘| A qÓ)¨1Ó-Ð-r.   c                ó*   — t         j                  «       S rF   )r%   rv   )r²   Úargss     r/   Ú&is_non_overlapping_and_dense_indicatorz>SymPyValueRangeAnalysis.is_non_overlapping_and_dense_indicatorÆ  s   € ä×&Ñ&Ó(Ð(r.   c                óÈ  ‡— t         j                  |«      }t         j                  ‰«      Š|j                  «       rC‰j                  «       r3t         j                  t        |j                  ‰j                  «      «      S |j                  dk\  r,t         j                  |‰t        dt        «      z  t        «      S ‰j                  «       rD‰j                  dz  dk(  rt         j                  |ˆfd„«      S t         j                  |ˆfd„«      S t        |j                  |j                   «      }t        t        |‰j                  «       t        |‰j                  «      «      S )Nr   r   é   c                ó0   •— t        | ‰j                  «      S rF   ©r   rI   ©rs   r´   s    €r/   r!  z8SymPyValueRangeAnalysis.pow_by_natural.<locals>.<lambda>Ü  s   ø€ ¤¨!¨Q¯W©WÓ!5€ r.   c                ó0   •— t        | ‰j                  «      S rF   r,  r-  s    €r/   r!  z8SymPyValueRangeAnalysis.pow_by_natural.<locals>.<lambda>à  s   ø€ ¼xÈÈ1Ï7É7Ó?S€ r.   )r%   rq   r‰   r   rI   r«   r"   r   r§   rš   r¡   rJ   )r²   r³   r´   Úmax_bases     ` r/   Úpow_by_naturalz&SymPyValueRangeAnalysis.pow_by_naturalÊ  s  ø€ ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�>‰>Ô §¡Ô 0Ü×#Ñ#¤H¨Q¯W©W°a·g±gÓ$>Ó?Ð?à�W‰W˜Š\ô ×<Ñ<Ø�1”{ 1¤fÓ-Ñ-¬|óð ð �^‰^ÔØ�w‰w˜‰{˜aÒä"×6Ñ6ØÓ5óð ô
 #×1Ñ1°!Ó5SÓTÐTô ˜1Ÿ7™7 Q§W¡W HÓ-ˆHÜÜ˜8 Q§W¡WÓ-Ð.´¸À1Ç7Á7Ó0Kóð r.   c                ó*   — t         j                  «       S rF   )r%   rm   rû   s      r/   ÚpowzSymPyValueRangeAnalysis.powë  s   € ä×"Ñ"Ó$Ð$r.   c                óŠ   — t         j                  | «      } d| v rt         j                  «       S t         j                  | d„ «      S )zENeeded as it's used in pow, but it won't appear on a SymPy expressionr   c                ó   — t        d| «      S )Nç      ð?)r   )rª   s    r/   r!  z4SymPyValueRangeAnalysis.reciprocal.<locals>.<lambda>  s   € ¼<ÈÈQÓ;O€ r.   )r%   rq   rm   rœ   rï   s    r/   Ú
reciprocalz"SymPyValueRangeAnalysis.reciprocal  s>   € ô ×Ñ˜QÓˆØ�‰6Ü×&Ñ&Ó(Ð(ä×-Ñ-¨aÑ1OÓPÐPr.   c                ó6   — t         j                  | t        «      S rF   )r%   r§   r  rï   s    r/   r  zSymPyValueRangeAnalysis.abs!  s   € ä×.Ñ.¨q´#Ó6Ð6r.   c                ó6   — t         j                  | t        «      S rF   )r%   rš   r   rï   s    r/   ÚexpzSymPyValueRangeAnalysis.exp%  s   € ä×)Ñ)¨!Ô->Ó?Ð?r.   c                ó¦   — t         j                  | «      } | j                  dk  rt         j                  «       S t         j	                  | t
        «      S r  )r%   rq   rI   rm   rš   r   rï   s    r/   ÚlogzSymPyValueRangeAnalysis.log)  s@   € ä×Ñ˜QÓˆØ�7‰7�aŠ<Ü×&Ñ&Ó(Ð(Ü×)Ñ)¨!Ô->Ó?Ð?r.   c                ó¦   — t         j                  | «      } | j                  dk  rt         j                  «       S t         j	                  | t
        «      S r  )r%   rq   rI   rm   rš   r   rï   s    r/   Úlog2zSymPyValueRangeAnalysis.log20  s@   € ä×Ñ˜QÓˆØ�7‰7�aŠ<Ü×&Ñ&Ó(Ð(Ü×)Ñ)¨!Ô-?Ó@Ð@r.   c                óD   — | j                  ||t        j                  «      S rF   )Ú
min_or_maxr4   rƒ   rû   s      r/   ÚminimumzSymPyValueRangeAnalysis.minimum7  ó   € à�~‰~˜a ¤E§I¡IÓ.Ð.r.   c                óD   — | j                  ||t        j                  «      S rF   )r?  r4   r‚   rû   s      r/   ÚmaximumzSymPyValueRangeAnalysis.maximum;  rA  r.   c                ó„   — t         j                  | «      } t         j                  |«      }t         j                  | ||«      S rF   )r%   rq   r«   )r³   r´   r™   s      r/   r?  z"SymPyValueRangeAnalysis.min_or_max?  s7   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆÜ×8Ñ8¸¸A¸rÓBÐBr.   c                ó†   — t         j                  |t        j                  j                  j
                  j                  «      S rF   )r%   rš   r4   Ú	functionsÚ
elementaryÚintegersÚfloor©r²   rs   rÚ   s      r/   Úfloor_to_intz$SymPyValueRangeAnalysis.floor_to_intE  s+   € ä×)Ñ)¨!¬U¯_©_×-GÑ-G×-PÑ-P×-VÑ-VÓWÐWr.   c                ó†   — t         j                  |t        j                  j                  j
                  j                  «      S rF   )r%   rš   r4   rF  rG  rH  ÚceilingrJ  s      r/   Úceil_to_intz#SymPyValueRangeAnalysis.ceil_to_intI  s0   € ä×)Ñ)ØŒu�‰×)Ñ)×2Ñ2×:Ñ:ó
ð 	
r.   c                ó˜   — t         j                  |t        t        j                  j
                  j                  j                  «      «      S rF   )r%   rš   r   r4   rF  rG  rH  rI  ©r²   rs   s     r/   rI  zSymPyValueRangeAnalysis.floora  s5   € ä×)Ñ)ØŒ{œ5Ÿ?™?×5Ñ5×>Ñ>×DÑDÓEó
ð 	
r.   c                ó˜   — t         j                  |t        t        j                  j
                  j                  j                  «      «      S rF   )r%   rš   r   r4   rF  rG  rH  rM  rP  s     r/   ÚceilzSymPyValueRangeAnalysis.ceilg  s5   € ä×)Ñ)ØŒ{œ5Ÿ?™?×5Ñ5×>Ñ>×FÑFÓGó
ð 	
r.   c                óš   ‡— ‰j                  «       st        j                  «       S ‰j                  Šˆfd„}t        j	                  ||«      S )Nc                ó   •— t        | ‰«      S rF   )r   )ÚnumberÚndigitss    €r/   r!  z7SymPyValueRangeAnalysis.round_decimal.<locals>.<lambda>u  s   ø€ œL¨°Ó9€ r.   )r‰   r%   rm   rI   rš   )r²   rU  rV  r™   s     ` r/   Úround_decimalz%SymPyValueRangeAnalysis.round_decimalm  sA   ø€ à×#Ñ#Ô%Ü×&Ñ&Ó(Ð(à—-‘-ˆó :ˆä×)Ñ)¨&°"Ó5Ð5r.   c                ó6   — t         j                  |t        «      S rF   )r%   rš   r   )r²   rU  rÚ   s      r/   Úround_to_intz$SymPyValueRangeAnalysis.round_to_inty  s   € ä×)Ñ)¨&´*Ó=Ð=r.   c                ó¦   — t         j                  | «      } | j                  dk  rt         j                  «       S t         j	                  | t
        «      S r  )r%   rq   rI   rm   rš   r   rï   s    r/   ÚsqrtzSymPyValueRangeAnalysis.sqrt~  s@   € ä×Ñ˜QÓˆØ�7‰7�QŠ;Ü×&Ñ&Ó(Ð(Ü×)Ñ)¨!Ô-?Ó@Ð@r.   c                ód  — t         j                  |«      }t         j                  |«      }| j                  «       } |j                  |j                  k(  st         j	                  «       ||fv sJ ‚|j                  r\t        t        j                  |j                  |j                  «      t        j                  |j                  |j                  «      «      S t        t        j                  |j                  |j                  «      t        j                  |j                  |j                  «      «      S rF   )r%   rq   ro   rN   rm   r4   r�   rI   r€   rJ   rƒ   r‚   )r³   r´   r$  s      r/   ÚwherezSymPyValueRangeAnalysis.where…  sÆ   € ä×Ñ˜QÓˆÜ×Ñ˜QÓˆØ�I‰I‹Kˆð �y‰y˜AŸI™IÒ%¬×)<Ñ)<Ó)>À1ÀaÀ&Ñ)HÐHÐHØ�9Š9ÜœuŸy™y¨¯©°!·'±'Ó:¼E¿H¹HÀQÇWÁWÈaÏgÉgÓ<VÓWÐWäœuŸy™y¨¯©°!·'±'Ó:¼E¿I¹IÀaÇgÁgÈqÏwÉwÓ<WÓXÐXr.   c                ó*   — |j                  «       }| |fS rF   )ro   ré   s     r/   Úexpr_cond_pairz&SymPyValueRangeAnalysis.expr_cond_pair•  s   € à�I‰I‹KˆØ�1ˆvˆr.   c                 óX   — d }| D ]"  \  }}t         j                  |v sŒ|€|}Œ||z  }Œ$ |S rF   )r4   r5   )ÚrangesÚ
init_rangeÚ
expr_rangeÚ
cond_ranges       r/   Ú	piecewisez!SymPyValueRangeAnalysis.piecewiseŸ  sD   € àˆ
Ø&,ò 	9Ñ"ˆJ˜
Ü�z‰z˜ZÒ'ØÐ%Ø!+‘Jà!+¨jÑ!8‘Jð	9ð Ðr.   c                ó   — t        dd«      S ©Ng      ð¿r5  ©r%   rï   s    r/   ÚcoszSymPyValueRangeAnalysis.cosª  s   € ô
 ˜4 Ó%Ð%r.   c                ó6   — t        dt        j                  «      S )Nr¦   r‹   rï   s    r/   ÚcoshzSymPyValueRangeAnalysis.cosh±  s   € ä˜3¤§¡Ó)Ð)r.   c                ó   — t        dd«      S rg  rh  rï   s    r/   ÚsinzSymPyValueRangeAnalysis.sin½  s   € ô ˜4 Ó%Ð%r.   c                óT   — t        t        j                   t        j                  «      S rF   r‹   rï   s    r/   ÚsinhzSymPyValueRangeAnalysis.sinhÃ  rŒ   r.   c                óT   — t        t        j                   t        j                  «      S rF   r‹   rï   s    r/   ÚtanzSymPyValueRangeAnalysis.tanÈ  ó   € äœEŸH™H˜9¤e§h¡hÓ/Ð/r.   c                óT   — t        t        j                   t        j                  «      S rF   r‹   rï   s    r/   ÚtanhzSymPyValueRangeAnalysis.tanhÌ  rŒ   r.   c                óT   — t        t        j                   t        j                  «      S rF   r‹   rï   s    r/   ÚasinzSymPyValueRangeAnalysis.asinÑ  rr  r.   c                óT   — t        t        j                   t        j                  «      S rF   r‹   rï   s    r/   ÚacoszSymPyValueRangeAnalysis.acosÛ  rr  r.   c                óT   — t        t        j                   t        j                  «      S rF   r‹   rï   s    r/   ÚatanzSymPyValueRangeAnalysis.atanå  rr  r.   c                ó6   — t         j                  | t        «      S rF   )r%   rš   r   rï   s    r/   ÚtrunczSymPyValueRangeAnalysis.truncê  s   € ä×)Ñ)¨!¬\Ó:Ð:r.   rF   )<r*   r+   r,   Ú__doc__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  r2  r6  r  r9  r;  r=  r@  rC  r?  rK  rN  rI  rR  rW  rY  r[  r]  r_  re  ri  rk  rm  ro  rq  rt  rv  rx  rz  r|  r-   r.   r/   rÑ   rÑ   ­  s[  „ ñð
 ñ#ó ð#ðJ ò%ó ð%ð ñ9ó ð9ð ñ8ó ð8ð ñIó ðIð ñJó ðJð ñCó ðCð ñ9ó ð9ð* ñ9ó ð9ð. ñ4ó ð4ð ñ&ó ð&ð ñ#ó ð#ð ñ8ó ð8ð ñó ðð ñ&ó ð&ð ñ&ó ð&ð ñ
ó ð
ð
 ñTó ðTð& ñó ðð ñ
ó ð
ð ñ9ó ð9ð ñ&.ó ð&.ðP ñ.ó ð.ð ñ)ó ð)ð ñó ðð@ ñ*ó ð*ðX ñQó ðQð ñ7ó ð7ð ñ@ó ð@ð ñ@ó ð@ð ñAó ðAð ñ/ó ð/ð ñ/ó ð/ð ñCó ðCð
 ñXó ðXð ñ
ó ð
ð. ñ
ó ð
ð
 ñ
ó ð
ð
 ñ	6ó ð	6ð ñ>ó ð>ð ñAó ðAð ñ
Yó ð
Yð ñó ðð ñó ðð ñ&ó ð&ð ñ	ó ð	ð ñ&ó ð&ð
 ñ0ó ð0ð ñ0ó ð0ð ñ0ó ð0ð ñó ðð ñó ðð ñ0ó ð0ð ñ;ó ñ;r.   rÑ   c                óò  ‡ ‡— t         j                  d‰ t        ˆ ˆfd„«      «       t        ‰ t        j
                  «      rt        j                  ‰ «      S ‰xs i Št        j                  j                  j                  «       }|r]|j                  j                  rG‰r%i |j                  j                  j                  ¥‰¥Šn |j                  j                  j                  Šd„ }t        t         ‰‰ |¬«      S )Nzbound_sympy(%s)%sc                 ób   •— ‰r+ddj                  ˆ fd„‰j                  «       D «       «      z   S dS )Nú
c              3  óR   •K  — | ]  \  }}|‰j                   v sŒd |› d|› �–— Œ  y­w)z  r1   N)Úfree_symbols)Ú.0ÚkrÝ   Úexprs      €r/   ú	<genexpr>z0bound_sympy.<locals>.<lambda>.<locals>.<genexpr>ø  s3   øè ø€ ò Ù&* a¨ÀÀT×EVÑEVÒ@V�b˜˜˜2˜a˜S”Mñùs   ƒ'š'Ú )ÚjoinÚitems)r…  ra  s   €€r/   r!  zbound_sympy.<locals>.<lambda>ö  s@   ø€ ñ
 ð	 Ø—)‘)ó Ø.4¯l©l«nôó ñð ð ð r.   c                óê   — | j                   rR| j                  rt        dt        «      }|S | j                  rt        dt        «      }|S t        j                  «       }|S t        j                  «       }|S rî   )rØ   Úis_positiver%   r"   Úis_nonnegativerv   rm   )ÚsrP   s     r/   Úmissing_handlerz$bound_sympy.<locals>.missing_handler  sm   € Ø�<Š<Ø�}Š}Ü  ¤FÓ+�ð ˆ	ð ×!Ò!Ü  ¤FÓ+�ð ˆ	ô	 !×,Ñ,Ó.�ð ˆ	ô ×$Ñ$Ó&ˆBØˆ	r.   )rŽ  )r;  Údebugr   r2   r4   rÓ   r%   rq   rÔ   Ú_guardsÚTracingContextÚtry_getÚ	fake_modeÚ	shape_envÚvar_to_ranger!   rÑ   )r…  ra  ÚcontextrŽ  s   ``  r/   r&   r&   ï  sÑ   ù€ ô ‡I�IØØÜôó		
ôô �$œŸ™Ô%Ü×Ñ Ó%Ð%àŠ\�r€Fô �m‰m×*Ñ*×2Ñ2Ó4€GÙ�7×$Ñ$×.Ò.ÙØK˜×)Ñ)×3Ñ3×@Ñ@ÐKÀFÐK‰Fà×&Ñ&×0Ñ0×=Ñ=ˆFòô Ü ¨¸ôð r.   )rP   úValueRanges[_T]r·   z$TypeGuard[ValueRanges[SympyBoolean]])rP   r—  r·   z"TypeGuard[ValueRanges[sympy.Expr]]rF   )r…  z
sympy.Exprra  z)Optional[dict[sympy.Symbol, ValueRanges]]r·   r%   )OÚ
__future__r   ÚdataclassesrÍ   r°   Úloggingr:   r	  Útypingr   r   r   r   r   r	   r
   r   Útyping_extensionsr   r4   Úsympy.logic.boolalgr   rG   r   rÔ   Útorch._loggingr   Útorch._prims_commonr   rF  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    Úinterpr!   Únumbersr"   r#   r$   Ú	getLoggerr*   r;  Ú__all__r>   r'   ÚRuntimeErrorr)   rD   rK   rQ   rS   r7   r9   rº   r3   r½   r¾   rÅ   rÈ   rÆ   rÉ   rÇ   rÊ   Ú	dataclassr%   rÑ   r&   r-   r.   r/   ú<module>r¦     sÂ  ðå "ã Û Û Û Û Û ÷	÷ 	ó 	õ (ã ß Dã Ý %Ý -÷÷ ÷ ÷ ñ õ" !ß =Ñ =ð €g×Ñ˜Ó!€à˜-Ð
(€áˆT�5—:‘:˜|Ó,€ô	�lô 	òFò2)óóð 
ˆs�E˜5Ÿ:™:Ð%Ñ	&€Ø	ˆt�\Ð!Ñ	"€Øˆf�fˆnÑ€Ø	�5—:‘:�, §
¡
Ð*Ñ	+€Ø
�E—J‘J §
¡
Ð+¨U¯Z©ZÐ7Ñ
8€Ø	�<�. ,Ð.Ñ	/€Ø
�L ,Ð/°Ð=Ñ
>€Øˆf�fˆnÑ€Ø	ˆw˜ÐÑ	 €ð €×Ñ˜dÔ#ôo9�'˜"‘+ó o9ó $ðo9÷d	;ñ ;ðF KOð-Ø
ð-ØGð-àô-r.   