U
    ZÊ¹jJ"  ã                   @   s°   d dl mZ d dl mZ ejjZd'dd„Zd(dd„Zd)d	d
„Zd*dd„Zdd„ Z	d+dd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd,d$d%„Zd&S )-é    )Úmp)ÚlibmpFc           
      C   sØ   |rt dt| ƒƒ t | ¡\}}|t |¡ | ¡  }| | }|| ¡  t | j¡ }|rnt d|ƒ t d|ƒ t |¡}t |¡}|r¦t d|d|dƒ t d|d|dƒ t 	dt 
tj¡ ¡}	||	k sÈt‚||	k sÔt‚|S ©Núoriginal matrix:
zeigenvalues:
zeigenvectors:
zdifference:Ú
çš™™™™™é?)ÚprintÚstrr   ZeigsyÚdiagÚ	transposeÚeyeÚrowsÚmnormÚexpÚlogÚepsÚAssertionError©
ÚAÚverboseÚDÚQÚBÚCÚEZNCZNEr   © r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mpmath/tests/test_eigen_symmetric.pyÚ	run_eigsy	   s$    



r   c           
      C   sØ   |rt dt| ƒƒ t | ¡\}}|t |¡ | ¡  }| | }|| ¡  t | j¡ }|rnt d|ƒ t d|ƒ t |¡}t |¡}|r¦t d|d|dƒ t d|d|dƒ t 	dt 
tj¡ ¡}	||	k sÈt‚||	k sÔt‚|S r   )r   r	   r   Zeigher
   Útranspose_conjr   r   r   r   r   r   r   r   r   r   r   Ú	run_eighe$   s$    



r   Tc                 C   s†  | j | j }}t dt tj¡ ¡}|r@tdt| ƒƒ td|ƒ tj| |d�\}}}t 	|j|j ¡}	t
t||ƒƒD ]}
||
 |	|
|
f< qr|r¶tdt|ƒƒ tdt|ƒƒ tdt|ƒƒ ||	 | |  }t |¡}|rætdt|ƒd	|ƒ ||k sòt‚|| ¡  t |j ¡ }t |¡}|�r,td
t|ƒd	|ƒ ||k �s:t‚| ¡ | t |j¡ }t |¡}|�rttdt|ƒd	|ƒ ||k �s‚t‚d S ©Nr   r   Úfull)Úfull_matriceszU:
zS:
zV:
zC
r   zD:
zE:
)r   Úcolsr   r   r   r   r   r	   Úsvd_rÚzerosÚxrangeÚminr   r   r   r   ©r   r"   r   ÚmÚnr   ÚUZS0ÚVÚSÚjr   Úerrr   r   r   r   r   Ú	run_svd_r?   s8    



r0   c                 C   s†  | j | j }}t dt tj¡ ¡}|r@tdt| ƒƒ td|ƒ tj| |d�\}}}t 	|j|j ¡}	t
t||ƒƒD ]}
||
 |	|
|
f< qr|r¶tdt|ƒƒ tdt|ƒƒ tdt|ƒƒ ||	 | |  }t |¡}|rætdt|ƒd	|ƒ ||k sòt‚|| ¡  t |j ¡ }t |¡}|�r,td
t|ƒd	|ƒ ||k �s:t‚| ¡ | t |j¡ }t |¡}|�rttdt|ƒd	|ƒ ||k �s‚t‚d S r    )r   r#   r   r   r   r   r   r	   Úsvd_cr%   r&   r'   r   r   r   r   r(   r   r   r   Ú	run_svd_cf   s8    



r2   c                 C   s\   d}t  t|ƒ| ¡\}}|t  |¡8 }|t  |¡8 }t  |¡|k sFt‚t  |¡|k sXt‚d S )Nçñhãˆµøä>)r   Úgauss_quadratureÚlenÚmatrixr   r   )ÚqtypeÚaÚbr   ÚdÚer   r   r   Ú	run_gauss�   s    r<   é
   c                 C   sL   t  | | ¡}t| ƒD ]2}t| ƒD ]$}tdt  ¡  d | ƒ|||f< q q|S )z,
    random matrix with integer entries
    é   é   )r   r6   r&   ÚintÚrand)r*   Úranger   Úir.   r   r   r   Úirandmatrix—   s
    $rD   c                  C   s&  t  ddgddgg¡} t| ƒ t| ƒ t  ddgddgg¡} t| ƒ t| ƒ t  dddgdddgdddgg¡} t| ƒ t| ƒ t  dddgddd	gdd	dgg¡} t| ƒ t| ƒ t  dd
gddgg¡} t| ƒ t  dddgdddgdddgg¡} t| ƒ t  dddgdddgdddgg¡} t| ƒ d S )Nr>   é   é   é   éõÿÿÿé   é   r   r?   y      @      @y      @      Ày       €      &Ày              &@y              =@y       €      =Ày      &@      1@y      @      3@y      &@      1Ày      *À      7@y      @      3Ày      *À      7À)r   r6   r   r   ©r   r   r   r   Útest_eighe_fixed_matrix£   s$    """"rL   c                  C   sj   d} t dƒD ]X}dt | | ¡ d }t d| ƒD ],}t |d | ƒD ]}|||f |||f< q@q.t|ƒ qd S )NrF   r=   r>   r?   r   )r&   r   Ú
randmatrixr   ©ÚNr8   r   rC   r.   r   r   r   Útest_eigsy_randmatrix¿   s    rP   c                  C   s¢   d} t dƒD ]�}dt | | ¡ d ddt | | ¡ d   }t d| ƒD ]L}t |||f ¡|||f< t |d | ƒD ]}t |||f ¡|||f< qrqFt|ƒ qd S )NrF   r=   r>   r?   ù              ð?r   )r&   r   rM   ÚreÚconjr   rN   r   r   r   Útest_eighe_randmatrixË   s    ,rT   c                  C   sd   d} d}t dƒD ]N}t| |ƒ}t d| ƒD ],}t |d | ƒD ]}|||f |||f< q:q(t|ƒ qd S )Né   r=   r   r?   )r&   rD   r   ©rO   ÚRr8   r   rC   r.   r   r   r   Útest_eigsy_irandmatrixØ   s    
rX   c                  C   s’   d} d}t dƒD ]|}t| |ƒdt| |ƒ  }t d| ƒD ]L}t |||f ¡|||f< t |d | ƒD ]}t |||f ¡|||f< qbq6t|ƒ qd S )NrU   r=   rQ   r   r?   )r&   rD   r   rR   rS   r   rV   r   r   r   Útest_eighe_irandmatrixå   s    rY   c                  C   s°   t dƒD ]¢} t ¡ dk}dtt ¡ d ƒ }dtt ¡ d ƒ }dt ||¡ d }t ¡ dkrœ|d9 }t |ƒD ]*}t |ƒD ]}t|||f ƒ|||f< q|qpt||dd� qd S )NrF   ç      à?r?   r=   r>   F©r"   r   )r&   r   rA   r@   rM   r0   ©rC   r!   r)   r*   r   ÚxÚyr   r   r   Útest_svd_r_randó   s    r_   c                  C   sè   t dƒD ]Ú} t ¡ dk}dtt ¡ d ƒ }dtt ¡ d ƒ }dt ||¡ d ddt ||¡ d   }t ¡ dkrÔ|d9 }t |ƒD ]J}t |ƒD ]<}tt |||f ¡ƒdtt |||f ¡ƒ  |||f< q”qˆt||dd� qd S )	NrF   rZ   r?   r=   r>   rQ   Fr[   )r&   r   rA   r@   rM   rR   Zimr2   r\   r   r   r   Útest_svd_c_rand  s    ,<r`   c                  C   sø   t  dt  t j¡ ¡} 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ddddd
gdddddgdddddgg}t  |¡}t  t  d¡dt  d¡ddg¡}t j|dd�}||8 }t  |¡| k sÌt‚t j	|dd�}||8 }t  |¡| k sôt‚d S )Nr   é   r=   r>   rE   rG   é   r   é   éÿÿÿÿrI   rH   éýÿÿÿéþÿÿÿrU   é	   r?   iùÿÿÿrF   iúÿÿÿé   ià  é   i€  F)Z
compute_uv)
r   r   r   r   r6   Úsqrtr$   r   r   r1   )r   r8   r9   r-   r   r   r   Útest_svd_test_case  s$    ù	
 rk   c                  C   sÐ   ddg} ddg}t d| |ƒ ddddd	g} d
dddd
g}t d| |ƒ ddddg} ddddg}t d| |ƒ ddg} ddg}t d| |ƒ dddddg} dddddg}t d| |ƒ dd d!g} d"d#d$g}t d%| |ƒ d S )&NgŸ“ÿE§yâ¿gŸ“ÿE§yâ?r?   Úlegendreg{¨[àlÿì¿g 0‹ý#;á¿r   g 0‹ý#;á?g{¨[àlÿì?gçÎžSÎ?g�ý$%Ú¡Þ?gžr3yV4â?gþáúHÆ±?gíþàÕ?g
ö€õ�på?gÀÃ¼à6Çí?g>Šcò@CÆ?gá:Î†_ÞÔ?Ú
legendre01gß'Üež æ¿gß'Üež æ?gEç%”ø[ì?Úhermiteg"·ô¢U) Àgä¬€) ¬î¿gä¬€) ¬î?g"·ô¢U) @g…8ÿDŸn”?gRž1Ù?g�Á ø?î?gÐ\mæœÚ?gÜpP©¯Z@gÅñð\ç(@g‰§Ë FÁæ?g²1m<ÓÑ?gšçoßöF…?Úlaguerre)r<   )r8   r9   r   r   r   Útest_gauss_quadrature_static*  s$    

rp   c              	      s  d‰t  dˆ d¡‰ ‡ fdd„‰d‡‡‡fdd„	}|d	d
d„ ddgƒ |ddd„ ddgƒ |ddd„ t j t jgƒ |ddd„ dt jgƒ |ddd„ dt jgdt  d¡ d� |ddd„ ddgƒ |ddd„ ddgƒ |ddd„ ddgdt  d¡ dt  d¡ d� d S )NrF   r>   r?   c                    s2   d}t tˆ ƒd ddƒD ]}||  ˆ |  }q|S )Nr   r?   rd   )r&   r5   )r]   ÚrrC   rK   r   r   ÚFH  s    z(test_gauss_quadrature_dynamic.<locals>.Fr   c                    sŠ   t jˆ| ||d�\}}d}tt|ƒƒD ]}||| ˆ|| ƒ 7 }q&t  ‡‡ fdd„|¡}	t  ||	 ¡}
ˆrzt| |
||	ƒ |
dk s†t‚d S )N©ÚalphaÚbetar   c                    s   ˆ| ƒˆ | ƒ S ©Nr   ©r]   )rr   ÚFWr   r   Ú<lambda>U  ó    z<test_gauss_quadrature_dynamic.<locals>.run.<locals>.<lambda>r3   )r   r4   r&   r5   ZquadÚfabsr   r   )r7   rx   rW   rt   ru   ÚXÚWr8   rC   r9   Úc)rr   r*   r   )rx   r   ÚrunN  s    z*test_gauss_quadrature_dynamic.<locals>.runrl   c                 S   s   dS ©Nr?   r   rw   r   r   r   ry   ^  rz   z/test_gauss_quadrature_dynamic.<locals>.<lambda>rd   rm   c                 S   s   dS r€   r   rw   r   r   r   ry   _  rz   rn   c                 S   s   t  |  |  ¡S rv   ©r   r   rw   r   r   r   ry   `  rz   ro   c                 S   s   t  |  ¡S rv   r�   rw   r   r   r   ry   a  rz   Z	glaguerrec                 S   s   t  | ¡t  |  ¡ S rv   )r   rj   r   rw   r   r   r   ry   b  rz   )rt   Z
chebyshev1c                 S   s   dt  d| |   ¡ S r€   ©r   rj   rw   r   r   r   ry   c  rz   Z
chebyshev2c                 S   s   t  d| |   ¡S r€   r‚   rw   r   r   r   ry   d  rz   Zjacobic                 S   s,   d|  dt  d¡  d|  dt  d¡   S )Nr?   rE   rF   )r   Úmpfrw   r   r   r   ry   e  rz   rE   rs   )r   r   )r   rM   Úinfrƒ   )r   r   r   )r   rr   r*   r   r   Útest_gauss_quadrature_dynamicC  s    $r…   N)F)F)FT)FT)r=   )F)Zmpmathr   r   Úbackendr&   r   r   r0   r2   r<   rD   rL   rP   rT   rX   rY   r_   r`   rk   rp   r…   r   r   r   r   Ú<module>   s$   


'
'

