§
    OŠtj’S  ã                   ó  — d Z ddlZddlmZ ddlmZmZmZ  ej        d¦  «        Z	e	 
                    ej        ¦  «          ed¦  «        Ze	 
                    ej        ¦  «         er3ddlZej        Zej        Zd„ dD ¦   «         \  ZZZd	„ d
D ¦   «         \  ZZZndZddlZddlmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z' d„ d
D ¦   «         \  Z(Z)Z*  ej+        d¦  «        e#¦  «        Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4ed„ ¦   «         Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d „ Z<d!„ Z=d"„ Z>d#„ Z?d$„ Z@d%„ ZAd&„ ZBd'„ ZCd(„ ZDd)„ ZEd*„ ZFd+„ ZGd,„ ZHd-„ ZId.„ ZJd/„ ZKd0„ ZLd1„ ZMd2„ ZNed3„ ¦   «         ZOd4„ ZPd5„ ZQd6„ ZRd7„ ZSd8„ ZTd9„ ZUd:„ ZVd;„ ZWd<„ ZXd=„ ZYd>„ ZZdS )?aˆ  
Important note on tests in this module - the Theano printing functions use a
global cache by default, which means that tests using it will modify global
state and thus not be independent from each other. Instead of using the "cache"
keyword argument each time, this module uses the theano_code_ and
theano_function_ functions defined below which default to using a new, empty
cache instead.
é    N)Úimport_module)ÚraisesÚSKIPÚwarns_deprecated_sympyztheano.configdefaultsÚtheanoc                 óD   — g | ]}t                                |d ¦  «        ‘ŒS )ÚfloatX)ÚttÚscalar)Ú.0Únames     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/printing/tests/test_theanocode.pyú
<listcomp>r      s&   € Ð>Ð>Ð>°•"—)’)˜D (Ñ+Ô+Ð>Ð>Ð>ó    Úxyzc                 óH   — g | ]}t                                d d|¬¦  «        ‘Œ S )r	   ©FF©r   )r
   Útensor©r   Úns     r   r   r      s*   € ÐMÐMÐMÀ!•"—)’)˜H n¸1�)Ñ=Ô=ÐMÐMÐMr   ÚXYZT)ÚS)ÚxÚyÚzÚt)Útheano_codeÚdim_handlingÚtheano_functionc                 ó:   — g | ]}t          j        |d d ¦  «        ‘ŒS )é   ©ÚsyÚMatrixSymbolr   s     r   r   r   (   s&   € Ð
3Ð
3Ð
3¨�2Œ?˜1˜a Ñ#Ô#Ð
3Ð
3Ð
3r   Úfc                 ó˜   — |                      di ¦  «         t          ¦   «         5  t          | fi |¤Žcddd¦  «         S # 1 swxY w Y   dS )zB Wrapper for theano_code that uses a new, empty cache by default. ÚcacheN)Ú
setdefaultr   r   )ÚexprÚkwargss     r   Útheano_code_r,   .   s›   € à
×Ò�g˜rÑ"Ô"Ð"Ý	Ñ	!Ô	!ð +ð +Ý˜4Ð*Ð* 6Ð*Ð*ð+ð +ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s   ¥?¿AÁAc                 óš   — |                      di ¦  «         t          ¦   «         5  t          | |fi |¤Žcddd¦  «         S # 1 swxY w Y   dS )zF Wrapper for theano_function that uses a new, empty cache by default. r(   N)r)   r   r    )ÚinputsÚoutputsr+   s      r   Útheano_function_r0   4   s�   € à
×Ò�g˜rÑ"Ô"Ð"Ý	Ñ	!Ô	!ð :ð :Ý˜v wÐ9Ð9°&Ð9Ð9ð:ð :ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :s   ¥A Á AÁAc                  ó  — t          t          t          | ¦  «        ¦  «        }t          j        j                             |¦  «        }t          j        j                             ||¦  «        \  }}t          j                             ||¦  «        S )z³ Transform SymPy expressions into Theano Computation.

    Parameters
    ==========
    exprs
        SymPy expressions

    Returns
    =======
    theano.gof.FunctionGraph
    )	ÚlistÚmapr,   r   ÚgofÚgraphr.   ÚcloneÚFunctionGraph)ÚexprsÚoutsÚinss      r   Ú	fgraph_ofr;   ;   si   € õ ••L %Ñ(Ô(Ñ)Ô)€DÝ
Œ*Ô
×
!Ò
! $Ñ
'Ô
'€CÝ”
Ô ×&Ò& s¨DÑ1Ô1�I€CˆÝŒ:×#Ò# C¨Ñ.Ô.Ð.r   c                 óÄ   — t           j                             ¦   «                              d¦  «        }|                      ¦   «         } |j                             | ¦  «         | S )zŸ Simplify a Theano Computation.

    Parameters
    ==========
    fgraph : theano.gof.FunctionGraph

    Returns
    =======
    theano.gof.FunctionGraph
    Úfusion)r   ÚcompileÚget_default_modeÚ	excludingr6   Ú	optimizerÚoptimize)ÚfgraphÚmodes     r   Útheano_simplifyrE   M   sM   € õ Œ>×*Ò*Ñ,Ô,×6Ò6°xÑ@Ô@€DØ�\Š\‰^Œ^€FØ„N×Ò˜FÑ#Ô#Ð#Ø€Mr   c                 óî  — t           t          t          j        f}t	          | |¦  «        }t	          ||¦  «        }|s|r|r|sdS | |k    S t	          | t
          t          f¦  «        }t	          |t
          t          f¦  «        }|s|rl|r"|r t          | ¦  «        t          |¦  «        k    rdS t          t          t          | ¦  «        ¦  «        t          t          t          |¦  «        ¦  «        k    S t          j                             | d¬¦  «        }t          j                             |d¬¦  «        }d| |fd||ffD ]2\  }	}
}|dk    r&t          d|	›d|	›d	t          |
¦  «        ›d
�¦  «        ‚Œ3||k    S )aæ   Test two Theano objects for equality.

    Also accepts numeric types and lists/tuples of supported types.

    Note - debugprint() has a bug where it will accept numeric types but does
    not respect the "file" argument and in this case and instead prints the number
    to stdout and returns an empty string. This can lead to tests passing where
    they should fail because any two numbers will always compare as equal. To
    prevent this we treat numbers as a separate case.
    FÚstr)ÚfileÚaÚbÚ ztheano.printing.debugprint(z) returned empty string (z is instance of ú))ÚintÚfloatÚnpÚnumberÚ
isinstanceÚtupler2   Útyper3   Útheqr   ÚprintingÚ
debugprintÚ	TypeError)rI   rJ   Únumeric_typesÚa_is_numÚb_is_numÚa_is_seqÚb_is_seqÚastrÚbstrÚargnameÚargvalÚargstrs               r   rT   rT   ^   s—  € õ �%¥¤Ð+€MÝ˜!˜]Ñ+Ô+€HÝ˜!˜]Ñ+Ô+€Hð ð �8ð Øð 	˜Xð 	Ø�5à�AŠvˆõ ˜!�e¥T˜]Ñ+Ô+€HÝ˜!�e¥T˜]Ñ+Ô+€Hàð 8�8ð 8Øð 	˜Xð 	­$¨q©'¬'µT¸!±W´WÒ*<Ð*<Ø�5å•C�˜a‘L”LÑ!Ô!¥T­#­d°A©,¬,Ñ%7Ô%7Ò7Ð7õ Œ?×%Ò% a¨eÐ%Ñ4Ô4€DÝŒ?×%Ò% a¨eÐ%Ñ4Ô4€Dð &)¨!¨T N°S¸!¸T°NÐ#Cð ð Ñˆ�˜Ø�RŠ<ˆ<Ý�)ð �7�7˜G˜G˜G¥T¨&¡\¤\ \ \ð3ñô ð ð ð �4Š<Ðr   c                  óò  — t          t          t          t          ¦  «        ¦  «        sJ ‚t          t          t          t
          ¦  «        ¦  «        sJ ‚t          t          t          t          ¦  «        ¦  «        sJ ‚t          t          t          t          ¦  «        ¦  «        sJ ‚t          t          t          t          ¦  «        ¦  «        sJ ‚t          t          t          t          ¦  «        ¦  «        sJ ‚dS )z‰
    Check that the example symbols in this module print to their Theano
    equivalents, as many of the other tests depend on this.
    N)rT   Úxtr,   r   Úytr   Úztr   ÚXtÚXÚYtÚYÚZtÚZ© r   r   Útest_example_symbolsrm   Ž   s²   € õ
 ••L¥‘O”OÑ$Ô$Ð$Ð$Ð$Ý••L¥‘O”OÑ$Ô$Ð$Ð$Ð$Ý••L¥‘O”OÑ$Ô$Ð$Ð$Ð$Ý••L¥‘O”OÑ$Ô$Ð$Ð$Ð$Ý••L¥‘O”OÑ$Ô$Ð$Ð$Ð$Ý••L¥‘O”OÑ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                  óH  — t          t          ¦  «        } t          | t          j        t
          j        f¦  «        sJ ‚| j        dk    sJ ‚| j        t          j        k    sJ ‚t          t          t          di¬¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚dS )z. Test printing a Symbol to a theano variable. rl   ©F©ÚbroadcastablesN)	r,   r   rQ   r
   ÚTensorVariableÚtsÚScalarVariableÚbroadcastabler   )ÚxxÚxx2s     r   Útest_Symbolrx   ›   sœ   € å	•a‰Œ€BÝ�b�2Ô,­bÔ.?Ð@ÑAÔAÐAÐAÐAØÔ˜rÒ!Ð!Ð!Ð!ØŒ7•a”fÒÐÐÐå
•q­!¨X¨Ð
7Ñ
7Ô
7€CØÔ Ò(Ð(Ð(Ð(ØŒ8•q”vÒÐÐÐÐÐr   c                  ó€   — t          t          ¦  «        } t          | t          j        ¦  «        sJ ‚| j        dk    sJ ‚dS )z4 Test printing a MatrixSymbol to a theano variable. r   N)r,   rg   rQ   r
   rr   ru   )ÚXXs    r   Útest_MatrixSymbolr{   ¦   s@   € å	•a‰Œ€BÝ�b�"Ô+Ñ,Ô,Ð,Ð,Ð,ØÔ˜~Ò-Ð-Ð-Ð-Ð-Ð-r   c                  óª   — g d¢} | D ]K}t          t          ¦  «        5  t          t          t          |i¬¦  «         ddd¦  «         n# 1 swxY w Y   ŒLdS )z/ Test MatrixSymbol with invalid broadcastable. )rl   ro   ©T©TF©FT)TTrp   N)r   Ú
ValueErrorr,   rg   )ÚbcsÚbcs     r   Útest_MatrixSymbol_wrong_dimsrƒ   ¬   s¤   € ð OÐ
NÐ
N€CØð 4ð 4ˆÝ•JÑÔð 	4ð 	4Ý�­A¨r¨7Ð3Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4øð4ð 4s   �AÁA	ÁA	c                  óš   — t          t          ¦  «        } t          | t          j        ¦  «        sJ ‚| j        dk    sJ ‚| j        dk    sJ ‚dS )zG Test printing AppliedUndef instance, which works similarly to Symbol. rl   Úf_tN)r,   r…   rQ   r
   rr   ru   r   )Úftts    r   Útest_AppliedUndefr‡   ´   sU   € å
•sÑ
Ô
€CÝ�c�2Ô,Ñ-Ô-Ð-Ð-Ð-ØÔ Ò"Ð"Ð"Ð"ØŒ8�uÒÐÐÐÐÐr   c                  ó„   — t           t          z   } t          | ¦  «        }|j        j        t
          j        j        k    sJ ‚d S ©N)r   r   r,   ÚownerÚopr   r   Úadd©r*   Úcomps     r   Útest_addr�   ¼   s8   € Ý�q‰5€DÝ˜ÑÔ€DØŒ:Œ=�FœMÔ-Ò-Ð-Ð-Ð-Ð-Ð-r   c                  óR  — t          t          t          j        t          ¦  «        ¦  «        t
                               t          ¦  «        ¦  «        sJ ‚t          t          t          j        t          ¦  «        ¦  «        t
                               t          ¦  «        ¦  «        sJ ‚d S r‰   )rT   r,   r$   Úsinr   r
   rc   Útanrl   r   r   Ú	test_trigr“   Á   sh   € Ý•�RœV¥A™YœYÑ'Ô'­¯ªµ©¬Ñ4Ô4Ð4Ð4Ð4Ý•�RœV¥A™YœYÑ'Ô'­¯ªµ©¬Ñ4Ô4Ð4Ð4Ð4Ð4Ð4r   c                  ó¸  — t          j        t          dz  t          j        t          ¦  «        z   ¦  «        t          j        dt          z  ¦  «        z  } t          | ¦  «        }t                               t          dz  t                               t          ¦  «        z   ¦  «        t                               dt          z  ¦  «        z  }t          ||¦  «        sJ ‚dS )z; Test printing a complex expression with multiple symbols. é   N)r$   Úexpr   Úcosr   Úlogr   r,   r
   rc   rd   re   rT   )r*   rŽ   Úexpecteds      r   Ú	test_manyrš   Å   s“   € åŒ6•!�Q‘$�œ¥™œÑ"Ñ#Ô#¥b¤f¨Q­q©S¡k¤kÑ1€DÝ˜ÑÔ€DÝ�vŠv•b˜!‘e�bŸfšf¥R™jœjÑ(Ñ)Ô)­B¯FªF°1µR±4©L¬LÑ8€HÝ��hÑÔÐÐÐÐÐr   c                  ó˜  — dD ]/} t          t          t          | i¬¦  «        j        j        | k    sJ ‚Œ0t          t          t          di¬¦  «        j        j        dv sJ ‚t          t          dz   t          di¬¦  «        j        j        dk    sJ ‚t          t          t          z   t          dt          di¬¦  «        j        j        dk    sJ ‚dS )	zA Test specifying specific data types through the dtype argument. )Úfloat32Úfloat64Úint8Úint16Úint32Úint64©Údtypesr	   )rœ   r�   é   rœ   r�   N)r,   r   rS   Údtyper   )r¥   s    r   Ú
test_dtyper¦   Í   sÏ   € àJð Fð FˆÝ�A¥q¨% jÐ1Ñ1Ô1Ô6Ô<ÀÒEÐEÐEÐEÐEõ �¥1 h -Ð0Ñ0Ô0Ô5Ô;Ð?UÐUÐUÐUÐUõ �˜A™¥q¨) nÐ5Ñ5Ô5Ô:Ô@ÀIÒMÐMÐMÐMÝ��A™¥q¨)µQ¸	Ð&BÐCÑCÔCÔHÔNÐR[Ò[Ð[Ð[Ð[Ð[Ð[r   c                  ón   — t           t          fD ]%} dD ] }t          | | |i¬¦  «        j        |k    sJ ‚Œ!Œ&dS )zG Test the "broadcastables" argument when printing symbol-like objects. )rl   ro   r}   r   r~   rp   N)r   r…   r,   ru   )Úsr‚   s     r   Útest_broadcastablesr©   Ú   sd   € õ •ˆXð Oð OˆØHð 	Oð 	OˆBÝ °1°b°'Ð:Ñ:Ô:ÔHÈBÒNÐNÐNÐNÐNð	OðOð Or   c                  ó°   — t           t          z   } g d¢g d¢g d¢g d¢g d¢g}|D ]2\  }}}t          | t           |t          |i¬¦  «        }|j        |k    sJ ‚Œ3dS )zG Test "broadcastable" attribute after applying element-wise binary op. )rl   rl   rl   )ro   ro   ro   )r}   ro   ro   )r   r   r   )r~   r   r   rp   N)r   r   r,   ru   )r*   ÚcasesÚbc1Úbc2Úbc3rŽ   s         r   Útest_broadcastingr¯   ä   s”   € õ �q‰5€Dð 	ˆˆØ&Ð&Ð&Ø%Ð%Ð%Ø7Ð7Ð7Ø7Ð7Ð7ð€Eð ð )ð )‰ˆˆS�#Ý˜Dµ!°S½!¸SÐ1AÐBÑBÔBˆØÔ! SÒ(Ð(Ð(Ð(Ð(ð)ð )r   c                  ó,  — t           t          z  t          z  } t          | ¦  «        }t	          |j        j        t          j        ¦  «        sJ ‚t          |t                               t          ¦  «                             t          ¦  «        ¦  «        sJ ‚d S r‰   )rg   ri   rk   r,   rQ   rŠ   r‹   r
   ÚDotrT   rf   Údotrh   rj   )r*   Úexpr_ts     r   Útest_MatMulr´   ö   sj   € Ý�Q‰3�q‰5€DÝ˜$ÑÔ€FÝ�f”l”o¥r¤vÑ.Ô.Ð.Ð.Ð.Ý��Ÿš�r™
œ
Ÿš¥rÑ*Ô*Ñ+Ô+Ð+Ð+Ð+Ð+Ð+r   c                  ó€   — t          t          t          j        ¦  «        j        j        t          j        ¦  «        sJ ‚d S r‰   )rQ   r,   rg   ÚTrŠ   r‹   r
   Ú
DimShufflerl   r   r   Útest_Transposer¸   ü   s0   € Ý•l¥1¤3Ñ'Ô'Ô-Ô0µ"´-Ñ@Ô@Ð@Ð@Ð@Ð@Ð@r   c                  óš   — t           t          z   t          z   } t          t	          | ¦  «        j        j        t          j        ¦  «        sJ ‚d S r‰   )	rg   ri   rk   rQ   r,   rŠ   r‹   r
   ÚElemwise©r*   s    r   Útest_MatAddr¼   ÿ   s;   € Ý�Q‰3�q‰5€DÝ•l 4Ñ(Ô(Ô.Ô1µ2´;Ñ?Ô?Ð?Ð?Ð?Ð?Ð?r   c                  ó$  — t          t          t          j        d¦  «        dz  ¦  «        t                               dd¦  «        ¦  «        sJ ‚t          t          t          j        ¦  «        t                               dd¦  «        ¦  «        sJ ‚d S )Nr•   é   r¤   )rT   r,   r$   ÚIntegerr
   Útrue_divr   ÚHalfrl   r   r   Útest_RationalsrÂ     so   € Ý•�RœZ¨™]œ]¨QÑ.Ñ/Ô/µ·²¸QÀÑ1BÔ1BÑCÔCÐCÐCÐCÝ•�QœVÑ$Ô$¥b§k¢k°!°QÑ&7Ô&7Ñ8Ô8Ð8Ð8Ð8Ð8Ð8r   c                  óT   — t          t          j        d¦  «        ¦  «        dk    sJ ‚d S )Nr¾   )r,   r$   r¿   rl   r   r   Útest_IntegersrÄ     s)   € Ý�œ
 1™œÑ&Ô&¨!Ò+Ð+Ð+Ð+Ð+Ð+r   c                  ót   — t          j        d¦  «        } t          t          j        | ¦  «        ¦  «        sJ ‚d S )Nr   )r$   ÚSymbolr,   Ú	factorial)r   s    r   Útest_factorialrÈ     s1   € Ý
Œ	�#‰Œ€AÝ�œ Q™œÑ(Ô(Ð(Ð(Ð(Ð(Ð(r   c                  óF  — d„ } t           | t          t          j        t          j        t
          ¦  «        t
          d¬¦  «        ¦  «        ¦  «         | t                               t                               t          ¦  «        t          ¦  «        ¦  «        ¦  «        sJ ‚d S )Nc                 ó:   — t          t          | ¦  «        ¦  «        S r‰   )rE   r;   r»   s    r   ú<lambda>z!test_Derivative.<locals>.<lambda>  s   € �­	°$©¬Ñ8Ô8€ r   F©Úevaluate)
rT   r,   r$   Ú
Derivativer‘   r   r   Úgradr
   rc   )Úsimps    r   Útest_DerivativerÑ     s‚   € Ø8Ð8€DÝ��•\¥"¤-µ´µq±	´	½1ÀuÐ"MÑ"MÔ"MÑNÔNÑOÔOØ�•V—[’[¥§¢­¡¤­RÑ0Ô0Ñ1Ô1ñ3ô 3ð 3ð 3ð 3ð 3ð 3r   c                  ó~   — t          t          t          gt          t          z   g¦  «        }  | dd¦  «        dk    sJ ‚dS )z, Test theano_function() with single output. r•   r¾   é   N©r0   r   r   )r&   s    r   Útest_theano_function_simplerÕ     s6   € å�!�Q˜¥!¥A¡# Ñ'Ô'€AØˆ1ˆQ�‰7Œ7�aŠ<ˆ<ˆ<ˆ<ˆ<ˆ<r   c                  ó´   — t          t          t          gt          t          z   t          t          z
  g¦  «        }  | dd¦  «        \  }}|dk    sJ ‚|dk    sJ ‚dS )z/ Test theano_function() with multiple outputs. r•   r¾   rÓ   éÿÿÿÿNrÔ   )r&   Úo1Úo2s      r   Útest_theano_function_multirÚ     sR   € å�!�Q˜¥!¥A¡#¥q­¡s Ñ,Ô,€AØˆQˆq�!‰WŒW�F€BˆØ�Š7ˆ7ˆ7ˆ7Ø�Š8ˆ8ˆ8ˆ8ˆ8ˆ8r   c            	      ó¶  — t          t          t          gt          t          z   gdt          dt          di¬¦  «        } t          j                              | ddgddg¦  «        t          j        ddg¦  «        z
  ¦  «        dk     sJ ‚t          t          t          gt          t          z   gt          dt          did¬	¦  «        } t          j        d¦  «                             d¦  «        }dt          j        d¦  «                             d¦  «        z  }t          j                              | ||¦  «        dt          j        d¦  «        z  z
  ¦  «        dk     sJ ‚d
S )z1 Test theano_function() vs Numpy implementation. r¤   r�   )Údimr£   r•   r¾   r"   é   ç•Ö&è.>)r£   rÜ   N)	r0   r   r   rO   ÚlinalgÚnormÚasarrayÚarangeÚastype)r&   rv   Úyys      r   Útest_theano_function_numpyrå   !  s#  € å�!�Q˜¥!¥A¡# ¨AÝ!" I­q°)Ð <ð	>ñ 	>ô 	>€AåŒ9�>Š>˜!˜!˜Q ˜F Q¨ FÑ+Ô+­b¬j¸!¸Q¸Ñ.@Ô.@Ñ@ÑAÔAÀDÒHÐHÐHÐHå�!�Q˜¥!¥A¡# µ°9½aÀÐ/KØð	 ñ 	 ô 	 €Aå	Œ�1‰Œ×	Ò	˜YÑ	'Ô	'€BØ	
�2Œ9�Q‰<Œ<×Ò˜yÑ)Ô)Ñ	)€BÝŒ9�>Š>˜!˜!˜B ™)œ) a­¬	°!©¬¡nÑ4Ñ5Ô5¸Ò<Ð<Ð<Ð<Ð<Ð<r   c                  óR  — t          j        t          t          gt          t          t          z   t          z   gg¦  «        } t          j        ddgddgg¦  «        }t          t          t          t          g| g¦  «        }t
          j         	                     |ddd¦  «        |¦  «         t          t          t          t          g| gd¬¦  «        }t
          j         	                     |ddd¦  «        |¦  «         t          t          t          t          g| | g¦  «        }t           |ddd¦  «        t          g ¦  «        ¦  «        sJ ‚t
          j         	                     |ddd¦  «        d         |¦  «         t
          j         	                     |ddd¦  «        d         |¦  «         d S )	Nç      ð?ç       @g      @g      @T)r   r   r¤   )r$   ÚMatrixr   r   r   rO   Úarrayr0   ÚtestingÚassert_allcloserQ   rS   )Úmr™   r&   s      r   Útest_theano_function_matrixrî   .  sa  € Ý
Œ	•A•q�6�A�q¥1™u¥q™y˜>Ð*Ñ+Ô+€AÝŒx˜#˜s˜ c¨?Ð%;Ð<Ñ=Ô=€HÝ�!�Q¥˜ Q CÑ(Ô(€AÝ„J×Ò˜q˜q  c¨3Ñ/Ô/°Ñ:Ô:Ð:Ý�!�Q¥˜ Q C°Ð5Ñ5Ô5€AÝ„J×Ò˜q˜q  c¨3Ñ/Ô/°Ñ:Ô:Ð:Ý�!�Q¥˜ Q¨ FÑ+Ô+€AÝ�a�a˜˜S #Ñ&Ô&­¨R©¬Ñ1Ô1Ð1Ð1Ð1Ý„J×Ò˜q˜q  c¨3Ñ/Ô/°Ô2°HÑ=Ô=Ð=Ý„J×Ò˜q˜q  c¨3Ñ/Ô/°Ô2°HÑ=Ô=Ð=Ð=Ð=r   c                  ó"  — t          t          gd¬¦  «        t          dik    sJ ‚t          t          t          gt          dt          di¬¦  «        t          dt          dik    sJ ‚t          t          gt          di¬¦  «        t          dik    sJ ‚d S )	Nr•   )rÜ   r   r¤   )Údimsr   ro   rp   )r   r   r   rl   r   r   Útest_dim_handlingrñ   :  s˜   € Ý�˜ Ð#Ñ#Ô#­¨>Ð':Ò:Ð:Ð:Ð:Ý��A˜¥a¨­A¨q \Ð2Ñ2Ô2µq¸-Ý78¸.ð7Jò Jð Jð Jð Jå�˜­Q°¨MÐ:Ñ:Ô:½qÀ(¸mÒKÐKÐKÐKÐKÐKr   c                  ó  — ddl } t          t          t          t          gt          t          z   gddt          dt          dt          di¬¦  «        }| j                              |ddgdd	gddg¦  «         | j        d	d
g¦  «        z
  ¦  «        dk     sJ ‚t          t          t          t          gt          t          z   gt          dt          dt          didd¬¦  «        } | j        d¦  «         	                    d¦  «        }d | j        d¦  «         	                    d¦  «        z  }d | j        d¦  «         	                    d¦  «        z  }| j                              ||||¦  «        d | j        d¦  «        z  z
  ¦  «        dk     sJ ‚dS )zU
    Test passing additional kwargs from theano_function() to theano.function().
    r   Nr¤   Úignorer�   )rÜ   Úon_unused_inputr£   r•   r¾   r"   rÝ   rÞ   )r£   rÜ   rô   )
Únumpyr0   r   r   r   rß   rà   rá   râ   rã   )rO   r&   rv   rä   Úzzs        r   Útest_theano_function_kwargsr÷   @  sv  € ð ÐÐÐÝ�!�Q¥˜¥Q¥q¡S E¨qÀ(Ý�y¥! Yµ°9Ð=ð	?ñ 	?ô 	?€AàŒ9�>Š>˜!˜!˜Q ˜F Q¨ F¨Q°¨FÑ3Ô3°j°b´jÀ!ÀQÀÑ6HÔ6HÑHÑIÔIÈDÒPÐPÐPÐPå�!�Q¥˜¥Q¥q¡S EÝ ! 9­a°½A¸yÐIØ¨xð	9ñ 	9ô 	9€Að 
ˆŒ�1‰Œ×	Ò	˜YÑ	'Ô	'€BØ	
ˆ9ˆ2Œ9�Q‰<Œ<×Ò˜yÑ)Ô)Ñ	)€BØ	
ˆ9ˆ2Œ9�Q‰<Œ<×Ò˜yÑ)Ô)Ñ	)€BØŒ9�>Š>˜!˜!˜B  B™-œ-¨!¨I¨B¬I°a©L¬L©.Ñ8Ñ9Ô9¸DÒ@Ð@Ð@Ð@Ð@Ð@r   c            	      óÊ  — t           t          gt           t          z   gddgft          t          gt          t          z   gddgft           t          gt           t          z   gt           dt          didgft           t          gt           t          z   t           t          z
  gdddgft           t          t          t          gt           t          z   t          t          z   gdddgfg} | D �]\  }}}}dD ]ù}t	          ||||¬¦  «        }t          |j        t          j        j	        j
        ¦  «        sJ ‚d„ |j        j        D ¦   «         } ||Ž }t          |t          ¦  «        s|g}t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D ]S\  }	}
|r#|	dk    rt          |
t          j        ¦  «        sJ ‚Œ*t          |
t          j        ¦  «        sJ ‚|
j        |	k    sJ ‚ŒTŒú�ŒdS )z2 Test the "scalar" argument to theano_function(). Nr   r•   r¤   r   )rð   r   c                 ó^   — g | ]*}t          j        d „ |j        j        D ¦   «         ¦  «        ‘Œ+S )c                 ó   — g | ]}|rd nd‘Œ	S )r¤   rÓ   rl   )r   r‚   s     r   r   z:test_theano_function_scalar.<locals>.<listcomp>.<listcomp>g  s    € ÐGÐGÐG¨B˜b˜˜˜ aÐGÐGÐGr   )rO   ÚonesrS   ru   )r   Úis     r   r   z/test_theano_function_scalar.<locals>.<listcomp>f  sF   € ð ð ð àõ ”ÐGÐG°!´&Ô2FÐGÑGÔGÑHÔHðð ð r   )r   r   rg   ri   r0   rQ   r    r   r>   Úfunction_moduleÚFunctionÚinput_storager2   ÚlenÚziprO   rP   ÚndarrayÚndim)Úargsr.   r/   Úin_dimsÚout_dimsr   r&   Ú	in_valuesÚ
out_valuesÚdÚvalues              r   Útest_theano_function_scalarr  Q  sñ  € õ �Qˆ•!•a‘%�˜$  Ð$Ý
�Qˆ•!•a‘%�˜$  Ð$Ý
�Qˆ•!•a‘%��1˜a¥ A˜,¨¨Ð,Ý
�Qˆ•!•a‘%��Q™� ¨¨1 vÐ.Ý
�Q••1ˆ��A™�q¥1™u�~ t¨a°¨VÐ4ð€Dð /3ð +ñ +Ñ*ˆ�˜ (Ø#ð 	+ð 	+ˆFå  ¨°wÀvÐNÑNÔNˆAõ ˜aÔ/µ´Ô1OÔ1XÑYÔYÐYÐYÐYðð àÔ*Ô8ðñ ô ˆIð ˜˜I˜ˆJÝ˜j­$Ñ/Ô/ð *Ø(˜\�
õ �x‘=”=¥C¨
¡O¤OÒ3Ð3Ð3Ð3Ý ¨*Ñ5Ô5ð 	+ð 	+‘��5àð +˜a 1šf˜få% e­R¬YÑ7Ô7Ð7Ð7Ð7Ð7õ & e­R¬ZÑ8Ô8Ð8Ð8Ð8Ø œ:¨š?˜?˜?˜?˜?ð	+ñ%	+ð+ð +r   c                  ó2   — t          t          d„ ¦  «         dS )za
    Passing an unknown keyword argument to theano_function() should raise an
    exception.
    c                  óD   — t          t          gt          dz   gd¬¦  «        S )Nr¤   r¾   )Úfoobar)r0   r   rl   r   r   rË   z0test_theano_function_bad_kwarg.<locals>.<lambda>€  s   € Õ/µ°µa¸±c°UÀ1ÐEÑEÔE€ r   N)r   Ú	Exceptionrl   r   r   Útest_theano_function_bad_kwargr  {  s   € õ
 �9ÐEÐEÑFÔFÐFÐFÐFr   c            	      ó¶  — t          t          ddd¦  «        ¦  «        t          ddd¦  «        k    sJ ‚d„ } t          dt          di} | t          t          t          t          ¦  «        |¬¦  «        t          t          t
          ¦  «        ¦  «        sJ ‚ | t          t          dt          d¦  «        |¬¦  «        t          dt          d¦  «        ¦  «        sJ ‚d S )Nr¤   r•   r¾   c                 óŽ   — dD ]A}t          | |¦  «        }t          ||¦  «        }|�|€|�|� dS Œ.t          ||¦  «        s dS ŒBdS )N)ÚstartÚstopÚstepFT)ÚgetattrrT   )Ús1Ús2ÚattrÚa1Úa2s        r   Ú
theq_sliceztest_slice.<locals>.theq_slice†  sj   € Ø-ð 	ð 	ˆDÝ˜˜TÑ"Ô"ˆBÝ˜˜TÑ"Ô"ˆBØˆz˜R˜ZØ˜
 b jØ ˜5˜5øÝ˜"˜b‘\”\ð Ø�u�uðàˆtr   r    r¢   )r,   Úslicer   r   rc   rd   )r  r£   s     r   Ú
test_slicer  ƒ  sÃ   € Ý�˜a  A™œÑ'Ô'­5°°A°q©>¬>Ò9Ð9Ð9Ð9ð	ð 	ð 	õ ��!˜WÐ%€FØˆ:•l¥5­­A¡;¤;°vÐ>Ñ>Ô>ÅÅbÍ"ÁÄÑNÔNÐNÐNÐNØˆ:•l¥5¨­A¨q¡>¤>¸&ÐAÑAÔAÅ5ÈÍBÐPQÁ?Ä?ÑSÔSÐSÐSÐSÐSÐSr   c                  ó´  ‡‡	‡
— ddl mŠ i } t          j        dd¬¦  «        }t          j        d||¦  «        }|ddd	…d
dd…f         }t          || ¬¦  «        Š	t                               d¦  «        Š
t          ‰	j	        j
        j        ¦  «        t          ‰
‰
‰
¦  «        t          ‰
‰
‰
¦  «        fk    sJ ‚‰	j	        j        d         t          || ¬¦  «        k    sJ ‚t          ˆˆ	ˆ
fd„t          dd¦  «        D ¦   «         ¦  «        sJ ‚t          j        d¦  «        }t          ||di¬¦  «         d
|d}}}||||…         }t          ||d|di¬¦  «        Š	d S )Nr   )ÚConstantr   T©Úintegerrg   r¤   r•   r¾   r"   rÓ   rÝ   ©r(   r¡   c              3   óv   •K  — | ]3}‰j         j        |                               ‰‰|¦  «        ¦  «        V — Œ4d S r‰   )rŠ   r.   Úequals)r   rü   r   rh   r¨   s     €€€r   ú	<genexpr>z#test_MatrixSlice.<locals>.<genexpr>¥  sD   øè è € ÐNÐN¸QˆrŒxŒ˜qÔ!×(Ò(¨¨°!°Q©¬Ñ8Ô8ÐNÐNÐNÐNÐNÐNr   é   Úkr    r¢   )r   r   r$   rÆ   r%   r,   rs   ÚScalarrR   rŠ   r‹   Úidx_listr  r.   ÚallÚrange)r(   r   rg   ri   r(  r  r  r  r   rh   r¨   s           @@@r   Útest_MatrixSlicer-  •  sx  øøø€ ØÐÐÐÐÐà€Eå
Œ	�#˜tÐ$Ñ$Ô$€AÝ
Œ˜˜Q Ñ"Ô"€Aà	ˆ!ˆAˆaˆ%��1�Q�ˆ,Œ€AÝ	�a˜uÐ	%Ñ	%Ô	%€Bå
�	Š	�'ÑÔ€AÝ�””Ô%Ñ&Ô&­5°°A°q©>¬>½5ÀÀAÀq¹>¼>Ð*JÒJÐJÐJÐJØŒ8Œ?˜1Ô¥¨a°uÐ!=Ñ!=Ô!=Ò=Ð=Ð=Ð=õ ÐNÐNÐNÐNÐNÐNÅ%ÈÈ1Á+Ä+ÐNÑNÔNÑNÔNÐNÐNÐNå
Œ	�#‰Œ€AÝ�˜A˜w˜<Ð(Ñ(Ô(Ð(Ø˜1˜a�ˆ4€EØ	ˆ%��Tˆ/Ô€AÝ	�a  G¨Q°Ð 8Ð	9Ñ	9Ô	9€B€B€Br   c            
      ód  ‡
‡— t          j        dd¬¦  «        Šˆfd„dD ¦   «         \  } }}}t          t          | |||f¦  «        \  }}}}t          j        | |g||gg¦  «        }t          |¦  «        Š
t
                               dt
                               d||¦  «        t
                               d||¦  «        ¦  «        t
                               dt
                               d||¦  «        t
                               d||¦  «        ¦  «        g}	t          ˆ
fd„|	D ¦   «         ¦  «        sJ ‚d S )	Nr   Tr!  c                 ó<   •— g | ]}t          j        |‰‰¦  «        ‘ŒS rl   r#   )r   r   r   s     €r   r   z$test_BlockMatrix.<locals>.<listcomp>°  s'   ø€ ÐAÐAÐA°$•"”/ $¨¨1Ñ-Ô-ÐAÐAÐAr   ÚABCDr   r¤   c              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r‰   )rT   )r   ÚsolutionÚBlockts     €r   r&  z#test_BlockMatrix.<locals>.<genexpr>¶  s-   øè è € Ð@Ð@¨(�t�F˜HÑ%Ô%Ð@Ð@Ð@Ð@Ð@Ð@r   )r$   rÆ   r3   r,   ÚBlockMatrixr
   ÚjoinÚany)ÚAÚBÚCÚDÚAtÚBtÚCtÚDtÚBlockÚ	solutionsr3  r   s             @@r   Útest_BlockMatrixrA  ®  s  øø€ Ý
Œ	�#˜tÐ$Ñ$Ô$€AØAÐAÐAÐA¸&ÐAÑAÔA�J€A€qˆ!ˆQÝ�¨¨1¨a° |Ñ4Ô4�N€BˆˆB�ÝŒN˜Q ˜F Q¨ FÐ+Ñ,Ô,€EÝ˜%Ñ Ô €FÝ—’˜�BŸGšG A r¨2Ñ.Ô.µ·²¸¸2¸rÑ0BÔ0BÑCÔCÝ—’˜�BŸGšG A r¨2Ñ.Ô.µ·²¸¸2¸rÑ0BÔ0BÑCÔCðE€IåÐ@Ð@Ð@Ð@°iÐ@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@r   c            	      ó¬  ‡‡— d\  } }dŠt          j        d|| ¦  «        }t          j        d||¦  «        }||f}|j        |z  }||dz  |dz  f| dz  | dz  fg||dz  |dz  f|dz  |dz  fgiŠˆfd„|D ¦   «         }|                     t	          t          ||¦  «        ¦  «        ¦  «        }t	          t          |‰gt          |¦  «        z  ¦  «        ¦  «        }t          ||g|i ¬¦  «        }	t          |t          j        |¦  «        g|i ¬¦  «        }
ˆfd„|D ¦   «         }t          j
        || z  ¦  «                             |j        ¦  «                             ‰¦  «        t          j        |¦  «                             ‰¦  «        g}|d	xx         t          j        |j        ¦  «        d
z  z  cc<   t          j         |	|Ž  |
|Ž d
¬¦  «        sJ ‚d S )N)r•   r"   rœ   r7  r8  r•   c                 ó@   •— g | ]}t          j        |g‰|         ¢R Ž ‘ŒS rl   )r$   Úblockcut)r   rü   Úcutsizess     €r   r   z6test_BlockMatrix_Inverse_execution.<locals>.<listcomp>Ã  s/   ø€ Ð>Ð>Ð>°!•”˜QÐ- ¨!¤Ð-Ð-Ð-Ð>Ð>Ð>r   )r£   r(   c                 óf   •— g | ]-}t          j        j        |j        Ž                      ‰¦  «        ‘Œ.S rl   )rO   ÚrandomÚrandÚshaperã   )r   r   r¥   s     €r   r   z6test_BlockMatrix_Inverse_execution.<locals>.<listcomp>Ë  s2   ø€ ÐFÐFÐF¸!�rŒyŒ~˜qœwÐ'×.Ò.¨uÑ5Ô5ÐFÐFÐFr   r¤   gñhãˆµøä>)Úrtol)r$   r%   ÚIÚsubsÚdictr  r   r0   Úblock_collapserO   râ   ÚreshaperI  rã   Úeyerû   Úallclose)r(  r   r7  r8  r.   ÚoutputÚ	cutinputsÚ	cutoutputr£   r&   ÚfblockedÚninputsrE  r¥   s               @@r   Ú"test_BlockMatrix_Inverse_executionrW  ¸  sú  øø€ à�D€A€qØ€EÝ
Œ˜˜Q Ñ"Ô"€AÝ
Œ˜˜Q Ñ"Ô"€AØ�ˆT€FØŒS�‰U€Fà�Q˜‘T˜1˜a™4�L 1 a¡4¨¨A© ,Ð/Ø�Q˜‘T˜1˜a™4�L 1 a¡4¨¨A© ,Ð/ð1€Hà>Ð>Ð>Ð>°vÐ>Ñ>Ô>€IØ—’�D¥ V¨YÑ!7Ô!7Ñ8Ô8Ñ9Ô9€Iå•#�f˜u˜g¥c¨&¡k¤kÑ1Ñ2Ô2Ñ3Ô3€FÝ˜ & °&ÀÐCÑCÔC€AÝ ­Ô):¸9Ñ)EÔ)EÐ(FØ'-°Rð9ñ 9ô 9€Hð GÐFÐFÐF¸vÐFÑFÔF€GÝŒy˜˜1™‰~Œ~×%Ò% a¤gÑ.Ô.×5Ò5°eÑ<Ô<ÝŒv�a‰yŒy×Ò Ñ&Ô&ð(€GàˆA€J€J„J•"”'˜!œ'Ñ"Ô" 4Ñ'Ñ'€J€J�JåŒ;�q�q˜'�{ H H¨gÐ$6¸TÐBÑBÔBÐBÐBÐBÐBÐBr   c                  ó¦  — t          j        d¦  «        } t           j        t           j        fD ]£} |t          j        | ¦  «        t          j        | ¦  «         gt          j        | ¦  «        t          j        | ¦  «        gg¦  «        }t          |¦  «        }t          |t          j	        ¦  «        sJ ‚|j
        j        t          j        k    sJ ‚Œ¤d S )NÚtheta)r$   rÆ   ré   ÚImmutableMatrixr—   r‘   r,   rQ   r
   rr   rŠ   r‹   Újoin_)r   Ú
MatrixTyperg   ÚtXs       r   Útest_DenseMatrixr^  Ò  s²   € Ý
Œ	�'ÑÔ€AÝ”y¥"Ô"4Ð5ð 'ð 'ˆ
ØˆJ�œ ™œ¥R¤V¨A¡Y¤Y JÐ/µ"´&¸±)´)½R¼VÀA¹Y¼YÐ1GÐHÑIÔIˆÝ˜!‰_Œ_ˆÝ˜"�bÔ/Ñ0Ô0Ð0Ð0Ð0ØŒxŒ{�bœhÒ&Ð&Ð&Ð&Ð&ð	'ð 'r   c                  ó   — t           t          j        d¦  «        ft          t          j        dgt          j        ¢R Ž ft           t          j        d¦  «        t          j        d¦  «        ¦  «        fg} | D ]W\  }}i }t          ||¬¦  «        }t          ||¬¦  «        |u sJ ‚t          |i ¬¦  «        |usJ ‚t          ||¬¦  «        |u sJ ‚ŒXdS )zH Test single symbol-like objects are cached when printed by themselves. r   rg   r&   r   r#  N)	r   r$   rÆ   rg   r%   rI  r…   rþ   r,   )Úpairsr  r  r(   Ústs        r   Útest_cache_basicrb  Û  sõ   € õ
 
�BŒI�c‰NŒNÐÝ	
�BŒO˜CÐ*¥!¤'Ð*Ð*Ð*Ð+Ý	Ð�bŒk˜#ÑÔ�rœy¨™~œ~Ñ.Ô.Ð/ð€Eð ð 3ð 3‰ˆˆBØˆÝ˜" EÐ*Ñ*Ô*ˆõ ˜B eÐ,Ñ,Ô,°Ð2Ð2Ð2Ð2õ ˜B bÐ)Ñ)Ô)°Ð3Ð3Ð3Ð3õ ˜B eÐ,Ñ,Ô,°Ð2Ð2Ð2Ð2Ð2ð3ð 3r   c                  óz  — ddl m}  t          | ¦  «        }	 |                      ¦   «          t          t
          t          fD ]K}t          ¦   «         5  t          |¦  «        }t          |¦  «        |u sJ ‚	 ddd¦  «         n# 1 swxY w Y   ŒL	 |  	                    |¦  «         dS # |  	                    |¦  «         w xY w)z Test use of the global cache. r   )Úglobal_cacheN)
Úsympy.printing.theanocoderd  rM  Úclearr   rg   r…   r   r   Úupdate)rd  Úbackupr¨   ra  s       r   Útest_global_cacheri  ò  s  € à6Ð6Ð6Ð6Ð6Ð6å�,ÑÔ€Fð$à×ÒÑÔÐå•Q��ð 	,ð 	,ˆAÝ'Ñ)Ô)ð ,ð ,Ý  ‘^”^�Ý" 1‘~”~¨Ð+Ð+Ð+Ð+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,øð	,ð 	×Ò˜FÑ#Ô#Ð#Ð#Ð#øˆ×Ò˜FÑ#Ô#Ð#Ð#øøøs/   —8B# Á#A?Á3B# Á?B	ÂB# ÂB	ÂB# Â#B:c            	      ó(  — t          j        d¦  «        t          j        ddd¦  «        t          g} i }i }| D ]0}t	          ||¬¦  «        }||                     ¦   «         vsJ ‚|||<   Œ1t          t          t          t          |                     ¦   «         ¦  «        ¦  «        ¦  «        t          | ¦  «        k    sJ ‚| 
                    ¦   «         D ]A\  }}t          ¦   «         5  t          ||¬¦  «        |u sJ ‚	 ddd¦  «         n# 1 swxY w Y   ŒBdS )z§
    Test that symbol-like objects of different types (Symbol, MatrixSymbol,
    AppliedUndef) are distinguished by the cache even if they have the same
    name.
    r…   r"   r#  N)r$   rÆ   r%   r…   r,   Úvaluesr   Úsetr3   ÚidÚitemsr   r   )Úsymbolsr(   Úprintedr¨   ra  s        r   Útest_cache_types_distinctrq    s`  € õ Œy˜ÑÔ¥¤°¸¸1Ñ!=Ô!=½sÐC€Gà€EØ€Gàð ð ˆÝ˜! 5Ð)Ñ)Ô)ˆØ˜ŸšÑ)Ô)Ð)Ð)Ð)Ð)Øˆ�‰
ˆ
õ �s•3•r˜7Ÿ>š>Ñ+Ô+Ñ,Ô,Ñ-Ô-Ñ.Ô.µ#°g±,´,Ò>Ð>Ð>Ð>ð —’‘”ð 5ð 5‰ˆˆ2Ý#Ñ%Ô%ð 	5ð 	5Ý˜q¨Ð.Ñ.Ô.°"Ð4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5øð5ð 5s   Ã#DÄD
	ÄD
	c                  óü   — t          j        t          t          d¬¦  «        } t          | ¦  «        }t	          |t
          t
          z   ¦  «        sJ ‚t	          |t
          t          t          ¦  «        z   ¦  «        rJ ‚dS )zf
    Test that a symbol is cached and reused when it appears in an expression
    more than once.
    FrÌ   N)r$   ÚAddr   r,   rT   rc   r�   s     r   Útest_symbols_are_created_oncert    sh   € õ
 Œ6•!•Q Ð'Ñ'Ô'€DÝ˜ÑÔ€Då�•b�2‘gÑÔÐÐÐÝ�D�"�|­A™œÑ.Ñ/Ô/Ð/Ð/Ð/Ð/Ð/r   c                  ó$  — t           dz  t          t          j        t           ¦  «        z
  t          j        t
          t           t          z  z
  ¦  «        z  z   } d„ | j        D ¦   «         }t          | ¦  «        }t          ¦   «         }t          j
        j                             |g¦  «        D ]]}|j        €Tt          |t          j
        j        j        ¦  «        s0|j        |v sJ ‚|j        |vsJ ‚|                     |j        ¦  «         Œ^||k    sJ ‚dS )zf
    Test caching on a complicated expression with multiple symbols appearing
    multiple times.
    r•   c                 ó   — h | ]	}|j         ’Œ
S rl   r   )r   r¨   s     r   ú	<setcomp>z%test_cache_complex.<locals>.<setcomp>-  s   € Ð6Ð6Ð6˜q�A”FÐ6Ð6Ð6r   N)r   r   r$   r–   r‘   r   Úfree_symbolsr,   rl  r   r4   r5   Ú	ancestorsrŠ   rQ   r   r   rŒ   )r*   Úsymbol_namesr³   ÚseenÚvs        r   Útest_cache_complexr}  '  sø   € õ
 �‰6•Q�œ¥™œ‘]¥b¤f­QµµQ±©YÑ&7Ô&7Ñ7Ñ7€DØ6Ð6 DÔ$5Ð6Ñ6Ô6€LÝ˜$ÑÔ€Fõ ‰5Œ5€DÝŒZÔ×'Ò'¨¨Ñ1Ô1ð ð ˆàŒ7ˆ?¥:¨aµ´Ô1AÔ1JÑ#KÔ#Kˆ?à”6˜\Ð)Ð)Ð)Ð)Ø”6 Ð%Ð%Ð%Ð%Ø�HŠH�Q”VÑÔÐøð �<ÒÐÐÐÐÐr   c                  ó¶  — t          j        dt          dk     ft          t          dk     fd¦  «        } t          | ¦  «        }|j        j        t          j        k    sJ ‚t                               t          dk     dt                               t          dk     t          d¦  «        ¦  «        }t          ||¦  «        sJ ‚t          j        t          t          dk     f¦  «        } t          | ¦  «        }t                               t          dk     t          t          j        ¦  «        }t          ||¦  «        sJ ‚t          j        dt          j        t          dk    t          dk     ¦  «        ft          t          j        t          dk    t          dk     ¦  «        f¦  «        } t          | ¦  «        }t                               t                               t          dk    t          dk     ¦  «        dt                               t                               t          dk    t          dk     ¦  «        t          t          j        ¦  «        ¦  «        }t          ||¦  «        sJ ‚d S )Nr   r•   )r¤   Tr¤   )r$   Ú	Piecewiser   r,   rŠ   r‹   r
   Úswitchrc   rT   rO   ÚnanÚAndÚOrÚand_Úor_)r*   Úresultr™   s      r   Útest_Piecewiser‡  ?  s¨  € åŒ<˜�A˜ašC˜¥1¥a¨¢c (¨IÑ6Ô6€DÝ˜$ÑÔ€FØŒ<Œ?�bœiÒ'Ð'Ð'Ð'å�yŠy�˜Aš˜q¥"§)¢)­B¨qªDµ"°aÑ"8Ô"8Ñ9Ô9€HÝ�˜Ñ!Ô!Ð!Ð!Ð!åŒ<��A šE˜
Ñ#Ô#€DÝ˜$ÑÔ€FÝ�yŠy�˜aš¥¥R¤VÑ,Ô,€HÝ�˜Ñ!Ô!Ð!Ð!Ð!åŒ<˜�BœF¥1 Q¢3­¨!ªÑ,Ô,Ð-Ý	
�BŒE•!�A’#•q˜’s‰OŒOÐñô €Då˜$ÑÔ€FÝ�yŠy�Ÿš¥ A¢¥b¨¢dÑ+Ô+¨QÝ
�	Š	•"—&’&�˜Aš�r !štÑ$Ô$¥b­"¬&Ñ1Ô1ñ3ô 3€Hå�˜Ñ!Ô!Ð!Ð!Ð!Ð!Ð!r   c                  óœ  — t          t          t          j        t          t
          ¦  «        ¦  «        t                               t          t          ¦  «        ¦  «        sJ ‚t          t          t          t
          k    ¦  «        t          t          k    ¦  «        sJ ‚t          t          t          t
          k     ¦  «        t          t          k     ¦  «        sJ ‚t          t          t          t
          k    ¦  «        t          t          k    ¦  «        sJ ‚t          t          t          t
          k    ¦  «        t          t          k    ¦  «        sJ ‚d S r‰   )
rT   r,   r$   ÚEqr   r   r
   Úeqrc   rd   rl   r   r   Útest_Relationalsr‹  U  sÔ   € Ý•�RœU¥1¥a™[œ[Ñ)Ô)­2¯5ª5µµR©=¬=Ñ9Ô9Ð9Ð9Ð9å•�Q¥šUÑ#Ô#¥R­"¢WÑ-Ô-Ð-Ð-Ð-Ý•�Q¥šUÑ#Ô#¥R­"¢WÑ-Ô-Ð-Ð-Ð-Ý•�Q¥!šVÑ$Ô$¥b­B¢hÑ/Ô/Ð/Ð/Ð/Ý•�Q¥!šVÑ$Ô$¥b­B¢hÑ/Ô/Ð/Ð/Ð/Ð/Ð/r   c                  óf  — t          ¦   «         5  t          t          t          di¬¦  «        t          t          t          di¬¦  «        }} d d d ¦  «         n# 1 swxY w Y   ddlm} ddlm} ddlm} t          ¦   «         5  t          t          t           |t          ¦  «        z  ¦  «        ||  
                    ¦   «         z  ¦  «        sJ ‚t          t          dt          z  ¦  «        |  |d¦  «         |d	¦  «         |dd
¦  «        z  z   z  ¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚ
complex128r¢   r   )Ú	conjugate)Úas_tensor_variable)Úcomplexy      ð?       @rç   rè   r¤   )r   r,   r   r   Ú$sympy.functions.elementary.complexesrŽ  Útheano.tensorr�  r�  rT   Úconj)rc   rd   rŽ  ÚatvÚcplxs        r   Útest_complexfunctionsr–  ^  sá  € Ý	Ñ	!Ô	!ð eð eÝ�a­¨<Ð(8Ð9Ñ9Ô9½<ÍÕSTÐVbÐRcÐ;dÑ;dÔ;dˆBˆðeð eð eñ eô eð eð eð eð eð eð eøøøð eð eð eð eà>Ð>Ð>Ð>Ð>Ð>Ø7Ð7Ð7Ð7Ð7Ð7Ø-Ð-Ð-Ð-Ð-Ð-Ý	Ñ	!Ô	!ð Nð NÝ•L¥ 9 9­Q¡<¤<¡Ñ0Ô0°"°b·g²g±i´i±.ÑAÔAÐAÐAÐAÝ•L $­¡Ñ*Ô*¨B°°°C±´¸¸¸S¹¼À$À$ÀqÈÁ)Ä)Ñ9KÑ0KÑ,LÑMÔMÐMÐMÐMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð Nð Ns$   �;AÁAÁAÂBD&Ä&D*Ä-D*c                  ó”   — t          ¦   «         5  t          g dg¦  «        } d d d ¦  «         n# 1 swxY w Y    | ¦   «         dk    sJ ‚d S )Ny      ð?      ð?)r   r0   )Útfs    r   Útest_constantfunctionsr™  i  s‹   € Ý	Ñ	!Ô	!ð )ð )Ý˜b $ Ñ(Ô(ˆð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )àˆ2‰4Œ4�Š:ˆ:ˆ:ˆ:ˆ:ˆ:s   �-­1´1c                  óZ  — t          j        d¦  «        } t           j        }t          j                             t          | ¦  «        t          j        ¦  «         t          j                             t          |¦  «        t          j        ¦  «         t          | ¦  «        }t          j                             t          | ¦  «        | 	                    ¦   «         ¦  «         t          |¦  «        }t          j                             t          |¦  «        | 	                    ¦   «         ¦  «         dS )zP
    Test that exp(1) prints without error and evaluates close to SymPy's E
    r¤   N)
r$   r–   ÚErO   rë   rì   rN   Úer,   Úeval)Úe_aÚe_brœ  s      r   Ú	test_Exp1r   o  sÄ   € õ Œ&�‰)Œ)€CÝ
Œ$€Cå„J×Ò�u S™zœz­2¬4Ñ0Ô0Ð0Ý„J×Ò�u S™zœz­2¬4Ñ0Ô0Ð0å�SÑÔ€AÝ„J×Ò�u S™zœz¨1¯6ª6©8¬8Ñ4Ô4Ð4å�SÑÔ€AÝ„J×Ò�u S™zœz¨1¯6ª6©8¬8Ñ4Ô4Ð4Ð4Ð4r   )[Ú__doc__ÚloggingÚsympy.externalr   Úsympy.testing.pytestr   r   r   Ú	getLoggerÚtheanologgerÚsetLevelÚCRITICALr   ÚWARNINGrõ   rO   r   rs   r   r
   rc   rd   re   rf   rh   rj   ÚdisabledÚsympyr$   Úsympy.core.singletonr   Ú	sympy.abcr   r   r   r   re  r   r   r    rg   ri   rk   rþ   r…   r,   r0   r;   rE   rT   rm   rx   r{   rƒ   r‡   r�   r“   rš   r¦   r©   r¯   r´   r¸   r¼   rÂ   rÄ   rÈ   rÑ   rÕ   rÚ   rå   rî   rñ   r÷   r  r  r  r-  rA  rW  r^  rb  ri  rq  rt  r}  r‡  r‹  r–  r™  r   rl   r   r   ú<module>r®     s›  ððð ð €€€à (Ð (Ð (Ð (Ð (Ð (Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà ˆwÔ Ð!8Ñ9Ô9€Ø × Ò �gÔ&Ñ 'Ô 'Ð 'Ø	ˆ�xÑ	 Ô	 €Ø × Ò �g”oÑ &Ô &Ð &ð 
ð ØÐÐÐØ	Œ€BØ	Œ€BØ>Ð>¸Ð>Ñ>Ô>�J€BˆˆBØMÐMÀuÐMÑMÔM�J€BˆˆBˆBð €Hà Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð 4Ð
3¨UÐ
3Ñ
3Ô
3�€€1€að €k€b„k�#ÑÔ�qÑÔ€ð+ð +ð +ð:ð :ð :ð/ð /ð /ð$ð ð ð"-ð -ð -ð`
%ð 
%ð 
%ð	ð 	ð 	ð.ð .ð .ð ð4ð 4ñ „ð4ðð ð ð.ð .ð .ð
5ð 5ð 5ð ð  ð  ð
\ð 
\ð 
\ðOð Oð Oð)ð )ð )ð$,ð ,ð ,ðAð Að Að@ð @ð @ð
9ð 9ð 9ð,ð ,ð ,ð)ð )ð )ð3ð 3ð 3ðð ð ð
ð ð ð
=ð 
=ð 
=ð
>ð 
>ð 
>ðLð Lð LðAð Að Að"(+ð (+ð (+ðTGð Gð GðTð Tð Tð$:ð :ð :ð2Að Að Að ðCð Cñ „ðCð2'ð 'ð 'ð3ð 3ð 3ð.$ð $ð $ð$5ð 5ð 5ð0	0ð 	0ð 	0ð ð  ð  ð0"ð "ð "ð,0ð 0ð 0ðNð Nð Nðð ð ð5ð 5ð 5ð 5ð 5r   