U
    Hvfs                     @   s  d dl mZmZmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlZd dlmZmZ d dlmZ dd	 Zd
d Zdd Zdd Z ej!"deegej!"dddgdd Z#ej!"deegej!"dddgdd Z$dS )    )assert_array_almost_equalassert_allcloseassert_)arrayeyezeros
empty_likeemptytril_indices_fromtriltriu_indices_fromspacingfloat32float64	complex64
complex128)randrandintseed)ldlN)raiseswarns)ComplexWarningc               	   C   sH   t d} ttt| d d d df  tt t| d  W 5 Q R X d S )N                    ?)r   assert_raises
ValueErrorr   r   r   )A r   F/tmp/pip-unpacked-wheel-96ln3f52/scipy/linalg/tests/test_decomp_ldl.py	test_args   s    
r!   c                  C   sP   t dtd} tt d\}}}t|t|  t|t|  t|tg td d S )N)r   r   dtype)r	   complexr   r   r   r   int)aldpr   r   r    test_empty_array   s
    r*   c            	   
   C   sF  t ddddgddddgdddd	gddd	d
gg} t ddddgddddgddddgddddgg}t dddddgddddd gd!dd"d#d$gd%dd#d&d'gd(d d$d'd)gg}t d*dd+dd,gd*d-d-dd.gd/d-d$d.d+gd0dd.d$d1gd2d.d+d1dgg}t d3d4d4d4gd5d6d4d4gd7d8d9d4gd:d;d<d=gg}|||fD ]j}t|\}}}t|||j|td>dd? t|d@dA\}}}t|||j|td>dd? q"t| d@dB\}}}t|||j| td>dd? t| d@d@dC\}}}t|||j| td>dd? t| jddA\}}}tt||| j| tdDtd>dd? d S )ENy(\ؿQy(\@{Gzyq=
ףpGzyffffff@q=
ףp?yQ!@(\?y)\((\?yHzG@q=
ףpyp=
ףQyp=
ףzGyQῸQ?g      @
         g      $@r      g      ?   	   g      2@r   g      J@a   p   k   2   g     @X@r   Y   b      g      \@@   !      g     Z@<   I   g      I@M   g       @   ig      g        ig      @y(\        y                yHzG?y=
ףp!        yGz@zG?yq=
ףpQ?yQ        yHzG@      y{GzzGy)\(?)\(yq=
ףp        g     @@)ZatolrtolFlower	hermitianrD   rF   )r@   r@   )	r   r   r   dotTr   conjr   r   )	r&   bcr(   exr'   r)   ur   r   r    test_simple   sR    








"&""$ rP   c            	      C   s   t d tdD ]} tdd}tdr0t||nt||t||d  }|| j }|t|tdd 7 }t|d	d
}t|dd
}t	|dd\}}}t
t||d d f |  d|  t	|dd\}}}t
t||d d f |  d|  qd S )N  r+   r,   d   r   r          .A)kr   rC   zSpin {} failed)r   ranger   r   rJ   rI   r   r
   r   r   r   anyformat)	_nrN   Zl_indZu_indrO   r(   r)   r'   r   r   r    test_permutationsH   s    
*&r\   r#   r[         c           
      C   s   t d d| |}t| | |}||j }|t| |d|tdd 7 }t|\}}}t|dd\}}}|tkrxdnd	}	t	|
|
|j||	|d
 t	|
|
|j||	|d
 d S )NrQ   zFailed for size: {}, dtype: {}r"   rS   rT   r   rC   -C6?绽|=rB   err_msg)r   rY   r   astyperI   r   r   r   r   r   rH   )
r[   r#   msgrN   r'   d1r)   rO   d2rB   r   r   r    $test_ldl_type_size_combinations_real]   s    
rg   c                 C   s  t d d| |}d| |}t| | dt| |   |}|| j }|t| |d|tdd 7 }t|\}}}t|dd	\}}	}|t	krd
nd}
t
||| j||
|d t
||	| j||
|d t| | dt| |   |}||j }|t| |d|tdd 7 }t|dd\}}}t|ddd\}}	}t
|||j||
|d t
||	|j||
|d d S )NrQ   z"Her failed for size: {}, dtype: {}z"Sym failed for size: {}, dtype: {}r   r"   rS   rT   r   rC   r_   r`   ra   rE   rG   )r   rY   r   rc   rJ   rI   r   r   r   r   r   rH   )r[   r#   Zmsg1Zmsg2rN   r'   re   r)   rO   rf   rB   r   r   r    'test_ldl_type_size_combinations_complexn   s$    ""
rh   )%Znumpy.testingr   r   r   Znumpyr   r   r   r   r	   r
   r   r   r   r   r   r   r   Znumpy.randomr   r   r   Zscipy.linalgr   Zpytestr   r   r   r   r!   r*   rP   r\   markZparametrizerg   rh   r   r   r   r    <module>   s    <	+