
    Ed                     ^    d Z ddlZddlZg dZg dZddZd Z e            a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    eA)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	            9lib/python3.11/site-packages/sympy/utilities/timeutils.pytimedr      s    LU+++ENFF1b\\  <<3& 	E 	6U? 	EbLFFu||FF++,,v5Dcz SDJt$4$455:;;;Q??D$wu~-ve}==    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     
-
-
-17799
-
-
-r    ,)osgetenvsplitset)r+   ress     r   __do_timingsr0   %   sF    III
))OR
(
(C
-
-ciinn
-
-
-Cs88Or    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!HeAha#AABBB1X ' 'EAI&&&&' '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6JBd%f%%ABGJqM "Q&&z222)

 ,,,!
Hr    )_do_timings)r   rD   names   ` r   	decoratorztimethis.<locals>.decorator6   s6    {" 	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   lnn
' ' ' '    r    