
    QVjic                       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j3        e4          Z5ddgZ6 edej7        e          Z8 G d de9          Z:d Z;d Z<d$dZ=d%dZ>ee?e@ej7        f         ZAeeBef         ZCeeAeCf         ZDe	ej7        gej7        f         ZEe	ej7        ej7        gej7        f         ZFe	egef         ZGe	eegef         ZHeeEeGf         ZIeeFeHf         ZJ ejK        d           G d de
e8                               ZL G d d          ZM	 d&d'd#ZNdS )(    )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dS )ValueRangeErrorN)__name__
__module____qualname__     Y/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/utils/_sympy/value_ranges.pyr)   r)   9   s        Dr.   r)   c                Z   t          | t                    r| rt          j        nt          j        S t          | t
                    rt          j        |           S t          | t                    rGt          j	        |           r| dk    rt          j
        nt          j
         S t          j        |           S t          | t          j                  r%| j        s
J |             | t          j        k    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 F/uzzEK/	As		 F}Q	Au		 F:a== 	4 1uu58858)3{1~~	Auz	"	" F{A{
 EI~~~~	A{	#	# FDd1ggDDDDEEEr.   c                    t          | t          j                  r"t          |t          j                  sJ || k    S t          | t                    rt          |t                    sJ | |f            | o|  S N)r2   r4   r>   SympyBooleanloweruppers     r/   sympy_generic_lerK   X   s    %$$ )%,,,,, ~ %.. 	
:e\3R3R 	
 	
U
 	
 	
R '%i((r.   vrValueRanges[_T]return$TypeGuard[ValueRanges[SympyBoolean]]c                    | j         S rF   is_boolrL   s    r/   
vr_is_boolrT   g   s
    :r.   "TypeGuard[ValueRanges[sympy.Expr]]c                    | j          S rF   rQ   rS   s    r/   
vr_is_exprrW   k   s    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<   dBd
ZedCd            ZedDd            ZdEdZdFdZdGdZd ZdHdZedId            ZedJd            ZdKdZedId            ZedJd             ZdKd!ZdLd"Zeej        dMd#                        Zeej        dMd$                        Zeej        dFd%                        ZeedNd)                        ZeedOd,                        ZedPd.            ZedQd1            ZeedQd2                        ZeedRd4                        ZedSd6            ZedQd7            Z edQd8            Z!eedTd;                        Z"eedUd=                        Z"edVd?            Z"e#d@             Z$dAS )Wr%   r'   rI   rJ   r3   rR   is_intis_floatrN   strc                (    d| j          d| j         dS )NzVR[z, ]rH   selfs    r/   __repr__zValueRanges.__repr__   s    0TZ004:0000r.   r`   ValueRanges[sympy.Expr]ExprInNonec                    d S rF   r-   r`   rI   rJ   s      r/   __init__zValueRanges.__init__   	    
 sr.   ValueRanges[SympyBoolean]BoolInc                    d S rF   r-   rf   s      r/   rg   zValueRanges.__init__   rh   r.   AllInc                (   t          |          }t          |          }	 t          ||          st          d| d| d          n(# t          $ r}t          d| d|           |d }~ww xY w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                              | d|           t                              | d|           t                              | d|           t                              | d	| j         o|o|           	 t                              | d
| j         o| j                    | j        s| j        s| j        sJ ||f            d S d S d S )NzInvalid ranges [:r^   zCould not compare z <= rI   rJ   rR   rZ   r[   )rD   rK   r)   	TypeErrorr2   rG   r4   r8   r<   r"   r$   r#   object__setattr__rR   rZ   r[   )	r`   rI   rJ   rC   is_bool_loweris_bool_upperinteger_typesis_int_loweris_int_uppers	            r/   rg   zValueRanges.__init__   s>   u%%u%%	L#E511 K%&I&I&I&I&I&IJJJK 	L 	L 	LCCCECCDD!K	L #5,77"5,77---u~--- eU]++ 	0A0AEeU]++ 	%(0B0BGE(;[I!%77!%77 	4%0004%000 	4M:::>>,	
 	
 	

	 	4-=-Qdk/RRR|Kt{KdmKKeU^KK;KKKKKKs   &A 
A,A''A,c                    t          |           r| S | t                                          k    rt                                          S t	          d|            )Nznot bool like )rT   r%   unknownunknown_boolrA   r_   s    r/   boolifyzValueRanges.boolify   sW    d 	:K[((****++--- !8$!8!8999r.   xc                \    t                               |                              |           S rF   )r%   wrapissubset)r`   r{   s     r/   __contains__zValueRanges.__contains__   s$    ""++D111r.   c                    ||                                  u rdS t          |j        | j                  ot          | j        |j                  S )NT)unknown_intrK   rI   rJ   r`   others     r/   r~   zValueRanges.issubset   sO    D$$&&&&4TZ88 
=MJ>
 >
 	
r.   c                    | |z  S )z1Given two ValueRanges, returns their intersectionr-   r   s     r/   tightenzValueRanges.tighten   s    e|r.   r   c                    d S rF   r-   r   s     r/   __and__zValueRanges.__and__   	     #&#r.   c                    d S rF   r-   r   s     r/   r   zValueRanges.__and__   	     %(Cr.   AllVRc                   |t                                           t                                           fv r| S | t                                           t                                           fv r|S | j        |j        k    sJ | |f            | j        |j        k    sJ | |f            | j        |j        k    sJ | |f            | j        rJt          t          j        | j        |j                  t          j	        | j
        |j
                            S t          t          j        | j        |j                  t          j        | j
        |j
                            S rF   )r%   rx   r   rR   rZ   r[   r4   OrrI   AndrJ   MaxMinr   s     r/   r   zValueRanges.__and__   s9   [((**K,C,C,E,EFFFKK''));+B+B+D+DEEEL|u},,,tUm,,,{el***T5M***}...u...< 	U[1159TZ3U3U   	$*ek22EIdj%+4V4V  r.   c                    d S rF   r-   r   s     r/   __or__zValueRanges.__or__  r   r.   c                    d S rF   r-   r   s     r/   r   zValueRanges.__or__  r   r.   c                L   t                                           | |fv rt                                           S | j        |j        k    sJ | |f            | j        |j        k    sJ | |f            | j        |j        k    sJ | |f            | j        rJt          t          j        | j        |j                  t          j        | j	        |j	                            S t          t          j
        | j        |j                  t          j        | j	        |j	                            S rF   )r%   rx   rR   rZ   r[   r4   r   rI   r   rJ   r   r   r   s     r/   r   zValueRanges.__or__  s     T5M11&&(((|u},,,tUm,,,{el***T5M***}...u...< 		$*ek22EHTZ4U4U   	$*ek22EIdj%+4V4V  r.   c                "    | j         | j        k    S rF   rH   r_   s    r/   is_singletonzValueRanges.is_singleton&  s    zTZ''r.   c                 L    t          t          j         t          j                  S rF   r%   r4   r<   r-   r.   r/   rx   zValueRanges.unknown)       EH9eh///r.   c                 8    t          t           t                    S rF   )r%   r"   r-   r.   r/   r   zValueRanges.unknown_int.  s     F7F+++r.   c                 J    t          t          j        t          j                  S rF   )r%   r4   r6   r5   r-   r.   r/   ry   zValueRanges.unknown_bool3  s     5;
333r.   argUnion[ExprIn, ExprVR]ExprVRc                    d S rF   r-   r   s    r/   r}   zValueRanges.wrap8  s	     	r.   Union[BoolIn, BoolVR]BoolVRc                    d S rF   r-   r   s    r/   r}   zValueRanges.wrap>  	     	r.   Union[AllIn, AllVR]c                    t          | t                    r| S t          | t                    r-t          j        |           rt                                          S t          | |           S rF   )r2   r%   r9   r:   isnanrx   r   s    r/   r}   zValueRanges.wrapC  s\    c;'' 	Jc5!! 	)djoo 	)&&(((3$$$r.   fnExprFnc                    t                               |           } t           || j                   || j                            S )z#Increasing: x <= y => f(x) <= f(y).r%   r}   rI   rJ   r{   r   s     r/   increasing_mapzValueRanges.increasing_mapL  s;     Q22ag;;17444r.   c                    d S rF   r-   r   s     r/   decreasing_mapzValueRanges.decreasing_mapR  s    HKr.   BoolFnc                    d S rF   r-   r   s     r/   r   zValueRanges.decreasing_mapV  r   r.   AllFnc                    t                               |           } t           || j                   || j                            S )z#Decreasing: x <= y => f(x) >= f(y).)r%   r}   rJ   rI   r   s     r/   r   zValueRanges.decreasing_map[  s;     Q22ag;;17444r.   c                    t                               |           }  || j                  } || j                  }t          t	          ||          t          ||                    S )zIt's increasing or decreasing.)r%   r}   rI   rJ   minmax)r{   r   lus       r/   monotone_mapzValueRanges.monotone_mapb  sU     QBqwKKBqwKK3q!99c!Qii000r.   c                ~   t                               |           } d| v rt           || j                   || j                            }t          |          }t          |t          j                  s|t          j	        k    rt          d|          S t          d|          S t           
                    | |          S )z$Fn is convex and has a minimum at 0.r           )r%   r}   r   rI   rJ   rD   r2   r4   r=   r<   r   )r{   r   rJ   s      r/   convex_min_zero_mapzValueRanges.convex_min_zero_mapj  s     Q6617RR[[11E"5))E%-- /%(1B1B"3...q%(((''2...r.   yExprFn2c                    d S rF   r-   r{   r   r   s      r/   coordinatewise_increasing_mapz)ValueRanges.coordinatewise_increasing_mapv  	     r.   BoolFn2c                    d S rF   r-   r   s      r/   r   z)ValueRanges.coordinatewise_increasing_map~  r   r.   AllFn2c                    t                               |           t                               |          }} 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  sa     ""K$4$4Q$7$71Bqw  Bqw  
 
 	
r.   c                   |                      |          |                      |          }}fdt          j        |j        |j        g|j        |j        g          D             }t          t          |          t          |                    S )z1It's increasing or decreasing on each coordinate.c                .    g | ]\  }} ||          S r-   r-   ).0abr   s      r/   
<listcomp>z;ValueRanges.coordinatewise_monotone_map.<locals>.<listcomp>  s7     
 
 
1 Bq!HH
 
 
r.   )r}   	itertoolsproductrI   rJ   r%   r   r   )clsr{   r   r   productss      ` r/   coordinatewise_monotone_mapz'ValueRanges.coordinatewise_monotone_map  s     xx{{CHHQKK1
 
 
 
!)17AG*<qw>PQQ
 
 
 3x==#h--888r.   N)rN   r\   )r`   rb   rI   rc   rJ   rc   rN   rd   )r`   ri   rI   rj   rJ   rj   rN   rd   )rI   rl   rJ   rl   rN   rd   )rN   ri   )r{   rl   rN   r3   )rN   r%   )r`   rb   r   rb   rN   rb   )r`   ri   r   ri   rN   ri   )r`   r   r   r   rN   r   )rN   r3   )rN   rb   )r   r   rN   r   )r   r   rN   r   )r   r   rN   r   )r{   r   r   r   rN   r   )r{   r   r   r   rN   r   )r{   r   r   r   rN   r   )r{   r   r   r   r   r   rN   r   )r{   r   r   r   r   r   rN   r   )r{   r   r   r   r   r   rN   r   )%r*   r+   r,   r	   r%   r4   r>   r   rG   r   r   r   __annotations__ra   r   rg   rz   r   r~   r   r   r   r   staticmethod	functoolscacherx   r   ry   r}   r   r   r   r   r   classmethodr   r-   r.   r/   r%   r%   z   s6         &UZ(\*ffn%
 IIIIIIMMMLLLNNN1 1 1 1    X    X8L 8L 8L 8Lt: : : :2 2 2 2
 
 
   
 & & & X&
 ( ( ( X(
   $ & & & X&
 ( ( ( X(
   ( ( ( ( _0 0 0 _ \0 _, , , _ \, _4 4 4 _ \4    \ X    \ X % % % \% 5 5 5 \5
 KKK \ XK   \ X 5 5 5 \5 1 1 1 \1 	/ 	/ 	/ \	/    \ X    \ X 
 
 
 \
$ 9 9 [9 9 9r.   c                     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;dS ):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|                                 sJ | j        } t          | t          t
          t          f          }|s.t          | t          t          j	        t          j
        f          sJ t          | t                    rvt          j        |           rb|t          j        k    rt                                          S |j        rt                                          S t                                          S |rt'          |          } ||           } nI|t          j        k    rt          | t                    sJ n!|j        r| j        r	| j        sJ n	| j        sJ t                              |           }|S rF   )r2   r%   r   rI   r7   r9   r3   r   r4   r8   Numberr   r:   r   torchry   is_floating_pointrx   r   r   	is_finiteis_real
is_integerr}   )valuedtype	is_pythontype_rs        r/   constantz SymPyValueRangeAnalysis.constant  s   e[)) 	 %%'''''KEusE4&899	 	
JK=
 
 	
 	
 
 e]++ 	1
50A0A 	1
"""//111( 1"**,,,"..000 	(!%((EE%LLEE 
""!%555555( ( ?;em;;; ''''U##r.   Nc                &   |t           j        k    r t                              | t                    S |t           j        k    rt                                          S |j        st                                          S t          	                                S rF   )
r   float64r%   r   r   r3   ry   r   r   rx   )r   r   	src_dtypes      r/   to_dtypez SymPyValueRangeAnalysis.to_dtype  ss    EM!!--a999ej  ++---( 	-**,,,""$$$r.   c                B    t                               | t                    S rF   )r%   r   r    )r   r   s     r/   trunc_to_intz$SymPyValueRangeAnalysis.trunc_to_int  s    ))!Z888r.   c                    t                               |           } |                                 } | j        sJ t                               | t
          j                  S rF   )r%   r}   rz   rR   r   r4   Not)r   s    r/   not_zSymPyValueRangeAnalysis.not_  sG    QIIKKyy))!UY777r.   c                N    t                               | |t          j                  S rF   )r%   r   r4   r   r   r   s     r/   or_zSymPyValueRangeAnalysis.or_  s    88AuxHHHr.   c                N    t                               | |t          j                  S rF   )r%   r   r4   r   r   s     r/   and_zSymPyValueRangeAnalysis.and_  s    88AuyIIIr.   c                    |                                  r5t                              t          j        | j        rdnd                    S t          t          j        d          t          j        d                    S Nr   r   )r   r%   r}   r4   r8   rI   r{   s    r/   _bool_to_intz$SymPyValueRangeAnalysis._bool_to_int  sb    >> 	C##EMqw2E!!A$F$FGGGu}Q//q1A1ABBBr.   c                v   t                               |          t                               |          }}|j        r|j        r|                     ||          S |j        r|                     |          }|j        r|                     |          }t          |j        |j                  }|dk     r`|t          j         k    rO|t           k    rC	 dt          | dz
                                            z   }n# t          $ r t           }Y nw xY wd}t          |t          |j        |j                            S )Nr   r   )r%   r}   rR   r   r   r   rI   r4   r<   r"   r7   
bit_length	Exceptionr   rJ   )r   r   r   rI   s       r/   bitwise_andz#SymPyValueRangeAnalysis.bitwise_and  s3   ""K$4$4Q$7$719 	" 	"88Aq>>!9 	$  ##A9 	$  ##AAGQW%%19958)++&0@0@ sE6A:99;;;<        E5#agqw"7"7888s   )C9 9DDc                   t                               |          t                               |          }}|j        r|j        r|                     ||          S |j        r|                     |          }|j        r|                     |          }t          |j        |j                  }|dk    rd}ni|dk    r[|t          j        k    rK|t          k    r@	 dt          |                                          z  dz
  }n# t          $ r
 t          }Y nw xY w|dk     rd}t          t          |j        |j                  |          S )Nr   r   )r%   r}   rR   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$4Q$7$719 	! 	!771a== 9 	$  ##A9 	$  ##AAGQW%%A::EEQYY5EH,,&c%jj33555:   QYYE3qw00%888s   'C> >DDc                   t                               |           } t                               |          }|                                 rH|                                r4| j        |j        k    r$t                               t          j                  S | j        |j        k    s|j        | j        k    r$t                               t          j                  S t          t          j        t          j                  S rF   )r%   r}   r   rI   r4   r5   rJ   r6   r   s     r/   eqzSymPyValueRangeAnalysis.eq"  s    QQ>> 	1 0 0 	1QW5G5G##EJ///Wqw!'AG"3"3##EK0005;
333r.   c                T    |                      |                     ||                    S rF   )r   r   r   r   r   s      r/   nezSymPyValueRangeAnalysis.ne,       xxq!%%%r.   c                6    t                               |          S rF   )r%   r}   )r   r   s     r/   identityz SymPyValueRangeAnalysis.identity0  s    """r.   c                   t                               |          }t                               |          }|j        |j        k    sJ |j        r)|                     |                     |          |          S |j        |j        k     r$t                               t          j                  S |j        |j        k    r$t                               t          j	                  S t          t          j	        t          j                  S rF   )
r%   r}   rR   r   r   rJ   rI   r4   r5   r6   r  s      r/   ltzSymPyValueRangeAnalysis.lt4  s    QQyAI%%%%9 	888CHHQKK+++w  "''
333AG##"''444u{EJ777r.   c                .    |                      ||          S rF   )r  r  s      r/   gtzSymPyValueRangeAnalysis.gtB  s    vva||r.   c                T    |                      |                     ||                    S rF   )r   r
  r  s      r/   lezSymPyValueRangeAnalysis.leF  r  r.   c                T    |                      |                     ||                    S rF   )r   r  r  s      r/   gezSymPyValueRangeAnalysis.geJ  r  r.   c                h    t                               | |t          t          j                            S rF   )r%   r   r   operatoraddr   s     r/   r  zSymPyValueRangeAnalysis.addN  s+    88q+hl++
 
 	
r.   c                    t                               |          }t                               |          }|j        |j        k    sJ |j        r|                     ||          S d }t                               ||t          |                    S )Nc                D    | 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_mul]  s7    Cxx166cQ!VV1ur.   )r%   r}   rR   r   r   r   )r   r   r   r  s       r/   mulzSymPyValueRangeAnalysis.mulT  s    QQyAI%%%%9 	"88Aq>>!	 	 	 66q![=R=RSSSr.   c                L   t                               |           } t                               |          }d|v s&t           | v s	t          | v r,t           |v s	t          |v rt                                           S t                               | |t          t                              S Nr   )r%   r}   r"   rx   r   r   r   r   s     r/   int_truedivz#SymPyValueRangeAnalysis.int_truedivh  s    QQ66w!||v{{&AST&&(((::1k*--  r.   c                t   t                               |           } t                               |          }d|v s:t          j         | v st          j        | v r6t          j         |v st          j        |v rt                                           S t                               | |t          t                              S r  )r%   r}   r4   r<   rx   r   r   r   r   s     r/   truedivzSymPyValueRangeAnalysis.truedivs  s    QQ66hY!^^ux1}}EH9>>UXQR]]&&(((::1k,//  r.   c                R   t                               |           } t                               |          }d|v rt                                           S g }t          j        | j        | j        g|j        |j        g          D ]}\  }}t          ||          }|t          j	        u rE|
                    t          j        |          t          j        |          z  t          z             h|
                    |           ~t          t          |          t          |                    S r  )r%   r}   r   r   r   rI   rJ   r   r4   r@   appendsignr"   r   r   )r   r   r   r{   r   r   s         r/   floordivz SymPyValueRangeAnalysis.floordiv  s    QQ66**,,,%qw&817AG:LMM 	# 	#DAqAAEI~~AA!>& HIIII""""3x==#h--888r.   c                   t                               |          }t                               |          }d d }d|v rt                                           S |                                rt	          |j                   ||j                   ||j                  k    rt                               |fd          S |j        dk     rt           dz   d          S |j        dk    rt          ddz
            S t           dz   |j                  }t          dz
  |j                  }t          ||          S |                     |          j        dz
  }t          | |          S )Nc                Z    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&&3q66/C1uur	Jr.   c                h    | |z  }|j         r%|t          t           fvrt          j        |          n|S rF   )r   r"   r4   r8   )r   r   r{   s      r/   c_divz*SymPyValueRangeAnalysis.mod.<locals>.c_div  s9    AA'({Xq&@Q7Q7Q5=###WXXr.   r   c                     |           S rF   r-   )r   r#  y_vals    r/   <lambda>z-SymPyValueRangeAnalysis.mod.<locals>.<lambda>  s    uuQ r.   r   )
r%   r}   r   r   r!  rI   rJ   r   r   r   )r   r{   r   r%  rI   rJ   r#  r'  s         @@r/   modzSymPyValueRangeAnalysis.mod  s|   QQ	 	 		Y 	Y 	Y 66**,,,^^ 	.LLE uQWe$$agu(=(==="11!5N5N5N5N5NOOOw{{"E6A:q1111"1eai000 UFQJ00EAIqw//"5%000 GGAJJ$q(Evu---r.   c                V    |                      |                     ||          |          S rF   )r)  r  )r   r   r   cs       r/   modular_indexingz(SymPyValueRangeAnalysis.modular_indexing  s$    wws||Aq))1---r.   c                4    t                                           S rF   )r%   r   )r   argss     r/   &is_non_overlapping_and_dense_indicatorz>SymPyValueRangeAnalysis.is_non_overlapping_and_dense_indicator  s    &&(((r.   c                   t                               |          }t                                         |                                rF                                r2t                               t          |j        j                            S |j        dk    r7t                               |t          dt                    z  t                    S                                 rJj        dz  dk    rt                               |fd          S t           	                    |fd          S t          |j        |j                   }t          t          |j                   t          |j                            S )Nr   r      c                .    t          | j                  S rF   r   rI   r{   r   s    r/   r(  z8SymPyValueRangeAnalysis.pow_by_natural.<locals>.<lambda>  s    !QW!5!5 r.   c                .    t          | j                  S rF   r3  r4  s    r/   r(  z8SymPyValueRangeAnalysis.pow_by_natural.<locals>.<lambda>  s    x17?S?S r.   )r%   r}   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 0 	##HQWag$>$>???W\\ <<1{1f---|   ^^ 	w{a"665555  
 #11!5S5S5S5STTT 17QWH--H8QW--.170K0K  r.   c                4    t                                           S rF   )r%   rx   r  s      r/   powzSymPyValueRangeAnalysis.pow  s    ""$$$r.   c                    t                               |           } d| v rt                                           S t                               | 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;O r.   )r%   r}   rx   r   r   s    r/   
reciprocalz"SymPyValueRangeAnalysis.reciprocal  sL     Q66&&(((--a1O1OPPPr.   c                B    t                               | t                    S rF   )r%   r   r!  r   s    r/   r!  zSymPyValueRangeAnalysis.abs  s    ..q#666r.   c                B    t                               | t                    S rF   )r%   r   r   r   s    r/   expzSymPyValueRangeAnalysis.exp  s    ))!->???r.   c                    t                               |           } | j        dk    rt                                           S t                               | t
                    S r  )r%   r}   rI   rx   r   r   r   s    r/   logzSymPyValueRangeAnalysis.log   sI    Q7a<<&&((())!->???r.   c                    t                               |           } | j        dk    rt                                           S t                               | t
                    S r  )r%   r}   rI   rx   r   r   r   s    r/   log2zSymPyValueRangeAnalysis.log2'  sI    Q7a<<&&((())!-?@@@r.   c                D    |                      ||t          j                  S rF   )
min_or_maxr4   r   r  s      r/   minimumzSymPyValueRangeAnalysis.minimum.      ~~aEI...r.   c                D    |                      ||t          j                  S rF   )rF  r4   r   r  s      r/   maximumzSymPyValueRangeAnalysis.maximum2  rH  r.   c                    t                               |           } t                               |          }t                               | ||          S rF   )r%   r}   r   )r   r   r   s      r/   rF  z"SymPyValueRangeAnalysis.min_or_max6  s@    QQ88ArBBBr.   c                j    t                               |t          j        j        j        j                  S rF   )r%   r   r4   	functions
elementaryintegersfloorr   r{   r   s      r/   floor_to_intz$SymPyValueRangeAnalysis.floor_to_int<  s#    ))!U_-G-P-VWWWr.   c                j    t                               |t          j        j        j        j                  S rF   )r%   r   r4   rM  rN  rO  ceilingrQ  s      r/   ceil_to_intz#SymPyValueRangeAnalysis.ceil_to_int@  s*    ))u)2:
 
 	
r.   c                    t                               |t          t          j        j        j        j                            S rF   )r%   r   r   r4   rM  rN  rO  rP  r   r{   s     r/   rP  zSymPyValueRangeAnalysis.floorX  s2    )){5?5>DEE
 
 	
r.   c                    t                               |t          t          j        j        j        j                            S rF   )r%   r   r   r4   rM  rN  rO  rT  rW  s     r/   ceilzSymPyValueRangeAnalysis.ceil^  s2    )){5?5>FGG
 
 	
r.   c                                                     st                                          S j        fd}t                              ||          S )Nc                $    t          |           S rF   )r   )numberndigitss    r/   r(  z7SymPyValueRangeAnalysis.round_decimal.<locals>.<lambda>l  s    L99 r.   )r   r%   rx   rI   r   )r   r\  r]  r   s     ` r/   round_decimalz%SymPyValueRangeAnalysis.round_decimald  sV    ##%% 	)&&(((- :999))&"555r.   c                B    t                               |t                    S rF   )r%   r   r   )r   r\  r   s      r/   round_to_intz$SymPyValueRangeAnalysis.round_to_intp  s    ))&*===r.   c                    t                               |           } | j        dk     rt                                           S t                               | t
                    S r  )r%   r}   rI   rx   r   r   r   s    r/   sqrtzSymPyValueRangeAnalysis.sqrtu  sI    Q7Q;;&&((())!-?@@@r.   c                &   t                               |          }t                               |          }|                                 } |j        |j        k    st                                           ||fv sJ |j        rJt          t          j        |j        |j                  t          j        |j	        |j	                            S t          t          j
        |j        |j                  t          j        |j	        |j	                            S rF   )r%   r}   rz   rR   rx   r4   r   rI   r   rJ   r   r   )r   r   r+  s      r/   wherezSymPyValueRangeAnalysis.where|  s    QQIIKK yAI%%)<)<)>)>1a&)H)H)HH9 	Yuy!'::EHQWag<V<VWWWuy!'::EIagqw<W<WXXXr.   c                2    |                                 }| |fS rF   )rz   r   s     r/   expr_cond_pairz&SymPyValueRangeAnalysis.expr_cond_pair  s    IIKK1vr.   c                 J    d }| D ]\  }}t           j        |v r
||}||z  }|S rF   )r4   r5   )ranges
init_range
expr_range
cond_ranges       r/   	piecewisez!SymPyValueRangeAnalysis.piecewise  sF    
&, 	9 	9"J
zZ''%!+JJ!+j!8Jr.   c                "    t          dd          S Ng      r<  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 rn  ro  r   s    r/   sinzSymPyValueRangeAnalysis.sin  s     4%%%r.   c                L    t          t          j         t          j                  S rF   r   r   s    r/   sinhzSymPyValueRangeAnalysis.sinh  r   r.   c                L    t          t          j         t          j                  S rF   r   r   s    r/   tanzSymPyValueRangeAnalysis.tan      EH9eh///r.   c                L    t          t          j         t          j                  S rF   r   r   s    r/   tanhzSymPyValueRangeAnalysis.tanh  r   r.   c                L    t          t          j         t          j                  S rF   r   r   s    r/   asinzSymPyValueRangeAnalysis.asin  ry  r.   c                L    t          t          j         t          j                  S rF   r   r   s    r/   acoszSymPyValueRangeAnalysis.acos  ry  r.   c                L    t          t          j         t          j                  S rF   r   r   s    r/   atanzSymPyValueRangeAnalysis.atan  ry  r.   c                B    t                               | 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/  r7  r9  r=  r!  r@  rB  rD  rG  rJ  rF  rR  rU  rP  rY  r^  r`  rb  rd  rf  rl  rp  rr  rt  rv  rx  r{  r}  r  r  r  r-   r.   r/   r   r     s        
 # # \#J % % % \% 9 9 \9 8 8 \8 I I \I J J \J C C \C 9 9 [9* 9 9 [9. 4 4 \4 & & [& # # [# 8 8 [8   [ & & [& & & [& 
 
 \

 T T [T&   \ 
 
 \
 9 9 \9 &. &. [&.P . . [. ) ) [)   [@ * * [*X Q Q \Q 7 7 \7 @ @ \@ @ @ \@ A A \A / / [/ / / [/ C C \C
 X X [X 
 
 [
. 
 
 [

 
 
 [

 	6 	6 [	6 > > [> A A \A 
Y 
Y \
Y   \   \ & & \& 	 	 \	 & & \&
 0 0 \0 0 0 \0 0 0 \0   \   \ 0 0 \0 ; ; \; ; ;r.   r   expr
sympy.Exprrh  )Optional[dict[sympy.Symbol, ValueRanges]]c                    t                               d t           fd                     t           t          j                  rt                                         S pi t          j	        j
                                        }|r<|j        r5|j        j        r)ri |j        j        j        n|j        j        j        d }t          t            |          S )Nzbound_sympy(%s)%sc                 x    r6dd                      fd                                D                       z   ndS )N
c              3  @   K   | ]\  }}|j         v d | d| V  dS )z  r1   N)free_symbols)r   kr   r  s      r/   	<genexpr>z0bound_sympy.<locals>.<lambda>.<locals>.<genexpr>  sI        &*aTEV@V@VMMMaMM@V@V@V@V r.    )joinitems)r  rh  s   r/   r(  zbound_sympy.<locals>.<lambda>  sb    
 	))    .4llnn     
  r.   c                    | j         rT| j        rt          dt                    }nP| j        rt          dt                    }n3t                                          }nt                                          }|S r   )r   is_positiver%   r"   is_nonnegativer   rx   )srL   s     r/   missing_handlerz$bound_sympy.<locals>.missing_handler  sn    < 		'} / F++! / F++ ,,.. $$&&B	r.   )r  )rB  debugr   r2   r4   r   r%   r}   r   _guardsTracingContexttry_get	fake_mode	shape_envvar_to_ranger!   r   )r  rh  contextr  s   ``  r/   r&   r&     s    II    		
 		
   $%% &%%%\rF m*2244G >7$ >):)D > 	>K)3@KFKFF&0=F      r.   )rL   rM   rN   rO   )rL   rM   rN   rU   rF   )r  r  rh  r  rN   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   rM  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    interpr!   numbersr"   r#   r$   	getLoggerr*   rB  __all__r>   r'   RuntimeErrorr)   rD   rK   rT   rW   r7   r9   rc   r3   rj   rl   r   r   r   r   r   r   	dataclassr%   r   r&   r-   r.   r/   <module>r     s   " " " " " "               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ( ' ' ' ' '  D D D D D D D D  % % % % % % - - - - - -                                 " !           = = = = = = = = = = g!!-
(WT5:|,,	 	 	 	 	l 	 	 	F F F2) ) )       
sE5:%	&	t\!	"ffn	5:,
*	+
EJ
+UZ7
8	<.,.	/
L,/=
>ffn	w	  d###f9 f9 f9 f9 f9'"+ f9 f9 $#f9R	; ; ; ; ; ; ; ;F KO- - - - - - -r.   