U
    Kvfe                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ ddl	m
Z ejdejfejdejfejd	ejfgZejd
fejdfejd
fejd
fgZdejejgZe jdee jdedd Ze jdedd ZdS )    N)assert_allclose)norms)_approx_fprime_scalar   )results_norms)g      ?g      @g       @)   )gQ? )gffffff?intdtypecasec              
      s~  | \}}}|t jfkr$|tjkr$d S || tjddddddddd	g	|d
}|}|}|}|}	t	||jddd t	||jddd t	||jddd t	|	|jddd t
|d}
|j|
kst|j|
kst|j|
kst|	j|
kstt|j}t	||jddd t|j}t	||jddd ddddg}|D ]*  fdd|D }t	|t|  qNd S )Nr   r         	   r
   -q=g#B;Zrtolatolfloatư>:0yE>weightsrhopsi	psi_derivc                    s   g | ]}t  |qS r   )getattr).0ximethnormr   G/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/robust/tests/test_norms.py
<listcomp>F   s     ztest_norm.<locals>.<listcomp>)r   HuberTnp
complex128arrayr   r   r   r   r   Zpromote_typesr
   AssertionErrorr   r   )r   r
   nclsargsresxr   r   r   r   Zdtype2psidpsiddmethodsZresmr   r!   r$   	test_norm   s4    
 



	r2   c              
   C   s  | \}}|| }t jddddddddd	g	td
}||}||}||}||}t|d ddd t t 	|dd  dkst
t t 	|d d dkst
t||d |d  ddd t||j}	t||	ddd t||j}
t||
ddd d S )Nr   r   r   r   r   r   r   r   r   r   r   r   )r   gJz5r   r   r   )r'   r)   r   r   r   r   r   r   allZdiffr*   r   )r   r+   r,   r#   r.   r   r   r   r   r/   r0   r   r   r$   test_norms_consistentJ   s     



  r4   )ZpytestZnumpyr'   Znumpy.testingr   Zstatsmodels.robustr   Zstatsmodels.tools.numdiffr   resultsr   Zres_rZHampelZ
res_hampelZTukeyBiweightZres_biweightr&   Z	res_huberZcasesZLeastSquaresZTrimmedMeanZ
AndrewWaveZRamsayEZnorms_otherZfloat64r(   ZdtypesmarkZparametrizer2   r4   r   r   r   r$   <module>   s(   *