
    Zi                     x    d Z ddlZddlZddlmZmZmZmZmZm	Z	 ddl
mZmZmZmZmZmZmZ  G d d          ZdS )z" Test functions for linalg module
    N)arangearraydotfloat64linalg	transpose)assert_assert_almost_equalassert_array_almost_equalassert_array_equalassert_array_lessassert_equalassert_raisesc                   P   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ddg          d             Zej                            dddgdz   ej        d          g          d             Zej                            d          d             Zd ZdS )TestRegressionc                 &   t          g d          }t          dt                    }|                    d          }|dz  }t	          j        |          \  }}|                                 |                                 t          ||           d S )N)yӝ'Y@        yF.<2/3        yʹLTW9>/@yʹLTW9>/y=J&        ytV)忷B$@ytV)忷B$yZynFr62@        y(3%@        y:@        yCr~        yYqs`<        yt&Aۼ           dtype)   r      )r   r   r   reshaper   eigsortr   )selfrvaavaves        M/usr/local/lib/python3.11/dist-packages/numpy/linalg/tests/test_regression.pytest_eig_buildzTestRegression.test_eig_build   s     , , , - - 7'***IIhFAB
			


!"c*****    c                     g d}t          g dg dg dg          }t          j        |          \  }}t          ||           d S )N)g"&Q@ggdV@g7Z@)g'UlS@4h@%pJ/@)r$   g+>V@研qi0)r%   r&   gJ%~X@)r   r   eighr   )r   rvalscovvalsvecss        r    test_eigh_buildzTestRegression.test_eigh_build,   sg    888<<<<<<<<<> ? ? [%%
d!$.....r"   c                    t          ddgddgddgddgg          }|j        \  }}t          j        |          \  }}}t	          t          |d d |d f                   |          }t          |t          j        d                     d S )N              ?       @      @)   r2   )	r   shaper   svdr   r   r   npzeros)r   r   mnusvhbs           r    test_svd_buildzTestRegression.test_svd_build7   s    B8b"XBx"b:;;w1:a==1b	!AAAqrrE(##Q''!!RXf%5%566666r"   c                 f    t          t          t          j        t	          g d          d           d S )N)r/   r0   r1   fro)r   
ValueErrorr   normr   )r   s    r    test_norm_vector_badargz&TestRegression.test_norm_vector_badargA   s,     	j&+u\\\/B/BEJJJJJr"   c                     t          ddgddggd          }t          |d          }t          j        |          }t          j        |          }t          ||           d S )NgC$ 3@g&ug.ܷ#@z>f8r   z<f8)r   r   choleskyr   )r   r   r<   apbps        r    test_lapack_endianz!TestRegression.test_lapack_endianF   ss    Y
+,.5:< < <!5!!!_Q_Q2r"""""r"   c                 n    t          j        dd          }t           j                            |           d S )Ni  B   )r5   eyer   r4   )r   xs     r    test_large_svd_32bitz#TestRegression.test_large_svd_32bitP   s-    F4
	ar"   c           	         dD ]}t           t          fD ]}t          j        ||          }t	          j        |d          }t          j        t          j        |          dk              }t          |d           t          t          j        	                    |          d           t          dt          j                            |d                     t	          j        |          }t          ||           d S )	N))      )rO   rO   )rO   rN   r   F)
compute_uvg      ?   r2   ord)floatcomplexr5   onesr   r4   count_nonzeroabsoluter   matrix_rankr   rA   svdvalsr   )r   r3   tr   wc	w_svdvalss          r    test_svd_no_uvzTestRegression.test_svd_no_uvU   s    + 
	8 
	8EG^ 	8 	8GE+++JqU333$R[^^c%9::Q"""RY22155q999!!RY^^A1^%=%=>>>"N1--	)!Y7777	8
	8 
	8r"   c                    t          j        t          j        ddg          ddgt                    }t          j        |          }t          |ddg           t          |j        t          j        d          k               t          j        |d          }t          |ddg           t          |j        t          j        d          k               t          j        |d          }t          |ddg           t          |j        t          j        d          k               t          t          t          j        |d           t          t          t          j        |d           t          t          t          j        |t           j
                   t          t          t          j        |t           j
                    t          t          t          j        |d           t          t          t          j        |d	           t          t          t          j        |d
           t          j        t          j        ddg          ddgg dgt                    }t          j        |          }t          |ddg           t          |j        t          j        d          k               t          j        |d          }t          |ddg           t          |j        t          j        d          k               t          t          t          j        |d           t          t          t          j        |t           j
                   t          t          t          j        |t           j
                    t          t          t          j        |d           t          t          t          j        |d           t          t          t          j        |d	           t          t          t          j        |d           t          t          t          j        |d
           t          t          t          j        |d           d S )Nr   rQ   r   r   rR   r2   r?   nuc)r   r   r   rN   )r5   r   objectr   rA   r   r	   r   r   r@   inf	TypeError)r   
testvectorrA   
testmatrixs       r    test_norm_object_arrayz%TestRegression.test_norm_object_arrayc   si   XrxA//A6fEEE
{:&&4!Q(((
bhy111222{:1---4!Q(((
bhy111222{:1---4!Q(((
bhy111222j&+zuEEEEj&+zuEEEEj&+zrvFFFFj&+zwGGGGj&+zqAAAAj&+zrBBBBj&+zrBBBBX!Q 0 0!Q77779@FH H H
 {:&&4!Q(((
bhy111222{:51114!Q(((
bhy111222ijeDDDDj&+zrvFFFFj&+zwGGGGj&+zqAAAAj&+zqAAAAj&+zrBBBBija@@@@ijbAAAAj&+zqAAAAAAr"   c                    d}d}t           j                            ||          dt           j                            ||          z  z   }t           j                            ||          dt           j                            ||          z  z   }|                    |          }t	          j        ||d           \  }}}}	t          ||           d S )N   F                 ?)rcond)r5   randomrandnr   r   lstsqr   )
r   sizen_rhsGr9   r<   u_lstsqresranksvs
             r    test_lstsq_complex_larger_rhsz,TestRegression.test_lstsq_complex_larger_rhs   s    IOOD$''"rytT/J/J*JJIOOD%((2	e0L0L+LLEE!HH!'a$!?!?!?dB!'1-----r"   upperTFc                     t           j                            t          j        d          |          }|j        dk    sJ d S )N)r   r   )rz   r   )r5   r   rD   r6   rr   )r   rz   rv   s      r    test_cholesky_empty_arrayz(TestRegression.test_cholesky_empty_array   s;     i  &!1!1 ??x1}}}}}}r"   rtolr.   rO   rO   c                     t          j        d          }t           j                            ||          }|j        dk    sJ d S )N)rO   rN   r2   )r}   r~   )r5   r6   r   rY   r3   )r   r}   rK   rv   s       r    test_matrix_rank_rtol_argumentz-TestRegression.test_matrix_rank_rtol_argument   sF     HYi##AD#11yD      r"   z-test is already testing threads with openblas)reasonc                    t          j        dt           j                  }t          j        |d|z  f          j        }t          j        ddgddgg          }t          j        d|z  |f          j        }t          d          D ]?}||z  }t          j        ||                                           }|dk    r
J d            @d S )	Ni  r   ir   rQ      FzHunexpected result from matmul, probably due to OpenBLAS threading issues)	r5   r   r   vstackTr   rangeisclosesum)r   rK   srcmatrixexpectediresult
mismatchess           r    test_openblas_threadingz&TestRegression.test_openblas_threading   s    
 IfBJ///iC!G%%'Aq6Aq6*++9cAgq\**,s 	A 	AA6\F:fh777<<>>JQA  @ A A A 	A 	Ar"   c                     t          j        d          dz  }|dt          j        t          j        |          d          z  z   }t           j                            |          }t          |d           d S )Ni N  iP  rm   i90  gmUG@)r5   r   rollflipr   rA   r
   )r   r   r<   rA   s       r    test_norm_linux_armz"TestRegression.test_norm_linux_arm   sc    Ieu$RWRWQZZ////y~~a  D"344444r"   N)__name__
__module____qualname__r!   r,   r=   rB   rG   rL   r_   ri   ry   pytestmarkparametrizer|   r5   r6   r   thread_unsafer   r    r"   r    r   r      s]       + + +.	/ 	/ 	/7 7 7K K K
# # #  
8 8 8+B +B +BZ
. 
. 
. [WtUm44  54
 [VcC519hbhtnn%EFF! ! GF! [&UVVA A WVA5 5 5 5 5r"   r   )__doc__r   numpyr5   r   r   r   r   r   r   numpy.testingr	   r
   r   r   r   r   r   r   r   r"   r    <module>r      s          @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @                 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5r"   