
    \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    eA)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	            Q/var/www/auris/envauris/lib/python3.13/site-packages/sympy/utilities/timeutils.pytimedr      s    LL+ENF1b\<<3&6?bLF  u||F+,v5DczSDJJt$45:;;Q?$wu~-ve}==    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    
))OR
(C!iin
-n779nC
-s8O .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!HeAha#AAB1XAI& 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6JBd%f%ABGJqM'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   