
    WhT              	          d dl mZ d dlmZ d dlmZ d dlZd dlm	c m
Z
 d dlm	c mc 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mZmZmZmZmZmZmZ  ej                                                     D ]0\  Z!Z" ej#        e!e"de!$                    d          rdnd            1d Z%d Z&defdZ'de(fdZ)de(fdZ*de(de(fdZ+de(fdZ,ddde(dee(         fdZ-ej.        d ej/        d!ej0        d"ej1        d#iZ2d$ Z3d%e4d&e4fd'Z5	 	 d7d)e6ed*f         fd+Z7d(d,d-e
j8        d.e6ed*f         fd/Z9ddd0d1e6ed*f         fd2Z:dd(dd3d.e6ed*f         fd4Z;d5 Z<d6 Z=dS )8    )Sequence)Enum)OptionalN)
xla_client   )_lapack)schur)eig)custom_callhlo_u8hlo_s32ensure_hlo_s32hlo_addDimensionSizeShapeTypePairmk_result_types_and_shapescpu_ffi)platformapi_versionc                     t           j                            t           j                            d          t          |                     S N   )irIntegerAttrgetIntegerTypeget_unsignedord)cs    S/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/jaxlib/lapack.py
_char_attrr"   /   s0    			BN77::CFF	C	CC    c                 |    t           j                            t           j                            d          |           S )N    )r   r   r   r   get_signless)values    r!   _lapack_int_attrr(   3   s*    			BN77;;U	C	CCr#   ec                     t           j                            t           j                            d          | j                  S r   )r   r   r   r   r   r'   )r)   s    r!   _enum_to_char_attrr+   7   s,    			BN77::AG	D	DDr#   	left_sidec                 (    t          | rdnd          S )NLRr"   r,   s    r!   _matrix_side_attrr2   ;       	9-CC#	.	..r#   lowerc                 (    t          | rdnd          S )Nr.   Ur0   r4   s    r!   _matrix_uplo_attrr8   ?   s    	5)CCc	*	**r#   	transpose	conjugatec                 0    t          | r|rdndnd          S )NCTNr0   r9   r:   s     r!   _matrix_transpose_attrr@   C   s"    	9EI.SS33#	F	FFr#   	unit_diagc                 (    t          | rdnd          S )Nr6   r>   r0   rA   s    r!   _matrix_diagonal_attrrD   G   r3   r#   T)full_matrices
compute_uvrE   c                 >    d}|d}| sd}n|sd}t          |          S )NATr>   Sr0   )rF   rE   modes      r!   _svd_computation_attrrK   K   s@     
$M	 
 DD D	D		r#   sdr    zc                 H    t          j                     t          | |          S )zBInitializes the LAPACK library and returns the LAPACK target name.)r   
initializebuild_lapack_fn_targetfn_basedtypes     r!   prepare_lapack_callrU   d   s!    			/	//r#   rS   returnc                     	 t                               |d          pt           |j                 }d| |  S # t          $ r}t	          |d| d          |d}~ww xY w)z9Builds the target name for a LAPACK function custom call.Nlapack_Unsupported dtype .)LAPACK_DTYPE_PREFIXr   typeKeyErrorNotImplementedError)rS   rT   prefixerrs       r!   rQ   rQ   j   s    Kt,,O0CEJ0O  'V&W&&&	 K K K
c#@#@#@#@
A
AsJKs   36 
A AAFb_shape_vals.c
                   |r|st          d          t          d|          }t          j        |j                  }|
d d         }t          |          }g }||dz   ft          t          |dz
  dd                    z   }t          |
|j	        fg          \  }}| 
                                r$|                    ddd          }|
dd          \  }}t          d          }|D ]$}t          j        |t          |                    }%t          |
|j	        fg          \  }}t!          ||t          t#          |                    t          t#          |                    t          |r|rd	ndnd
          t          t#          |	                    t          |          t          |          ||||g
|gdz  |gd	z  z   |gdd
i|          j        S |dz   }t!          |||||g|gd	z  |gz   |gdd
i|t'          |          t)          |          t+          ||          t-          |	          dd	  	        j        S )Nz/Conjugation without transposition not supportedtrsmrR   r   lapackblas   r   r   	   result_typesoperandsoperand_layoutsresult_layoutsoperand_output_aliasesresult_shapesr   r1   r7   r?   rC   )sideuplotrans_xdiag   rk   rl   rm   rn   ro   rp   backend_configr   )r^   rU   r   RankedTensorTyper\   lentupleranger   element_typeis_forward_compatreplacer   hlomultiplyr   r   intresultsr2   r8   r@   rD   )ctxrT   alphaabr,   r4   trans_aconj_art   ra   rS   b_typebatch_dims_valsnum_bdscalar_layoutlayoutrk   rp   fnmnbatch_size_valb_vs                           r!   trsm_hlor   y   s     QG Q
O
P
PPe<<<'qv&&& "%/&-FQJ%fqj"b(A(A"B"BB& :f)*+!- !-, 	 	61	-	-BDAqQZZN I I|NN34G4GHHnn"<
+	,-# #L- 
!#i..))73u::+>+>'@-11AAqAA73t99CUCU ##^A%6%6A '!+vhl:x !1v#    "	1e}hlm_4XV!#i888#%000+6   ($777  !
 
 
" #r#   r7   r   a_shape_valsc                j   t          j        |j                  }t          d|          }|d d         }t	          |          }||dz   ft          t          |dz
  dd                    z   }	t          t          |dz
  dd                    }
||j        f|t           j        	                    d          fg}t          |          \  }}|                                 r|}g }|d         }t          d          }|D ]$}t          j        |t          |                    }%t!          ||t          t#          |                    |t          |          |g|gdz  |	gz   |	|
gddi|	          j        }n8|d
z   }t!          |||g|	g|	|
gddi|dt'          |          id	  	        j        }|d d         S )NpotrfrR   rd   r   re   r%      r   rj   r   rr   r7   ru   rv   rh   )r   rx   r\   rU   ry   rz   r{   r|   r   r&   r   r}   r   r   r   r   r   r   r   r8   )r   rT   r   r4   r   a_typerS   r   r   r   info_layoutshape_type_pairsrk   rp   r   r   r   r   r   outs                       r!   	potrf_hlor      s   qv&&&u===' "%/&FQJ%fqj"b(A(A"B"BB&eFQJB//00+ V()33B778/ !;;K L L, 	BMRAQZZN I I|NN34G4GHHnn
E

##^^A5F5FJ$o)VH4k*V!    C 
6	B

!, !1v#%E222
      
RaR.r#   )jobvljobvrinput_shape_valsc                   t          j                     t          j        |j                  j        }t          |          dk    sJ |d         }|d d         }t          |          }	|	|	dz   ft          t          |	dz
  dd                    z   }
|rt          j
        j        nt          j
        j        }|rt          j
        j        nt          j
        j        }t          d|          }t          j                            d          }t          j                                        }t          j                                        }t          j                            t          j                                                  }t          j                            t          j                                                  }|                                 r|}|t*          j        k    rFd}|}||g|fgd	z  }d
dggd	z  }||fz   |fgdz  }t          t          |	dd                    gdz  }n!|t*          j        k    rEd}|}||g|fgd	z  }d
dggd	z  }||fz   |fgdz  }t          t          |	dd                    gdz  }n|t*          j        k    rMd}|}||g|ft3          ||          g|fg}d
dgd
gg}||fz   |fg}t          t          |	dd                    g}no|t*          j        k    rMd}|}||g|ft3          ||          g|fg}d
dgd
gg}||fz   |fg}t          t          |	dd                    g}nt7          d|           g }t          t          |	dz
  dd                    }t9          d          }|D ]$}t;          j        |t?          |                    }%||z   ||f||f||fgz   }tA          |          \  }} tC          |||t?          |          tE          |j#                  tE          |j#                  |g|gdz  |
gz   ||z   |
gdz  z   |gz   |           j$        }!|r7t;          j%        |!d	         |!d                   |!d         |!d         |!d         fS |!dd         S |dz   }|t*          j        k    p|t*          j        k    }|t*          j        k    s|t*          j        k    r|n|}t          j        |j                  }"||fz   |"j&        fg}t          t          |	dd                    g}|r
|dz  }|dz  }t          t          |	dz
  dd                    }g |||f||f||f}tA          |          \  }} tC          |||g|
gg ||
|
|R | tO          |          tO          |          dd          j$        }!|r7t;          j%        |!d
         |!d                   |!d         |!d	         |!d         fS |!d d         S )Nrh   re   rd   r   geevrR   r%   Tr   r   FrY   ru   )rk   rl   rm   rn   rp            r   )compute_leftcompute_right)rk   rl   rm   rn   rp   rw   r   )(r   rP   r   rx   r\   shapery   rz   r{   r
   ComputationModekComputeEigenvectorskNoEigenvectorsrQ   r   r&   F32Typer   F64TypeComplexTyper}   npfloat32float64	complex64r   
complex128r^   r   r   r   r   r   r   r   r'   r   complexr|   r+   )#r   rT   inputr   r   r   input_shaper   r   r   r   r   r   rS   i32_typef32_typef64_typec64_type	c128_typer   realeigvecs_type
workspacesworkspace_layoutseigvalseigvals_layoutsr   r   r   r   r   rk   rp   r   
input_types#                                      r!   geev_hlor      s    
#EJ//5+	[		Q				r!$SbS)/&FQJ%fqj"b(A(A"B"BB& 
/c...  
/c... 
 #6???'^((,,(Z^^(Z^^(^
 0 011(n  !1!122) >	B 
dlVX&'!+jq6(Q,!QD((34q8guVR44556:oo	"*		dlVX&'!+jq6(Q,!QD((34q8guVR44556:oo	",		dlVX&'!Q--((CDjq6A3-!QD((34guVR44556oo	"-		dlVY'71a==/8)DEjq6A3-!QD()45guVR44556oo <U < <===Mfqj"b1122KQZZN I I|NN34G4GHHnn0:W0D	<(	<(	(#H% 1% #==M"N"NL-

! ."3"3|!""}"## '!+vh6)O;vhlJ$&#      k#a&#a&))3q63q63q6BB1Xo"	"*		3 3$2:%%",)>)>hhI  "5:..*$j&=>?'5R00112/	 *kG%)OeFQJB//00+//&/ &/ !	/ !;;K L L,wh
  	  ",\::-m<<  !	 	 	" # $ 
 KAA''QQQ@@rr7Nr#   )jobvssortselectc                   t          d|          }t          j        |j                  }|j        }	t          |          dk    sJ |d         }
|d d         }t          |          }||dz   ft          t          |dz
  dd                    z   }|rt          d          |rt          j
        j        nt          j
        j        }|rt          j        j        nt          j        j        }|                                 r|}t#          j        |t"          j                  s7||	fg}|g}||
fz   |	fgdz  }t          t          |dd                    gdz  }nM||	f|
gt          j        |	          j        fg}|dgg}||
fz   |	fg}t          t          |dd                    g}t          j                            d	          }g }t/          d          }|D ]$}t1          j        |t5          |                    }%||z   ||	f||f||fgz   }t7          |          \  }}t9          |||t5          |
          t;          |j                  t;          |j                  |g|gd
z  |gz   ||z   |t          t          |dz
  dd                    t          t          |dz
  dd                    gz   d
di|          j        }|t          j        j        k    r|d         |d         |d
         |d         fS |d         |d         |d         fS |dz   }t#          j        |t"          j                  }||
fz   |	fg}t          t          |dd                    g}|s
|dz  }|dz  }t          j                            d	          }||	f||	fg|||f||f}t7          |          \  }}t9          |||g|g||g|t          t          |dz
  dd                    t          t          |dz
  dd                    ddi|tA          |          tA          |          dd
	  	        j        }|r%|d         |d         |d         |d         |d
         fS |d         |d         |d         |d         f|d
         |d         fS )NgeesrR   rh   re   rd   r   z=The sort feature of LAPACK's gees routine is not implemented.r   r%   ru   rj   r   r   r   )rJ   r   rv   )!rU   r   rx   r\   r|   ry   rz   r{   r^   r	   r   kComputeSchurVectorskNoComputeSchurVectorsSortkSortEigenvalueskNoSortEigenvaluesr}   r   
issubdtypecomplexfloatingr   r   r&   r   r   r   r   r   r   r   r'   r   r+   )r   rT   r   r   r   r   r   rS   r   etyper   r   r   r   rJ   r   r   r   r   r   r   r   r   r   r   rk   rp   r   
is_complexs                                r!   gees_hlor   s  s\   e<<<'qv&&&

%	\		a				2! "%/&FQJ%fqj"b(A(A"B"BB&	 I
GI I I
 
8e00 7 
 )-	O	$	$%*2O$ 3&	B = 233 7!5)*j!(!QD(%01A5guVR44556:oo!5)S".//<=j "A3-!QD(%01guVR44556o~**2..HMQZZN I I|NN34G4GHHnn!G+U!!/# # #==M"N"NL-

!14:4:
 '!+vh6(?:

fqj"b))
*
*
fqj"b))
*
*>
 

 !"1v#%  & ' ( uz***!fc!fc!fc!f--!fc!fc!f%%"}UB$677*$e,-'5R00112/	 *kG%)O^((,,(UU  !	
 ! !;;K L L,sh

  fqj"b))
*
*	
 fqj"b))
*
*  V!$T**$T**  '	 	 	( ) ,  <q63q63q63q63q611q63q6CFCF+SVSV;;r#   c                 
   t          d|          }t          j        |j                  }|j        }t          |          dk    sJ |dd          \  }}||k    sJ ||f            t          |d d                   }t          |          }	|                                 rE|}
d}|D ]}||z  }|t          j	        k    rt          j        ||d|          }n|t          j        k    rt          j        ||d|          }nb|t          j        k    rt          j        ||d|          }n:|t          j        k    rt          j        ||d|          }nt%          d|           |	|	dz   ft          t'          |	dz
  dd                    z   }t          j                            d          }t-          |
|j        t          j                            ||dz
  fz   |j                  t          j                            ||          t          j                            |g|j                  gt3          |          t3          d          t3          |          t3          |          t3          |          t3          |          |gg gd	z  |gz   ||	ft          t'          |	dz
  dd                    z   t          t'          |	dz
  dd                    d
ggd	d
i          j        d d         S |dz   }
|	|	dz   ft          t'          |	dz
  dd                    z   }t          j                            d          }t-          |
|j        t          j                            ||dz
  fz   |j                  t          j                            ||          g|g|g||	ft          t'          |	dz
  dd                    z   t          t'          |	dz
  dd                    gd
d
it7          d          t7          |          dd          j        S )NgehrdrR   rh   rd   r   rY   re   r%   r   r   rk   rl   rm   rn   ro   r   r   )lowhighru   rk   rl   rm   rn   ro   rw   r   )rU   r   rx   r\   r   ry   rz   r}   r   r   r   lapack_sgehrd_workspacer   lapack_dgehrd_workspacer   lapack_cgehrd_workspacer   lapack_zgehrd_workspacer^   r{   r   r&   r   r   r|   r   r   r(   )r   rT   r   rS   r   dimsr   r   
batch_dimsr   r   r   rM   lworkr   r   s                   r!   	gehrd_hlor     s    u==='qv&&&	$	Ta	bcc$!Q	
a!QT#2#Y*z??& %	B	A  1faa
-aAq99ee	"*		-aAq99ee	",		-aAq99ee	"-		-aAq99ee <U < <===fqj!E%
B*C*C$D$DDF~**2..H

&


!
!*Ax"79L
M
M


!
!*h
7
7


!
!5'6+>
?
?	
 !**gajj'!**gajj'!**qF8+
)eE&1*b"5566
6
fqj"b))
*
*#	
 !"1v#  $ bqb% & "FQJ%fqj"b(A(A"B"BB&^((,,(	
&


!
!*Ax"79L
M
M


!
!*h
7
7
 sh
)eE&1*b"5566
6
fqj"b))
*
*
  V!!$$"1%%  '
 
 
( )r#   c                t   |t           j        k    s|t           j        k    rdnd}t          |dz   |          }t	          j        |j                  }|j        }t          |          dk    sJ |dd          \  }}||k    sJ ||f            t          |d d                   }	t          |	          }
|
|
dz   ft          t          |
dz
  dd                    z   }t          j                            d	          }|                                 r|}d}|	D ]}||z  }|t           j        k    rt          j        ||          }|j        }n|t           j        k    rt          j        ||          }|j        }n|t           j        k    r4t          j        ||          }t          j                                        }nV|t           j        k    r4t          j        ||          }t          j                                        }nt3          d
|           t5          ||j        t          j                            |	|fz   |          t          j                            |	|dz
  fz   |          t          j                            |	|dz
  fz   |j                  t          j                            |	|          t          j                            |g|j                  gt7          |          t7          |rdnd          t7          t9          d|                    t7          |          t7          |          |gg gdz  |gz   ||
ft          t          |
dz
  dd                    z   |
ft          t          |
dz
  dd                    z   |
ft          t          |
dz
  dd                    z   t          t          |
dz
  dd                    dggddi          j        d d         S |dz   }|t           j        k    s|t           j        k    rt          j                                        }nQ|t           j        k    s|t           j        k    rt          j                                        }nt3          d
|           t5          ||j        t          j                            |	|fz   |          t          j                            |	|dz
  fz   |          t          j                            |	|dz
  fz   |j                  t          j                            |	|          g|g|g|t          t          |
dd                    t          t          |
dd                    t          t          |
dd                    t          t          |
dz
  dd                    gddidt=          |          id          j        S )NhesytrdrR   rh   rd   r   re   r%   rY   r   r   r   r   rr   r7   ru   r   )r   r   r   rU   r   rx   r\   r   ry   rz   r{   r   r&   r}   r   r   lapack_ssytrd_workspacer|   r   lapack_dsytrd_workspacelapack_chetrd_workspacer   r   lapack_zhetrd_workspacer   r^   r   r   maxr   r8   )r   rT   r   r4   rS   r   r   r   r   r   r   r   r   r   r   rM   r   	diag_types                     r!   	sytrd_hlor   5  s^   R\))Ubm-C-CDD'%uEEE'qv&&&	$	Ta	bcc$!Q	
a!QT#2#Y*z??&FQJ%fqj"b(A(A"B"BB&^((,,( +	B	A  1faa
-a33e%ii	"*		-a33e%ii	",		-a33e*..""ii	"-		-a33e*..""ii <U < <===

&


!
!*t"3Y
?
?


!
!*Ax"7
C
C


!
!*Ax"79L
M
M


!
!*h
7
7


!
!5'6+>
?
?
 !**g5&7aaa88'#a)):L:L

GENNA'qF8+
)eE&1*b"5566
6)eE&1*b"5566
6)eE&1*b"5566
6
fqj"b))
*
*#
 !"1v+  , bqb- . "
bjER\11
  II
er}44
  II
:5::
;
;; 

&


!
!*t"3Y
?
?


!
!*Ax"7
C
C


!
!*Ax"79L
M
M


!
!*h
7
7 sh

fb"%%
&
&
fb"%%
&
&
fb"%%
&
&
fqj"b))
*
*  V
#%000 -
 
 
. /r#   )FFFFF)>collections.abcr   enumr   typingr   numpyr   jaxlib.mlir.irmlirr   jaxlib.mlir.dialects.stablehlodialects	stablehlor   jaxlibr   r   r   cpu._lapackr	   r
   hlo_helpersr   r   r   r   r   r   r   r   registrationsitems_name_valueregister_custom_call_targetendswithr"   r(   r+   boolr2   r8   r@   rD   rK   r   r   r   r   r[   rU   strrQ   rz   r   Valuer   r   r   r   r    r#   r!   <module>r     s  $ % $ $ $ $ $                          , , , , , , , , , , , ,                                            +W*,,2244  ME6(*(v..511A	    D D DD D DE$ E E E E/D / / / /+ + + + +G G$ G G G G/ / / / /
 :>  (0   $ JJL#M3	 0 0 0KC K3 K K K K  49 %9 9 !!349 9 9 9| 16 - - -RX -!-"45- - - -h tF F F$]C%78F F F FT &*d t< t< t< !34t< t< t< t<pF F FTY Y Y Y Yr#   