§
    ^²ÅjN  ã                   ó  — d dl mZ d dlmZ d dlmZ ddlmZmZm	Z	m
Z
mZmZ ddlmZ d                     ¦   «         Zd„  ej        ¦   «         D ¦   «         Z eefi d	d
dddddddddddœ¤ŽZddddddœZd„ e                     ¦   «         D ¦   «         Zd„ e                     ¦   «         D ¦   «         Z G d„ dee¦  «        ZeD ]Z eed e› �e
¦  «         ŒeD ]Z eed e› �e	¦  «         Œi d!d"“d#d#“d$d$“d%d&“d'd(“d)d*“d+d,“d-d-“d.d.“d/d/“d0d0“d1d2“d3d4“d5d5“d6d7“d8d9“d:d;“d<d=d>d?d@dAdBdCdDœ¥ZdEddFœZdG„ e                     ¦   «         D ¦   «         ZdH„ e                     ¦   «         D ¦   «         Z G dI„ dJe¦  «        Z eD ]Z ee d e› �e
¦  «         ŒeD ]Z ee d e› �e	¦  «         ŒdK„ e                     ¦   «         D ¦   «         Z!dL„ e                     ¦   «         D ¦   «         Z" G dM„ dNe¦  «        Z#e!D ]Z ee#d e› �e
¦  «         Œe"D ]Z ee#d e› �e	¦  «         ŒdO„ e                     ¦   «         D ¦   «         Z$dP„ e                     ¦   «         D ¦   «         Z% G dQ„ dRe¦  «        Z&e$D ]Z ee&d e› �e
¦  «         Œe%D ]Z ee&d e› �e	¦  «         ŒdSS )Té    )ÚS)ÚLambda)ÚPowé   )ÚPythonCodePrinterÚ_known_functions_mathÚ_print_known_constÚ_print_known_funcÚ_unpack_integral_limitsÚArrayPrinter)ÚCodePrinterz!erf erfc factorial gamma loggammac                 ó.   — g | ]\  }}|t           v¯||f‘ŒS © )Ú_not_in_numpy©Ú.0ÚkÚvs      úEC:\Projects\Historical\venv\Lib\site-packages\sympy/printing/numpy.pyú
<listcomp>r   	   s*   € ÐXÐXÐX™˜˜1ÀÍ-ÐAWÐAWˆa�ˆVÐAWÐAWÐAWó    ÚarccosÚarccoshÚarcsinÚarcsinhÚarctanÚarctan2ÚarctanhÚexp2ÚsignÚ	logaddexpÚ
logaddexp2Úisnan)ÚacosÚacoshÚasinÚasinhÚatanÚatan2Úatanhr   r    r!   r"   r#   ÚeÚpiÚeuler_gammaÚnanÚinf)ÚExp1ÚPiÚ
EulerGammaÚNaNÚInfinityc                 ó    — i | ]\  }}|d |z   “ŒS ©znumpy.r   r   s      r   ú
<dictcomp>r7       ó"   € ÐUÐUÐU©d¨a°˜!˜X¨™\ÐUÐUÐUr   c                 ó    — i | ]\  }}|d |z   “ŒS r6   r   r   s      r   r7   r7   !   r8   r   c                   óL  ‡ — e Zd ZdZdZeZeZd,ˆ f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„ Zˆ fd„Zd„ Zd„ Zd„ Zd-d„Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)ˆ fd&„Z*d'Z+d(Z,d)Z-d*Z.d+Z/e0j1        Z2e0j1        Z3e0j1        Z4e0j1        Z5ˆ xZ6S ).ÚNumPyPrinterza
    Numpy printer which handles vectorized piecewise functions,
    logical operators, etc.
    ÚnumpyNc                 óü   •— d                      | j        ¦  «        | _        d                      | j        ¦  «        | _        i t          j        ¥| j        ¥| _        t          ¦   «                              |¬¦  «         dS )z 
        `settings` is passed to CodePrinter.__init__()
        `module` specifies the array module to use, currently 'NumPy', 'CuPy'
        or 'JAX'.
        zPython with {}z_{}code©ÚsettingsN)ÚformatÚ_moduleÚlanguageÚprintmethodr   Ú_kfÚsuperÚ__init__©Úselfr?   Ú	__class__s     €r   rF   zNumPyPrinter.__init__-   sl   ø€ ð )×/Ò/°´Ñ=Ô=ˆŒØ$×+Ò+¨D¬LÑ9Ô9ˆÔà8Õ'Ô+Ð8¨t¬xÐ8ˆŒå‰Œ×Ò (ÐÑ+Ô+Ð+Ð+Ð+r   c                 óp   ‡ — d}d                      |                     ˆ fd„|D ¦   «         ¦  «        ¦  «        S )z+General sequence printer: converts to tupleú, z({},)c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S ©N©Ú_print)r   ÚitemrH   s     €r   ú	<genexpr>z*NumPyPrinter._print_seq.<locals>.<genexpr>@   s/   øè è € Ð,OÐ,OÀ4¨T¯[ª[¸Ñ->Ô->Ð,OÐ,OÐ,OÐ,OÐ,OÐ,Or   )r@   Újoin)rH   ÚseqÚ	delimiters   `  r   Ú
_print_seqzNumPyPrinter._print_seq;   s=   ø€ ð ˆ	Ø�~Š~˜iŸnšnÐ,OÐ,OÐ,OÐ,OÈ3Ð,OÑ,OÔ,OÑOÔOÑPÔPÐPr   c                 óF   — d|                       t          j        ¦  «        z   S )Nú-)rO   r   r4   ©rH   Úexprs     r   Ú_print_NegativeInfinityz$NumPyPrinter._print_NegativeInfinityB   s   € Ø�T—[’[¥¤Ñ,Ô,Ñ,Ð,r   c                 ó–  ‡ — |                      ¦   «         d         t          j        urj|                      ¦   «         d         |                      ¦   «         d         gz   }d                     d                     ˆ fd„|D ¦   «         ¦  «        ¦  «        S d                     d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )zMatrix multiplication printerr   r   ú({})z).dot(c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   ©r   ÚirH   s     €r   rQ   z-NumPyPrinter._print_MatMul.<locals>.<genexpr>I   s-   øè è € Ð.QÐ.QÀ!¨t¯{ª{¸1©~¬~Ð.QÐ.QÐ.QÐ.QÐ.QÐ.Qr   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z-NumPyPrinter._print_MatMul.<locals>.<genexpr>J   s-   øè è € Ð*MÐ*M¸a¨4¯;ª;°q©>¬>Ð*MÐ*MÐ*MÐ*MÐ*MÐ*Mr   )Úas_coeff_matricesr   ÚOner@   rR   Úargs)rH   rY   Ú	expr_lists   `  r   Ú_print_MatMulzNumPyPrinter._print_MatMulE   s¸   ø€ à×!Ò!Ñ#Ô# AÔ&­a¬eÐ3Ð3Ø×.Ò.Ñ0Ô0°Ô3°d×6LÒ6LÑ6NÔ6NÈqÔ6QÐ4SÑSˆIØ—=’= §¢Ð.QÐ.QÐ.QÐ.QÀyÐ.QÑ.QÔ.QÑ!QÔ!QÑRÔRÐRØ�}Š}˜XŸ]š]Ð*MÐ*MÐ*MÐ*MÀ4Ä9Ð*MÑ*MÔ*MÑMÔMÑNÔNÐNr   c                 óÞ   — d                      |                      | j        dz   ¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )zMatrix power printerz
{}({}, {})z.linalg.matrix_powerr   r   ©r@   Ú_module_formatrA   rO   rc   rX   s     r   Ú_print_MatPowzNumPyPrinter._print_MatPowL   s^   € à×"Ò" 4×#6Ò#6°t´|ÐF\Ñ7\Ñ#]Ô#]Ø�KŠK˜œ	 !œÑ%Ô% t§{¢{°4´9¸Q´<Ñ'@Ô'@ñBô Bð 	Br   c                 ó    — d                      |                      | j        dz   ¦  «        |                      |j        d         ¦  «        ¦  «        S )zMatrix inverse printerú{}({})z.linalg.invr   rg   rX   s     r   Ú_print_InversezNumPyPrinter._print_InverseQ   sD   € à�Š˜t×2Ò2°4´<À-Ñ3OÑPÔPØ�KŠK˜œ	 !œÑ%Ô%ñ'ô 'ð 	'r   c                 ó  — |j         \  }}|j        d         dk    r|j        }|j        d         dk    r|j        }|                      | j        dz   ¦  «        ›d|                      |¦  «        ›d|                      |¦  «        ›d�S )Nr   r   z.dotú(rK   ú))rc   ÚshapeÚTrh   rA   rO   )rH   rY   Úarg1Úarg2s       r   Ú_print_DotProductzNumPyPrinter._print_DotProductV   s‘   € ð ”Y‰
ˆˆdØŒ:�aŒ=˜AÒÐØ”6ˆDØŒ:�aŒ=˜AÒÐØ”6ˆDà#×2Ò2°4´<À&Ñ3HÑIÔIÐIÐIØ#Ÿ{š{¨4Ñ0Ô0Ð0Ð0Ø#Ÿ{š{¨4Ñ0Ô0Ð0Ð0ð2ð 	2r   c                 ó®   — |                       | j        dz   ¦  «        ›d|                      |j        ¦  «        ›d|                      |j        ¦  «        ›d�S )Nz.linalg.solvern   rK   ro   )rh   rA   rO   ÚmatrixÚvectorrX   s     r   Ú_print_MatrixSolvezNumPyPrinter._print_MatrixSolvec   sX   € Ø#×2Ò2°4´<À/Ñ3QÑRÔRÐRÐRØ#Ÿ{š{¨4¬;Ñ7Ô7Ð7Ð7Ø#Ÿ{š{¨4¬;Ñ7Ô7Ð7Ð7ð9ð 	9r   c                 ó”   — d                      |                      | j        dz   ¦  «        |                      |j        ¦  «        ¦  «        S )Nrk   z.zeros©r@   rh   rA   rO   rp   rX   s     r   Ú_print_ZeroMatrixzNumPyPrinter._print_ZeroMatrixh   s@   € Ø�Š˜t×2Ò2°4´<À(Ñ3JÑKÔKØ�KŠK˜œ
Ñ#Ô#ñ%ô %ð 	%r   c                 ó”   — d                      |                      | j        dz   ¦  «        |                      |j        ¦  «        ¦  «        S )Nrk   z.onesrz   rX   s     r   Ú_print_OneMatrixzNumPyPrinter._print_OneMatrixl   s@   € Ø�Š˜t×2Ò2°4´<À'Ñ3IÑJÔJØ�KŠK˜œ
Ñ#Ô#ñ%ô %ð 	%r   c                 óª  ‡ — ddl m}m} |j        }t	          |t
          ¦  «        st          ||f |||¦  «        ¦  «        }d                     ‰                      ‰ j        dz   ¦  «        d 	                    ˆ fd„|j
        d         D ¦   «         ¦  «        ‰                      |j
        d         ¦  «        ‰                      |j        ¦  «        ¦  «        S )Nr   )r_   Újz{}(lambda {}: {}, {})z.fromfunctionrK   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   ©r   ÚargrH   s     €r   rQ   z5NumPyPrinter._print_FunctionMatrix.<locals>.<genexpr>v   s/   øè è € Ð@Ð@¨3�d—k’k #Ñ&Ô&Ð@Ð@Ð@Ð@Ð@Ð@r   r   )Ú	sympy.abcr_   r   ÚlamdaÚ
isinstancer   r@   rh   rA   rR   rc   rO   rp   )rH   rY   r_   r   r„   s   `    r   Ú_print_FunctionMatrixz"NumPyPrinter._print_FunctionMatrixp   sÓ   ø€ Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø”
ˆÝ˜%¥Ñ(Ô(ð 	0Ý˜A˜q˜6 5 5¨¨A¡;¤;Ñ/Ô/ˆEØ&×-Ò-¨d×.AÒ.AÀ$Ä,ÐQ`ÑB`Ñ.aÔ.aØ�IŠIÐ@Ð@Ð@Ð@°%´*¸Q´-Ð@Ñ@Ô@Ñ@Ô@Ø�KŠK˜œ
 1œÑ&Ô&¨¯ª°D´JÑ(?Ô(?ñAô Að 	Ar   c                 ó8  ‡ ‡— ‰                       ‰ j        dz   ¦  «        Šd                     ˆˆ fd„|j        d d…         D ¦   «         ¦  «        d                     ‰                      |j        d         ¦  «        dt          |j        ¦  «        dz
  z  ¦  «        z   S )Nú	.multiplyÚ c              3   ój   •K  — | ]-}d                       ‰‰                     |¦  «        ¦  «        V — Œ.dS ©z{}({}, N©r@   rO   ©r   r‚   ÚfuncrH   s     €€r   rQ   z6NumPyPrinter._print_HadamardProduct.<locals>.<genexpr>{   óS   øè è € ð 'ð 'Øð !×'Ò'¨¨d¯kªk¸#Ñ.>Ô.>Ñ?Ô?ð 'ð 'ð 'ð 'ð 'ð 'r   éÿÿÿÿú{}{}ro   r   ©rh   rA   rR   rc   r@   rO   Úlen©rH   rY   rŽ   s   ` @r   Ú_print_HadamardProductz#NumPyPrinter._print_HadamardProducty   s¨   øø€ Ø×"Ò" 4¤<°+Ñ#=Ñ>Ô>ˆØ�wŠwð 'ð 'ð 'ð 'ð 'Ø”y  " ”~ð'ñ 'ô 'ñ 'ô 'Ø)/¯ª°t·{²{À4Ä9ÈRÄ=Ñ7QÔ7QØ•3�t”y‘>”> AÑ%Ñ&ñ*(ô *(ñ(ð 	(r   c                 ó8  ‡ ‡— ‰                       ‰ j        dz   ¦  «        Šd                     ˆˆ fd„|j        d d…         D ¦   «         ¦  «        d                     ‰                      |j        d         ¦  «        dt          |j        ¦  «        dz
  z  ¦  «        z   S )Nz.kronr‰   c              3   ój   •K  — | ]-}d                       ‰‰                     |¦  «        ¦  «        V — Œ.dS r‹   rŒ   r�   s     €€r   rQ   z7NumPyPrinter._print_KroneckerProduct.<locals>.<genexpr>�   r�   r   r�   r‘   ro   r   r’   r”   s   ` @r   Ú_print_KroneckerProductz$NumPyPrinter._print_KroneckerProduct   s¨   øø€ Ø×"Ò" 4¤<°'Ñ#9Ñ:Ô:ˆØ�wŠwð 'ð 'ð 'ð 'ð 'Ø”y  " ”~ð'ñ 'ô 'ñ 'ô 'Ø)/¯ª°t·{²{À4Ä9ÈRÄ=Ñ7QÔ7QØ•3�t”y‘>”> AÑ%Ñ&ñ*(ô *(ñ(ð 	(r   c                 óØ   — d                      |                      | j        dz   ¦  «        |                      | j        dz   ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz
{}({}({}))z
.conjugatez
.transposer   rg   rX   s     r   Ú_print_AdjointzNumPyPrinter._print_Adjoint…   s_   € Ø×"Ò"Ø×Ò ¤¨|Ñ ;Ñ<Ô<Ø×Ò ¤¨|Ñ ;Ñ<Ô<Ø�KŠK˜œ	 !œÑ%Ô%ñ'ô 'ð 	'r   c                 óö   — d                      |                      | j        dz   ¦  «        |                      |j        ¦  «        ¦  «        }d                      |                      | j        dz   ¦  «        |¦  «        S )Nrk   z.diagz{}({}, (-1, 1))z.reshape)r@   rh   rA   rO   r‚   )rH   rY   Úvects      r   Ú_print_DiagonalOfzNumPyPrinter._print_DiagonalOf‹   su   € Ø�ŠØ×Ò ¤¨wÑ 6Ñ7Ô7Ø�KŠK˜œÑ!Ô!ñ#ô #ˆð !×'Ò'Ø×Ò ¤¨zÑ 9Ñ:Ô:¸DñBô Bð 	Br   c                 ó    — d                      |                      | j        dz   ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nrk   z	.diagflatr   rg   rX   s     r   Ú_print_DiagMatrixzNumPyPrinter._print_DiagMatrix’   sD   € Ø�Š˜t×2Ò2°4´<À+Ñ3MÑNÔNØ�KŠK˜œ	 !œÑ%Ô%ñ'ô 'ð 	'r   c           
      óH  — d                      |                      | j        dz   ¦  «        |                      |j        ¦  «        |                      | j        dz   ¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz{}({}, {}({}, {}))rˆ   ú.eyer   r   )r@   rh   rA   rO   r‚   rp   rX   s     r   Ú_print_DiagonalMatrixz"NumPyPrinter._print_DiagonalMatrix–   s…   € Ø#×*Ò*¨4×+>Ò+>¸t¼|ÈkÑ?YÑ+ZÔ+ZØ�KŠK˜œÑ!Ô! 4×#6Ò#6°t´|ÀfÑ7LÑ#MÔ#MØ�KŠK˜œ
 1œÑ&Ô&¨¯ª°D´J¸q´MÑ(BÔ(BñDô Dð 	Dr   c                 ó¬  ‡ ‡‡‡— ddl mŠmŠ ˆˆ ˆfd„Šd                     d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        }d                     d                     ˆfd„|j        D ¦   «         ¦  «        ¦  «        }d                     ‰                      ‰ j        d	z   ¦  «        ||‰                      t          j
        ¦  «        ¦  «        S )
zPiecewise function printerr   )ÚITEÚsimplify_logicc                 ó”   •— |                       ‰¦  «        r‰                      ‰| ¦  «        ¦  «        S ‰                     | ¦  «        S )z$ Problem having an ITE in the cond. )ÚhasrO   )Úcondr¤   rH   r¥   s    €€€r   Ú
print_condz1NumPyPrinter._print_Piecewise.<locals>.print_condž   sC   ø€ à�xŠx˜‰}Œ}ð )Ø—{’{ > >°$Ñ#7Ô#7Ñ8Ô8Ð8à—{’{ 4Ñ(Ô(Ð(r   z[{}]ú,c              3   óL   •K  — | ]}‰                      |j        ¦  «        V — Œd S rM   )rO   rY   r�   s     €r   rQ   z0NumPyPrinter._print_Piecewise.<locals>.<genexpr>¤   s1   øè è € Ð&RÐ&RÀ t§{¢{°3´8Ñ'<Ô'<Ð&RÐ&RÐ&RÐ&RÐ&RÐ&Rr   c              3   ó8   •K  — | ]} ‰|j         ¦  «        V — Œd S rM   )r¨   )r   r‚   r©   s     €r   rQ   z0NumPyPrinter._print_Piecewise.<locals>.<genexpr>¥   s/   øè è € Ð&QÐ&QÀ z z°#´(Ñ';Ô';Ð&QÐ&QÐ&QÐ&QÐ&QÐ&Qr   z{}({}, {}, default={})z.select)Úsympy.logic.boolalgr¤   r¥   r@   rR   rc   rh   rA   rO   r   r3   )rH   rY   ÚexprsÚcondsr¤   r©   r¥   s   `   @@@r   Ú_print_PiecewisezNumPyPrinter._print_Piecewise›   sò   øøøø€ à;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð —’˜cŸhšhÐ&RÐ&RÐ&RÐ&RÈÌ	Ð&RÑ&RÔ&RÑRÔRÑSÔSˆØ—’˜cŸhšhÐ&QÐ&QÐ&QÐ&QÀtÄyÐ&QÑ&QÔ&QÑQÔQÑRÔRˆð
 (×.Ò.Ø×Ò ¤¨yÑ 8Ñ9Ô9¸5À%Ø�KŠK�œÑÔñ ô  ð 	 r   c                 óT  •— dddddddœ}|j         |v ru|                      |j        ¦  «        }|                      |j        ¦  «        }d                     |                      | j        d	z   ||j                  z   ¦  «        ||¬
¦  «        S t          ¦   «                              |¦  «        S )z.Relational printer for Equality and UnequalityÚequalÚ	not_equalÚlessÚ
less_equalÚgreaterÚgreater_equal)z==z!=ú<z<=ú>z>=z{op}({lhs}, {rhs})ú.)ÚopÚlhsÚrhs)	Úrel_oprO   r¼   r½   r@   rh   rA   rE   Ú_print_Relational)rH   rY   r»   r¼   r½   rI   s        €r   r¿   zNumPyPrinter._print_Relational®   s¼   ø€ ð ØØØØØ!ð
ð 
ˆð Œ;˜"ÐÐØ—+’+˜dœhÑ'Ô'ˆCØ—+’+˜dœhÑ'Ô'ˆCØ'×.Ò.°$×2EÒ2EÀdÄlÐUXÑFXÐY[Ð\`Ô\gÔYhÑFhÑ2iÔ2iØ36¸Cð /ñ Aô Að Aå‰wŒw×(Ò(¨Ñ.Ô.Ð.r   c                 ó®   ‡ — d                      ‰                      ‰ j        dz   ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )úLogical And printerú{}.reduce(({}))z.logical_andrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z*NumPyPrinter._print_And.<locals>.<genexpr>Ä   sT   øè è € ð  eHð  eHÐxyÐei×epÒepÐqrÑesÔesð  eHð  eHð  eHð  eHð  eHð  eHr   ©r@   rh   rA   rR   rc   rX   s   ` r   Ú
_print_AndzNumPyPrinter._print_And¿   s�   ø€ ð
 !×'Ò'¨×(;Ò(;¸D¼LÈ>Ñ<YÑ(ZÔ(ZÐ\_×\dÒ\dð  eHð  eHð  eHð  eHð  ~Bô  ~Gð  eHñ  eHô  eHñ  ]Hô  ]Hñ  Iô  Ið  	Ir   c                 ó®   ‡ — d                      ‰                      ‰ j        dz   ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )úLogical Or printerrÂ   z.logical_orrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z)NumPyPrinter._print_Or.<locals>.<genexpr>Ë   sT   øè è € ð  dGð  dGÐwxÐdh×doÒdoÐpqÑdrÔdrð  dGð  dGð  dGð  dGð  dGð  dGr   rÄ   rX   s   ` r   Ú	_print_OrzNumPyPrinter._print_OrÆ   s�   ø€ ð
 !×'Ò'¨×(;Ò(;¸D¼LÈ=Ñ<XÑ(YÔ(YÐ[^×[cÒ[cð  dGð  dGð  dGð  dGð  }Aô  }Fð  dGñ  dGô  dGñ  \Gô  \Gñ  Hô  Hð  	Hr   c                 ó®   ‡ — d                      ‰                      ‰ j        dz   ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )zLogical Not printerrk   z.logical_notrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z*NumPyPrinter._print_Not.<locals>.<genexpr>Ò   s4   øè è € Ð[~Ð[~ÐopÐ\`×\gÒ\gÐhiÑ\jÔ\jÐ[~Ð[~Ð[~Ð[~Ð[~Ð[~r   rÄ   rX   s   ` r   Ú
_print_NotzNumPyPrinter._print_NotÍ   sV   ø€ ð
 �Š˜t×2Ò2°4´<À.Ñ3PÑQÔQÐSV×S[ÒS[Ð[~Ð[~Ð[~Ð[~ÐtxÔt}Ð[~Ñ[~Ô[~ÑS~ÔS~ÑÔÐr   Fc                 óÎ   — |j         j        r:|j         j        r.t          |j        |j                              ¦   «         d¬¦  «        }|                      ||| j        dz   ¬¦  «        S )NF)Úevaluatez.sqrt)ÚrationalÚsqrt)ÚexpÚ
is_integerÚis_negativer   ÚbaseÚevalfÚ_hprint_PowrA   )rH   rY   rÏ   s      r   Ú
_print_PowzNumPyPrinter._print_PowÔ   sa   € àŒ8Ôð 	D 4¤8Ô#7ð 	DÝ�t”y $¤(§.¢.Ñ"2Ô"2¸UÐCÑCÔCˆDØ×Ò ¨x¸d¼lÈWÑ>TÐÑUÔUÐUr   c                 óà   ‡ — d                      ‰                      ‰ j        dz   ¦  «        ‰                      ‰ j        ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )Nú{}({}.asarray([{}]), axis=0)z.aminrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z*NumPyPrinter._print_Min.<locals>.<genexpr>Û   óp   øè è € ð  Nqð  Nqð  bcð  OS÷  OZò  OZð  [\ñ  O]ô  O]ð  Nqð  Nqð  Nqð  Nqð  Nqð  Nqr   rÄ   rX   s   ` r   Ú
_print_MinzNumPyPrinter._print_MinÚ   ó¹   ø€ Ø-×4Ò4°T×5HÒ5HÈÌÐX_ÑI_Ñ5`Ô5`Ðbf×buÒbuÐvzô  wCñ  cDô  cDð  FI÷  FNò  FNð  Nqð  Nqð  Nqð  Nqð  gkô  gpð  Nqñ  Nqô  Nqñ  Fqô  Fqñ  rô  rð  	rr   c                 óà   ‡ — d                      ‰                      ‰ j        dz   ¦  «        ‰                      ‰ j        ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )NrÙ   z.amaxrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z*NumPyPrinter._print_Max.<locals>.<genexpr>Þ   rÛ   r   rÄ   rX   s   ` r   Ú
_print_MaxzNumPyPrinter._print_MaxÝ   rÝ   r   c                 ó„   — |                       | j        dz   ¦  «        ›d|                      |j        d         ¦  «        ›d�S )Nz.anglern   r   ro   ©rh   rA   rO   rc   rX   s     r   Ú
_print_argzNumPyPrinter._print_argß   sD   € Ø×.Ò.¨t¬|¸hÑ/FÑGÔGÐGÐGÈÏÊÐUYÔU^Ð_`ÔUaÑIbÔIbÐIbÐIbÐcÐcr   c                 ó„   — |                       | j        dz   ¦  «        ›d|                      |j        d         ¦  «        ›d�S )Nz.imagrn   r   ro   râ   rX   s     r   Ú	_print_imzNumPyPrinter._print_imâ   óD   € Ø×.Ò.¨t¬|¸gÑ/EÑFÔFÐFÐFÈÏÊÐTXÔT]Ð^_ÔT`ÑHaÔHaÐHaÐHaÐbÐbr   c                 ó’   ‡ — ‰                       ‰ j        dz   ¦  «        ›dd                     ˆ fd„|j        D ¦   «         ¦  «        ›d�S )Nz.modrn   rK   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r�   s     €r   rQ   z*NumPyPrinter._print_Mod.<locals>.<genexpr>ç   s/   øè è € Ð3Ð3 #ˆT�[Š[˜ÑÔÐ3Ð3Ð3Ð3Ð3Ð3r   ro   )rh   rA   rR   rc   rX   s   ` r   Ú
_print_ModzNumPyPrinter._print_Modå   sb   ø€ Ø×.Ò.¨t¬|¸fÑ/DÑEÔEÐEÐEÀtÇyÂyØ3Ð3Ð3Ð3¨¬Ð3Ñ3Ô3ñH5ô H5ð H5ð H5ð 6ð 	6r   c                 ó„   — |                       | j        dz   ¦  «        ›d|                      |j        d         ¦  «        ›d�S )Nz.realrn   r   ro   râ   rX   s     r   Ú	_print_rezNumPyPrinter._print_reé   ræ   r   c                 óž   — |                       | j        dz   ¦  «        ›d|                      |j        d         t          j        z  ¦  «        ›d�S )Nz.sincrn   r   ro   )rh   rA   rO   rc   r   r1   rX   s     r   Ú_print_sinczNumPyPrinter._print_sincì   sM   € Ø×.Ò.¨t¬|¸gÑ/EÑFÔFÐFÐFÈÏÊÐTXÔT]Ð^_ÔT`ÕabÔaeÑTeÑHfÔHfÐHfÐHfÐgÐgr   c                 óä   — | j                              |j        j        d ¦  «        }|€|                      | j        dz   ¦  «        }|›d|                      |                     ¦   «         ¦  «        ›d�S )Nz.arrayrn   ro   )Úknown_functionsÚgetrI   Ú__name__rh   rA   rO   Útolistr”   s      r   Ú_print_MatrixBasezNumPyPrinter._print_MatrixBaseï   sg   € ØÔ#×'Ò'¨¬Ô(?ÀÑFÔFˆØˆ<Ø×&Ò& t¤|°hÑ'>Ñ?Ô?ˆDØ˜4˜4 §¢¨T¯[ª[©]¬]Ñ!;Ô!;Ð!;Ð!;Ð<Ð<r   c                 óâ   — |j         }t          d„ |D ¦   «         ¦  «        rA|                      | j        dz   ¦  «        ›d|                      |j         d         ¦  «        ›d�S t          d¦  «        ‚)Nc              3   ó$   K  — | ]}|j         V — Œd S rM   )Ú
is_Integer)r   Údims     r   rQ   z/NumPyPrinter._print_Identity.<locals>.<genexpr>÷   s$   è è € Ð/Ð/ #ˆsŒ~Ð/Ð/Ð/Ð/Ð/Ð/r   r¡   rn   r   ro   zFSymbolic matrix dimensions are not yet supported for identity matrices)rp   Úallrh   rA   rO   ÚNotImplementedError)rH   rY   rp   s      r   Ú_print_IdentityzNumPyPrinter._print_Identityõ   sz   € Ø”
ˆÝÐ/Ð/¨Ð/Ñ/Ô/Ñ/Ô/ð 	pØ#×2Ò2°4´<À&Ñ3HÑIÔIÐIÐIÈ4Ï;Ê;ÐW[ÔWaÐbcÔWdÑKeÔKeÐKeÐKeÐfÐfå%Ð&nÑoÔoÐor   c                 óÄ   — d                      |                      | j        dz   ¦  «        |                      |j        d                              ¦   «         ¦  «        ¦  «        S )Nrk   z.blockr   )r@   rh   rA   rO   rc   rò   rX   s     r   Ú_print_BlockMatrixzNumPyPrinter._print_BlockMatrixü   sS   € Ø�Š˜t×2Ò2°4´<À(Ñ3JÑKÔKØ!%§¢¨T¬Y°q¬\×-@Ò-@Ñ-BÔ-BÑ!CÔ!CñEô Eð 	Er   c                 óR  •— t          |j        ¦  «        dk    r.| j        dz   |                      |j        d         ¦  «        z   dz   S t          |j        ¦  «        dk    r'|                      |                     ¦   «         ¦  «        S t          ¦   «                              | |¦  «        S )Nr   z.array(r   ro   é   )r“   rp   rA   rO   rc   ÚtomatrixrE   Ú_print_not_supported)rH   rY   rI   s     €r   Ú_print_NDimArrayzNumPyPrinter._print_NDimArray   s†   ø€ ÝˆtŒz‰?Œ?˜aÒÐØ”< )Ñ+¨d¯kªk¸$¼)ÀA¼,Ñ.GÔ.GÑGÈ#ÑMÐMÝˆtŒz‰?Œ?˜aÒÐØ—;’;˜tŸ}š}™œÑ/Ô/Ð/å‰wŒw×+Ò+¨D°$Ñ7Ô7Ð7r   ÚaddÚeinsumÚ	transposeÚonesÚzerosrM   )F)7rñ   Ú
__module__Ú__qualname__Ú__doc__rA   Ú_numpy_known_functionsrD   Ú_numpy_known_constantsÚ_kcrF   rU   rZ   re   ri   rl   rt   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  Ú_addÚ_einsumÚ
_transposeÚ_onesÚ_zerosr   r   Ú_print_lowergammaÚ_print_uppergammaÚ_print_fresnelcÚ_print_fresnelsÚ__classcell__©rI   s   @r   r;   r;   #   sÈ  ø€ € € € € ðð ð
 €GØ
 €CØ
 €Cð,ð ,ð ,ð ,ð ,ð ,ðQð Qð Qð-ð -ð -ðOð Oð OðBð Bð Bð
'ð 'ð 'ð
2ð 2ð 2ð9ð 9ð 9ð
%ð %ð %ð%ð %ð %ðAð Að Að(ð (ð (ð(ð (ð (ð'ð 'ð 'ðBð Bð Bð'ð 'ð 'ðDð Dð Dð
 ð  ð  ð&/ð /ð /ð /ð /ð"Ið Ið IðHð Hð Hð@ð @ð @ðVð Vð Vð Vðrð rð rðrð rð rðdð dð dðcð cð cð6ð 6ð 6ðcð cð cðhð hð hð=ð =ð =ðpð pð pðEð Eð Eð8ð 8ð 8ð 8ð 8ð €DØ€GØ€JØ€EØ€Fà#Ô8ÐØ#Ô8ÐØ!Ô6€OØ!Ô6€O€O€O€O€Or   r;   Ú_print_ÚEiÚexpiÚerfÚerfcÚbesseljÚjvÚbesselyÚyvÚbesseliÚivÚbesselkÚkvÚcosm1Úpowm1Ú	factorialÚgammaÚloggammaÚgammalnÚdigammaÚpsiÚ	polygammaÚRisingFactorialÚpochÚjacobiÚeval_jacobiÚ
gegenbauerÚeval_gegenbauerÚeval_chebytÚeval_chebyuÚeval_legendreÚeval_hermiteÚeval_laguerreÚeval_genlaguerreÚbetaÚlambertw)Ú
chebyshevtÚ
chebyshevuÚlegendreÚhermiteÚlaguerreÚassoc_laguerrer:  ÚLambertWÚgolden_ratio)ÚGoldenRatior1   c                 ó    — i | ]\  }}|d |z   “ŒS )zscipy.special.r   r   s      r   r7   r7   :  s$   € ÐfÐfÐf±t°q¸!˜!Ð.°Ñ2ÐfÐfÐfr   c                 ó    — i | ]\  }}|d |z   “ŒS )zscipy.constants.r   r   s      r   r7   r7   ;  s$   € ÐjÐjÐj¹¸¸A˜!Ð0°1Ñ4ÐjÐjÐjr   c                   ó¶   ‡ — e Zd Zi ej        ¥e¥Zi ej        ¥e¥Zdˆ fd„	Zd„ Z	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ˆ xZS )ÚSciPyPrinterNc                 óZ   •— t          ¦   «                              |¬¦  «         d| _        d S )Nr>   zPython with SciPy and NumPy)rE   rF   rB   rG   s     €r   rF   zSciPyPrinter.__init__B  s)   ø€ Ý‰Œ×Ò (ÐÑ+Ô+Ð+Ø5ˆŒˆˆr   c                 óN  — g g g }}}|                      ¦   «                              ¦   «         D ]G\  \  }}}|                     |¦  «         |                     |¦  «         |                     |¦  «         ŒHd                     |                      d¦  «        ||||j        ¬¦  «        S )Nz+{name}(({data}, ({i}, {j})), shape={shape})zscipy.sparse.coo_matrix)ÚnameÚdatar_   r   rp   )ÚtodokÚitemsÚappendr@   rh   rp   )rH   rY   r_   r   rL  ÚrÚcr   s           r   Ú_print_SparseRepMatrixz#SciPyPrinter._print_SparseRepMatrixF  s¤   € Ø˜˜Rˆdˆ1ˆØŸš™œ×+Ò+Ñ-Ô-ð 	ð 	‰I‰FˆQ��AØ�HŠH�Q‰KŒKˆKØ�HŠH�Q‰KŒKˆKØ�KŠK˜‰NŒNˆNˆNà<×CÒCØ×$Ò$Ð%>Ñ?Ô?Ø˜˜a t¤zð Dñ 
ô 
ð 	
r   c           	      ó  — d                      |                      d¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz{0}({2}, {1}, {3})zscipy.special.lpmvr   r   rþ   ©r@   rh   rO   rc   rX   s     r   Ú_print_assoc_legendrez"SciPyPrinter._print_assoc_legendreU  sk   € Ø#×*Ò*Ø×ÒÐ 4Ñ5Ô5Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%ñ	'ô 'ð 	'r   c           	      óö   — d                      |                      d¦  «        |                      d¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nú{0}({2})*{1}({2}, {3})úscipy.special.gammazscipy.special.gammaincr   r   rT  rX   s     r   r  zSciPyPrinter._print_lowergamma\  sh   € Ø'×.Ò.Ø×ÒÐ 5Ñ6Ô6Ø×ÒÐ 8Ñ9Ô9Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%ñ	'ô 'ð 	'r   c           	      óö   — d                      |                      d¦  «        |                      d¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )NrW  rX  zscipy.special.gammainccr   r   rT  rX   s     r   r  zSciPyPrinter._print_uppergammac  sh   € Ø'×.Ò.Ø×ÒÐ 5Ñ6Ô6Ø×ÒÐ 9Ñ:Ô:Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%ñ	'ô 'ð 	'r   c                 ó&  ‡ — ‰                       d¦  «        }‰                       d¦  «        }ˆ fd„|j        D ¦   «         }d|› d|d         › d|d         › d|d         › d	|› d|d         › d|d         › d|d
         › d|› d|d         › d|d         › d�S )Núscipy.special.betainczscipy.special.betac                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rN   r�   s     €r   r   z/SciPyPrinter._print_betainc.<locals>.<listcomp>m  s%   ø€ Ð6Ð6Ð6 S�—’˜CÑ Ô Ð6Ð6Ð6r   rn   r   rK   r   é   z) - rþ   z))             * ro   )rh   rc   )rH   rY   Úbetaincr:  rc   s   `    r   Ú_print_betainczSciPyPrinter._print_betaincj  s  ø€ Ø×%Ò%Ð&=Ñ>Ô>ˆØ×"Ò"Ð#7Ñ8Ô8ˆØ6Ð6Ð6Ð6¨D¬IÐ6Ñ6Ô6ˆð,�7ð ,ð ,˜T !œWð ,ð ,¨¨Q¬ð ,ð ,°4¸´7ð ,ð ,Àð ,ð ,È$ÈqÌ'ð ,ð ,ÐUYÐZ[ÔU\ð ,ð ,Ð`dÐefÔ`gð ,ð ,Øð,ð ,Ø˜1”gð,ð ,Ø!% a¤ð,ð ,ð ,ð 	,r   c           
      óJ  — d                      |                      d¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz'{0}({1}, {2}, {4}) - {0}({1}, {2}, {3})r[  r   r   rþ   r]  rT  rX   s     r   Ú_print_betainc_regularizedz'SciPyPrinter._print_betainc_regularizedq  s€   € Ø8×?Ò?Ø×ÒÐ 7Ñ8Ô8Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%Ø�KŠK˜œ	 !œÑ%Ô%ñ'ô 'ð 	'r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nú	{}({})[0]úscipy.special.fresnelr   rT  rX   s     r   r  zSciPyPrinter._print_fresnelsy  óA   € Ø×!Ò!Ø×#Ò#Ð$;Ñ<Ô<Ø—’˜DœI aœLÑ)Ô)ñ+ô +ð 	+r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nú	{}({})[1]rd  r   rT  rX   s     r   r  zSciPyPrinter._print_fresnelc~  re  r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nrc  úscipy.special.airyr   rT  rX   s     r   Ú_print_airyaizSciPyPrinter._print_airyaiƒ  óA   € Ø×!Ò!Ø×#Ò#Ð$8Ñ9Ô9Ø—’˜DœI aœLÑ)Ô)ñ+ô +ð 	+r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nrg  ri  r   rT  rX   s     r   Ú_print_airyaiprimezSciPyPrinter._print_airyaiprimeˆ  rk  r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz	{}({})[2]ri  r   rT  rX   s     r   Ú_print_airybizSciPyPrinter._print_airybi�  rk  r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz	{}({})[3]ri  r   rT  rX   s     r   Ú_print_airybiprimezSciPyPrinter._print_airybiprime’  rk  r   c                 óF   — |                        |j        |j        Ž ¦  «        S rM   ©rO   Ú_eval_rewrite_as_zetarc   rX   s     r   Ú_print_bernoullizSciPyPrinter._print_bernoulli—  s!   € à�{Š{Ð5˜4Ô5°t´yÐAÑBÔBÐBr   c                 óF   — |                        |j        |j        Ž ¦  «        S rM   rs  rX   s     r   Ú_print_harmoniczSciPyPrinter._print_harmonic›  s!   € Ø�{Š{Ð5˜4Ô5°t´yÐAÑBÔBÐBr   c           	      ó  ‡ — t          |¦  «        \  }}t          |¦  «        dk    rA‰                      d¦  «        }dt          t	          ‰ j        |d         ¦  «        ¦  «        z  }nI‰                      d¦  «        }d                     d                     ˆ fd„|D ¦   «         ¦  «        ¦  «        }d	                     |d                     t	          ‰ j        |¦  «        ¦  «        ‰                      |j        d         ¦  «        |¦  «        S )
Nr   zscipy.integrate.quadz%s, %sr   zscipy.integrate.nquadr\   rK   c              3   ób   •K  — | ])}d t          t          ‰j        |¦  «        ¦  «        z  V — Œ*dS )z(%s, %s)N)ÚtupleÚmaprO   )r   ÚlrH   s     €r   rQ   z/SciPyPrinter._print_Integral.<locals>.<genexpr>§  sU   øè è € ð 0Ið 0IØ<=�
�U¥3 t¤{°AÑ#6Ô#6Ñ7Ô7Ñ7ð0Ið 0Ið 0Ið 0Ið 0Ið 0Ir   z{}(lambda {}: {}, {})[0])	r   r“   rh   rz  r{  rO   r@   rR   rc   )rH   r+   Úintegration_varsÚlimitsÚ
module_strÚ	limit_strs   `     r   Ú_print_IntegralzSciPyPrinter._print_Integralž  s  ø€ Ý#:¸1Ñ#=Ô#=Ñ Ð˜&åˆv‰;Œ;˜!ÒÐà×,Ò,Ð-CÑDÔDˆJØ ¥5­¨T¬[¸&À¼)Ñ)DÔ)DÑ#EÔ#EÑEˆIˆIà×,Ò,Ð-DÑEÔEˆJØŸš d§i¢ið 0Ið 0Ið 0Ið 0IØAGð0Iñ 0Iô 0Iñ 'Iô 'Iñ Jô JˆIð *×0Ò0ØØ—	’	�#˜dœkÐ+;Ñ<Ô<Ñ=Ô=Ø—’˜AœF 1œIÑ&Ô&Øñ	ô ð 	r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nrc  úscipy.special.sicir   rT  rX   s     r   Ú	_print_SizSciPyPrinter._print_Si°  rk  r   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nrg  rƒ  r   rT  rX   s     r   Ú	_print_CizSciPyPrinter._print_Ciµ  rk  r   rM   )rñ   r  r  r;   rD   Ú_scipy_known_functionsr  Ú_scipy_known_constantsrF   rR  Ú_print_ImmutableSparseMatrixrU  r  r  r_  ra  r  r  rj  rm  ro  rq  ru  rw  r�  r„  r†  r  r  s   @r   rH  rH  =  sp  ø€ € € € € à
8ˆ\ÔÐ
8Ð!7Ð
8€CØ
8ˆ\ÔÐ
8Ð!7Ð
8€Cð6ð 6ð 6ð 6ð 6ð 6ð

ð 

ð 

ð $:Ð ð'ð 'ð 'ð'ð 'ð 'ð'ð 'ð 'ð,ð ,ð ,ð'ð 'ð 'ð+ð +ð +ð
+ð +ð +ð
+ð +ð +ð
+ð +ð +ð
+ð +ð +ð
+ð +ð +ð
Cð Cð CðCð Cð Cðð ð ð$+ð +ð +ð
+ð +ð +ð +ð +ð +ð +r   rH  c                 ó    — i | ]\  }}|d |z   “ŒS ©zcupy.r   r   s      r   r7   r7   Á  ó"   € ÐTÐTÐT©T¨Q°˜˜W q™[ÐTÐTÐTr   c                 ó    — i | ]\  }}|d |z   “ŒS r‹  r   r   s      r   r7   r7   Â  rŒ  r   c                   ó0   ‡ — e Zd ZdZdZeZeZdˆ fd„	Z	ˆ xZ
S )ÚCuPyPrinterz`
    CuPy printer which handles vectorized piecewise functions,
    logical operators, etc.
    ÚcupyNc                 óL   •— t          ¦   «                              |¬¦  «         d S )Nr>   )rE   rF   rG   s     €r   rF   zCuPyPrinter.__init__Î  s$   ø€ Ý‰Œ×Ò (ÐÑ+Ô+Ð+Ð+Ð+r   rM   )rñ   r  r  r	  rA   Ú_cupy_known_functionsrD   Ú_cupy_known_constantsr  rF   r  r  s   @r   r�  r�  Ä  sX   ø€ € € € € ðð ð
 €GØ
€CØ
€Cð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r   r�  c                 ó    — i | ]\  }}|d |z   “ŒS ©z
jax.numpy.r   r   s      r   r7   r7   Ø  ó#   € ÐWÐWÐW±°°1˜˜<¨!Ñ+ÐWÐWÐWr   c                 ó    — i | ]\  }}|d |z   “ŒS r•  r   r   s      r   r7   r7   Ù  r–  r   c                   ó<   ‡ — e Zd ZdZdZeZeZdˆ fd„	Z	d„ Z
d„ Zˆ xZS )Ú
JaxPrinterz_
    JAX printer which handles vectorized piecewise functions,
    logical operators, etc.
    z	jax.numpyNc                 óZ   •— t          ¦   «                              |¬¦  «         d| _        d S )Nr>   Ú_jaxcode)rE   rF   rC   rG   s     €r   rF   zJaxPrinter.__init__å  s,   ø€ Ý‰Œ×Ò (ÐÑ+Ô+Ð+Ø%ˆÔÐÐr   c                 óà   ‡ — d                      ‰                      ‰ j        dz   ¦  «        ‰                      ‰ j        ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )rÁ   rÙ   z.allrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z(JaxPrinter._print_And.<locals>.<genexpr>ï  ó-   øè è € Ð7Ð7¨�T—[’[ ‘^”^Ð7Ð7Ð7Ð7Ð7Ð7r   rÄ   rX   s   ` r   rÅ   zJaxPrinter._print_Andê  ól   ø€ à-×4Ò4Ø×Ò ¤¨vÑ 5Ñ6Ô6Ø×Ò ¤Ñ-Ô-Ø�HŠHÐ7Ð7Ð7Ð7¨T¬YÐ7Ñ7Ô7Ñ7Ô7ñ
ô 
ð 	
r   c                 óà   ‡ — d                      ‰                      ‰ j        dz   ¦  «        ‰                      ‰ j        ¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¦  «        S )rÇ   rÙ   z.anyrª   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rM   rN   r^   s     €r   rQ   z'JaxPrinter._print_Or.<locals>.<genexpr>÷  rž  r   rÄ   rX   s   ` r   rÉ   zJaxPrinter._print_Orò  rŸ  r   rM   )rñ   r  r  r	  rA   Ú_jax_known_functionsrD   Ú_jax_known_constantsr  rF   rÅ   rÉ   r  r  s   @r   r™  r™  Û  sv   ø€ € € € € ðð ð €Gà
€CØ
€Cð&ð &ð &ð &ð &ð &ð

ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
r   r™  N)'Ú
sympy.corer   Úsympy.core.functionr   Úsympy.core.powerr   Úpycoder   r   r	   r
   r   r   Úcodeprinterr   Úsplitr   rN  Ú	_in_numpyÚdictÚ_known_functions_numpyÚ_known_constants_numpyr
  r  r;   rŽ   ÚsetattrÚconstÚ_known_functions_scipy_specialÚ _known_constants_scipy_constantsr‡  rˆ  rH  r’  r“  r�  r¢  r£  r™  r   r   r   ú<module>r²     sÂ  ðØ Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø  Ð  Ð  Ð  Ð  Ð  ð Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  Kð  KØ $Ð $Ð $Ð $Ð $Ð $ð 4×9Ò9Ñ;Ô;€ØXÐXÐ ;Ð 5Ô ;Ñ =Ô =ÐXÑXÔX€	Ø˜˜ið ð ØØØØØØØØØØØØð,ð ,ð ð Ð ð Ø
ØØØðð Ð ð VÐUÐ6L×6RÒ6RÑ6TÔ6TÐUÑUÔUÐ ØUÐUÐ6L×6RÒ6RÑ6TÔ6TÐUÑUÔUÐ ðn7ð n7ð n7ð n7ð n7�<Ð!2ñ n7ô n7ð n7ð` #ð ?ð ?€DØ€GˆLÐ* DÐ*Ð*Ð,=Ñ>Ô>Ð>Ð>à#ð Að A€EØ€GˆLÐ+ EÐ+Ð+Ð-?Ñ@Ô@Ð@Ð@ð"Øˆ&ð"à	ˆ5ð"ð ˆFð"ð ˆtð	"ð
 ˆtð"ð ˆtð"ð ˆtð"ð ˆWð"ð ˆWð"ð �ð"ð ˆWð"ð �	ð"ð ˆuð"ð �ð"ð �vð"ð  ˆmð!"ð" Ð#ð#"ð$  ØØØØØ(ØØð3"ð "ð "Ð ð: "Ø
ð$ð $Ð  ð gÐfÐ?]×?cÒ?cÑ?eÔ?eÐfÑfÔfÐ ØjÐjÐAa×AgÒAgÑAiÔAiÐjÑjÔjÐ ð{+ð {+ð {+ð {+ð {+�<ñ {+ô {+ð {+ðz #ð ?ð ?€DØ€GˆLÐ* DÐ*Ð*Ð,=Ñ>Ô>Ð>Ð>à#ð Að A€EØ€GˆLÐ+ EÐ+Ð+Ð-?Ñ@Ô@Ð@Ð@ð UÐTÐ5K×5QÒ5QÑ5SÔ5SÐTÑTÔTÐ ØTÐTÐ5K×5QÒ5QÑ5SÔ5SÐTÑTÔTÐ ð,ð ,ð ,ð ,ð ,�,ñ ,ô ,ð ,ð "ð >ð >€DØ€GˆKÐ) 4Ð)Ð)Ð+<Ñ=Ô=Ð=Ð=à"ð @ð @€EØ€GˆKÐ* 5Ð*Ð*Ð,>Ñ?Ô?Ð?Ð?ð XÐWÐ8N×8TÒ8TÑ8VÔ8VÐWÑWÔWÐ ØWÐWÐ8N×8TÒ8TÑ8VÔ8VÐWÑWÔWÐ ð
ð 
ð 
ð 
ð 
�ñ 
ô 
ð 
ð> !ð =ð =€DØ€GˆJÐ( $Ð(Ð(Ð*;Ñ<Ô<Ð<Ð<à!ð ?ð ?€EØ€GˆJÐ) %Ð)Ð)Ð+=Ñ>Ô>Ð>Ð>ð?ð ?r   