ó
    Û“,j6  ã                   óP   • S r SSKJr  SSKrS rS r " S S\5      r	S r
S rS	 rg)
zR
Author(s): Matthew Loper

See LICENCE.txt for licensing and contact information.
é    Nc                 ó$   • U R                  S5      $ )N)é   éÿÿÿÿ©Úreshape©ÚAs    ÚšC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\chumpy/utils.pyÚrowr   	   ó   € Ø�9‰9�WÓÐó    c                 ó$   • U R                  S5      $ )N)r   r   r   r   s    r
   Úcolr      r   r   c                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	Útimeré   c                 ó*   • SS K nUR                  5       $ ©Nr   )Útime)Úselfr   s     r
   r   Ú
timer.time   s   € ÛØ�y‰y‹{Ðr   c                 ó<   • SU l         U R                  5       U l        g r   )Ú_elapsedr   Ú_start©r   s    r
   Ú__init__Útimer.__init__   s   € ØˆŒØ—i‘i“kˆ�r   c                 óˆ   • U R                   b*  U R                  U R                  5       -   U R                   -
  $ U R                  $ ©N©r   r   r   r   s    r
   Ú__call__Útimer.__call__   s4   € Ø�;‰;Ñ"Ø—=‘= 4§9¡9£;Ñ.°·±Ñ<Ð<à—=‘=Ð r   c                 ó�   • U R                   c   eU =R                  U R                  5       U R                   -
  -  sl        S U l         g r   r    r   s    r
   ÚpauseÚtimer.pause   s6   € Ø�{‰{Ñ&Ð&Ð&Ø�Š˜Ÿ™› t§{¡{Ñ2Ñ2�Øˆ�r   c                 óL   • U R                   b   eU R                  5       U l         g r   )r   r   r   s    r
   ÚresumeÚtimer.resume    s   € Ø�{‰{Ñ"Ð"Ð"Ø—i‘i“kˆ�r   )r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r!   r$   r'   Ú__static_attributes__© r   r
   r   r      s   † òò"ò!ò
õ"r   r   c                 óJ   • U R                  5        H  nU" U/UQ70 UD6  M     g)z*
invoke func on each node of the dr graph
N)Útree_iterator)ÚnodeÚfuncÚargsÚkwargsÚ_nodes        r
   Údfs_do_func_on_graphr6   $   s)   € ð ×#Ñ#Ö%ˆÙˆUÐ$�TÒ$˜VÔ$ò &r   c                 ó   • g)zk
Examines a pair of matrices and determines if the result of their multiplication should be sparse or not.
F)ÚlenÚshapeÚsizeÚspÚissparseÚnpÚuniqueÚnonzeroÚallÚsumÚfloat)
ÚlhsÚrhsÚlhs_rowsÚlhs_colsÚrhs_rowsÚrhs_colsÚresult_sizeÚlhs_zero_rowsÚrhs_zero_colsÚ	num_zeross
             r
   Úsparse_is_desireablerM   ,   s   € ð r   c                 óX  • [         R                  " U 5      (       a  [         R                  " U5      (       dr  [        X5      (       ab  [         R                  " U 5      (       d  [         R                  " U 5      n [         R                  " U5      (       d  [         R                  " U5      nX4$ )z�
This function checks to see if a sparse output is desireable given the inputs and if so, casts the inputs to sparse in order to make it so.
)r;   r<   rM   Ú
csc_matrix)rC   rD   s     r
   Ú%convert_inputs_to_sparse_if_necessaryrP   Q   sm   € ô �;Š;�s×Ñ¤2§;¢;¨s×#3Ñ#3Ü ×)Ñ)Ü—;’;˜s×#Ñ#Ü—m’m CÓ(�ä—;’;˜s×#Ñ#Ü—m’m CÓ(�àˆ8€Or   )Ú__doc__Úscipy.sparseÚsparser;   Únumpyr=   r   r   Úobjectr   r6   rM   rP   r.   r   r
   Ú<module>rV      s8   ðñõ
 Û òòô"ˆFô "ò(%ò"3óJr   