o
    Ö­j  ã                	   @   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   úc/var/www/html/CropPilot/venv/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(    		
