§
    PŠtj•  ã                   ó^   — d Z ddlZddlZg d¢Zg d¢Zdd„Zd„ Z e¦   «         Zdadd	„Z	d
„ Z
dS )zMSimple tools for timing functions' execution, when IPython is not available. é    N)g      ð?g     @�@g    €„.Ag    eÍÍA)ÚsÚmsu   Î¼sÚnsÚpassc           	      óØ  — t          j        | |¬¦  «        }d\  }}t          dd¦  «        D ],}|                      |¦  «        dk    r n|�||k    r n|dz  }Œ-t          |                     ||¦  «        ¦  «        |z  }|dk    rFt          t          t          j        t          j        |¦  «        ¦  «        dz  ¦  «         d¦  «        }nd}|||t          |         z  t          |         fS )	z1Adaptively measure execution time of a function. )Úsetup)é   é   r
   é
   gš™™™™™É?Ng        r	   )ÚtimeitÚTimerÚrangeÚminÚrepeatÚintÚmathÚfloorÚlog10Ú_scalesÚ_units)	Úfuncr   ÚlimitÚtimerr   ÚnumberÚiÚtimeÚorders	            úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/utilities/timeutils.pyÚtimedr      sï   € åŒL˜ UÐ+Ñ+Ô+€EØ�N€FˆFå�1�b‰\Œ\ð ð ˆØ�<Š<˜ÑÔ 3Ò&Ð&ØˆEØÐ 6¨U¢? ?ØˆEà�b‰LˆFˆFåˆu�|Š|˜F FÑ+Ô+Ñ,Ô,¨vÑ5€Dàˆc‚z€zÝ•S�œ¥D¤J¨tÑ$4Ô$4Ñ5Ô5¸Ñ:Ñ;Ô;Ð;¸QÑ?Ô?ˆˆàˆà�D˜$�w uœ~Ñ-­v°e¬}Ð=Ð=ó    c                  ó’   — dd l } |                      dd¦  «        }d„ |                     d¦  «        D ¦   «         }t          |¦  «        S )Nr   ÚSYMPY_TIMINGSÚ c                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Ústrip)Ú.0Úxs     r   ú
<listcomp>z __do_timings.<locals>.<listcomp>(   s    € Ð
-Ð
-Ð
-˜ˆ1�7Š7‰9Œ9Ð
-Ð
-Ð
-r    ú,)ÚosÚgetenvÚsplitÚset)r+   Úress     r   Ú__do_timingsr0   %   sF   € Ø€I€I€IØ
�)Š)�O RÑ
(Ô
(€CØ
-Ð
-˜cŸiši¨™nœnÐ
-Ñ
-Ô
-€CÝˆs‰8Œ8€Or    r
   c                 ó˜   — t          d|z  d| d         | d         | d         fz  ¦  «         | d         D ]}t          ||dz   ¦  «         Œd S )Nú-z	%.2f %s%sé   r   r	   r
   )ÚprintÚ_print_timestack)ÚstackÚlevelr   s      r   r5   r5   /   sb   € Ý	ˆ#ˆe‰)�[ E¨!¤H¨e°A¬h¸¸a¼Ð#AÑAÑBÔBÐBØ�1ŒXð 'ð 'ˆÝ˜˜E A™IÑ&Ô&Ð&Ð&ð'ð 'r    c                 ó   ‡ — ˆ fd„}|S )Nc                 ó*   •‡ — ‰t           vr‰ S ˆ fd„}|S )Nc                  ó   •— ddl m } t          }‰j        g d| ga |¦   «         } ‰| i |¤Ž} |¦   «         }||z
  t          d<   |�#|d                              t          ¦  «         |ant	          t          ¦  «         d a|S )Nr   )r   r3   r
   )r   Ú
_timestackÚ	func_nameÚappendr5   )ÚargsÚkwargsr   ÚoldtimestackÚt1ÚrÚt2r   s          €r   Úwrapperz,timethis.<locals>.decorator.<locals>.wrapper:   sž   ø€ Ø!Ð!Ð!Ð!Ð!Ð!å%ˆLØœ.¨"¨a°Ð6ˆJØ�‘”ˆBØ��dÐ%˜fÐ%Ð%ˆAØ�‘”ˆBØ ™G�J�q‰MØÐ'Ø˜Q”×&Ò&¥zÑ2Ô2Ð2Ø)�
�
å ¥Ñ,Ô,Ð,Ø!�
ØˆHr    )Ú_do_timings)r   rD   Únames   ` €r   Ú	decoratorztimethis.<locals>.decorator6   s4   øø€ Ø•{Ð"Ð"ØˆKð	ð 	ð 	ð 	ð 	ð  ˆr    r%   )rF   rG   s   ` r   ÚtimethisrH   5   s$   ø€ ðð ð ð ð ð* Ðr    )r   N)r
   )Ú__doc__r   r   r   r   r   r0   rE   r;   r5   rH   r%   r    r   ú<module>rJ      s™   ðØ SÐ Sð €€€Ø €€€ð Ð
Ð
€Ø	8Ð	8Ð	8€ð>ð >ð >ð >ð2ð ð ð ˆl‰nŒn€Ø€
ð'ð 'ð 'ð 'ðð ð ð ð r    