
    vi                     p    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y)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                   F   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
ddg      d        Zej                  j                  dddgdz   ej"                  d      g      d        Zej                  j'                  d      d        Zd Zy)TestRegressionc                     t        g d      }t        dt              }|j                  d      }|dz  }t	        j
                  |      \  }}|j                          |j                          t        ||       y )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        _/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/numpy/linalg/tests/test_regression.pytest_eig_buildzTestRegression.test_eig_build   sc     , - 7'*IIhFAB
	
!"c*    c                 |    g d}t        g dg dg dg      }t        j                  |      \  }}t        ||       y )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,   s=    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             y )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   ss    B8b"XBx"b:;ww1::a=1b	!AqrE(#Q'!!RXXf%56r"   c                 Z    t        t        t        j                  t	        g d      d       y )N)r/   r0   r1   fro)r   
ValueErrorr   normr   )r   s    r    test_norm_vector_badargz&TestRegression.test_norm_vector_badargA   s     	j&++u\/BEJr"   c                     t        ddgddggd      }t        |d      }t        j                  |      }t        j                  |      }t        ||       y )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   sU    Y
+,.5:<!5!__Q__Q2r"r"   c                 n    t        j                  dd      }t         j                  j                  |       y )Ni  B   )r5   eyer   r4   )r   xs     r    test_large_svd_32bitz#TestRegression.test_large_svd_32bitP   s"    FF4
		ar"   c           	         dD ]  }t         t        fD ]  }t        j                  ||      }t	        j
                  |d      }t        j                  t        j                  |      dkD        }t        |d       t        t        j                  j                  |      d       t        dt        j                  j                  |d             t	        j                  |      }t        ||         y )	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    + 
	8EG^ 	8GGE+JJqU3$$R[[^c%9:Q"RYY2215q9!!RYY^^A1^%=>"NN1-	)!Y7	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      k7         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       y )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   s   XXrxxA/A6fE
{{:&4!Q(

bhhy112{{:1-4!Q(

bhhy112{{:1-4!Q(

bhhy112j&++zuEj&++zuEj&++zrvvFj&++zwGj&++zqAj&++zrBj&++zrBXX!Q 0!Q779@FH
 {{:&4!Q(

bhhy112{{:514!Q(

bhhy112ijeDj&++zrvvFj&++zwGj&++zqAj&++zqAj&++zrBija@ijbAj&++zqAr"   c                    d}d}t         j                  j                  ||      dt         j                  j                  ||      z  z   }t         j                  j                  ||      dt         j                  j                  ||      z  z   }|j                  |      }t	        j
                  ||d       \  }}}}	t        ||       y )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    IIOOD$'"ryytT/J*JJIIOOD%(2		e0L+LLEE!H!'a$!?dB!'1-r"   upperTFc                     t         j                  j                  t        j                  d      |      }|j                  dk(  sJ y )N)r   r   )rz   r   )r5   r   rD   r6   rr   )r   rz   rv   s      r    test_cholesky_empty_arrayz(TestRegression.test_cholesky_empty_array   s6     ii  &!1 ?xx1}}r"   rtolr.   rO   rO   c                     t        j                  d      }t         j                  j                  ||      }|j                  dk(  sJ y )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   s=     HHYii##AD#1yyD   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 ]8  }||z  }t        j                  ||       j                         }|dk7  s3J d        y )Ni  r   ir   rQ      zHunexpected 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    
 IIfBJJ/iiC!G%''Aq6Aq6*+99cAgq\*,,s 	AA6\F::fh77<<>JQA  @ Au		Ar"   c                     t        j                  d      dz  }|dt        j                  t        j                  |      d      z  z   }t         j                  j                  |      }t        |d       y )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   sT    IIeu$RWWRWWQZ///yy~~a D"3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K
#
8+BZ
. [[WtUm4 5
 [[VcC519hbhhtn%EF! G! [[&UVA WA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      s3      @ @  k5 k5r"   