o
    h                  	   @   s   d Z ddlZddlmZ ddlmZmZmZm	Z	 ddl
mZmZ ddlZddlmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zejjdddd Zejdeeejeejgejdeeejeejgdd Zejdee	gdd Z dS )z1Test functions for linalg._solve_toeplitz module
    N)levinson)solvetoeplitzsolve_toeplitzmatmul_toeplitz)assert_equalassert_allclose)raisesc                  C   s   t jd} dD ]e}| |}|  dk r|d| |  }| |}|  dk r2|d| |  }| |}|  dk rF|d| |  }t||f|}tt||d|}t|| t||d}tt||}t|| qd S )N  )         
   g      ?              ?rb)	nprandomRandomStaterandnrandr   r   r   r   )r   ncr   yactualdesired r   Z/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/linalg/tests/test_solve_toeplitz.pytest_solve_equivalence   s$   



r    c                  C   s   t jd} | d}| d}dD ]0}dD ]+}| j| | }t||f|d}tt||d|}t|j| t|j| t	|| qqd S )Nr
      )r   r   ))r!   )r!   r   )r!   r   r   r   r   )
r   r   r   r   r   r   r   r   shaper   )r   r   r   offsetyshaper   r   r   r   r   r   test_multiple_rhs%   s   

r%   c                  C   sF   g d} g d}g d}t | |f|}tt| |d|}t|| d S )N)r   r   r!      )r   r   	      )   r   r!   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   test_native_list_arguments3   s   r*   c                  C   sR   t jd} d}| |}| |}| |}d|d< tt jjt||f|d d S )Nr
   r!   r   r   r   r   r   r   assert_raiseslinalgLinAlgErrorr   )r   r   r   r   r   r   r   r   test_zero_diag_error<   s   




r/   c                  C   s6   t jd} g d}| d}tt jjt||d d S )Nr
   )r   r   r   r   r   r+   )r   r   r   r   r   r   test_wikipedia_counterexampleH   s   
r0   c                  C   s0  t jd} | d}| dd }dg}dg}tddD ],}|t|d |d  |d| dd  |t|d |d  |d| dd  qt |dd	d |d d f}t |dd	d  |d d f}t	||dd  d\}}	t	||dd  d\}}
t
||	d d  t
||
d d  d S )
Nr
   r   r   r   r   r   r   )r   r   r   r   rangeappendr   concatenateconjr   r   )r   y_dy_zreflection_coeffs_dreflection_coeffs_zi
y_d_concat
y_z_concat_ref_dref_zr   r   r   test_reflection_coeffsQ   s   
*, $rA   z!Instability of Levinson iteration)reasonc                  C   sT   t jd} d}dt |d  }| |}t||d}tt||}t|| d S )Nr
   d   g?r   r   )	r   r   r   aranger   r   r   r   r   )r   r   r   r   	solution1	solution2r   r   r   test_unstableg   s   	
rG   dt_cdt_bc                 C   s   t jg | d}t jg |d}t||}|jdksJ |jtt jddg| dt jd|djks1J t jd|d}t||}|jdksDJ |j|jksLJ d S )N)dtype)r   r   r   )r   r   )r   arrayr   r"   rJ   onesempty)rH   rI   r   r   xx1r   r   r   
test_empty{   s   

rP   func                 C   s   t jd}|d}|d}|d}d}tjt|d | || W d    n1 s.w   Y  tjt|d | ||f| W d    d S 1 sMw   Y  d S )Nl   ! )r   r   r!      z:Beginning in SciPy 1.17, multidimensional input will be...)match)r   r   default_rngpytestwarnsFutureWarning)rQ   rngr   r   b_or_xmessager   r   r   test_nd_FutureWarning   s   


"r[   )!__doc__numpyr   scipy.linalg._solve_toeplitzr   scipy.linalgr   r   r   r   numpy.testingr   r   rU   r	   r,   r    r%   r*   r/   r0   rA   markxfailrG   parametrizeintfloatfloat32complex	complex64rP   r[   r   r   r   r   <module>   s(    		
