
    g                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ d	d
lmZ  ed          fdZd ZdS )z:

Routines for computing eigenvectors with DomainMatrix.

    )Dummy   )FiniteExtension)dup_factor_list)roots)PolyCRootOf   )DomainMatrixlambdac                 h   |                                  }| j        \  }| j        t          |          \  }}g }g }|D ]j\  }}	t	          |          dk    rw|d          |d         z  fdt          |          D             }
t          |
|f          }| |z
                      d          }|                    |	|f           t          j
        |          }t          |                     fd| j                                        D             }fd	|D             }t          ||f          }fd
t          |          D             }
t          |
|f          }||z
                      d          }|                    ||	|f           l||fS )Nr   r   r   c                 L    g | ]fd t                    D              S )c                 .    g | ]}|k    rnj         S  zero.0jeigenvalfieldis     V/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/matrices/eigen.py
<listcomp>z-dom_eigenvects.<locals>.<listcomp>.<listcomp>   '    IIIQ!VVIII    ranger   r   colsr   r   s    @r   r   z"dom_eigenvects.<locals>.<listcomp>   K     & & & JIIIIIU4[[III& & &r   T)divide_lastdomainc                 .    g | ]}fd |D             S )c                 J    g | ]}t          j        |g           j         S )r$   )r   	from_listrep)r   itemr%   ls     r   r   z-dom_eigenvects.<locals>.<listcomp>.<listcomp>+   s/    NNN$&999=NNNr   r   )r   rowr%   r+   s     r   r   z"dom_eigenvects.<locals>.<listcomp>*   sA     + + + ONNNN#NNN+ + +r   c                 ,    g | ]}fd |D             S )c                 &    g | ]} |          S r   r   )r   r*   r   s     r   r   z-dom_eigenvects.<locals>.<listcomp>.<listcomp>-   s!    555t555r   r   )r   r,   r   s     r   r   z"dom_eigenvects.<locals>.<listcomp>-   s.    JJJ#5555555JJJr   c                 L    g | ]fd t                    D              S )c                 .    g | ]}|k    rnj         S r   r   r   s     r   r   z-dom_eigenvects.<locals>.<listcomp>.<listcomp>0   r   r   r   r    s    @r   r   z"dom_eigenvects.<locals>.<listcomp>/   r"   r   )charpolyshaper%   r   lenr   r   	nullspaceappendr   r(   r   r)   to_ddm)Ar+   r1   rows_factorsrational_eigenvectsalgebraic_eigenvectsbaseexpEE_itemsEEbasisminpolyAA_itemsAAr!   r%   r   r   s    `              @@@@r   dom_eigenvectsrE      s8   zz||HJD$XF 622JAw F F	ct99>>EQx$q')H& & & & & &t& & &H hte<<BV&&4&88E&&xe'DEEEEnT1V<<<G#G,,EuQxxH+ + + + +5<<>>+ + +H KJJJJJJHhte<<B& & & & & &t& & &H hte<<B"W''D'99E ''e(DEEEE 444r   c                 r  
 g }| D ]\\  
}}|j                                         }                    
          
fd|D             }|                    
||f           ]|D ]\  }}|j                                         }j        d         fd|D             }                                }                                t          fi |}	t          |	          |k    rfdt          |          D             }	|	D ]*

fd|D             }|                    
||f           +|S )Nc                 >    g | ]} fd |D                       S )c                 :    g | ]}                     |          S r   to_sympyr   xr   s     r   r   z6dom_eigenvects_to_sympy.<locals>.<listcomp>.<listcomp>D   s%    444!ENN1%%444r   r   )r   vectMatrixr   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>C   sH     $ $ $ F4444t44455$ $ $r   r   c                 ,    g | ]}fd |D             S )c                 :    g | ]}                     |          S r   rI   rK   s     r   r   z6dom_eigenvects_to_sympy.<locals>.<listcomp>.<listcomp>L   s%    777Qu~~a((777r   r   )r   rM   r   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>L   s.    OOOD7777$777OOOr   c                 2    g | ]}t          |          S r   r	   )r   idxr+   rB   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>R   s%    KKKc!S11KKKr   c                 @    g | ]} fd |D                       S )c                 <    g | ]}|                               S r   )subs)r   rL   
eigenvaluer+   s     r   r   z6dom_eigenvects_to_sympy.<locals>.<listcomp>.<listcomp>V   s'    <<<!q*--<<<r   r   )r   rM   rN   rV   r+   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>U   sK     ( ( ( <<<<<t<<<==( ( (r   )
r)   r6   rJ   r5   gensdegreeas_exprr   r3   r   )r;   r<   rN   kwargsresultmultiplicity
eigenvectsnew_eigenvectsrX   	eigenvalsrV   r   r+   rB   s     `       @@@@r   dom_eigenvects_to_sympyr`   :   s    F7J B B3z<^**,,
^^J//
$ $ $ $ $"$ $ $ 	z<@AAAA4H F F0wj^**,,
LOOOOOJOOO
!!//##'1////	y>>V##KKKKKU6]]KKKI# 	F 	FJ( ( ( ( ( (&( ( (N MM:|^DEEEE		F Mr   N)__doc__sympy.core.symbolr   agca.extensionsr   factortoolsr   	polyrootsr   	polytoolsr   rootoftoolsr
   domainmatrixr   rE   r`   r   r   r   <module>ri      s    
 $ # # # # # - - - - - - ) ) ) ) ) )             ! ! ! ! ! ! & & & & & & h &5 &5 &5 &5R         r   