o
    lhJ"                     @   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      |r	t dt|  t| \}}|t| |  }| | }||  t| j }|r7t d| t d| t|}t|}|rSt d|d|d t d|d|d t	dt
tj }	||	k sdJ ||	k sjJ |S Noriginal matrix:
zeigenvalues:
zeigenvectors:
zdifference:
皙?)printstrr   eigsydiag	transposeeyerowsmnormexplogeps
AverboseDQBCENCNEr    r   u/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/tests/test_eigen_symmetric.py	run_eigsy	   $   



r    c           
      C   r   r   )r	   r
   r   eigher   transpose_conjr   r   r   r   r   r   r   r   r   r   	run_eighe$   r!   r$   Tc                 C   ~  | j | j}}tdttj }|r tdt|  td| tj| |d\}}}t	|j|j }	t
t||D ]
}
||
 |	|
|
f< q9|r[tdt| tdt| tdt| ||	 | |  }t|}|rstdt|d	| ||k syJ ||  t|j  }t|}|rtd
t|d	| ||k sJ | | t|j }t|}|rtdt|d	| ||k sJ 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   mnr   US0VSjr   errr   r   r   r   r   	run_svd_r?   8   



r7   c                 C   r%   r&   )r   r)   r   r   r   r   r	   r
   svd_cr+   r,   r-   r   r#   r   r.   r   r   r   	run_svd_cf   r8   r:   c                 C   s\   d}t t|| \}}|t |8 }|t |8 }t ||k s#J t ||k s,J d S )Nh㈵>)r   gauss_quadraturelenmatrixr   )qtypeabr   der   r   r   	run_gauss   s   rD   
   c                 C   sL   t | | }t| D ]}t| D ]}tdt   d | |||f< qq
|S )z,
    random matrix with integer entries
          )r   r>   r,   intrand)r0   ranger   ir5   r   r   r   irandmatrix   s   "rL   c                  C   s  t ddgddgg} t|  t|  t ddgddgg} t|  t|  t g dg dg d	g} t|  t|  t g d
g dg dg} t|  t|  t ddgddgg} t|  t g dg dg dg} t|  t g dg dg dg} t|  d S )NrF               )rF      rO   )rR   rM   rQ   )rO   rQ   rN   )rF   r   rO   )r   rM   rG   )rO   rG   rN   y      @      @y      @      )rF   y             &r   )y              &@rM   y              =@)r   y             =rN   )rF   y      &@      1@y      @      3@)y      &@      1rM   y      *      7@)y      @      3y      *      7rN   )r   r>   r    r$   r   r   r   r   test_eighe_fixed_matrix   s$   rT   c                  C   sj   d} t dD ],}dt| |  d }t d| D ]}t |d | D ]}|||f |||f< q qt| qd S )NrN   rE   rF   rG   r   )r,   r   
randmatrixr    Nr@   r   rK   r5   r   r   r   test_eigsy_randmatrix   s   
rX   c                  C   s   d} t dD ]H}dt| |  d ddt| |  d   }t d| D ]&}t|||f |||f< t |d | D ]}t|||f |||f< q9q#t| qd S )NrN   rE   rF   rG                 ?r   )r,   r   rU   reconjr$   rV   r   r   r   test_eighe_randmatrix   s   ,
r\   c                  C   sd   d} d}t dD ]'}t| |}t d| D ]}t |d | D ]}|||f |||f< qqt| qd S )N   rE   r   rG   )r,   rL   r    rW   Rr@   r   rK   r5   r   r   r   test_eigsy_irandmatrix   s   

r`   c                  C   s   d} d}t dD ]>}t| |dt| |  }t d| D ]&}t|||f |||f< t |d | D ]}t|||f |||f< q1qt| qd S )Nr]   rE   rY   r   rG   )r,   rL   r   rZ   r[   r$   r^   r   r   r   test_eighe_irandmatrix   s   
ra   c                  C   s   t dD ]Q} t dk}dtt d  }dtt d  }dt|| d }t dkrN|d9 }t |D ]}t |D ]}t|||f |||f< q>q8t||dd qd S )NrN         ?rG   rE   rF   Fr(   r   )r,   r   rI   rH   rU   r7   rK   r'   r/   r0   r   xyr   r   r   test_svd_r_rand   s   rg   c                  C   s   t dD ]m} t dk}dtt d  }dtt d  }dt|| d ddt|| d   }t dkrj|d9 }t |D ]%}t |D ]}tt|||f dtt|||f   |||f< qJqDt||dd qd S )	NrN   rb   rG   rE   rF   rY   Frc   )r,   r   rI   rH   rU   rZ   imr:   rd   r   r   r   test_svd_c_rand  s   ,:ri   c               	   C   s   t dt t j } g dg dg dg dg dg dg dg d	g}t |}t t d
dt dddg}t j|dd}||8 }t || k sNJ t j|dd}||8 }t || k sbJ d S )Nr   )   rE   rF   rM   rO   )   rO   rE   r      )rQ   rm   rP   rM   )rQ   ro   r]   )	   rl   rG   ro   r]   )rp   rG   irN   rm   )rF   i   rN   rG   )r]   rN   r   ro   rF   i     i  r   F)
compute_uv)	r   r   r   r   r>   sqrtr*   r   r9   )r   r@   rA   r4   r   r   r   test_svd_test_case  s$   
	 ru   c                  C   s   ddg} ddg}t d| | g d} g d}t d| | g d} g d}t d	| | d
dg} ddg}t d| | g d} g d}t d| | g d} g d}t d| | d S )NgEygEy?rG   legendre)g{[lg0#;r   g0#;?g{[l?)ΞS?$%ڡ?gr3yV4?rx   rw   )gHƱ?g?g
p?gü6?)>c@C?:Ά_?rz   ry   
legendre01g'eg'e?gE%[?hermite)g"U) g䬀)r   g䬀)?g"U) @)8Dn?R1?g??r~   r}   )g\m?gpPZ@g\(@)g F?g1m<?goF?laguerre)rD   )r@   rA   r   r   r   test_gauss_quadrature_static*  s$   r   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 )NrN   rF   rG   c                    s2   d}t t d ddD ]
}||   |  }q|S )Nr   rG   rm   )r,   r=   )re   rrK   rS   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 ||	 }
r=t| |
||	 |
dk sCJ d S )Nalphabetar   c                    s   |  |  S Nr   re   )r   FWr   r   <lambda>U      z<test_gauss_quadrature_dynamic.<locals>.run.<locals>.<lambda>r;   )r   r<   r,   r=   quadfabsr	   )r?   r   r_   r   r   XWr@   rK   rA   c)r   r0   r   )r   r   runN  s   z*test_gauss_quadrature_dynamic.<locals>.runrv   c                 S      dS NrG   r   r   r   r   r   r   ^      z/test_gauss_quadrature_dynamic.<locals>.<lambda>rm   r{   c                 S   r   r   r   r   r   r   r   r   _  r   r|   c                 S   s   t |  |  S r   r   r   r   r   r   r   r   `  r   r   c                 S   s   t |  S r   r   r   r   r   r   r   a  s    	glaguerrec                 S   s   t | t |   S r   )r   rt   r   r   r   r   r   r   b      )r   
chebyshev1c                 S   s   dt d| |    S r   r   rt   r   r   r   r   r   c  r   
chebyshev2c                 S   s   t d| |   S r   r   r   r   r   r   r   d  s    jacobic                 S   s,   d|  dt d  d|  dt d   S )NrG   rM   rN   )r   mpfr   r   r   r   r   e  s   , rM   r   )r   r   )r   rU   infr   )r   r   r   )r   r   r0   r   r   test_gauss_quadrature_dynamicC  s   $2r   N)F)FT)rE   )mpmathr   r   backendr,   r    r$   r7   r:   rD   rL   rT   rX   r\   r`   ra   rg   ri   ru   r   r   r   r   r   r   <module>   s&   



''

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