
    wgJ"                         d dl mZ d dl mZ ej                  j                  ZddZddZddZddZd Z	ddZ
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZddZy)    )mp)libmpc                 |   |rt        dt        |              t        j                  |       \  }}|t        j                  |      z  |j                         z  }| |z
  }||j                         z  t        j                  | j                        z
  }|rt        d|       t        d|       t        j                  |      }t        j                  |      }|rt        d|d|d       t        d|d|d       t        j                  dt        j                  t        j                        z        }	||	k  sJ ||	k  sJ |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   s
             f/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/mpmath/tests/test_eigen_symmetric.py	run_eigsyr    	   s    "CF+88A;DAq	BGGAJ&A	AA	AKKMBFF166N*A"#	!B	!BmRq$/mRq$/
&&#rvv&
'C8O88O8I    c                 |   |rt        dt        |              t        j                  |       \  }}|t        j                  |      z  |j                         z  }| |z
  }||j                         z  t        j                  | j                        z
  }|rt        d|       t        d|       t        j                  |      }t        j                  |      }|rt        d|d|d       t        d|d|d       t        j                  dt        j                  t        j                        z        }	||	k  sJ ||	k  sJ |S r   )r
   r   r   eigher   transpose_conjr   r   r   r   r   r   r   s
             r   	run_eigher%   $   s   "CF+88A;DAq	BGGAJ))++A	AA	A/A"#	!B	!BmRq$/mRq$/
&&#rvv&
'C8O88O8Ir!   c                 `   | j                   | j                  }}t        j                  dt        j                  t        j
                        z        }|r!t        dt        |              t        d|       t        j                  | |      \  }}}t        j                  |j                  |j                         }	t        t        ||            D ]  }
||
   |	|
|
f<    |r?t        dt        |             t        dt        |             t        dt        |             ||	z  |z  | z
  }t        j                  |      }|rt        dt        |      d	|       ||k  sJ ||j                         z  t        j                  |j                         z
  }t        j                  |      }|rt        d
t        |      d	|       ||k  sJ |j                         |z  t        j                  |j                        z
  }t        j                  |      }|rt        dt        |      d	|       ||k  sJ y 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   s                  r   	run_svd_rr8   ?   s   66166qA
&&rvvbff~%
&C"CF+fm$xx=9HAr1
 AC1I A!A# fc!ffc"gfc!f	A	AA
((1+CeSVT3'99	AKKMBFF166N*A
((1+Cfc!fdC(99	BFF166N*A
((1+Cfc!fdC(99r!   c                 `   | j                   | j                  }}t        j                  dt        j                  t        j
                        z        }|r!t        dt        |              t        d|       t        j                  | |      \  }}}t        j                  |j                  |j                         }	t        t        ||            D ]  }
||
   |	|
|
f<    |r?t        dt        |             t        dt        |             t        dt        |             ||	z  |z  | z
  }t        j                  |      }|rt        dt        |      d	|       ||k  sJ ||j                         z  t        j                  |j                         z
  }t        j                  |      }|rt        d
t        |      d	|       ||k  sJ |j                         |z  t        j                  |j                        z
  }t        j                  |      }|rt        dt        |      d	|       ||k  sJ y r'   )r   r*   r   r   r   r   r
   r   svd_cr,   r-   r.   r   r$   r   r/   s                  r   	run_svd_cr;   f   s   66166qA
&&rvvbff~%
&C"CF+fm$xx=9HAr1
 AC1I A!A# fc!ffc"gfc!f	A	AA
((1+CeSVT3'#::	A/A
((1+Cfc!fdC(99	Q/A
((1+Cfc!fdC(99r!   c                    d}t        j                  t        |      |       \  }}|t        j                  |      z  }|t        j                  |      z  }t        j                  |      |k  sJ t        j                  |      |k  sJ y )Nh㈵>)r   gauss_quadraturelenmatrixr   )qtypeabr   des         r   	run_gaussrF      sq    
Cs1vu-DAq1A1A88A;88A;r!   c                     t        j                  | |       }t        |       D ]=  }t        |       D ]-  }t        dt        j                         z  dz
  |z        |||f<   / ? |S )z,
    random matrix with integer entries
          )r   r@   r-   intrand)r1   ranger   ir6   s        r   irandmatrixrN      sf     			!QAAY 5 	5ARWWY*e34AacF	55 Hr!   c                     t        j                  ddgddgg      } t        |        t        |        t        j                  ddgddgg      } t        |        t        |        t        j                  g dg dg d	g      } t        |        t        |        t        j                  g d
g dg dg      } t        |        t        |        t        j                  ddgddgg      } t        |        t        j                  g dg dg dg      } t        |        t        j                  g dg dg dg      } t        |        y )NrH               )rH      rR   )rU   rP   rT   )rR   rT   rQ   )rH   r   rR   )r   rP   rI   )rR   rI   rQ   y      @      @y      @      )rH   y             &r   )y              &@rP   y              =@)r   y             =rQ   )rH   y      &@      1@y      @      3@)y      &@      1rP   y      *      7@)y      @      3y      *      7rQ   )r   r@   r    r%   )r   s    r   test_eighe_fixed_matrixrV      s    
		Aq6Aq6"#AaLaL
		As8c2Y'(AaLaL
		:{J78AaLaL
		9i34AaLaL 			At9tQi()AaL
		<>?AaL
		)+CE\]^AaLr!   c                      d} t        d      D ]Z  }dt        j                  | |       z  dz
  }t        d|       D ]"  }t        |dz   |       D ]  }|||f   |||f<    $ t        |       \ y )NrQ   
   rH   rI   r   )r-   r   
randmatrixr    NrB   r   rM   r6   s        r   test_eigsy_randmatrixr\      s    	ABZ a##a'1 	 AAE1%  1Q3!A# 	  	!r!   c                  |   d} t        d      D ]  }dt        j                  | |       z  dz
  ddt        j                  | |       z  dz
  z  z   }t        d|       D ]T  }t        j                  |||f         |||f<   t        |dz   |       D ]!  }t        j                  |||f         |||f<   # V t        |        y )NrQ   rX   rH   rI                 ?r   )r-   r   rY   reconjr%   rZ   s        r   test_eighe_randmatrixra      s    	ABZ q!$$q(B!bmmAq6I2IA2M,NN1 	)AUU1QqS6]AacFAE1% )1Q3!A#)	)
 	!r!   c                      d} d}t        d      D ]J  }t        | |      }t        d|       D ]"  }t        |dz   |       D ]  }|||f   |||f<    $ t        |       L y )N   rX   r   rI   )r-   rN   r    r[   RrB   r   rM   r6   s         r   test_eigsy_irandmatrixrf      sx    	A	ABZ 
a
1 	 AAE1%  1Q3!A# 	  	!r!   c                  @   d} d}t        d      D ]  }t        | |      dt        | |      z  z   }t        d|       D ]T  }t        j                  |||f         |||f<   t        |dz   |       D ]!  }t        j                  |||f         |||f<   # V t        |        y )Nrc   rX   r^   r   rI   )r-   rN   r   r_   r`   r%   rd   s         r   test_eighe_irandmatrixrh      s    	A	ABZ 
a
b;q!#44
41 	)AUU1QqS6]AacFAE1% )1Q3!A#)	)
 	!r!   c                     t        d      D ]  } t        j                         dkD  }dt        t        j                         dz        z   }dt        t        j                         dz        z   }dt        j                  ||      z  dz
  }t        j                         dkD  r:|dz  }t        |      D ]'  }t        |      D ]  }t        |||f         |||f<    ) t        ||d        y )NrQ         ?rI   rX   rH   Fr)   r   )r-   r   rK   rJ   rY   r8   rM   r(   r0   r1   r   xys          r   test_svd_r_randro      s    AY <wwy3BGGIN##BGGIN##a##a'779s?GAAY ' 'Aq1v;AacF'' 	!TU;<r!   c                     t        d      D ]5  } t        j                         dkD  }dt        t        j                         dz        z   }dt        t        j                         dz        z   }dt        j                  ||      z  dz
  ddt        j                  ||      z  dz
  z  z   }t        j                         dkD  rt|dz  }t        |      D ]a  }t        |      D ]Q  }t        t        j
                  |||f               dt        t        j                  |||f               z  z   |||f<   S c t        ||d       8 y )	NrQ   rj   rI   rX   rH   r^   Frk   )r-   r   rK   rJ   rY   r_   imr;   rl   s          r   test_svd_c_randrr     s   AY 8wwy3BGGIN##BGGIN##q!$$q(B!bmmAq6I2IA2M,NN779s?GAAY H HAruuQqsV}-Sq1v5G0GGAacFHH 	!478r!   c            	      ,   t        j                  dt        j                  t         j                        z        } g dg dg dg dg dg dg dg d	g}t        j                  |      }t        j                  t        j
                  d
      dt        j
                  d      ddg      }t        j                  |d      }||z  }t        j                  |      | k  sJ t        j                  |d      }||z  }t        j                  |      | k  sJ y )Nr	   )   rX   rH   rP   rR   )   rR   rX   r      )rT   rw   rS   rP   )rT   ry   rc   )	   rv   rI   ry   rc   )rz   rI   irQ   rw   )rH   i   rQ   rI   )rc   rQ   r   ry   rH   i     i  r   F)
compute_uv)	r   r   r   r   r@   sqrtr+   r   r:   )r   rB   rC   r5   s       r   test_svd_test_caser     s     &&rvvbff~%
&C									 A 			!A
		2774="bggclAq9:A
'AFA88A;
'AFA88A;r!   c                      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| |       y )NgEygEy?rI   legendre)g{[lg0#;r   g0#;?g{[l?)ΞS?$%ڡ?gr3yV4?r   r   )gHƱ?g?g
p?gü6?)>c@C?:Ά_?r   r   
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)rF   )rB   rC   s     r   test_gauss_quadrature_staticr   *  s    	z"A
aAj!a QAPAj!a <A<AlA"	z"A
z"AiQOAOAiQ/A/Aj!a r!   c           
      ,    dt        j                  dz  d      fdd fd	} |dd d	dg        |d
d ddg        |dd t         j                   t         j                  g        |dd dt         j                  g        |dd dt         j                  gdt        j                  d      z          |dd d	dg        |dd d	dg        |dd d	dgdt        j                  d      z  dt        j                  d      z         y )NrQ   rH   rI   c                 ^    d}t        t              dz
  dd      D ]  }|| z  |   z   } |S )Nr   rI   rw   )r-   r?   )rm   rrM   r   s      r   Fz(test_gauss_quadrature_dynamic.<locals>.FH  s>    A
B+ 	AA!A	r!   r   c                 0   t        j                  | ||      \  }}d}t        t        |            D ]  }|||    ||         z  z  } t        j                  fd|      }	t        j
                  ||	z
        }
rt        | |
||	       |
dk  sJ y )Nalphabetar   c                 &     |        |       z  S N )rm   r   FWs    r   <lambda>z<test_gauss_quadrature_dynamic.<locals>.run.<locals>.<lambda>U  s    beadl r!   r=   )r   r>   r-   r?   quadfabsr
   )rA   r   re   r   r   XWrB   rM   rC   cr   r1   r   s    `         r   runz*test_gauss_quadrature_dynamic.<locals>.runN  s    ""1eU4H1A 	 A1!A$A	  GG*A.GGAEN%Aq!4xxr!   r   c                      yNrI   r   rm   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>^      r!   rw   r   c                      yr   r   r   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>_  r   r!   r   c                 4    t        j                  |  | z        S r   r   r   r   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>`  s    RVVQBqD\ r!   r   c                 .    t        j                  |        S r   r   r   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>a  s    bffaRj r!   	glaguerrec                 Z    t        j                  |       t        j                  |        z  S r   )r   r~   r   r   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>b  s    rwwqz"&&!*4 r!   )r   
chebyshev1c                 >    dt        j                  d| | z  z
        z  S r   r   r~   r   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>c  s    "''!AaC%. 0 r!   
chebyshev2c                 8    t        j                  d| | z  z
        S r   r   r   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>d  s    !A# r!   jacobic                 |    d| z
  dt        j                  d      z  z  d| z   dt        j                  d      z  z  z  S )NrI   rP   rQ   )r   mpfr   s    r   r   z/test_gauss_quadrature_dynamic.<locals>.<lambda>e  s5    QqSAbffQiK0AaC1RVVAY;3GG r!   rP   r   )r   r   )r   rY   infr   )r   r   r   r   r1   s   ` @@@r   test_gauss_quadrature_dynamicr   C  s    	A
a!eQA  
K"a)kAq6*	)RVVGRVV+<=
(1bff+64q"&&k1rvvVWy=Y02q':.Q8G"aZ[^`^d^def^gZgpqtvtztz{|t}p}r!   N)F)FT)rX   )mpmathr   r   backendr-   r    r%   r8   r;   rF   rN   rV   r\   ra   rf   rh   ro   rr   r   r   r   r   r!   r   <module>r      so     			66%N%N8
<86!2"@r!   