
    Ugx                     p    d Z ddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ  G d d	          ZdS )
zTests for _sketches.py.    N)assert_assert_equal)clarkson_woodruff_transform)
cwt_matrix)issparserand)normc                   d   e Zd ZdZej                            d          ZdZdZ	dZ
dZg dZe                    ee	          Z eee	e
d	e
          Z eee	e
de
          Z eee	e
de
          ZeeeegZe                    ed           ej        e          z  Zd Zd Zd Zd Zd ZdS )TestClarksonWoodruffTransformz1
    Testing the Clarkson Woodruff Transform
    iGFseedi  d   皙?   )
iڦhiv7iSRir6xhi'@wiڷMiZiTzYi CiUf[csc)densityformatrandom_statecsrcoo   c                     | j         D ]G}| j        D ]=}t          || j        |          }t	          |j        | j        | j        fk               >Hd S Nr   )test_matricesseedsr   n_sketch_rowsr   shapen_cols)selfAr   sketchs       _/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_sketches.pytest_sketch_dimensionsz4TestClarksonWoodruffTransform.test_sketch_dimensions1   s}    # 	K 	KA
 K K4t)   );T[(IIJJJJ	K	K 	K    c                    | j         D ]x}| j        D ]n}t          | j        | j        |                                          }t          | j        | j        |                                          }t          ||           oyd S r   )r   r   r   r   n_rowstoarrayr   )r   r    r   S1S2s        r"   ,test_seed_returns_identical_transform_matrixzJTestClarksonWoodruffTransform.test_seed_returns_identical_transform_matrix9   s    # 	% 	%A
 % %&$  '))   &$  '))  R$$$$%	% 	%r$   c                 6   | j         D ]}| j        D ]}t          || j        |          }t          || j        |          }t	          |          r|                                }t	          |          r|                                }t          ||           d S r   )r   r   r   r   r   r'   r   )r   r    r   sketch1sketch2s        r"   test_seed_returns_identicallyz;TestClarksonWoodruffTransform.test_seed_returns_identicallyD   s    # 	/ 	/A
 / /5t)   6t)   G$$ 0%oo//GG$$ 0%oo//GWg..../	/ 	/r$   c                    d}| j         D ]}t          |          rt          |          }nt          j                            |          }| j        D ]z}t          || j        |          }t          |          rt          |          }nt          j                            |          }t          j        ||z
            d|z  k    r|dz  }{t          |dk               d S )Nr   r   r   r   )
r   r   r	   nplinalgr   r   r   absr   )r   n_errorsr    	true_normr   r!   sketch_norms          r"   $test_sketch_preserves_frobenius_normzBTestClarksonWoodruffTransform.test_sketch_preserves_frobenius_normS   s     # 	" 	"A{{ . GG		INN1--	
 
" 
"4t)   F## 9"&v,,KK"$).."8"8K6)k122S9_DDMH
" 	Ar$   c                    d}t          t          j        d                    }t          j                            | j                  }| j        D ][}t          | j        ||          }t          j                            |          }t          j        ||z
            d|z  k    r|dz  }\t          |dk               d S )Nr   g      @r   g      ?r   )
intr0   ceilr1   r	   xr   r   r2   r   )r   r3   r   r4   r   r!   r5   s          r"   !test_sketch_preserves_vector_normz?TestClarksonWoodruffTransform.test_sketch_preserves_vector_normj   s    BG$899::INN46**	J 	 	D0D  F )..00Kvi+-..y@@AAr$   N)__name__
__module____qualname____doc__r0   randomRandomStaterngr&   r   r   r   r   randnA_denser   A_cscA_csrA_coor   sqrtr:   r#   r*   r.   r6   r;    r$   r"   r   r      sd         )

Z

0
0C FFG MI I IE ii''GDC  E DC  E DC  E 	uM
 			&!wrwv.AK K K	% 	% 	%/ / /  .    r$   r   )r?   numpyr0   numpy.testingr   r   scipy.linalgr   scipy.linalg._sketchesr   scipy.sparser   r   scipy.sparse.linalgr	   r   rI   r$   r"   <module>rP      s          / / / / / / / / 4 4 4 4 4 4 - - - - - - ' ' ' ' ' ' ' ' $ $ $ $ $ $k k k k k k k k k kr$   