o
    Ô­jÐ  ã                   @   sô  d Z dgZddlZddlZddlmZ ddlmZ G dd„ deƒZG dd	„ d	eƒZ	G d
d„ deƒZ
G dd„ deƒZG dd„ deƒZG dd„ deƒZefZeefZdd„ ZG dd„ deƒZdd„ ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd[d d!„Zd[d"d#„Zd[d$d%„Zd\d'd(„Zd)d*„ Zd]d+d,„Z d-d.„ Z!d/d0„ Z"d1d2„ Z#d3d4„ Z$d5d6„ Z%d7d8„ Z&d9d:„ Z'd;d<„ Z(d=d>„ Z)d?d@„ Z*dAdB„ Z+dCdD„ Z,dEdF„ Z-dGdH„ Z.dIdJ„ Z/e/ƒ Z0dKdL„ Z1dMdN„ Z2dOdP„ Z3dQdR„ Z4dSdT„ Z5ej6fdUdV„Z7G dWdX„ dXƒZ8G dYdZ„ dZƒZ9dS )^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.
ÚExpré    N)ÚEnum)Úgcdc                   @   s   e Zd ZdZdZdZdZdS )ÚLanguagez2
    Used as Expr.tostring language argument.
    r   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚPythonÚFortranÚC© r   r   úP/var/www/html/CropPilot/venv/lib/python3.10/site-packages/numpy/f2py/symbolic.pyr   $   s
    r   c                   @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdS )ÚOpz$
    Used as Expr op attribute.
    é
   é   é   é   é   é(   éd   éÈ   éÒ   éÜ   i,  iè  iÐ  i¸  i¹  N)r   r	   r
   r   ÚINTEGERÚREALÚCOMPLEXÚSTRINGÚARRAYÚSYMBOLÚTERNARYÚAPPLYÚINDEXINGÚCONCATÚ
RELATIONALÚTERMSÚFACTORSÚREFÚDEREFr   r   r   r   r   -   s"    r   c                   @   sH   e Zd ZdZdZdZdZdZdZdZ	e
ejfdd	„ƒZejfd
d„ZdS )ÚRelOpzH
    Used in Op.RELATIONAL expression to specify the function part.
    r   r   é   é   é   é   c                 C   sR   |t ju rtjtjtjtjtjtjdœ| 	¡  S tjtjtjtjtjtjdœ| S )N)ú.eq.ú.ne.ú.lt.ú.le.ú.gt.ú.ge.)ú==ú!=ú<ú<=ú>ú>=)
r   r   r+   ÚEQÚNEÚLTÚLEÚGTÚGEÚlower)ÚclsÚsÚlanguager   r   r   Ú
fromstringM   s   
þþÿÿzRelOp.fromstringc                 C   sb   |t ju rtjdtjdtjdtjdtjdtjdi|  S tjdtjdtjd	tjd
tjdtjdi|  S )Nr0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   )	r   r   r+   r<   r=   r>   r?   r@   rA   ©ÚselfrE   r   r   r   ÚtostringV   s   
þþþþzRelOp.tostringN)r   r	   r
   r   r<   r=   r>   r?   r@   rA   Úclassmethodr   r   rF   rI   r   r   r   r   r+   B   s    r+   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
ÚArithOpzC
    Used in Op.APPLY expression to specify the function part.
    r   r   r,   r-   r.   r/   é   N)r   r	   r
   r   ÚPOSÚNEGÚADDÚSUBÚMULÚDIVÚPOWr   r   r   r   rK   `   s    rK   c                   @   ó   e Zd ZdS )ÚOpErrorN©r   r	   r
   r   r   r   r   rU   m   ó    rU   c                   @   sD   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdS )Ú
Precedencez4
    Used as Expr.tostring precedence argument.
    r   r   r   r,   r-   r/   rL   é   r   é   é   r   r   N)r   r	   r
   r   ÚATOMÚPOWERÚUNARYÚPRODUCTÚSUMr>   r<   ÚLANDÚLORr"   ÚASSIGNÚTUPLEÚNONEr   r   r   r   rX   q   s    rX   c                 C   s@   |   |¡}|d u r|| |< d S || }|r|| |< d S | |= d S ©N)Úget)ÚdÚkÚvÚcr   r   r   Ú
_pairs_addˆ   s   

rl   c                   @   rT   )ÚExprWarningNrV   r   r   r   r   rm   •   rW   rm   c                 C   s   t j| tdd� d S )Nr   )Ú
stacklevel)ÚwarningsÚwarnrm   )Úmessager   r   r   Úewarn™   ó   rr   c                   @   s$  e Zd ZdZeejfdd„ƒZdd„ Zdd„ Z	dd	„ Z
d
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejejfdd„Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z d0d1„ Z!d2d3„ Z"d4d5„ Z#d6d7„ Z$d8d9„ Z%d:d;„ Z&d<d=„ Z'd>d?„ Z(d@dA„ Z)dBS )Cr   zfRepresents a Fortran expression as a op-data pair.

    Expr instances are hashable and sortable.
    c                 C   s   t | |d�S )z.Parse a Fortran expression to a Expr.
        ©rE   )rF   )rD   rE   r   r   r   Úparse£   s   z
Expr.parsec                 C   s
  t |tƒsJ ‚|tju r1t |tƒrt|ƒdksJ ‚t |d tƒs"J ‚t |d ttfƒs/J |ƒ‚�nL|tju r[t |tƒrAt|ƒdksCJ ‚t |d tƒsLJ ‚t |d ttfƒsYJ |ƒ‚�n"|tj	u rot |tƒrkt|ƒdksmJ ‚�n|tj
u r©t |tƒrt|ƒdks�J ‚t |d tƒr™|d d d t|d ƒd … dv s›J ‚t |d ttfƒs¨J |ƒ‚nÔ|tju r·t|ƒd us¶J ‚nÆ|tjtjfv rÔt |tƒsÆJ ‚tdd„ |D ƒƒsÓJ |ƒ‚n©|tjtjfv rät |tƒsãJ ‚n™|tju �rt |tƒrõt|ƒdks÷J ‚t|d ƒd u�sJ ‚t |d tƒ�sJ ‚t |d tƒ�sJ ‚nf|tju �r8t |tƒ�r*t|ƒdk�s,J ‚t|d ƒd u�s7J ‚nE|tju �rNt |tƒ�rKt|ƒdk�sMJ ‚n/|tjtjfv �r`t |tƒ�s_J ‚n|tju �rvt |tƒ�rst|ƒdk�suJ ‚ntd|› �ƒ‚|| _|| _d S )	Nr   r   r   )z""z''z@@c                 s   s   � | ]}t |tƒV  qd S rf   )Ú
isinstancer   ©Ú.0Úitemr   r   r   Ú	<genexpr>É   ó   € z Expr.__init__.<locals>.<genexpr>r,   z$unknown op or missing sanity check: )rv   r   r   ÚtupleÚlenÚintÚstrr   Úfloatr   r   r!   Úhashr    r%   Úallr'   r(   Údictr#   r$   r"   r)   r*   r   r&   ÚNotImplementedErrorÚopÚdata)rH   r…   r†   r   r   r   Ú__init__©   sT   



&
  ÿ
zExpr.__init__c                 C   s"   t |tƒo| j|ju o| j|jkS rf   )rv   r   r…   r†   ©rH   Úotherr   r   r   Ú__eq__ë   s
   

ÿ
þzExpr.__eq__c                 C   sl   | j tjtjfv rtt| j ¡ ƒƒ}n| j tju r,| jd d… tt| jd  ¡ ƒƒ }n| j}t	| j |fƒS ©Nr   )
r…   r   r'   r(   r|   Úsortedr†   Úitemsr#   r�   )rH   r†   r   r   r   Ú__hash__ð   s   &zExpr.__hash__c                 C   sÜ   t |tƒrl| j|jur| jj|jjk S | jtjtjfv r.tt| j	 
¡ ƒƒtt|j	 
¡ ƒƒk S | jtju rf| j	d d… |j	d d… krP| j	d d… |j	d d… k S tt| j	d  
¡ ƒƒtt|j	d  
¡ ƒƒk S | j	|j	k S tS r‹   )rv   r   r…   Úvaluer   r'   r(   r|   rŒ   r†   r�   r#   ÚNotImplementedrˆ   r   r   r   Ú__lt__ù   s   
ÿÿzExpr.__lt__c                 C   s   | |kp| |k S rf   r   rˆ   r   r   r   Ú__le__  s    zExpr.__le__c                 C   s
   | |k S rf   r   rˆ   r   r   r   Ú__gt__
  ó   
 zExpr.__gt__c                 C   s
   | |k  S rf   r   rˆ   r   r   r   Ú__ge__  r”   zExpr.__ge__c                 C   s    t | ƒj› d| j› d| j›d�S ©Nú(ú, ú))Útyper   r…   r†   ©rH   r   r   r   Ú__repr__  ó    zExpr.__repr__c                 C   s   |   ¡ S rf   )rI   r›   r   r   r   Ú__str__  ó   zExpr.__str__c                    sb  | j tjtjfv r0| jd dk rtjntj}t| jd ƒ| jd dkr+d| jd › �nd }�nò| j tj	u rNd 
‡ fdd„| jD ƒ¡}d	| d
 }tj}�nÔ| j tju r^tj}t| jƒ}�nÄ| j tju r~| jd }| jd dkry| jd d | }tj}�n¤| j tju rœd 
‡ fdd„| jD ƒ¡}d| d }tj}�n†| j tju �r
g }t| j ¡ ƒD ]K\}}|dk rºd}| }nd}|dkrÉ|jtjˆ d�}n|tdƒkrÔt|ƒ}n|› d�|jtjˆ d� }|ré| |¡ n	|dkrò| d¡ | |¡ q¬d 
|¡pþd}|�rtjntj}�n| j tju �rÀg }	g }
t| j ¡ ƒD ]z\}}d}|dk�r0|jtjˆ d�}nXˆ tju �r{|tddƒv �rO|jtjˆ d�}d 
|g| ¡}n9|tddƒv �ri|jtjˆ d�}|
|g|  7 }
�q|jtjˆ d�}d|› d|› d
�}n|jtjˆ d�d|› � }|	�r�|	 |¡ |	 |¡ �q|
�r­|	�s¢|	dg7 }	|	dd	d 
|
¡d
g7 }	d 
|	¡�p´d}|	�r»tjntj}�nb| j tju �r| j\}}}|tju �rðˆ tju �rð‡ fdd„|D ƒ\}}|› d|› �}tj}�n2‡ fdd„|D ƒ}|dd„ | ¡ D ƒ7 }|› d	d 
|¡› d
�}tj}�n| j tju �r=| jd }‡ fd d„| jdd!… D ƒ}|› dd 
|¡› d�}tj}nå| j tju �rW‡ fd"d„| jD ƒ}d# 
|¡}tj}nË| j tj u �r³‡ fd$d„| jD ƒ\}}}ˆ tju �r~d	|› d%|› d&|› d
�}n1ˆ tj!u �r‘d	|› d'|› d(|› d
�}nˆ tj"u �r¤d)|› d|› d|› d
�}nt#d*| j › d+ˆ › �ƒ‚tj}no| j tj$u �rÉd,| jjtj%ˆ d� }tj%}nY| j tj&u �rßd-| jjtj%ˆ d� }tj%}nC| j tj'u �r| j\}}}|t(j)t(j*fv �røtj)ntj+}|j|ˆ d�}|j|ˆ d�}|jˆ d�}|› d.|› d.|› �}nt#d/| j › �ƒ‚|j,|j,k �r/d	| d
 S |S )0z0Return a string representation of Expr.
        r   r   r-   Ú_Ú r˜   c                 3   ó    � | ]}|j tjˆ d �V  qdS ©rt   N©rI   rX   rd   rw   rt   r   r   rz     ó   € ÿz Expr.tostring.<locals>.<genexpr>r—   r™   c                 3   r¢   r£   r¤   rw   rt   r   r   rz   +  r¥   ú[ú]z - ú + rt   ú * ú-Ú0r   r   iöÿÿÿzpow(z ** Ú1ú/c                    ó   g | ]
}|j tjˆ d �‘qS ©rt   ©rI   rX   r_   ©rx   Úargrt   r   r   Ú
<listcomp>k  ó
    þ
ÿz!Expr.tostring.<locals>.<listcomp>z / c                    r®   r¯   r¤   r±   rt   r   r   r³   q  ó    ÿc                 S   s$   g | ]\}}|d  |  tj¡ ‘qS )ú=)rI   rX   re   ©rx   ri   rj   r   r   r   r³   s  s    ÿc                    r®   r¯   r¤   r±   rt   r   r   r³   y  rµ   Nc                    r®   r¯   r°   r±   rt   r   r   r³   ~  rµ   z // c                    r®   r¯   r¤   ©rx   Úart   r   r   r³   ƒ  r´   ú?ú:z if z else zmerge(ztostring for z and ú&Ú*ú ztostring for op )-r…   r   r   r   r†   rX   r`   r\   r   r   Újoinr!   r   r    r'   rŒ   r�   rI   Ú	as_numberr_   Úappendr(   r   r   Úrangerd   r]   r#   rK   rR   r$   r%   r"   r   r   r„   r)   r^   r*   r&   r+   r<   r=   r>   r�   )rH   Úparent_precedencerE   Ú
precedenceÚrÚtermsÚtermÚcoeffr…   ÚfactorsÚtailÚbaseÚexpÚfactorÚnameÚargsÚkwargsÚnumerÚdenomÚcondÚexpr1Úexpr2ÚropÚleftÚrightr   rt   r   rI     s.  ÿÿÿÿ


ÿ

ÿ

ÿÿÿÿÿÿ



þ

ÿÿ


ÿ
ÿ

þÿÿzExpr.tostringc                 C   s   | S rf   r   r›   r   r   r   Ú__pos__¦  s   zExpr.__pos__c                 C   s   | d S )Néÿÿÿÿr   r›   r   r   r   Ú__neg__©  rŸ   zExpr.__neg__c           	      C   sš  t |ƒ}t|tƒrË| j|ju rk| jtjtjfv r.t| jd |jd  t	| jd |jd ƒƒS | jtj
u rG| j\}}|j\}}t|| || ƒS | jtju rkt| jt| jƒƒ}|j ¡ D ]\}}t|j||ƒ q[t|ƒS | jtj
u r€|jtjtjfv r€| t|ƒ S | jtjtjfv r•|jtj
u r•t| ƒ| S | jtju r¬|jtju r¬| t|| jd d� S | jtju rÃ|jtju rÃt| |jd d�| S t| ƒt|ƒ S tS ©Nr   r   )Úkind)Úas_exprrv   r   r…   r   r   r   rÀ   r†   Úmaxr   Ú
as_complexr'   rƒ   r�   rl   Ú	normalizeÚas_realÚas_termsr�   )	rH   r‰   Úr1Úi1Úr2Úi2rÅ   ri   rj   r   r   r   Ú__add__¬  s6   
þ

zExpr.__add__c                 C   s   t |tƒrt|ƒ|  S tS rf   ©rv   Únumber_typesrÀ   r�   rˆ   r   r   r   Ú__radd__È  ó   
zExpr.__radd__c                 C   s
   | |  S rf   r   rˆ   r   r   r   Ú__sub__Í  s   
zExpr.__sub__c                 C   s   t |tƒrt|ƒ|  S tS rf   ré   rˆ   r   r   r   Ú__rsub__Ð  rì   zExpr.__rsub__c                 C   s>  t |ƒ}t|tƒ�r| j|ju r£| jtjtjfv r/t| jd |jd  t	| jd |jd ƒƒS | jtj
u rP| j\}}|j\}}t|| ||  || ||  ƒS | jtju rtt| jt| jƒƒ}|j ¡ D ]\}}t|j||ƒ qdt|ƒS | jtju r£t| ji ƒ}| j ¡ D ]\}	}
|j ¡ D ]\}}t|j|	| |
| ƒ qŽq…t|ƒS | jtj
u r¸|jtjtjfv r¸| t|ƒ S |jtj
u rÍ| jtjtjfv rÍt| ƒ| S | jtju rä|jtju rä| t|| jd d� S | jtju rû|jtju rût| |jd d�| S | jtju �r| t|ƒ S |jtju �rt| ƒ| S t| ƒt|ƒ S tS rÜ   )rÞ   rv   r   r…   r   r   r   rÀ   r†   rß   r   rà   r(   rƒ   r�   rl   rá   r'   râ   rã   Ú
as_factorsr�   )rH   r‰   rä   rå   ræ   rç   rÅ   ri   rj   Út1Úc1Út2Úc2r   r   r   Ú__mul__Õ  sJ   ÿ

"ÿzExpr.__mul__c                 C   s   t |tƒrt|ƒ|  S tS rf   ré   rˆ   r   r   r   Ú__rmul__þ  rì   zExpr.__rmul__c                 C   sÖ   t |ƒ}t|tƒri|jtju rb|jd }|dkrtdƒS |dkr"| S |dkrO| jtju rGt| ji ƒ}| j 	¡ D ]\}}|| |j|< q7t
|ƒS | | |d   S |dkrZ| |  d S ttj| |iƒS ttj| |ƒS tS )Nr   r   rÚ   )rÞ   rv   r   r…   r   r   r†   rÀ   r(   r�   rá   Úas_applyrK   rS   r�   )rH   r‰   ÚexponentrÅ   ri   rj   r   r   r   Ú__pow__  s(   

zExpr.__pow__c                 C   s(   t |ƒ}t|tƒrtttj| |ƒƒS tS rf   )rÞ   rv   r   rá   rö   rK   rR   r�   rˆ   r   r   r   Ú__truediv__  s   
zExpr.__truediv__c                 C   s   t |ƒ}t|tƒr||  S tS rf   ©rÞ   rv   r   r�   rˆ   r   r   r   Ú__rtruediv__"  ó   
zExpr.__rtruediv__c                 C   s*   t |ƒ}t|tƒrtttj| |fƒƒS tS rf   )rÞ   rv   r   rá   r   r%   r�   rˆ   r   r   r   Ú__floordiv__(  s   
zExpr.__floordiv__c                 C   s   t |ƒ}t|tƒr||  S tS rf   rú   rˆ   r   r   r   Ú__rfloordiv__0  rü   zExpr.__rfloordiv__c                 O   s.   t | gtt|ƒ¢R i tdd„ | ¡ D ƒƒ¤ŽS )Nc                 s   ó    � | ]\}}|t |ƒfV  qd S rf   ©rÞ   r·   r   r   r   rz   =  ó   € z Expr.__call__.<locals>.<genexpr>)rö   ÚmaprÞ   rƒ   r�   )rH   rÏ   rÐ   r   r   r   Ú__call__6  s   ÿzExpr.__call__c                 C   sF   t |ƒ}t|tƒs|f}t|ƒdkrtd|› d�ƒ ttj| f| ƒS )Nr   z/C-index should be a single expression but got `ú`)rÞ   rv   r|   r}   rr   r   r   r$   )rH   Úindexr   r   r   Ú__getitem__?  s   
zExpr.__getitem__c                    sL  | j tju r4ˆ  | ¡}|du r| S t d| j¡}|r2| ¡ \}}|dv r(t|ƒS |dks2J ||fƒ‚|S | j tj	tj
tjfv rA| S | j tjtjfv rZt| j t‡ fdd„| jD ƒƒƒS | j tju rrtt| j t‡ fdd„| jD ƒƒƒƒS | j tju r§d}| j ¡ D ]\}}|du r�| ˆ ¡| }q|| ˆ ¡| 7 }q|du r¥tdƒ td	ƒS |S | j tju rÜd}| j ¡ D ]\}	}
|du rÄ|	 ˆ ¡|
 }q´||	 ˆ ¡|
 9 }q´|du rÚtd
ƒ tdƒS |S | j tju �r| j\}}}t|tƒró| ˆ ¡}t‡ fdd„|D ƒƒ}t‡ fdd„| ¡ D ƒƒ}tt| j |||fƒƒS | j tju �rH| jd	 }t|tƒ�r-| ˆ ¡}t‡ fdd„| jdd… D ƒƒ}tt| j |f| ƒƒS | j tju �rct‡ fdd„| jD ƒƒ}tt| j |ƒƒS | j tjtjfv �rytt| j | j ˆ ¡ƒƒS | j tju �r›| j\}}}| ˆ ¡}| ˆ ¡}tt| j |||fƒƒS t d| j › d| ›�ƒ‚)z„Recursively substitute symbols with values in symbols map.

        Symbols map is a dictionary of symbol-expression pairs.
        Nz$\A(@__f2py_PARENTHESIS_(\w+)_\d+@)\Z©ÚROUNDDIVÚSQUAREÚROUNDc                 3   ó   � | ]}|  ˆ ¡V  qd S rf   ©Ú
substituterw   ©Úsymbols_mapr   r   rz   ]  ó   € ÿz"Expr.substitute.<locals>.<genexpr>c                 3   r  rf   r  rw   r  r   r   rz   `  r  z?substitute: empty TERMS expression interpreted as int-literal 0r   zAsubstitute: empty FACTORS expression interpreted as int-literal 1r   c                 3   r  rf   r  r¸   r  r   r   rz   ~  r{   c                 3   s"   � | ]\}}||  ˆ ¡fV  qd S rf   r  r·   r  r   r   rz     s   € ÿc                 3   r  rf   r  r¸   r  r   r   rz   †  r{   c                 3   r  rf   r  r¸   r  r   r   rz   ‰  r{   zsubstitute method for z: )!r…   r   r!   rg   ÚreÚmatchr†   ÚgroupsÚas_arrayr   r   r   r    r   r   r|   r%   rá   r'   r�   r  rr   rÀ   r(   r#   rv   rƒ   r$   r"   r)   r*   r&   r„   )rH   r  r�   Úmr�   ÚparenrÅ   rÇ   rÈ   rË   r÷   ÚtargetrÏ   rÐ   ÚfuncÚoperandsrÖ   r×   rØ   r   r  r   r  I  s†   

ÿÿ

ÿ

 

zExpr.substitutec                    sÎ  ˆ| gˆ ¢R i ˆ¤Ž}|dur|S | j tjtjtjtjfv r | S | j tjtjtjtj	fv rAt
t| j t‡ ‡‡fdd„| jD ƒƒƒƒS | j tjtjfv r‹i }| j ¡ D ]1\}}|jˆgˆ ¢R i ˆ¤Ž}t|tƒrr|jˆgˆ ¢R i ˆ¤Žn|}||v r~|| | }|||< qQt
t| j |ƒƒS | j tju rÖ| jd }t|tƒr§|jˆgˆ ¢R i ˆ¤Žn|}	t‡ ‡‡fdd„| jd D ƒƒ}
t‡ ‡‡fdd„| jd  ¡ D ƒƒ}t
t| j |	|
|fƒƒS | j tju �r| jd }t|tƒró|jˆgˆ ¢R i ˆ¤Žn|}t‡ ‡‡fd	d„| jdd… D ƒƒ}t
t| j |f| ƒƒS | j tjtjfv �r/t
t| j | jjˆgˆ ¢R i ˆ¤ŽƒƒS | j tju �r_| j\}}}|jˆgˆ ¢R i ˆ¤Ž}|jˆgˆ ¢R i ˆ¤Ž}t
t| j |||fƒƒS td
| j › �ƒ‚)aB  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.
        Nc                 3   ó(   � | ]}|j ˆgˆ ¢R i ˆ¤ŽV  qd S rf   ©Útraverserw   ©rÏ   rÐ   Úvisitr   r   rz   ¥  s
   € ÿ
ÿz Expr.traverse.<locals>.<genexpr>r   c                 3   r  rf   r  ©rx   Úoperandr  r   r   rz   ¶  ó   €  ÿr   c                 3   s0   � | ]\}}||j ˆgˆ ¢R i ˆ¤ŽfV  qd S rf   r  r·   r  r   r   rz   ¸  s   € $ÿr   c                 3   r  rf   r  )rx   r  r  r   r   rz   ¿  r!  ztraverse method for )r…   r   r   r   r   r!   r   r    r%   r"   rá   r   r|   r†   r'   r(   r�   r  rv   r#   rƒ   r$   r)   r*   r&   r„   )rH   r  rÏ   rÐ   Úresultr†   ri   rj   Úobjr  r  Ú
kwoperandsÚindicesrÖ   r×   rØ   r   r  r   r  ”  sl   
þÿÿ

ÿÿÿÿ
ÿÿÿÿzExpr.traversec                    s*   g }|f‡ fdd„	}|   |¡ t|ƒdkS )z&Check if self contains other.
        c                    s"   |r| S | ˆ kr|  d¡ | S d S )Nr   )rÁ   ©ÚexprÚfound©r‰   r   r   r  Ñ  s   
þzExpr.contains.<locals>.visitr   )r  r}   )rH   r‰   r(  r  r   r)  r   ÚcontainsÌ  s   
zExpr.containsc                 C   s    t ƒ }|fdd„}|  |¡ |S )z3Return a set of symbols contained in self.
        c                 S   s   | j tju r| | ¡ d S d S rf   )r…   r   r!   Úaddr&  r   r   r   r  á  s   ÿzExpr.symbols.<locals>.visit©Úsetr  )rH   r(  r  r   r   r   ÚsymbolsÜ  s   
zExpr.symbolsc                    s$   t ƒ }|f‡ fdd„	‰ |  ˆ ¡ |S )zFReturn a set of expressions used as atoms in polynomial self.
        c                    s¾   | j tju r| jD ]}| ˆ ¡ q	| S | j tjtjfv rd S | j tju rBt| jd t	ƒrB| jd t	j
u r@| jd d  ˆ ¡ | S d S | j tjtjfv rM| S | | ¡ | j tjtjfv r]| S d S )Nr   r   )r…   r   r(   r†   r  r'   r   r#   rv   rK   rS   r   r   r+  r$   )r'  r(  Úb©r  r   r   r  î  s"   

ÿz$Expr.polynomial_atoms.<locals>.visitr,  )rH   r(  r   r0  r   Úpolynomial_atomsé  s   
zExpr.polynomial_atomsc                 C   sz   |   |tdƒi¡}| | }|  |tdƒi¡}t|| | ƒ\}}|tdƒkr9td|› d|› d|› d|› d| › �
ƒ‚||fS )z�Return a, b such that a * symbol + b == self.

        If self is not linear with respect to symbol, raise RuntimeError.
        r   r   znot a z-linear equation: r©   r¨   z == )r  rÀ   Úas_numer_denomÚRuntimeError)rH   Úsymbolr/  Úaxr¹   Úzeror    r   r   r   Úlinear_solve  s   
ÿÿÿÿzExpr.linear_solveN)*r   r	   r
   r   Ústaticmethodr   r   ru   r‡   rŠ   rŽ   r‘   r’   r“   r•   rœ   rž   rX   re   r   rI   rÙ   rÛ   rè   rë   rí   rî   rô   rõ   rø   rù   rû   rý   rþ   r  r  r  r  r*  r.  r1  r7  r   r   r   r   r   �   sL    B	
ÿ )	
K8c                 C   s
  t | tƒs| S | jtju rpi }| j ¡ D ]8\}}|dkrq|jtju r-|dkr-|| }d}|jtju rF|j ¡ D ]\}}t|||| ƒ q8qt|||ƒ qt	|ƒdkrWt
dƒS t	|ƒdkrj| ¡ \\}}|dkrj|S ttj|ƒS | jtju �rVd}i }| j ¡ D ]{\}}|dkr‰q€|jtju r¢t |tƒr¢|dkr¢|||d   }d}|jtjtjfv rÌ|dkr·||jd 9 }q€|dkrÅ||jd | 9 }q€t|||ƒ q€|jtju rõ|dkrît |tƒrî|j ¡ D ]\}	}
t||	|
| ƒ qàq€t|||ƒ q€t|||ƒ q€t	|ƒdk�s|dk�rt |tƒ�sJ ‚t
|ƒS t	|ƒdk�r?| ¡ \\}}|dk�r*|}nttj|ƒ}|dk�r7|S ttj||iƒS |dk�rJttj|ƒS ttjttj|ƒ|iƒS | jtju �rZ| jd tju �rZ| jd \}}t|ƒ\}}t|ƒ\}}t |tƒ�r”t |tƒ�r”t||ƒ}|| || }}n|| d}}|jtju �rÆ|jd tju �rÆ|jd d | }|jd d | | }ttj||ƒS |jtju �rñ|jd tju �rñ|jd d | | }|jd d | }ttj||ƒS tt|ƒjƒ}t|ƒj ¡ D ]\}}t||| ƒ �qÿi i }}| ¡ D ]\}}|dk�r$|||< �q| ||< �qtttj|ƒƒ| }tttj|ƒƒ| }|jtjtjfv �rS|jd dk�rS|S ttj||ƒS | jtju �rÙ| jd g}| jdd… D ]W}|d }|jtju �r¿|jtju �r¿|jd d dv �r¿|jd d |jd d k�r¿t|jd dd… |jd dd…  t|jd |jd ƒƒ}||d< �qn| |¡ �qnt	|ƒdk�rÑ|d S ttjt|ƒƒS | jtju �rt t| jƒ\}}}|jtju �rú|jd �rø|S |S ttj|||fƒS | S )z7Normalize Expr and apply basic evaluation methods.
    r   r   NrÚ   z"')!rv   r   r…   r   r'   r†   r�   r   rl   r}   rÀ   r(   Úinteger_typesr   r   rê   r#   rK   rR   Úas_term_coeffr   rö   rƒ   rï   rá   r%   r   Ú	as_stringrß   rÁ   r|   r"   r  )r#  rh   Útrk   rð   rñ   rÈ   r/  ÚeÚb1Úe1ÚdividendÚdivisorrò   ró   ÚgrÑ   rÒ   ÚlstrD   ÚlastÚnew_lastrÓ   rÔ   rÕ   r   r   r   rá     sÚ   
ÿÿ


 
  

$$ÿrá   c                 C   s\   t | tƒrt| j| jƒS t | tƒrt| ƒS t | tƒr tt	| ƒƒS t | t
ƒr,t
tt| ƒƒS | S )z.Convert non-Expr objects to Expr objects.
    )rv   Úcomplexrà   ÚrealÚimagrê   rÀ   r   r;  Úreprr|   r  rÞ   ©r#  r   r   r   rÞ      s   



rÞ   c                 C   ó   t tj| ƒS )zJReturn object as SYMBOL expression (variable or unparsed expression).
    )r   r   r!   rJ  r   r   r   Ú	as_symbol°  ó   rL  r-   c                 C   sd   t | tƒrttj| |fƒS t | tƒrttj| |fƒS t | tƒr*| jtjtjfv r*| S td| › d�ƒ‚)z/Return object as INTEGER or REAL constant.
    úcannot convert z to INTEGER or REAL constant)	rv   r~   r   r   r   r€   r   r…   rU   ©r#  rÝ   r   r   r   rÀ   ¶  s   


rÀ   c                 C   sD   t | tƒrttj| |fƒS t | tƒr| jtju r| S td| › d�ƒ‚)z'Return object as INTEGER constant.
    rN  z to INTEGER constant)rv   r~   r   r   r   r…   rU   rO  r   r   r   Ú
as_integerÃ  s   

rP  c                 C   sˆ   t | tƒrttjt| ƒ|fƒS t | tƒrttj| |fƒS t | tƒr<| jtju r)| S | jtju r<ttjt| jd ƒ|fƒS t	d| › d�ƒ‚)z$Return object as REAL constant.
    r   rN  z to REAL constant)
rv   r~   r   r   r   r€   r…   r   r†   rU   rO  r   r   r   râ   Î  s   


râ   r   c                 C   s   t tj| |fƒS )zBReturn object as STRING expression (string literal constant).
    )r   r   r   rO  r   r   r   r;  Ý  s   r;  c                 C   s   t | tƒr| f} ttj| ƒS )z8Return object as ARRAY expression (array constant).
    )rv   r   r   r    rJ  r   r   r   r  ã  s   
r  c                 C   s   t tjt| ƒt|ƒfƒS )zDReturn object as COMPLEX expression (complex literal constant).
    )r   r   r   rÞ   )rG  rH  r   r   r   rà   ë  s   rà   c                 O   s.   t tj| ttt|ƒƒtdd„ | ¡ D ƒƒfƒS )zIReturn object as APPLY expression (function call, constructor, etc.)
    c                 s   rÿ   rf   r   r·   r   r   r   rz   ö  r  zas_apply.<locals>.<genexpr>)r   r   r#   r|   r  rÞ   rƒ   r�   )r  rÏ   rÐ   r   r   r   rö   ñ  s
   ÿÿrö   c                 C   s   t tj| ||fƒS )z<Return object as TERNARY expression (cond?expr1:expr2).
    )r   r   r"   )rÓ   rÔ   rÕ   r   r   r   Ú
as_ternaryù  s   rQ  c                 C   rK  )z-Return object as referencing expression.
    )r   r   r)   ©r'  r   r   r   Úas_refÿ  rM  rS  c                 C   rK  )z/Return object as dereferencing expression.
    )r   r   r*   rR  r   r   r   Úas_deref  rM  rT  c                 C   ó   t tjtj| |fƒS rf   )r   r   r&   r+   r<   ©r×   rØ   r   r   r   Úas_eq  rs   rW  c                 C   rU  rf   )r   r   r&   r+   r=   rV  r   r   r   Úas_ne  rs   rX  c                 C   rU  rf   )r   r   r&   r+   r>   rV  r   r   r   Úas_lt  rs   rY  c                 C   rU  rf   )r   r   r&   r+   r?   rV  r   r   r   Úas_le  rs   rZ  c                 C   rU  rf   )r   r   r&   r+   r@   rV  r   r   r   Úas_gt  rs   r[  c                 C   rU  rf   )r   r   r&   r+   rA   rV  r   r   r   Úas_ge  rs   r\  c                 C   s¢   t | tƒrGt| ƒ} | jtju r| S | jtju r(ttjtd| jd ƒ| jd iƒS | jtj	u r?ttjt
d| jd ƒ| jd iƒS ttj| diƒS tdt| ƒ› d�ƒ‚)z+Return expression as TERMS expression.
    r   r   rN  ú to terms Expr)rv   r   rá   r…   r   r'   r   rP  r†   r   râ   rU   rš   rJ  r   r   r   rã   #  s   
""rã   c                 C   sð   t | tƒrnt| ƒ} | jtju r| S | jtju r?t| jƒdkr?| j 	¡ \\}}|dkr2ttj|diƒS ttj|dt 
|¡diƒS | jtju rf| jd tju rf| jd sfttj| jd d d| jd d diƒS ttj| diƒS tdt| ƒ› d�ƒ‚)z-Return expression as FACTORS expression.
    r   r   r   rÚ   rN  r]  )rv   r   rá   r…   r   r(   r'   r}   r†   r�   Únumberr#   rK   rR   rU   rš   )r#  rÇ   rÈ   r   r   r   rï   2  s"   
ÿ(rï   c                 C   sú   t | tƒrst| ƒ} | jtju rtd| jd ƒ| jd fS | jtju r/t	d| jd ƒ| jd fS | jtj
u rHt| jƒdkrH| j ¡ \\}}||fS | jtju ro| jd tju rot| jd d ƒ\}}ttj|| jd d ƒ|fS | dfS tdt| ƒ› d�ƒ‚)z0Return expression as term-coefficient pair.
    r   r   rN  z to term and coeff)rv   r   rá   r…   r   r   rP  r†   r   râ   r'   r}   r�   r#   rK   rR   r:  rö   rU   rš   )r#  rÇ   rÈ   r<  rk   r   r   r   r:  G  s   
r:  c                 C   s:  t | tƒ�rt| ƒ} | jtjtjtjtjtj	tj
fv r!| tdƒfS | jtju rT| jd tju rN| jd sNtt| jd ƒ\}}|d |d  |d |d  fS | tdƒfS | jtju rËg g }}| j ¡ D ]\}}t|ƒ\}}|| }| |¡ | |¡ qdtdƒtdƒ}}tt|ƒƒD ]#}	||	 }tt|ƒƒD ]}
|	|
kr¤|||
 9 }q˜||7 }|||	 9 }qŒ|jtjtjfv rÇ|jd dk rÇ| | }}||fS | jtju �rtdƒtdƒ}}| j ¡ D ].\}}t|ƒ\}}|dkrû||| 9 }||| 9 }qà|dk �r|||  9 }|||  9 }qà||fS tdt| ƒ› d�ƒ‚)z+Return expression as numer-denom pair.
    r   r   r   rN  z to numer and denom)rv   r   rá   r…   r   r   r   r   r!   r$   r"   rÀ   r#   r†   rK   rR   r  r2  r'   r�   rÁ   rÂ   r}   r(   rU   rš   )r#  ÚnumersÚdenomsrÇ   rÈ   Únrh   rÑ   rÒ   ÚiÚjr/  r=  ÚbnumerÚbdenomr   r   r   r2  \  sV   ÿ 

€ 
€r2  c                  c   s   � d} 	 | d7 } | V  q)Nr   Tr   r   )Úcounterr   r   r   Ú_counter‰  s   €þrg  c                    sJ   i ‰ ‡ fdd„}t  djdddd�|| ¡}d|vsJ ‚d	|vs!J ‚|ˆ fS )
zgReplace quoted substrings of input string.

    Return a new string and a mapping of replacements.
    c                    s\   |   ¡ d d… \}}|r|d d… }dddœ|d  }|› d|› dt ¡ › d	�}|ˆ |< |S )
Nr   rÚ   ÚSINGLEÚDOUBLE)ú'ú"r   z@__f2py_QUOTES_r    ú@)r  ÚCOUNTERÚ__next__)r  rÝ   r�   Úpri   ©rh   r   r   Úrepl›  s   zeliminate_quotes.<locals>.replz+({kind}_|)({single_quoted}|{double_quoted})z
\w[\w\d_]*z('([^'\\]|(\\.))*')z("([^"\\]|(\\.))*"))rÝ   Úsingle_quotedÚdouble_quotedrk  rj  )r  ÚsubÚformat)rD   rq  Únew_sr   rp  r   Úeliminate_quotes”  s   
ýürw  c                 C   sD   |  ¡ D ]\}}|d| d¡… }|r|d7 }|  ||| ¡} q| S )z!Inverse of eliminate_quotes.
    Nrl  r    )r�   ÚfindÚreplace)rD   rh   ri   rj   rÝ   r   r   r   Úinsert_quotes±  s   rz  c                 C   sX  d\}}t | ƒ}dD ]\}}|  |¡}|dkrq
||k r#|}||}}q
|du r,| i fS |}|  ||¡}|  ||d |¡|  ||d |¡krp|  ||d ¡}|dkr^td|| › d| ›�ƒ‚|  ||d |¡|  ||d |¡ksFdd	d
ddœ| }d|› dt ¡ › d�}	| |t |ƒ |… }
t| |t |ƒ d… ƒ\}}|
||	< | d|… |	 | |fS )zzReplace substrings of input that are enclosed in parenthesis.

    Return a new string and a mapping of replacements.
    )NN))ú(/ú/)z()z{}z[]rÚ   Nr   zMismatch of z parenthesis in r
  r	  ÚCURLYr  )r—   r¦   Ú{r{  ú@__f2py_PARENTHESIS_r    rl  )r}   rx  ÚcountÚ
ValueErrorrm  rn  Úreplace_parenthesis)rD   r×   rØ   Úmn_iÚleft_Úright_rb  rc  ro  ri   rj   rÅ   rh   r   r   r   r‚  ¼  s2   


€$$ýr‚  c                 C   s    |   d¡s	J | ƒ‚|  d¡d S )Nr  r    r-   )Ú
startswithÚsplit)rD   r   r   r   Ú_get_parenthesis_kindç  s   rˆ  c                 C   sZ   |  ¡ D ]&\}}t|ƒ}tddddd�| }tdddd	d�| }|  ||| | ¡} q| S )
z$Inverse of replace_parenthesis.
    r—   r¦   r~  r{  )r
  r	  r}  r  r™   r§   Ú}r|  )r�   rˆ  rƒ   ry  )rD   rh   ri   rj   ro  r×   rØ   r   r   r   Úunreplace_parenthesisì  s   rŠ  c                 C   s4   t |d� | ¡}t|tƒr|S td| › d|› d�ƒ‚)z®Create an expression from a string.

    This is a "lazy" parser, that is, only arithmetic operations are
    resolved, non-arithmetic operations are treated as symbols.
    rt   zfailed to parse `z` to Expr instance: got `r  )Ú_FromStringWorkerru   rv   r   r�  )rD   rE   rÅ   r   r   r   rF   ÷  s   
rF   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_Pairc                 C   s   || _ || _d S rf   rV  )rH   r×   rØ   r   r   r   r‡     s   
z_Pair.__init__c                 C   s@   | j | j}}t|tƒr| |¡}t|tƒr| |¡}t||ƒS rf   )r×   rØ   rv   r   r  rŒ  )rH   r  r×   rØ   r   r   r   r  
  s   




z_Pair.substitutec                 C   s    t | ƒj› d| j› d| j› d�S r–   )rš   r   r×   rØ   r›   r   r   r   rœ     r�   z_Pair.__repr__N)r   r	   r
   r‡   r  rœ   r   r   r   r   rŒ    s    rŒ  c                   @   s4   e Zd Zejfdd„Zdd„ Zdd„ Zddd	„Zd
S )r‹  c                 C   s   d | _ d | _|| _d S rf   )ÚoriginalÚ
quotes_maprE   rG   r   r   r   r‡     s   
z_FromStringWorker.__init__c                 C   s   t || jƒS rf   )rz  rŽ  )rH   rD   r   r   r   Úfinalize_string  s   z!_FromStringWorker.finalize_stringc                 C   s   || _ t|ƒ\}| _|  |¡S rf   )r�  rw  rŽ  Úprocess)rH   ÚinpÚunquotedr   r   r   ru      s   
z_FromStringWorker.parser'  c                    sÆ  t |ttfƒrt|ƒ‡ ‡fdd„|D ƒƒS t |tƒs"J t|ƒ|fƒ‚t|ƒ\}‰| ¡ }‡‡fdd„‰d|v rdˆ| d¡ƒ}ˆ dkrItˆ |¡ƒS ˆ dkrZt	|ƒdkrZt
ˆ |¡Ž S td	ˆ › d
|› �ƒ‚t d|¡}|r’ˆ dkstJ ˆ ƒ‚ˆ| ¡ ƒ\}}}ˆ |¡}ˆ |¡}ˆ |¡}t|||ƒS ˆjtju r¡t d|tj¡}nt d|¡}|rØ| ¡ \}	}
}ˆjtju r¼d|
 d }
ˆ ˆ|	|fƒ¡\}	}tj|
ˆjd�}
ttj|
|	|fƒS t d|¡}|rò| ¡ \}}ˆ|ƒ}t|ˆ |¡ƒS t d|¡}t	|ƒdk�rCˆ ˆ|d �pdƒ¡}t|ddd… |ddd… ƒD ]&\}}ˆ ˆ|ƒ¡}| ¡ }|dk�r4||7 }�q|dk�s;J ‚||8 }�q|S ˆjtju �rad|v �raˆ| d¡ƒ}ttjtˆ |¡ƒƒS t dˆjtju �rm|n| dd¡¡}t	|ƒdk�rÊˆ|ƒ}ˆjtju�r�dd„ |D ƒ}ˆ |d ¡}t|ddd… |ddd… ƒD ]$\}}ˆ |¡}| ¡ }|dk�r»||9 }�q£|dk�sÂJ ‚|| }�q£|S | d¡�sÖ| d ¡�rñtjtj d!œ|d  }ˆ ˆ|dd… ƒ¡}t||ƒS ˆjtju�r$d|v �r$tt!ˆ| d¡ƒƒƒ}ˆ |d ¡}|dd… D ]}ˆ |¡}|| }�q|S t d"j"d#d$d%�|¡}|�rO| ¡ \}}}|�rE| #¡ �rEt$|ƒ}t%t$|ƒ|�pMd&ƒS t d'j"d(d)d$d*�|¡}|�r“| ¡ \}}}}|�rr| #¡ �rrt$|ƒ}| &¡ }d+|v �r‰t't(| d+d,¡ƒ|�p‡d-ƒS t't(|ƒ|�p‘d&ƒS |ˆj)v �r­|d| *d.¡… }t+ˆj)| |�p«dƒS |ˆv �ræt,|ƒ}ˆ ˆˆ| ƒ|d/k�rÄdnd¡}|d/k�rÔt |tƒ�rÔ|S |d0v �ræt |tƒ�râ|f}t-|ƒS t d1|¡}|�r?| ¡ \}}}ˆ ˆ|ƒ¡}ˆ ˆ|ƒdd2… d¡}t |tƒ�s|f}|d/k�r4t.d3d„ |D ƒƒ}td4d„ |D ƒƒ}t/|g|¢R i |¤ŽS |d5k�s;J ‚|| S t d6|¡}|�rLt0|ƒS ˆ 1ˆ|ƒ¡}t2d7|›d8ˆj3› d9�ƒ t0|ƒS ):a´  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   s   � | ]	}ˆ  |ˆ ¡V  qd S rf   )r�  )rx   Ús_)ÚcontextrH   r   r   rz   0  s   € z,_FromStringWorker.process.<locals>.<genexpr>c                    s*   t | ttfƒrt| ƒtˆ| ƒƒS t| ˆ ƒS rf   )rv   Úlistr|   rš   r  rŠ  )rÅ   )Úraw_symbols_mapÚrestorer   r   r—  8  s   
z*_FromStringWorker.process.<locals>.restoreú,rÏ   r'  r   z&parsing comma-separated list (context=z): z\A([^?]+)[?]([^:]+)[:](.+)\Zz+\A(.+)\s*[.](eq|ne|lt|le|gt|ge)[.]\s*(.+)\Zz7\A(.+)\s*([=][=]|[!][=]|[<][=]|[<]|[>][=]|[>])\s*(.+)\ZÚ.rt   z\A(\w[\w\d_]*)\s*[=](.*)\Zz((?<!\d[edED])[+-])r   r   r«   Nú+rª   z//z(?<=[@\w\d_])\s*([*]|/)ú**ú@__f2py_DOUBLE_STAR@c                 S   s   g | ]}|  d d¡‘qS )rœ  r›  )ry  r  r   r   r   r³   …  s    ÿz-_FromStringWorker.process.<locals>.<listcomp>r½   r­   r¼   )r½   r¼   z\A({digit_string})({kind}|)\Zz\d+z_(\d+|\w[\w\d_]*))Údigit_stringrÝ   r-   z7\A({significant}({exponent}|)|\d+{exponent})({kind}|)\Zz[.]\d+|\d+[.]\d*z[edED][+-]?\d+)Úsignificantr÷   rÝ   rh   r=  é   rl  r
  r  z4\A(.+)\s*(@__f2py_PARENTHESIS_(ROUND|SQUARE)_\d+@)\ZrÚ   c                 s   s&   � | ]}t |tƒr|j|jfV  qd S rf   )rv   rŒ  r×   rØ   r¸   r   r   r   rz   Ù  s   € ÿc                 s   s   � | ]
}t |tƒs|V  qd S rf   )rv   rŒ  r¸   r   r   r   rz   Û  s   € r	  z\A\w[\w\d_]*\Zzfromstring: treating z as symbol (original=r™   )4rv   r•  r|   rš   r   r‚  Ústripr‡  r�  r}   rà   r„   r  r  r  rQ  rE   r   r   ÚIr+   rF   r   r   r&   rŒ  Úzipr%   r   ry  r†  r*   r)   Úreversedru  Úisdigitr~   rP  rB   râ   r€   rŽ  rx  r;  rˆ  r  rƒ   rö   rL  r�  rr   r�  )rH   rD   r”  rÅ   r  r  ÚoperrÔ   rÕ   r×   rÖ   rØ   Úkeynamer�   r"  r…   r   r    rÝ   r  r�   r  rÏ   rÐ   r   )r”  r–  r—  rH   r   r�  %  s4  
ÿ


ÿÿ&
ÿ
þÿ&



þþüü

ÿ

ÿ
ÿz_FromStringWorker.processNrR  )	r   r	   r
   r   r   r‡   r�  ru   r�  r   r   r   r   r‹    s
    r‹  )r-   )r   )r   ):r   Ú__all__r  ro   Úenumr   Úmathr   r   r   r+   rK   Ú	ExceptionrU   rX   r~   r9  r€   rê   rl   ÚUserWarningrm   rr   r   rá   rÞ   rL  rÀ   rP  râ   r;  r  rà   rö   rQ  rS  rT  rW  rX  rY  rZ  r[  r\  rã   rï   r:  r2  rg  rm  rw  rz  r‚  rˆ  rŠ  r   rF   rŒ  r‹  r   r   r   r   Ú<module>   sp    	    ~ 





-+