U
    9%eJ"                     @   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|}|rt d|d|d t d|d|d t	dt
tj }	||	k st||	k st|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/Darija-Ai-API/env/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|}|rt d|d|d t d|d|d t	dt
tj }	||	k st||	k st|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|rtdt| tdt| tdt| ||	 | |  }t|}|rtdt|d	| ||k st||  t|j  }t|}|r,td
t|d	| ||k s:t| | t|j }t|}|rttdt|d	| ||k st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|rtdt| tdt| tdt| ||	 | |  }t|}|rtdt|d	| ||k st||  t|j  }t|}|r,td
t|d	| ||k s:t| | t|j }t|}|rttdt|d	| ||k st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 )Nh㈵>)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      &@      1y      *      7@y      @      3y      *      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< qqt||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 stt j	|dd}||8 }t || k std S )Nr      r=   r>   rE   rG      r      rI   rH   rU   	   r?   irF   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 )&NgEygEy?r?   legendreg{[lg0#;r   g0#;?g{[l?gΞS?g$%ڡ?gr3yV4?gHƱ?g?g
p?gü6?g>c@C?g:Ά_?
legendre01g'eg'e?gE%[?hermiteg"U) g䬀)g䬀)?g"U) @g8Dn?gR1?g??g\m?gpPZ@g\(@g F?g1m<?goF?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 st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   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$   


'
'

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