+
    i>                        R t R.t^ RIt^ RIt^ RIHt ^ RIHt  ! R R]4      t ! R R]4      t	 ! R	 R
]4      t
 ! R R]4      t ! R R]4      t ! R R]4      t]3t]]3tR t ! R R]4      tR t ! R R4      tR tR tR tR8R ltR8R ltR8R ltR9R ltR tR:R lt R t!R  t"R! t#R" t$R# t%R$ t&R% t'R& t(R' t)R( t*R) t+R* t,R+ t-R, t.R- t/]/! 4       t0R. t1R/ t2R0 t3R1 t4R2 t5]Pl                  3R3 lt7 ! R4 R54      t8 ! R6 R74      t9R# );a  Fortran/C symbolic expressions

References:
- J3/21-007: Draft Fortran 202x. https://j3-fortran.org/doc/year/21/21-007.pdf

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
ExprN)Enum)gcdc                   &    ] tR t^$tRt^ t^t^tRtR# )Languagez*
Used as Expr.tostring language argument.
 N)	__name__
__module____qualname____firstlineno____doc__PythonFortranC__static_attributes__r       s/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/numpy/f2py/symbolic.pyr   r   $   s     FG	Ar   r   c                   V    ] tR t^-tRt^
t^t^t^t^t	^(t
^dt^t^t^tRtRtRtRtRtRtR# )	Opz
Used as Expr op attribute.
i,  i  i  i  i  r   N)r   r	   r
   r   r   INTEGERREALCOMPLEXSTRINGARRAYSYMBOLTERNARYAPPLYINDEXINGCONCAT
RELATIONALTERMSFACTORSREFDEREFr   r   r   r   r   r   -   sT     GDGFEFGEHFJEG
CEr   r   c                      a  ] tR t^Bt o Rt^t^t^t^t^t	^t
]]P                  3R l4       t]P                  3R ltRtV tR# )RelOpz@
Used in Op.RELATIONAL expression to specify the function part.
c                   V\         P                  J dx   R \        P                  R\        P                  R\        P
                  R\        P                  R\        P                  R\        P                  /VP                  4       ,          # R\        P                  R\        P                  R\        P
                  R	\        P                  R
\        P                  R\        P                  /V,          # z.eq.z.ne.z.lt.z.le.z.gt.z.ge.z==z!=<z<=>z>=)
r   r   r%   EQNELTLEGTGElower)clsslanguages   &&&r   
fromstringRelOp.fromstringM   s    x'''EHHfehhEHHfehhEHHfehh889	C C ehhehhUXXehhUXXtUXX??@B 	Br   c                   V\         P                  J dj   \        P                  R \        P                  R\        P
                  R\        P                  R\        P                  R\        P                  R/V ,          # \        P                  R\        P                  R\        P
                  R\        P                  R	\        P                  R
\        P                  R/V ,          # r'   )	r   r   r%   r*   r+   r,   r-   r.   r/   selfr3   s   &&r   tostringRelOp.tostringV   s    x'''HHfehhHHfehhHHfehh88<> > $$#uxx#uxx//35 	5r   r   N)r   r	   r
   r   r   r*   r+   r,   r-   r.   r/   classmethodr   r   r4   r9   r   __classdictcell____classdict__s   @r   r%   r%   B   sX      
B	
B	
B	
B	
B	
B$,JJ B B !)

 5 5r   r%   c                   6    ] tR t^`tRt^t^t^t^t^t	^t
^tRtR# )ArithOpz;
Used in Op.APPLY expression to specify the function part.
r   N)r   r	   r
   r   r   POSNEGADDSUBMULDIVPOWr   r   r   r   r@   r@   `   s,     C
C
C
C
C
C
Cr   r@   c                       ] tR t^mtRtR# )OpErrorr   Nr   r	   r
   r   r   r   r   r   rI   rI   m       r   rI   c                   N    ] tR t^qtRt^ t^t^t^t^t	^t
^t^t^t^t^t^t^dtRtR# )
Precedencez,
Used as Expr.tostring precedence argument.
r   N)r   r	   r
   r   r   ATOMPOWERUNARYPRODUCTSUMr,   r*   LANDLORr   ASSIGNTUPLENONEr   r   r   r   rM   rM   q   sJ     DEEG
C	
B	
BD
CGFEDr   rM   c                 l    V P                  V4      pVf   W V&   R # W2,           pV'       d   W0V&   R # W R # N)get)dkvcs   &&& r   
_pairs_addr_      s1    	aAy!EaDr   c                       ] tR t^tRtR# )ExprWarningr   NrJ   r   r   r   ra   ra      rK   r   ra   c                 @    \         P                  ! V \        ^R7       R# )   )
stacklevelN)warningswarnra   )messages   &r   ewarnrh      s    MM';15r   c                   8  a  ] tR t^t o Rt]]P                  3R l4       tR t	R t
R tR tR tR tR	 tR
 tR t]P&                  ]P(                  3R ltR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R t'R t(R  t)R! t*R"t+V t,R## )$r   z_Represents a Fortran expression as an op-data pair.

Expr instances are hashable and sortable.
c                    \        WR7      # )z/Parse a Fortran expression to an Expr.
        r3   )r4   )r2   r3   s   &&r   parse
Expr.parse   s     !//r   c                p	   \        V\        4      '       g   Q hV\        P                  J dt   \        V\        4      '       d   \	        V4      ^8X  g   Q h\        V^ ,          \
        4      '       g   Q h\        V^,          \
        \        34      '       g   Q V4       hEM
V\        P                  J dt   \        V\        4      '       d   \	        V4      ^8X  g   Q h\        V^ ,          \        4      '       g   Q h\        V^,          \
        \        34      '       g   Q V4       hEMV\        P                  J d+   \        V\        4      '       d   \	        V4      ^8X  g   Q hEMEV\        P                  J d   \        V\        4      '       d   \	        V4      ^8X  g   Q h\        V^ ,          \        4      '       d0   V^ ,          RR\	        V^ ,          4      ^,
          1,          R9   g   Q h\        V^,          \
        \        34      '       g   Q V4       hEMV\        P                  J d   \        V4      f   Q hEMjV\        P                  \        P                  39   d\   \        V\        4      '       g   Q h\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   Q V4       hEMV\        P                   \        P"                  39   d   \        V\$        4      '       g   Q hEMV\        P&                  J d   \        V\        4      '       d   \	        V4      ^8X  g   Q h\        V^ ,          4      f   Q h\        V^,          \        4      '       g   Q h\        V^,          \$        4      '       g   Q hEMV\        P(                  J d@   \        V\        4      '       d   \	        V4      ^8X  g   Q h\        V^ ,          4      f   Q hMV\        P*                  J d*   \        V\        4      '       d   \	        V4      ^8X  g   Q hMV\        P,                  \        P.                  39   d   \        V\0        4      '       g   Q hMKV\        P2                  J d*   \        V\        4      '       d   \	        V4      ^8X  g   Q hM\5        RV 24      hWn        W n        R# )rc   Nc              3   B   "   T F  p\        V\        4      x  K  	  R # 5irY   )
isinstancer   ).0items   & r   	<genexpr> Expr.__init__.<locals>.<genexpr>   s     ?$$z$--$s   FTz$unknown op or missing sanity check: )z""z''z@@)rp   r   r   tuplelenintstrr   floatr   r   r   hashr   r   allr    r!   dictr   r   r   r"   r#   r   r   NotImplementedErroropdata)r8   r~   r   s   &&&r   __init__Expr.__init__   st   "b!!!!  dE**s4yA~==d1gs++++d1gSz228D82277] dE**s4yA~==d1gu----d1gSz228D822::dE**s4yA~==~299_ dE**s4yA~==tAw,,Q 2#d1g,"2 237IIK Jd1gSz228D82299_:)))BHHbii((dE****3?$?333?$???EE?BHHbjj)) dD))))288^ dE**s4yA~==Q=,,,d1gu----d1gt,,,,2;;dE**s4yA~==Q=,,,2::dE**s4yA~==~BFFBHH%%dD))))2== dE**s4yA~==~%6rd;= = 	r   c                    \        V\        4      ;'       d:    V P                  VP                  J ;'       d    V P                  VP                  8H  # rY   )rp   r   r~   r   r8   others   &&r   __eq__Expr.__eq__   sE    5$' , ,GGuxx', ,II+	-r   c                   V P                   \        P                  \        P                  39   d.   \	        \        V P                  P                  4       4      4      pMvV P                   \        P                  J dM   V P                  R ,          \	        \        V P                  ^,          P                  4       4      4      ,           pMV P                  p\        V P                   V34      # Nrc   N)
r~   r   r    r!   ru   sortedr   itemsr   rz   )r8   r   s   & r   __hash__Expr.__hash__   s    77rxx,,		 123DWW 99R=5		!0B0B0D)E#FFD99DTWWdO$$r   c                   \        V\        4      '       Ed   V P                  VP                  Jd.   V P                  P                  VP                  P                  8  # V P                  \        P
                  \        P                  39   dZ   \        \        V P                  P                  4       4      4      \        \        VP                  P                  4       4      4      8  # V P                  \        P                  J d   V P                  R ,          VP                  R ,          8w  d(   V P                  R ,          VP                  R ,          8  # \        \        V P                  ^,          P                  4       4      4      \        \        VP                  ^,          P                  4       4      4      8  # V P                  VP                  8  # \        # r   )rp   r   r~   valuer   r    r!   ru   r   r   r   r   NotImplementedr   s   &&r   __lt__Expr.__lt__   s3   eT""wwehh&ww}}uxx~~55ww288RZZ00fTYY__%678uzz'7'7'9 :;< =ww"(("99R=EJJrN299R=5::b>99VDIIaL$6$6$89:U5::a=..01>3 3 399uzz))r   c                "    W8H  ;'       g    W8  # rY   r   r   s   &&r   __le__Expr.__le__  s    DM$A$AT\Ar   c                    W8:  * # rY   r   r   s   &&r   __gt__Expr.__gt__
  s
    $77r   c                    W8  * # rY   r   r   s   &&r   __ge__Expr.__ge__  s
    $66r   c                h    \        V 4      P                   R V P                   RV P                  : R2# (, ))typer   r~   r   r8   s   &r   __repr__Expr.__repr__  s.    t*%%&ay499-qAAr   c                "    V P                  4       # rY   )r9   r   s   &r   __str__Expr.__str__  s    }}r   c           	       a V P                   \        P                  \        P                  39   d   V P                  ^ ,          ^ 8  d   \
        P                  M\
        P                  p\        V P                  ^ ,          4      V P                  ^,          ^8w  d   RV P                  ^,           2MR,           pE	MV P                   \        P                  J dH   RP                  V3R lV P                   4       4      pRV,           R,           p\
        P                  pE	M}V P                   \        P                  J d(   \
        P                  p\        V P                  4      pE	M8V P                   \        P                  J d_   V P                  ^ ,          pV P                  ^,          ^8w  d"   V P                  ^,          R,           V,           p\
        P                  pEMV P                   \        P                  J dH   RP                  V3R lV P                   4       4      pRV,           R	,           p\
        P                  pEMWV P                   \        P                  J Ed6   . p\        V P                  P!                  4       4       F  w  rgV^ 8  d   R
pV) pMRpV^8X  d#   VP#                  \
        P                  SR7      pMGV\%        ^4      8X  d   \        V4      pM+V R2VP#                  \
        P&                  SR7      ,           pV'       d   VP)                  V4       MVR
8X  d   VP)                  R4       VP)                  V4       K  	  RP                  V4      ;'       g    RpV'       d   \
        P                  M\
        P                  pEMV P                   \        P*                  J Ed   . p	. p
\        V P                  P!                  4       4       EFV  w  rRpV^8X  d#   VP#                  \
        P&                  SR7      pMS\,        P.                  J d   V\1        ^^
4      9   d<   VP#                  \
        P&                  SR7      pRP                  V.V,          4      pMV\1        R#^ 4      9   d5   VP#                  \
        P&                  SR7      pW.V) ,          ,          p
K  VP#                  \
        P2                  SR7      pRV RV R2pM+VP#                  \
        P4                  SR7      RV 2,           pV	'       d   V	P)                  V4       V	P)                  V4       EKY  	  V
'       d/   V	'       g   V	R.,          p	V	RRRP                  V
4      R.,          p	RP                  V	4      ;'       g    RpV	'       d   \
        P&                  M\
        P                  pEMV P                   \        P6                  J Ed5   V P                  w  rpV\8        P:                  J db   S\,        P.                  J dN   V Uu. uF$  pVP#                  \
        P&                  SR7      NK&  	  upw  ppV RV 2p\
        P&                  pEMDV Uu. uF$  pVP#                  \
        P2                  SR7      NK&  	  ppTVP!                  4        UUu. uF3  w  ppVR,           VP#                  \
        P<                  4      ,           NK5  	  upp,          pV RRP                  V4       R2p\
        P                  pEMV P                   \        P>                  J d~   V P                  ^ ,          pV P                  R,           Uu. uF$  pVP#                  \
        P2                  SR7      NK&  	  ppV RRP                  V4       R	2p\
        P                  pEMV P                   \        P@                  J d^   V P                   Uu. uF$  pVP#                  \
        P&                  SR7      NK&  	  ppRP                  V4      p\
        P&                  pEM~V P                   \        PB                  J d   V P                   Uu. uF$  pVP#                  \
        P2                  SR7      NK&  	  upw  pppS\,        P.                  J d   RV RV RV R2pM]S\,        PD                  J d   RV RV RV R2pM<S\,        PF                  J d   RV RV RV R2pM\I        RV P                    RS 24      h\
        P                  pEMV P                   \        PJ                  J dE   RV P                  P#                  \
        PL                  SR7      ,           p\
        PL                  pEM/V P                   \        PN                  J dD   R V P                  P#                  \
        PL                  SR7      ,           p\
        PL                  pMV P                   \        PP                  J d   V P                  w  pppV\R        PT                  \R        PV                  39   d   \
        PT                  M\
        PX                  pVP#                  VSR7      pVP#                  VSR7      pVP#                  SR7      pV R!V R!V 2pM\I        R"V P                    24      hVPZ                  VPZ                  8  d   RV,           R,           # V# u upi u upi u uppi u upi u upi u upi )$z0Return a string representation of Expr.
        _ r   c              3   f   <"   T F&  pVP                  \        P                  SR 7      x  K(  	  R# 5irk   Nr9   rM   rV   rq   rr   r3   s   & r   rs    Expr.tostring.<locals>.<genexpr>  .      1&/d --
(8(88-LL&/   .1r   r   c              3   f   <"   T F&  pVP                  \        P                  SR 7      x  K(  	  R# 5ir   r   r   s   & r   rs   r   +  r   r   []z -  + rk    * -0zpow(z ** 1/z / =   NNz // ?:z if z else zmerge(ztostring for z and &* ztostring for op i).r~   r   r   r   r   rM   rR   rN   rx   r   joinr   r   r   r    r   r   r9   	as_numberrQ   appendr!   r   r   rangerV   rO   r   r@   rF   rW   r   r   r   r   r   r}   r"   rP   r#   r   r%   r*   r+   r,   r   )r8   parent_precedencer3   
precedencertermstermcoeffr~   factorstailbaseexpfactornameargskwargsargnumerdenomr\   r]   acondexpr1expr2ropleftrights   &&f                          r   r9   Expr.tostring  s    77rzz277++,0IIaL1,<*..) DIIaL!(,		!(9 ()1%7?ACAWW

"		 1&*ii1 1Aa#A#JWW		!#JDIIAWW		!		!Ayy|q IIaL3&*#JWW 		 1&*ii1 1Aa#A#JWW E%diioo&7819B"FEBA:==(=KDYq\)u:D#WC=4=="**X ,9 ,? ?DLL$5[LL%T"#  9$ %%#A+0jooJWW

"GD#DIIOO$56	!8!]]:+=+=4< + >F+eArl*!%z/A/A8@ "/ "B!&VHsN!;c1-!%z/A/A8@ "/ "BC4/ !%z/?/?8@ "/ "B#'xr#a!8!]]:+;+;4< + >BFseMFNN2&v&1 72 u$GCejj&6<< ''CA/6++JOOJWW !%Dw{{"x8::'= ,0 1+/C !$Z-?-?6> !- !@+/ 1u gS('//
 $()#'C Z%5%5I#'  )%+\\^5%3TQ S1::joo#>>>%35 5fAdiio.a0'__
WW#99Q<D#yy}., LL!1!1HLE,  .&$))D/*!,A#JWW		!#yy*( LL!3!3hLG(  *D!A#++JWW

" ,099"6+4a #$**Z-=-=6> #- #@+4"6D% 8::%vQugQugQ/X__,wd4&ugQ7X---UG2eWBtfA6)#DGG9E(<> >#JWWdii(()9)9H(MMA#))JWW dii(()9)9H(MMA#))JWW%#yyCu+.588UXX2F+F*--)}} ==h=?DNN:NAE,,,1C&#aw'A%(8	&BCC""Z%5%55 7S= s 1)5.
*
"6s$   *k*k9k*k*k *k%c                    V # rY   r   r   s   &r   __pos__Expr.__pos__  s    r   c                    V R,          # )r   r   r   s   &r   __neg__Expr.__neg__  s    byr   c                   \        V4      p\        V\        4      '       Ed"   V P                  VP                  J Edn   V P                  \        P
                  \        P                  39   db   \        V P                  ^ ,          VP                  ^ ,          ,           \        V P                  ^,          VP                  ^,          4      4      # V P                  \        P                  J d5   V P                  w  r#VP                  w  rE\        W$,           W5,           4      # V P                  \        P                  J dn   \        V P                  \        V P                  4      4      pVP                  P                  4        F  w  rx\        VP                  Wx4       K  	  \!        V4      # V P                  \        P                  J dB   VP                  \        P
                  \        P                  39   d   V \        V4      ,           # V P                  \        P
                  \        P                  39   d1   VP                  \        P                  J d   \        V 4      V,           # V P                  \        P                  J dC   VP                  \        P
                  J d%   V \#        WP                  ^,          R7      ,           # V P                  \        P
                  J dC   VP                  \        P                  J d%   \#        WP                  ^,          R7      V,           # \%        V 4      \%        V4      ,           # \&        #     )kind)as_exprrp   r   r~   r   r   r   r   r   maxr   
as_complexr    r|   r   r_   	normalizeas_realas_termsr   )	r8   r   r1i1r2i2r   r\   r]   s	   &&       r   __add__Expr.__add__  s	   eT""ww%(("77rzz27733$		!uzz!}4DIIaL%**Q-8: : 77bjj(!YYFB"ZZFB%bgrw7777bhh&TWWd499o6A %

 0 0 2"16610 !3$Q<'ww"**$bjj"''5J)Jj///RZZ11ehh"**6L!$'%//BGG#BJJ(>ge))A,???BJJ&588rww+>t**Q-85@@D>HUO33r   c                ^    \        V\        4      '       d   \        V4      V ,           # \        # rY   rp   number_typesr   r   r   s   &&r   __radd__Expr.__radd__  %    e\**U#d**r   c                    W) ,           # rY   r   r   s   &&r   __sub__Expr.__sub__  s    vr   c                ^    \        V\        4      '       d   \        V4      V ,
          # \        # rY   r   r   s   &&r   __rsub__Expr.__rsub__  r   r   c                   \        V4      p\        V\        4      '       EdD   V P                  VP                  J Ed0   V P                  \        P
                  \        P                  39   db   \        V P                  ^ ,          VP                  ^ ,          ,          \        V P                  ^,          VP                  ^,          4      4      # V P                  \        P                  J dO   V P                  w  r#VP                  w  rE\        W$,          W5,          ,
          W%,          WC,          ,           4      # V P                  \        P                  J dn   \        V P                  \        V P                  4      4      pVP                  P                  4        F  w  rx\        VP                  Wx4       K  	  \!        V4      # V P                  \        P"                  J d   \        V P                  / 4      pV P                  P                  4        FK  w  rVP                  P                  4        F(  w  r\        VP                  W,          W,          4       K*  	  KM  	  \!        V4      # V P                  \        P                  J dB   VP                  \        P
                  \        P                  39   d   V \        V4      ,          # VP                  \        P                  J dB   V P                  \        P
                  \        P                  39   d   \        V 4      V,          # V P                  \        P                  J dC   VP                  \        P
                  J d%   V \%        WP                  ^,          R7      ,          # V P                  \        P
                  J dC   VP                  \        P                  J d%   \%        WP                  ^,          R7      V,          # V P                  \        P"                  J d   V \'        V4      ,          # VP                  \        P"                  J d   \'        V 4      V,          # \)        V 4      \)        V4      ,          # \*        # r   )r   rp   r   r~   r   r   r   r   r   r   r   r   r!   r|   r   r_   r   r    r   r   
as_factorsr   )r8   r   r   r   r   r   r   r\   r]   t1c1t2c2s   &&           r   __mul__Expr.__mul__  s   eT""ww%(("77rzz27733$TYYq\EJJqM%A%(1uzz!}%EG GWW

*!YYFB"ZZFB%bg&7279JKK77bjj(TWWd499o6A %

 0 0 2"16610 !3$Q<'WW(TWWb)A"&))//"3&+jj&6&6&8FB&qvvrw@ '9 #4 %Q<'ww"**$bjj"''5J)Jj///RZZ'DGG

BGG7L,L!$'%//BGG#BJJ(>ge))A,???BJJ&588rww+>t**Q-85@@ww"(("huo--RXX%~--d#j&777r   c                ^    \        V\        4      '       d   \        V4      V ,          # \        # rY   r   r   s   &&r   __rmul__Expr.__rmul__  r   r   c                   \        V4      p\        V\        4      '       Ed-   VP                  \        P
                  J d   VP                  ^ ,          pV^ 8X  d   \        ^4      # V^8X  d   V # V^ 8  d   V P                  \        P                  J dZ   \        V P                  / 4      pV P                  P                  4        F  w  rEWR,          VP                  V&   K  	  \        V4      # W V^,
          ,          ,          # VR8w  d   W) ,          R,          # \        \        P                  W/4      # \        \        P                  W4      # \        # )r   r   )r   rp   r   r~   r   r   r   r   r!   r   r   as_applyr@   rG   r   )r8   r   exponentr   r\   r]   s   &&    r   __pow__Expr.__pow__  s    eT""xx2::% ::a=q=$Q<'q=Ka<ww"**, "-$(IIOO$5DA()AFF1I %6(|+HqL#9::^ Y/B66BJJ(899GKK55r   c                    \        V4      p\        V\        4      '       d$   \        \	        \
        P                  W4      4      # \        # rY   )r   rp   r   r   r  r@   rF   r   r   s   &&r   __truediv__Expr.__truediv__  s6    eT"" Xgkk4?@@r   c                `    \        V4      p\        V\        4      '       d	   W,          # \        # rY   r   rp   r   r   r   s   &&r   __rtruediv__Expr.__rtruediv__!  s&    eT""<r   c                    \        V4      p\        V\        4      '       d%   \        \        \        P
                  W34      4      # \        # rY   )r   rp   r   r   r   r   r   r   s   &&r   __floordiv__Expr.__floordiv__'  s8    eT"" T"))d];<<r   c                `    \        V4      p\        V\        4      '       d	   W,          # \        # rY   r  r   s   &&r   __rfloordiv__Expr.__rfloordiv__/  s&    eT""= r   c                    \        V .\        \        V4      O5/ VP                  4        UUu/ uF  w  r4V\        V4      bK  	  uppB # u uppi rY   )r  mapr   r   )r8   r   r   r\   r]   s   &*,  r   __call__Expr.__call__5  sO      Fs7D1 F5;\\^D^TQ1gaj=^DF 	FDs   A
c                    \        V4      p\        V\        4      '       g   V3p\        V4      ^8  d   \	        RV R24       \        \        P                  V 3V,           4      # )r   z/C-index should be a single expression but got ``)r   rp   ru   rv   rh   r   r   r   )r8   indexs   &&r   __getitem__Expr.__getitem__>  sU     %''FEu:>CE7!LMBKK$511r   c           	       a V P                   \        P                  J dv   SP                  V 4      pVf   V # \        P
                  ! RV P                  4      pV'       d4   VP                  4       w  rEVR9   d   \        V4      # VR8X  g	   Q WR34       hV# V P                   \        P                  \        P                  \        P                  39   d   V # V P                   \        P                  \        P                  39   d_   \        V P                   \        ;QJ d%    . V3R lV P                   4       F  NK  	  54      # ! V3R lV P                   4       4      4      # V P                   \        P                   J dl   \#        \        V P                   \        ;QJ d)    . V3R lV P                   4       F  NK  	  54      4      # ! V3R lV P                   4       4      4      4      # V P                   \        P$                  J d~   RpV P                  P'                  4        FA  w  rxVf   VP)                  S4      V,          pK#  WgP)                  S4      V,          ,          pKC  	  Vf   \+        R4       \-        ^ 4      # V# V P                   \        P.                  J d~   RpV P                  P'                  4        FA  w  rVf   V	P)                  S4      V
,          pK#  WiP)                  S4      V
,          ,          pKC  	  Vf   \+        R4       \-        ^4      # V# V P                   \        P0                  J d   V P                  w  rp\3        V\        4      '       d   VP)                  S4      p\        ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      pVP'                  4        UUu/ uF  w  rWP)                  S4      bK  	  ppp\#        \        V P                   WV34      4      # V P                   \        P4                  J d   V P                  ^ ,          p\3        V\        4      '       d   VP)                  S4      p\        ;QJ d(    . V3R	 lV P                  R
,           4       F  NK  	  5M!! V3R	 lV P                  R
,           4       4      p\#        \        V P                   V3V,           4      4      # V P                   \        P6                  J df   \        ;QJ d!    . V3R lV P                   4       F  NK  	  5M! V3R lV P                   4       4      p\#        \        V P                   V4      4      # V P                   \        P8                  \        P:                  39   d9   \#        \        V P                   V P                  P)                  S4      4      4      # V P                   \        P<                  J dU   V P                  w  pppVP)                  S4      pVP)                  S4      p\#        \        V P                   VVV34      4      # \?        RV P                    RV : 24      hu uppi )ztRecursively substitute symbols with values in symbols map.

Symbols map is a dictionary of symbol-expression pairs.
Nz$\A(@__f2py_PARENTHESIS_(\w+)_\d+@)\ZROUNDc              3   F   <"   T F  pVP                  S4      x  K  	  R # 5irY   
substituterq   rr   symbols_maps   & r   rs   "Expr.substitute.<locals>.<genexpr>\  s$      '>3<4 (,{'C'C3<   !c              3   F   <"   T F  pVP                  S4      x  K  	  R # 5irY   r,  r.  s   & r   rs   r0  _  s%      1H=FT 261M1M=Fr1  z?substitute: empty TERMS expression interpreted as int-literal 0zAsubstitute: empty FACTORS expression interpreted as int-literal 1c              3   D   <"   T F  qP                  S4      x  K  	  R # 5irY   r,  rq   r   r/  s   & r   rs   r0  }  s     ADqk22D    c              3   D   <"   T F  qP                  S4      x  K  	  R # 5irY   r,  r4  s   & r   rs   r0    s     JMqk22Mr5  r   c              3   D   <"   T F  qP                  S4      x  K  	  R # 5irY   r,  r4  s   & r   rs   r0    s     J	1\\+66	r5  zsubstitute method for z: ROUNDDIVSQUARE) r~   r   r   rZ   rematchr   groupsas_arrayr   r   r   r   r   r   ru   r   r   r    r   r-  rh   r   r!   r   rp   r   r   r"   r#   r   r}   )r8   r/  r   mr   parenr   r   r   r   r  targetr   r   r\   r]   funcoperandsr   r   r   s   &f                   r   r-  Expr.substituteH  s   
 77biiOOD)E}@$))LA xxz22#E?*'7%7'L77rzz277BII66K77rxx,, '>3799'> ? ? '>3799'> "> ? ?77biiT$''55 1H=AYY1H5 I J J5 1H=AYY1H ,H I J J77bhhA#yy094u<A5==A	  1
 y ' ( |#H77bjj A"&))//"394@A5AAA	 #4
 y * + |#H77bhh#'99 F&&$''**;75ADA55ADAAD&,lln6&4da k22&4  6T$''F&+ABCC77bkk!99Q<D$%%{35JDIIbMJ55JDIIbMJJDT$''D7T>:;;77bjj uJ		JuuJ		JJHT$''845577rvvrxx((T$''499+?+?+LMNN77bmm##yyCu??;/D$$[1ET$''Cu+=>??!$:477)2dX"NOO'6s   :Yc           
     	  aaa S! V .SO5/ SB pVe   V# V P                   \        P                  \        P                  \        P                  \        P
                  39   d   V # V P                   \        P                  \        P                  \        P                  \        P                  39   dp   \        \        V P                   \        ;QJ d+    . VVV3R lV P                   4       F  NK  	  54      4      # ! VVV3R lV P                   4       4      4      4      # V P                   \        P                  \        P                  39   d   / pV P                  P!                  4        Fb  w  rgVP"                  ! S.SO5/ SB p\%        V\        4      '       d   VP"                  ! S.SO5/ SB MTpWe9   d   WV,          V,           pWuV&   Kd  	  \        \        V P                   V4      4      # V P                   \        P&                  J Ed   V P                  ^ ,          p\%        V\        4      '       d   VP"                  ! S.SO5/ SB MTp	\        ;QJ d*    . VVV3R lV P                  ^,           4       F  NK  	  5M#! VVV3R lV P                  ^,           4       4      p
V P                  ^,          P!                  4        UUu/ uF  w  rgWgP"                  ! S.SO5/ SB bK  	  ppp\        \        V P                   WV34      4      # V P                   \        P(                  J d   V P                  ^ ,          p\%        V\        4      '       d   VP"                  ! S.SO5/ SB MTp\        ;QJ d*    . VVV3R lV P                  R,           4       F  NK  	  5M#! VVV3R lV P                  R,           4       4      p\        \        V P                   V3V,           4      4      # V P                   \        P*                  \        P,                  39   d>   \        \        V P                   V P                  P"                  ! S.SO5/ SB 4      4      # V P                   \        P.                  J d]   V P                  w  rpVP"                  ! S.SO5/ SB pVP"                  ! S.SO5/ SB p\        \        V P                   WV34      4      # \1        RV P                    24      hu uppi )a  Traverse expression tree with visit function.

The visit function is applied to an expression with given args
and kwargs.

Traverse call returns an expression returned by visit when not
None, otherwise return a new normalized expression with
traverse-visit sub-expressions.
c              3   P   <"   T F  pVP                   ! S.SO5/ SB x  K  	  R # 5irY   traverse)rq   rr   r   r   visits   & r   rs    Expr.traverse.<locals>.<genexpr>  s+      1'%D e5d5f5%   #&c              3   P   <"   T F  pVP                   ! S.SO5/ SB x  K  	  R # 5irY   rG  )rq   operandr   r   rI  s   & r   rs   rJ    s-      :,8 %--eEdEfE,8rK  c              3   P   <"   T F  pVP                   ! S.SO5/ SB x  K  	  R # 5irY   rG  )rq   r&  r   r   rI  s   & r   rs   rJ    s+      8)6 "NN5B4B6B)6rK  r   ztraverse method for )r~   r   r   r   r   r   r   r   r   r   r   r   ru   r   r    r!   r   rH  rp   r   r   r"   r#   r   r}   )r8   rI  r   r   resultr   r\   r]   objrB  rC  
kwoperandsindicesr   r   r   s   &fjl            r   rH  Expr.traverse  s    t-d-f-M77rzz277BIIryyAAKWWRXXryy"**EET$''55 1' II1'5 ( ) )5 1' II1' ,' ( ) ) WW2::..D		)JJu6t6v6"1d++ ZZ77712 9!AQ * T$''4011WW ))A,C!#t,, LL88825 u :,0IIaL:uu :,0IIaL: :H +/))A,*<*<*>@*>$! ZZ????*>  @T$''DJ+GHIIWW#))A,C d++ <<77714 e 8)-28ee 8)-28 8GT$''C6G+;<==WW**T$''"&))"4"4U"LT"LV"LN O OWW%#yyCu==888DNN5:4:6:ET$''Cu+=>??!$8	"BCC%@s   !S.c                X   a . pV3V3R llpV P                  V4       \        V4      ^ 8g  # )z&Check if self contains other.
        c                 P   < V'       d   V # V S8X  d   VP                  ^4       V # R# )r   N)r   )exprfoundr   s   &&r   rI  Expr.contains.<locals>.visit  s'    Q r   )rH  rv   )r8   r   rW  rI  s   &f  r   containsExpr.contains  s.     # 	 	e5zQr   c                H    \        4       pV3R lpV P                  V4       V# )z3Return a set of symbols contained in self.
        c                 h    V P                   \        P                  J d   VP                  V 4       R # R # rY   )r~   r   r   add)rV  rW  s   &&r   rI  Expr.symbols.<locals>.visit  s"    ww"))#		$ $r   setrH  r8   rW  rI  s   &  r   symbolsExpr.symbols  s&     # 	  	er   c                P   a \        4       pV3V3R lloV P                  S4       V# )zFReturn a set of expressions used as atoms in polynomial self.
        c                   < V P                   \        P                  J d'   V P                   F  pVP	                  S4       K  	  V # V P                   \        P
                  \        P                  39   d   R # V P                   \        P                  J dz   \        V P                  ^ ,          \        4      '       dS   V P                  ^ ,          \        P                  J d,   V P                  ^,          ^ ,          P	                  S4       V # R # V P                   \        P                  \        P                  39   d   V # VP                  V 4       V P                   \        P                  \        P                  39   d   V # R # rY   )r~   r   r!   r   rH  r    r   r   rp   r@   rG   r   r   r]  r   )rV  rW  brI  s   && r   rI  $Expr.polynomial_atoms.<locals>.visit  s    ww"**$AJJu% #ww288RZZ00ww"(("z$))A,'H'H99Q<7;;.IIaLO,,U3Kww2::rww//IIdOww2;;11 2r   r_  ra  s   & @r   polynomial_atomsExpr.polynomial_atoms  s'     # 	( 	er   c                   V P                  V\        ^ 4      /4      pW,
          pVP                  V\        ^4      /4      p\        WA,          V,
          4      w  rVV\        ^ 4      8w  d   \        RV RV RV RV RV  2
4      hWB3# )zqReturn a, b such that a * symbol + b == self.

If self is not linear with respect to symbol, raise RuntimeError.
znot a z-linear equation: r   r   z == )r-  r   as_numer_denomRuntimeError)r8   symbolrf  axr   zeror   s   &&     r   linear_solveExpr.linear_solve  s    
 OOVYq\23XMM69Q<01 b19Q<x 0##$#SA3d4& B C Ctr   )r   r~   N)-r   r	   r
   r   r   staticmethodr   r   rl   r   r   r   r   r   r   r   r   r   rM   rW   r   r9   r   r   r   r   r   r  r	  r  r  r  r  r  r  r"  r'  r-  rH  rY  rb  rh  rp  r   r<   r=   s   @r   r   r      s     
 "** 0 0
@D-
% B76B *4"**Ob8

'R
.F2IPV6Dp : r   c           	     >   \        V \        4      '       g   V # V P                  \        P                  J Ed!   / pV P
                  P                  4        F  w  r#V^ 8X  d   K  VP                  \        P                  J d   V^8w  d   W#,          p^pVP                  \        P                  J d8   VP
                  P                  4        F  w  rE\        WWS,          4       K  	  K  \        WV4       K  	  \        V4      ^ 8X  d   \        ^ 4      # \        V4      ^8X  d   VP                  4       w  w  r#V^8X  d   V# \        \        P                  V4      # V P                  \        P                  J Ed   ^p/ pV P
                  P                  4        EFx  w  rxV^ 8X  d   K  VP                  \        P                  J d6   \        V\        4      '       d    V^8  d   WwV^,
          ,          ,          p^pVP                  \        P                  \        P                  39   dZ   V^8X  d   WgP
                  ^ ,          ,          pK  V^ 8  d#   WgP
                  ^ ,          V,          ,          pK  \        WV4       K  VP                  \        P                  J de   V^ 8  dO   \        V\        4      '       d9   VP
                  P                  4        F  w  r\        WW,          4       K  	  EK]  \        WV4       EKl  \        WV4       EK{  	  \        V4      ^ 8X  g   V^ 8X  d$   \        V\        4      '       g   Q h\        V4      # \        V4      ^8X  d]   VP                  4       w  w  rxV^8X  d   TpM\        \        P                  V4      pV^8X  d   V# \        \        P                  W&/4      # V^8X  d   \        \        P                  V4      # \        \        P                  \        \        P                  V4      V/4      # V P                  \        P                   J Ed4   V P
                  ^ ,          \"        P$                  J Ed   V P
                  ^,          w  r\'        V4      w  rE\'        V4      w  r\        V\        4      '       d2   \        V\        4      '       d   \)        W^4      pW_,          W,          rM	W^,          ^rVP                  \        P                   J d   VP
                  ^ ,          \"        P$                  J de   VP
                  ^,          ^ ,          V,          pVP
                  ^,          ^,          V,          V,          p\+        \"        P$                  VV4      # VP                  \        P                   J d   VP
                  ^ ,          \"        P$                  J de   VP
                  ^,          ^,          V,          V,          pVP
                  ^,          ^ ,          V,          p\+        \"        P$                  VV4      # \-        \/        V4      P
                  4      p\/        V4      P
                  P                  4        F  w  rx\        WV) 4       K  	  / / ppVP                  4        F  w  rxV^ 8  d   VVV&   K  V) VV&   K  	  \1        \        \        P                  V4      4      V,          p\1        \        \        P                  V4      4      V,          pVP                  \        P                  \        P                  39   d   VP
                  ^ ,          ^8X  d   V# \+        \"        P$                  VV4      # V P                  \        P2                  J Ed   V P
                  ^ ,          .pV P
                  R,           EF#  pVR,          pVP                  \        P4                  J d   VP                  \        P4                  J d   VP
                  ^ ,          ^ ,          R9   d   VP
                  ^ ,          ^ ,          VP
                  ^ ,          R,          8X  dt   \7        VP
                  ^ ,          RR VP
                  ^ ,          R,          ,           \9        VP
                  ^,          VP
                  ^,          4      4      pVVR&   EK  VP;                  V4       EK&  	  \        V4      ^8X  d
   V^ ,          # \        \        P2                  \=        V4      4      # V P                  \        P>                  J dw   \A        \0        V P
                  4      w  pppVP                  \        P                  J d   VP
                  ^ ,          '       d   V# T# \        \        P>                  VVV34      # V # )z7Normalize Expr and apply basic evaluation methods.
    r   z"'Nr   )!rp   r   r~   r   r    r   r   r   r_   rv   r   r!   integer_typesr   r   r   r   r@   rF   as_term_coeffr   r  r|   r  r   r   r   	as_stringr   r   ru   r   r!  )rP  r[   tr^   r  r  r   rf  eb1e1dividenddivisorr  r  gr   r   lstr2   lastnew_lastr   r   r   s   &                        r   r   r     s    c4  

vvHHNN$DAAvttrzz!a1fEttrxxffllnFBqbf- - 1# % q6Q;Q<Vq[ggiGFQAvBHHa  
vvHHNN$DAAvttrxxJq-$@$@QUq1u&tt

BGG,,6VVAY&EUVVAY!^+EqQ'#q5Z=99"#&&,,."1"&1 #1 qQ'1#- %. q6Q;%1*e\2222U##Vq[ggiGFQAvQ'z1*--aZ

A&&4

A#6">??
vvchhqkW[[8HHQKx(w'b-((ZM-J-JBAWbgWa55BHHw{{!:GGAJqMB&EGGAJqMB&+EGKK6655BHHw{{!:GGAJqMB&+EGGAJqMB&EGKK66B$$%rN''--/DAqaR  02uGGIDA1ua2a	 
 $rzz512R7$rzz512R788

BGG,,A!1CLUE22
vvxx{m"Ar7DGGryy(		)		!Q50q	!		!R(88$TYYq\#2%62%F%(1qvvay%AC"B

1  s8q=q6MBIIuSz**
vv CHH5eU77bjj  IIaLL53e3BJJue 455Jr   c                f   \        V \        4      '       d!   \        V P                  V P                  4      # \        V \
        4      '       d   \        V 4      # \        V \        4      '       d   \        \        V 4      4      # \        V \        4      '       d   \        \        \        V 4      4      # V # )z.Convert non-Expr objects to Expr objects.
    )rp   complexr   realimagr   r   rx   rv  reprru   r!  r   rP  s   &r   r   r     s     #w#((CHH--#|$$~#s c###uS#&''Jr   c                6    \        \        P                  V 4      # )zJReturn object as SYMBOL expression (variable or unparsed expression).
    )r   r   r   r  s   &r   	as_symbolr    s     		3r   c                r   \        V \        4      '       d   \        \        P                  W34      # \        V \
        4      '       d   \        \        P                  W34      # \        V \        4      '       d2   V P                  \        P                  \        P                  39   d   V # \        RV  R24      h)z/Return object as INTEGER or REAL constant.
    cannot convert z to INTEGER or REAL constant)	rp   rw   r   r   r   ry   r   r~   rI   rP  r   s   &&r   r   r     s     #sBJJ,,#uBGGc[))#t66bjj"''**J
OC5(DE
FFr   c                    \        V \        4      '       d   \        \        P                  W34      # \        V \        4      '       d!   V P
                  \        P                  J d   V # \        RV  R24      h)z'Return object as INTEGER constant.
    r  z to INTEGER constant)rp   rw   r   r   r   r~   rI   r  s   &&r   
as_integerr    s[     #sBJJ,,#t66RZZJ
OC5(<=
>>r   c                   \        V \        4      '       d&   \        \        P                  \        V 4      V34      # \        V \
        4      '       d   \        \        P                  W34      # \        V \        4      '       du   V P                  \        P                  J d   V # V P                  \        P                  J d7   \        \        P                  \        V P                  ^ ,          4      V34      # \        RV  R24      h)z$Return object as REAL constant.
    r  z to REAL constant)
rp   rw   r   r   r   ry   r~   r   r   rI   r  s   &&r   r   r     s     #sBGGeCj$/00#uBGGc[))#t66RWWJVVrzz!%"4d!;<<
OC5(9:
;;r   c                8    \        \        P                  W34      # )zBReturn object as STRING expression (string literal constant).
    )r   r   r   r  s   &&r   rv  rv    s     		C;''r   c                h    \        V \        4      '       d   V 3p \        \        P                  V 4      # )z8Return object as ARRAY expression (array constant).
    )rp   r   r   r   r  s   &r   r>  r>    s)     #td#r   c                ^    \        \        P                  \        V 4      \        V4      34      # )zDReturn object as COMPLEX expression (complex literal constant).
    )r   r   r   r   )r  r  s   &&r   r   r     s"     

WT]GDM:;;r   c                    \        \        P                  T \        \	        \
        V4      4      VP                  4        UUu/ uF  w  r4V\        V4      bK  	  upp34      # u uppi )zIReturn object as APPLY expression (function call, constructor, etc.)
    )r   r   r   ru   r!  r   r   )rB  r   r   r\   r]   s   &*,  r   r  r    sR     uS$/0,2LLN;NDA!WQZ-N;=> >;s   A!c                :    \        \        P                  WV34      # )z<Return object as TERNARY expression (cond?expr1:expr2).
    )r   r   r   )r   r   r   s   &&&r   
as_ternaryr    s     

T%011r   c                6    \        \        P                  V 4      # )z-Return object as referencing expression.
    )r   r   r"   rV  s   &r   as_refr    s     r   c                6    \        \        P                  V 4      # )z/Return object as dereferencing expression.
    )r   r   r#   r  s   &r   as_derefr    s     $r   c                 V    \        \        P                  \        P                  W34      # rY   )r   r   r   r%   r*   r   r   s   &&r   as_eqr  
      $677r   c                 V    \        \        P                  \        P                  W34      # rY   )r   r   r   r%   r+   r  s   &&r   as_ner    r  r   c                 V    \        \        P                  \        P                  W34      # rY   )r   r   r   r%   r,   r  s   &&r   as_ltr    r  r   c                 V    \        \        P                  \        P                  W34      # rY   )r   r   r   r%   r-   r  s   &&r   as_ler    r  r   c                 V    \        \        P                  \        P                  W34      # rY   )r   r   r   r%   r.   r  s   &&r   as_gtr    r  r   c                 V    \        \        P                  \        P                  W34      # rY   )r   r   r   r%   r/   r  s   &&r   as_ger    r  r   c                   \        V \        4      '       Ed   \        V 4      p V P                  \        P
                  J d   V # V P                  \        P                  J dI   \        \        P
                  \        ^V P                  ^,          4      V P                  ^ ,          /4      # V P                  \        P                  J dI   \        \        P
                  \        ^V P                  ^,          4      V P                  ^ ,          /4      # \        \        P
                  V ^/4      # \        R\        V 4       R24      h)z+Return expression as TERMS expression.
    r   to terms Expr)rp   r   r   r~   r   r    r   r  r   r   r   rI   r   r  s   &r   r   r   "  s     #tn66RXXJ66RZZ:a!#=sxx{"KLL66RWW71chhqk#:CHHQK"HIIBHHsAh''
ODI;n=
>>r   c                   \        V \        4      '       Ed   \        V 4      p V P                  \        P
                  J d   V # V P                  \        P                  J d   \        V P                  4      ^8X  ds   V P                  P                  4       w  w  rV^8X  d   \        \        P
                  V^/4      # \        \        P
                  V^\        P                  V4      ^/4      # V P                  \        P                  J d   V P                  ^ ,          \        P                  J dh   V P                  ^,          '       gO   \        \        P
                  V P                  ^,          ^ ,          ^V P                  ^,          ^,          R/4      # \        \        P
                  V ^/4      # \        R\        V 4       R24      h)z-Return expression as FACTORS expression.
    r  r  r   )rp   r   r   r~   r   r!   r    rv   r   r   numberr   r@   rF   rI   r   )rP  r   r   s   &  r   r  r  1  s2    #tn66RZZJ66RXX388}!!$!1A:

T1I66BJJq$++e2Da(HIIFFbhh!+XXa[[

SXXa[^QA$KLLBJJa))
ODI;n=
>>r   c                   \        V \        4      '       Ed   \        V 4      p V P                  \        P
                  J d1   \        ^V P                  ^,          4      V P                  ^ ,          3# V P                  \        P                  J d1   \        ^V P                  ^,          4      V P                  ^ ,          3# V P                  \        P                  J d<   \        V P                  4      ^8X  d"   V P                  P                  4       w  w  rW3# V P                  \        P                  J d   V P                  ^ ,          \        P                  J dZ   \!        V P                  ^,          ^ ,          4      w  r4\#        \        P                  W0P                  ^,          ^,          4      V3# V ^3# \%        R\'        V 4       R24      h)z0Return expression as term-coefficient pair.
    r  z to term and coeff)rp   r   r   r~   r   r   r  r   r   r   r    rv   r   r   r@   rF   ru  r  rI   r   )rP  r   r   rw  r^   s   &    r   ru  ru  F  s9    #tn66RZZa!-sxx{::66RWW1chhqk*CHHQK7766RXX388}!!$!1{"66RXX#((1+"< !Q0DAGKKHHQKN;Q>>Av
ODI;.@A
BBr   c                   \        V \        4      '       Ed@   \        V 4      p V P                  \        P
                  \        P                  \        P                  \        P                  \        P                  \        P                  39   d   V \        ^4      3# V P                  \        P                  J d   V P                  ^ ,          \        P                  J dk   V P                  ^,          '       gR   \!        \"        V P                  ^,          4      w  rV^ ,          V^,          ,          V^,          V^ ,          ,          3# V \        ^4      3# V P                  \        P$                  J Ed.   . . r!V P                  P'                  4        F<  w  r4\#        V4      w  rVWT,          pVP)                  V4       VP)                  V4       K>  	  \        ^ 4      \        ^4      r\+        \-        V4      4       FT  p	W,          p\+        \-        V4      4       F  p
W8w  g   K  WRV
,          ,          pK  	  Wu,          pWV	,          ,          pKV  	  VP                  \        P
                  \        P                  39   d   VP                  ^ ,          ^ 8  d   V) V) rWx3# V P                  \        P.                  J d   \        ^4      \        ^4      rV P                  P'                  4        Fb  w  r\#        V4      w  rV^ 8  d!   W}V,          ,          pWV,          ,          pK9  V^ 8  g   KB  W~V) ,          ,          pWV) ,          ,          pKd  	  Wx3# \1        R\3        V 4       R24      h)z+Return expression as numer-denom pair.
    r  z to numer and denom)rp   r   r   r~   r   r   r   r   r   r   r   r   r   r   r@   rF   r!  rk  r    r   r   r   rv   r!   rI   r   )rP  numersdenomsr   r   nr[   r   r   ijrf  rx  bnumerbdenoms   &              r   rk  rk  [  sy    #tn66bjj"''2::ryykk2::/ /	!$$VVrxxxx{gkk)#((1++!$^SXXa[!Aay6!9,fQi&).CCC	!$$VVrxxF"xx~~/%d+Ia a 	  0
 %Q<153v;'Is6{+AvAY , 
" ( xxBJJ00UZZ]Q5F %vvu<VVrzz!$Q<15(!/!2q5q[(Eq[(EU^+E^+E ) <
ODI;.AB
CCr   c               #   .   "   ^ p  V ^,          p V x  K  5ir   r   )counters    r   _counterr    s     G
1s   c                   a / oV3R lp\         P                  ! RP                  RRRR7      W4      pRV9  g   Q hRV9  g   Q hVS3# )	z_Replace quoted substrings of input string.

Return a new string and a mapping of replacements.
c                    < V P                  4       R ,          w  rV'       d   VRR	 pRRRR/V^ ,          ,          pV RV R\        P                  4        R2pVSV&   V# )
r   N'SINGLE"DOUBLEz@__f2py_QUOTES_r   @r   )r=  COUNTER__next__)r?  r   r   pr\   r[   s   &    r   repleliminate_quotes.<locals>.repl  si    hhjn9D(C*584fOA3a(8(8(:';1=!r   z+({kind}_|)({single_quoted}|{double_quoted})z
\w[\w\d_]*z('([^'\\]|(\\.))*')z("([^"\\]|(\\.))*"))r   single_quoteddouble_quotedr  r  )r;  subformat)r2   r  new_sr[   s   &  @r   eliminate_quotesr    sh    
 	A FFAHH,, I . 		E ee!8Or   c                    VP                  4        FB  w  r#VRVP                  R4       pV'       d
   VR,          pV P                  W$V,           4      p KD  	  V # )z!Inverse of eliminate_quotes.
    Nr  r   )r   findreplace)r2   r[   r\   r]   r   s   &&   r   insert_quotesr    sN     	!&&+CKDIIa"	 
 Hr   c                   RRr!\        V 4      pR F+  w  rEV P                  V4      pVR8X  d   K  Wc8  g   K'  TpYEr!K-  	  Vf   V / 3# TpV P                  W&4      pVR8X  d   \        RW,            RV : 24      hV P                  W^,           V4      V P                  W&^,           V4      8w  d:   V P                  W'^,           4      pVR8X  g   KV  \        RW,            RV : 24      hRRRRR	R
RR/V,          pRV R\        P                  4        R2p	W\        V4      ,           V p
\        W\        V4      ,           R 4      w  rWV	&   V RV V	,           V,           V3# )zrReplace substrings of input that are enclosed in parenthesis.

Return a new string and a mapping of replacements.
N(/zMismatch of z parenthesis in r   r*  r   r:  {CURLYr9  @__f2py_PARENTHESIS_r   r  ))r  /)z()z{}z[]r   )rv   r  
ValueErrorcountr  r  replace_parenthesis)r2   r   r   mn_ileft_right_r  r  r  r\   r]   r   r[   s   &            r   r  r    sm    %q6D  FF5M78D%  |"uA	uABw<~5EaUKLL
''$Aq
!QWWUE1%=
=FF5a% 7|DL>9I!OPP	gsHc7D*EdKA
qc7#3#3#5"6a8A	c$i-AqSZ12DAaDRa519q=!r   c                 n    V P                  R 4      '       g   Q V 4       hV P                  R4      ^,          # )r  r   )
startswithsplit)r2   s   &r   _get_parenthesis_kindr    s/    <<.//22/773<?r   c           	         VP                  4        FQ  w  r#\        V4      pRRRRRRRR/V,          pRR	RR
RRRR/V,          pV P                  W%V,           V,           4      p KS  	  V # )z$Inverse of replace_parenthesis.
    r*  r   r:  r   r  r  r9  r  r   r   }r  )r   r  r  )r2   r[   r\   r]   r  r   r   s   &&     r   unreplace_parenthesisr    st     	!!$hWc:tLQO#xgsJMaPIIaE)*	 
 Hr   c                    \        VR7      P                  V 4      p\        V\        4      '       d   V# \	        RV  RV R24      h)zCreate an expression from a string.

This is a "lazy" parser, that is, only arithmetic operations are
resolved, non-arithmetic operations are treated as symbols.
rk   zfailed to parse `z` to Expr instance: got `r%  )_FromStringWorkerrl   rp   r   r  )r2   r3   r   s   && r   r4   r4     sG     	8,2215A!T
(+DQCqI
JJr   c                   2   a  ] tR tRt o R tR tR tRtV tR# )_Pairi  c                    Wn         W n        R # rY   r  )r8   r   r   s   &&&r   r   _Pair.__init__  s    	
r   c                    V P                   V P                  r2\        V\        4      '       d   VP	                  V4      p\        V\        4      '       d   VP	                  V4      p\        W#4      # rY   )r   r   rp   r   r-  r  )r8   r/  r   r   s   &&  r   r-  _Pair.substitute  sT    iiedD!!??;/DeT""$$[1ET!!r   c                f    \        V 4      P                   R V P                   RV P                   R2# r   )r   r   r   r   r   s   &r   r   _Pair.__repr__  s.    t*%%&a		{"TZZLBBr   r  N)	r   r	   r
   r   r   r-  r   r   r<   r=   s   @r   r  r    s     "C Cr   r  c                   V   a  ] tR tRt o ]P
                  3R ltR tR tRR lt	Rt
V tR# )	r  i  c                .    R V n         R V n        Wn        R # rY   )original
quotes_mapr3   r7   s   &&r   r   _FromStringWorker.__init__  s     r   c                ,    \        WP                  4      # rY   )r  r  )r8   r2   s   &&r   finalize_string!_FromStringWorker.finalize_string  s    Q00r   c                T    Wn         \        V4      w  q n        V P                  V4      # rY   )r  r  r  process)r8   inpunquoteds   && r   rl   _FromStringWorker.parse!  s%    $4S$9!/||H%%r   c           	       a aaa \        V\        \        34      '       d   \        V4      ! VV 3R lV 4       4      # \        V\        4      '       g   Q \        V4      V34       h\        V4      w  poVP                  4       pVV3R loRV9   dy   S! VP                  R4      4      pSR8X  d   \        S P                  V4      4      # SR8X  d)   \        V4      ^8X  d   \        S P                  V4      !  # \        RS RV 24      h\        P                  ! RV4      pV'       dg   SR8X  g   Q S4       hS! VP                  4       4      w  rgpS P                  V4      pS P                  V4      pS P                  V4      p\        WgV4      # S P                   \"        P$                  J d(   \        P                  ! R	V\        P&                  4      pM\        P                  ! R
V4      pV'       d   VP                  4       w  rpS P                   \"        P$                  J d   RV
,           R,           p
S P                  S! W34      4      w  r\(        P+                  V
S P                   R7      p
\-        \.        P0                  WV34      # \        P                  ! RV4      pV'       d6   VP                  4       w  rS! V4      p\3        VS P                  V4      4      # \        P                  ! RV4      p\        V4      ^8  d   S P                  S! V^ ,          ;'       g    R4      4      p\5        VR,          VR,          4       FQ  w  ppS P                  S! V4      4      pVP                  4       pVR8X  d   VV,          pK?  VR8X  g   Q hVV,          pKS  	  V# S P                   \"        P$                  J dQ   RV9   dJ   S! VP                  R4      4      p\-        \.        P6                  \        S P                  V4      4      4      # \        P                  ! RS P                   \"        P8                  J d   TMVP;                  RR4      4      p\        V4      ^8  d   S! V4      pS P                   \"        P8                  Jd"   V Uu. uF  pVP;                  RR4      NK  	  ppS P                  V^ ,          4      p\5        VR,          VR,          4       FK  w  ppS P                  V4      pVP                  4       pVR8X  d   VV,          pK9  VR8X  g   Q hVV,          pKM  	  V# VP=                  R04      '       d[   R\.        P>                  R\.        P@                  /V^ ,          ,          pS P                  S! VR,          4      4      p\-        VV4      # S P                   \"        P8                  Jdu   RV9   dn   \        \C        S! VP                  R4      4      4      4      pS P                  V^ ,          4      pVR,           F  pS P                  V4      pVV,          pK  	  V# \        P                  ! RPE                  RRR7      V4      pV'       d]   VP                  4       w  pppV'       d"   VPG                  4       '       d   \I        V4      p\K        \I        V4      T;'       g    ^4      # \        P                  ! R PE                  R!R"RR#7      V4      pV'       d   VP                  4       w  p ppV'       d"   VPG                  4       '       d   \I        V4      pVPM                  4       pR$V9   d0   \O        \Q        VP;                  R$R%4      4      T;'       g    ^4      # \O        \Q        V4      T;'       g    ^4      # VS PR                  9   d<   VR&VPU                  R'4       p\W        S PR                  V,          T;'       g    ^4      # VS9   d~   \Y        V4      pS P                  S! SV,          4      VR(8X  d   RMR4      pVR(8X  d   \        V\,        4      '       d   V# VR19   d%   \        V\,        4      '       d   V3p\[        V4      # \        P                  ! R*V4      pV'       d   VP                  4       w  pppS P                  S! V4      4      pS P                  S! V4      ^R2 R4      p\        V\        4      '       g   V3pVR(8X  dz   V Uu/ uF2  p\        V\2        4      '       g   K  VP\                  VP^                  bK4  	  pp\        ;QJ d    . R+ V 4       F  NK  	  5M! R+ V 4       4      p\a        V.VO5/ VB # VR)8X  g   Q hVV,          # \        P                  ! R,V4      pV'       d   \c        V4      # S Pe                  S! V4      4      p\g        R-V: R.S Ph                   R/24       \c        V4      # u upi u upi )3a|  Parse string within the given context.

The context may define the result in case of ambiguous
expressions. For instance, consider expressions `f(x, y)` and
`(x, y) + (a, b)` where `f` is a function and pair `(x, y)`
denotes complex number. Specifying context as "args" or
"expr", the subexpression `(x, y)` will be parse to an
argument list or to a complex number, respectively.
c              3   H   <"   T F  pSP                  VS4      x  K  	  R # 5irY   )r  )rq   s_contextr8   s   & r   rs   ,_FromStringWorker.process.<locals>.<genexpr>1  s     Aq4<<G44qs   "c                    < \        V \        \        34      '       d   \        V 4      ! \	        SV 4      4      # \        V S4      # rY   )rp   listru   r   r!  r  )r   raw_symbols_maprestores   &r   r  *_FromStringWorker.process.<locals>.restore9  s6    !dE]++Aws7A//(O<<r   ,r   rV  z&parsing comma-separated list (context=z): z\A([^?]+)[?]([^:]+)[:](.+)\Zz+\A(.+)\s*[.](eq|ne|lt|le|gt|ge)[.]\s*(.+)\Zz7\A(.+)\s*([=][=]|[!][=]|[<][=]|[<]|[>][=]|[>])\s*(.+)\Z.rk   z\A(\w[\w\d_]*)\s*[=](.*)\Zz((?<!\d[edED])[+-])r   :r   Nrc   :rc   Nrc   +r   z//z(?<=[@\w\d_])\s*([*]|/)z**z@__f2py_DOUBLE_STAR@r   r   r   r   z\A({digit_string})({kind}|)\Zz\d+z_(\d+|\w[\w\d_]*))digit_stringr   z7\A({significant}({exponent}|)|\d+{exponent})({kind}|)\Zz[.]\d+|\d+[.]\d*z[edED][+-]?\d+)significantr  r   r[   rx  Nr  r*  r:  z4\A(.+)\s*(@__f2py_PARENTHESIS_(ROUND|SQUARE)_\d+@)\Zc              3   V   "   T F  p\        V\        4      '       d   K  Vx  K!  	  R # 5irY   )rp   r  )rq   r   s   & r   rs   r    s     I1Jq%4HQQs   )
)z\A\w[\w\d_]*\Zzfromstring: treating z as symbol (original=r   )r   r   r8  r   )5rp   r  ru   r   rx   r  stripr  r  rv   r   r}   r;  r<  r=  r  r3   r   r   Ir%   r4   r   r   r   r  zipr   r   r  r  r#   r"   reversedr  isdigitrw   r  r0   r   ry   r  r  rv  r  r>  r   r   r  r  r  rh   r  )r8   r2   r  r   rC  r?  operr   r   r   r   r   keynamer   rO  r~   rM  r   r   r@  r   rA  r   r   r   r   r  s   f&f                      @@r   r  _FromStringWorker.process&  sR    a$''7AqAAA!S!!/DGQ</! 13?GGI	= !8qwws|,H& T\\(344& x=A%%t||H'=>>%8	QCHJ J HH4a8f$-g-$!(!4D<<%DLL'ELL'Ed511 ==H,,,>244IA JAOA xxzDu}} 0 00Ci#o,,w}'=>KD""3"?C5'9:: HH2A6XXZNGENE$,,u"566 882A6x=1\\'(1+*<*<"=>F"8D>8D>BG,,ww'78XXZ9g%F9$9g%F  C M ==H,,,qwwt}-H		dll8457 7 886"&--8::"=Q"#))D2H"IL x=1x(H}}HJJ.+35+3 $OO,BDI+3  5 \\(1+.F"8D>8D>BG,,w/XXZ9g%F9$9g%F  C M <<
##rxxbff-ad3Bll71R5>2GG$$ ==

*tqyHWQWWT]%;<=H\\(1+.F#B<<,,w/ F* ( M HH5<<% = '()+ XXZNE1d4yc%j$))!44 HHOf%8"32  4 67	8
  !
E1a4yKKMEe|uU]]3%<=tyyqII5<33 \affSk?DT__Q/;; )!,ELL);!<+0G+;IEeT** L..eT**"HE& HHL"#((*FD%\\'&/2F<<a 3V<DdE**u37 74a!+Au!5 *!&&!''/4 7uIIuuIII8888 (((d|# HH&*Q<   ,#A5(=dmm_AN	P|Q5h7s   g)gg)r3   r  r  Nr  )r   r	   r
   r   r   r   r   r  rl   r  r   r<   r=   s   @r   r  r    s'      (

 !
1&
H Hr   r  )   )r   r  ):r   __all__r;  re   enumr   mathr   r   r   r%   r@   	ExceptionrI   rM   rw   rt  ry   r   r_   UserWarningra   rh   r   r   r   r  r   r  r   rv  r>  r   r  r  r  r  r  r  r  r  r  r  r   r  ru  rk  r  r  r  r  r  r  r  r   r4   r  r  r   r   r   <module>r     sf  4 ( 
   
t 
 *5D 5<
d 
	i 	 & U|
	+ 	6v	 v	rFR  
G?<(<>2 888888??*C**DZ *:*Z
 $:: 	KC C&W Wr   