ó
    ‹*£h•  ã                   óZ   • S r SSKrSSKr/ SQr/ SQrS	S jrS r\" 5       rSqS
S jr	S r
g)zMSimple tools for timing functions' execution, when IPython is not available. é    N)g      ð?g     @�@g    €„.Ag    eÍÍA)ÚsÚmsu   Î¼sÚnsc           	      óž  • [         R                  " XS9nSu  pE[        SS5       H)  nUR                  U5      S:¼  a    OUb  XR:¼  a    O	US-  nM+     [        UR	                  XE5      5      U-  nUS:”  aB  [        [        [        R                  " [        R                  " U5      5      S-  5      * S5      nOSnXWU[        U   -  [        U   4$ )z1Adaptively measure execution time of a function. )Úsetup)é   é   r	   é
   gš™™™™™É?g        r   )ÚtimeitÚTimerÚrangeÚminÚrepeatÚintÚmathÚfloorÚlog10Ú_scalesÚ_units)	Úfuncr   ÚlimitÚtimerr   ÚnumberÚiÚtimeÚorders	            ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/utilities/timeutils.pyÚtimedr      s¼   € ä�LŠL˜Ñ+€EØ�N€Fä�1�bŽ\ˆØ�<‰<˜Ó 3Ó&ÙØÑ 6£?Ùà�b‰LŠFñ ô ˆu�|‰|˜FÓ+Ó,¨vÑ5€DàˆcƒzÜ”SœŸš¤D§J¢J¨tÓ$4Ó5¸Ñ:Ó;Ð;¸QÓ?‰àˆà˜$œw u™~Ñ-¬v°e©}Ð=Ð=ó    c                  óª   • SS K n U R                  SS5      nUR                  S5       Vs/ s H  o"R                  5       PM     nn[	        U5      $ s  snf )Nr   ÚSYMPY_TIMINGSÚ Ú,)ÚosÚgetenvÚsplitÚstripÚset)r$   ÚresÚxs      r   Ú__do_timingsr+   %   sC   € ÛØ
�)‰)�O RÓ
(€CØ!Ÿi™i¨œnÓ
-šn˜�7‰7Ž9™n€CÐ
-Üˆs‹8€Oùò .s   ªAc                 ót   • [        SU-  SU S   U S   U S   4-  5        U S    H  n[        X!S-   5        M     g )NÚ-z	%.2f %s%sé   r   r   r	   )ÚprintÚ_print_timestack)ÚstackÚlevelr   s      r   r0   r0   /   sB   € Ü	ˆ#ˆe‰)�[ E¨!¡H¨e°A©h¸¸a¹Ð#AÑAÔBØ�1ŒXˆÜ˜ A™IÖ&ò r   c                 ó   ^ • U 4S jnU$ )Nc                 ó.   >^ • T[         ;  a  T $ U 4S jnU$ )Nc                  óâ   >• SSK J n  [        nTR                  / SU /qU" 5       nT" U 0 UD6nU" 5       nXd-
  [        S'   Ub  US   R                  [        5        UqU$ [	        [        5        S qU$ )Nr   )r   r.   r	   )r   Ú
_timestackÚ	func_nameÚappendr0   )ÚargsÚkwargsr   ÚoldtimestackÚt1ÚrÚt2r   s          €r   ÚwrapperÚ,timethis.<locals>.decorator.<locals>.wrapper:   s}   ø€ Ý!ä%ˆLØŸ.™.¨"¨a°Ð6ˆJÙ“ˆBÙ�dÐ%˜fÑ%ˆAÙ“ˆBØ™GŒJ�q‰MØÑ'Ø˜Q‘×&Ñ&¤zÔ2Ø)�
ð ˆHô !¤Ô,Ø!�
ØˆHr   )Ú_do_timings)r   r?   Únames   ` €r   Ú	decoratorÚtimethis.<locals>.decorator6   s   ù€ Ø”{Ó"ØˆKõ	ð  ˆr   © )rB   rC   s   ` r   ÚtimethisrF   5   s   ø€ õð* Ðr   )ÚpassN)r	   )Ú__doc__r   r   r   r   r   r+   rA   r6   r0   rF   rE   r   r   Ú<module>rI      s>   ðÙ Só Û ò €Ú	8€ô>ò2ñ ‹n€Ø€
ô'ór   