
    Spf)g              	       j   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mZmZmZmZmZmZmZmZ ddl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(ej)        dej*        dej+        dej,        diZ-de.de.fdZ/	 	 d6d e0ed!f         fd"Z1d#ej2        d$e0ed!f         fd%Z3d#ej2        d$e0ed!f         fd&Z4d#ej2        d$e0ed!f         d'e0ed!f         fd(Z5dd)d#ej2        d$e0ed!f         fd*Z6d+d+d,d#ej2        d$e0ed!f         fd-Z7	 d7d#ej2        d$e0ed!f         fd.Z8d+d+d/d0e0ed!f         fd1Z9d+ddd2d$e0ed!f         fd3Z:d4 Z;d5 Z<dS )8    )Sequence)EnumN)
xla_client   )	custom_callhlo_u8hlo_s32ensure_hlo_s32hlo_addhlo_minDimensionSizeShapeTypePairmk_result_types_and_shapes)_lapackcpu_ffi)platformapi_versionc                     t           j                            t           j                            d          t          |                     S N   )irIntegerAttrgetIntegerTypeget_unsignedord)cs    M/var/www/html/nettyfy-visnx/env/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&   0   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)   4   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_attrr/   8       	9-CC#	.	..r!   lowerc                 (    t          | rdnd          S )Nr,   Ur.   r1   s    r   _matrix_uplo_attrr5   <   s    	5)CCc	*	**r!   	transpose	conjugatec                 0    t          | r|rdndnd          S )NCTNr.   )r6   r7   s     r   _matrix_transpose_attrr<   @   s"    	9EI.SS33#	F	FFr!   	unit_diagc                 (    t          | rdnd          S )Nr3   r;   r.   )r=   s    r   _matrix_diagonal_attrr?   D   r0   r!   sdr   zfn_base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)rC   dtypeprefixerrs       r   build_lapack_fn_targetrP   P   s    Kt,,O0CEJ0O  'V&W&&&	 K K K
c#@#@#@#@
A
AsJKs   36 
A AAFb_shape_vals.c	                   t          j                     t          j        |j                  }
|	dd          \  }}|	d d         }t          |          }t          d          }|D ]$}t          j        |t          |                    }%| t          j        k    rd}nK| t          j        k    rd}n8| t          j        k    rd}n%| t          j        k    rd}nt          d|            |r|st          d          g }||dz   ft!          t#          |dz
  d	d	                    z   }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 )Nr   
blas_strsm
blas_dtrsm
blas_ctrsm
blas_ztrsmrG   z/Conjugation without transposition not supported   r   r   	   result_typesoperandsoperand_layoutsresult_layoutsoperand_output_aliasesresult_shapes)r   
initializer   RankedTensorTyperJ   lenr	   hlomultiplyr
   npfloat32float64	complex64
complex128rL   tupleranger   element_typer   intresults)rM   alphaabr*   r1   trans_aconj_adiagrQ   b_typemnbatch_dims_valsnum_bdbatch_size_valb_vfnscalar_layoutlayoutr\   ra   s                         r   trsm_hlor   _   s    
qv&&&	bcc	$!Q "%/&1::. G Gc\..2E2EFFNN
bj	BB
	BB	BB	BB
:5::
;
;; QG Q
O
P
PP-FQJ%fqj"b(A(A"B"BB& :f)*+!- !-,	I''U)<)<w5V"A66D		8J8Ja.++^a %o)VHqL8XV!
 
 
 r!   rr   a_shape_valsc                   t          j                     t          j        |j                  }t          |          dk    sJ |d d         }t          |          dz
  }|dd          \  }}| t          j        k    rd}nK| t          j        k    rd}n8| t          j	        k    rd}n%| t          j
        k    rd}nt          d|            g }	||dz   ft          t          |dz
  d	d	                    z   }
t          j                            d
          }||j        f|t#          ||          fz   |f||fg}t%          |          \  }}t'          d          }|D ]$}t)          j        |t-          |                    }%t/          |||t-          |          t-          |          |g|	gdz  |
gz   |
t          t          |d	d	                    t          t          |dz
  d	d	                    gddi|          j        S )NrY   rS   lapack_sgetrflapack_dgetrflapack_cgetrflapack_zgetrfrG   r   rX   r#      r   r[   )r   rb   r   rc   rJ   rd   rg   rh   ri   rj   rk   rL   rl   rm   r   r$   rn   r   r   r	   re   rf   r
   r   rp   )rM   rr   r   a_typerz   r{   rx   ry   r~   r   r   i32_typeshape_type_pairsr\   ra   r|   r}   s                    r   	getrf_hlor      s.   	qv&&&	\		a				 "%/|q &	bcc	$!Q
bj	BB
	BB	BB	BB
:5::
;
;;-FQJ%fqj"b(A(A"B"BB&^((,,(V()'!Q--))84!/
 !;;K L L,1::. G Gc\..2E2EFFNN	q 1 1>!3D3DaH$o)VH4eFB##$$eFQJB''((
  V!
 
 
 r!   c                N   t          j                     t          j        |j                  }t          |          dk    sJ |dd          \  }}t	          |          t          u sJ t	          |          t          u sJ |d d         }t          |          }| t          j        k    rd}t          j	        ||          }	n| t          j
        k    rd}t          j        ||          }	nb| t          j        k    rd}t          j        ||          }	n:| t          j        k    rd}t          j        ||          }	nt!          d|            g }
||dz   ft#          t%          |dz
  d	d	                    z   }t          j                            d
          }t+          d          }|D ]$}t-          j        |t1          |                    }%||j        f|t5          ||          fz   |j        f||f|	g|j        fg}t7          |          \  }}t9          |||t+          |          t+          |          t+          |	          |g|
gdz  |gz   |t#          t%          |d	d	                    t#          t%          |dz
  d	d	                    dggddi|          j        }|d d         S )NrY   rS   lapack_sgeqrflapack_dgeqrflapack_cgeqrflapack_zgeqrfrG   r   rX   r#      r   r[   r   )r   rb   r   rc   rJ   rd   ro   rg   rh   lapack_sgeqrf_workspaceri   lapack_dgeqrf_workspacerj   lapack_cgeqrf_workspacerk   lapack_zgeqrf_workspacerL   rl   rm   r   r$   r	   re   rf   r
   rn   minr   r   rp   )rM   rr   r   r   rx   ry   rz   r{   r~   lworkr   r   r   r|   r}   r   r\   ra   outs                      r   	geqrf_hlor      s   	qv&&&	\		a					bcc	$!Q	aC	aC "%/&
bj	B+Aq11EE
	B+Aq11EE	B+Aq11EE	B+Aq11EE
:5::
;
;;-FQJ%fqj"b(A(A"B"BB&^((,,(1::. G Gc\..2E2EFFNNV()#a))%v':;!w#$	/ !;;K L L,

GAJJJ$o)VH4eFB##$$eFQJB''((	
	  V!	 	 	   
RaR.r!   tau_shape_valsc                   t          j                     t          j        |j                  }|j        }|}t          |          dk    sJ |dd          \  }}	|t          j                                        k    sJ |	t          j                                        k    sJ |d d         }
t          |
          }t          d          }|
D ]$}t          j        |t          |                    }%|d         }t	          |          t          u sJ | t          j        k    rd}t          j        ||	|          }n| t          j        k    rd}t          j        ||	|          }nd| t          j        k    rd}t          j        ||	|          }n;| t          j        k    rd}t          j        ||	|          }nt/          d	|            g }||dz   ft1          t3          |dz
  dd                    z   }t          j                            d
          }||j        f|
|f|g|j        fg}t;          |          \  }}t=          |||t          |          t          |	          t          |          t          |          ||g|gdz  |t1          t3          |dd                    gz   |t1          t3          |dz
  dd                    dggddi|          j        }|d d         S )NrY   rS   r   rX   lapack_sorgqrlapack_dorgqrlapack_cungqrlapack_zungqrrG   r#      r   r[   ) r   rb   r   rc   rJ   shaperd   
ShapedTypeget_dynamic_sizer	   re   rf   r
   ro   rg   rh   lapack_sorgqr_workspaceri   lapack_dorgqr_workspacerj   lapack_cungqr_workspacerk   lapack_zungqr_workspacerL   rl   rm   r   r$   rn   r   r   rp   )rM   rr   taur   r   r   dims	dims_valsrx   ry   rz   r{   r|   r}   kr~   r   r   r   r   r   r\   ra   r   s                           r   	orgqr_hlor      s    
qv&&&	$)	Ta	bcc$!Q	
bm,,..	.	.	.	.	
bm,,..	.	.	.	.crcN/&1::. G Gc\..2E2EFFNNR!	aC
bj	B+Aq!44EE
	B+Aq!44EE	B+Aq!44EE	B+Aq!44EE
:5::
;
;;-FQJ%fqj"b(A(A"B"BB&^((,,(V()!w#$/
 !;;K L L,

GAJJ

u~~q#$o)eFB##$$- 
 	eFQJB''((	

  V!	 	 	  ! " 
RaR.r!   r4   c                   t          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potrf)rC   rM   rS   r   rX   r#   r   r   r[   r   uplor4   r   )r\   r]   r^   r_   r`   ra   backend_configr   rY   )r   rb   r   rc   rJ   rP   rd   rl   rm   rn   r   r$   r   is_forward_compatr	   re   rf   r
   r   ro   rp   r5   )ctxrM   rr   r1   r   r   rC   rz   r{   r   info_layoutr   r\   ra   r~   r   ry   r|   r}   r   s                       r   	potrf_hlor   >  s   	qv&&&"7%@@@' "%/&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!   T)full_matrices
compute_uvc                	   t          j                     t          j        |j                  }t          |          dk    sJ |dd          \  }}t	          |          t          u sJ t	          |          t          u sJ |d d         }t          |          }	t          d          }
|D ]$}t          j	        |
t          |                    }
%t          j                            d          }| t          j        k    rad}t          j                                        }t          j        ||||          }t          j        ||          g|f|g|j        fg}dgdgg}n| t          j        k    rad}t          j                                        }t          j        ||||          }t          j        ||          g|f|g|j        fg}dgdgg}nx| t          j        k    rd}t          j                                        }t          j        ||||          }t          j        ||          g|ft          j        ||t          |                    gt          j                                        f|g|j        fg}dgdgdgg}n| t          j        k    rd	}t          j                                        }t          j        ||||          }t          j        ||          g|ft          j        ||t          |                    gt          j                                        f|g|j        fg}dgdgdgg}nt9          d
|            g }|	|	dz   ft;          t=          |	dz
  dd                    z   }||j        f|t?          ||          fz   |f|||r|nt?          ||          fz   |j        f||r|nt?          ||          |fz   |j        f||fg|z   }tA          |          \  }}tC          ||t          t          |                    t          t          |                    |
t          |          t          |          t          |          |g|gdz  |gz   ||	ft;          t=          |	dz
  dd                    z   ||t;          t=          |	dz
  dd                    g|z   ddi|          j"        }|dd         S )NrY   rS   r   r#   lapack_sgesddr   lapack_dgesddlapack_cgesddlapack_zgesddrG   rX      r[   r   )#r   rb   r   rc   rJ   rd   ro   r	   re   rf   r
   r   r$   rg   rh   F32Typer   sgesdd_work_sizegesdd_iwork_sizern   ri   F64Typedgesdd_work_sizerj   cgesdd_work_sizecgesdd_rwork_sizerk   zgesdd_work_sizerL   rl   rm   r   r   r   rp   )rM   rr   r   r   r   r   rx   ry   rz   r{   r|   r}   r   r~   singular_vals_typer   	workspaceworkspace_layoutsr   r   r   r\   ra   r   s                           r   	gesdd_hlor   q  s   	qv&&&	\		a					bcc	$!Q	aC	aC "%/&1::. G Gc\..2E2EFFNN^((,,(
bj	B))$Q:}EEE

"1a
(
(	)84
&%&I qc

	B))$Q:}EEE

"1a
(
(	)84
&%&I qc
	B))$Q:}EEE

"1a
(
(	)84

#Aq#j//
:
:	;RZ^^=M=MN
&%&I
 qcA3	B))$Q:}EEE

"1a
(
(	)84

#Aq#j//
:
:	;RZ^^=M=MN
&%&I
 qcA3
:5::
;
;;-FQJ%fqj"b(A(A"B"BB& 6&'Aq		|#%78<113q!99==v?RS]9Aq		1==v?RSh/ / !;;K L L,M**++WS__-E-E~qzz71::wu~~q2$o)VH4
)eE&1*b"5566
6


fqj"b))
*
*   V!	 	 	    
QqS/r!   c                    t          j                     t          j        |j                  }t          |          dk    sJ |dd          \  }}t	          |          t          u rt	          |          t          u r||k    s
J |            |d d         }t          |          dz
  }t          j                            d          }	| t          j
        k    rUd}
t          j                                        }t          j        |          g|j        ft          j        |          g|	fg}nk| t          j        k    rUd}
t          j                                        }t          j        |          g|j        ft          j        |          g|	fg}n| t          j        k    rjd}
t          j                                        }t          j        |          g|j        ft          j        |          g|ft          j        |          g|	fg}n| t          j        k    rjd}
t          j                                        }t          j        |          g|j        ft          j        |          g|ft          j        |          g|	fg}nt-          d|            t/          d	          }|D ]$}t1          j        |t5          |                    }%g }d
g}|gt          |          z  }||d	z   ft7          t9          |d	z
  dd                    z   }t;          ||j        f||fz   |f||	fg|z             \  }}t=          |
|t/          |rd	nd
          |t5          |          |g|gdz  |gz   |t7          t9          |dd                    t7          t9          |d	z
  dd                    g|z   dd
i|          j        }|d d         S )NrY   rS   r#   lapack_ssyevdlapack_dsyevdlapack_cheevdlapack_zheevdrG   r   r   rX   r   r[   ) r   rb   r   rc   rJ   rd   ro   r   r$   rg   rh   r   r   syevd_work_sizern   syevd_iwork_sizeri   r   rj   heevd_work_sizeheevd_rwork_sizerk   rL   r	   re   rf   r
   rl   rm   r   r   rp   )rM   rr   r   r1   r   rx   ry   rz   r{   r   r~   eigvals_typer   r|   r}   r   shape_layoutr   r   r\   ra   r   s                         r   	syevd_hlor     s    
qv&&&	\		a					bcc	$!Q	aCDGGsNNqAvvv|vvv "%/|q &^((,,(
bj	B:>>##L

!!
$
$	%v':;

"1
%
%	&1II 
	B:>>##L

!!
$
$	%v':;

"1
%
%	&1II 	B:>>##L

!!
$
$	%v':;

"1
%
%	&5

"1
%
%	&1II
 	B:>>##L

!!
$
$	%(;<

"1
%
%	&5

"1
%
%	&1II :5::
;
;;1::. G Gc\..2E2EFFNN-,#ns9~~5FQJ%fqj"b(A(A"B"BB& :f)*1$."$&/0! !, 	U)**NN1<M<MqQ$o)VH4

fb"%%
&
&
fqj"b))
*
* 	
  V!	 	 	   
RaR.r!   )jobvljobvrinput_shape_valsc          
      D   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   }	t          |rdnd          }
t          |rdnd          }t          j
                            d          }t          j                                        }t          j                                        }t          j                            t          j                                                  }t          j                            t          j                                                  }| t           j        k    rHd}d	}|}||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    rGd}d	}|}||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    rOd}d}|}||g|ft)          ||          g|fg}ddgdgg}||fz   |fg}t          t          |dd                    g}nq| t           j        k    rOd}d}|}||g|ft)          ||          g|fg}ddgdgg}||fz   |fg}t          t          |dd                    g}nt-          d|            g }t          t          |dz
  dd                    }t/          d          }|D ]$}t1          j        |t5          |                    }%||z   ||f||f||fgz   }t7          |          \  }}t9          |||t5          |          t;          |
          t;          |          |g|gdz  |	gz   ||z   |	gdz  z   |gz   |          j        }|r7t1          j        |d
         |d                   |d         |d         |d         fS |dd         S )NrY   rX   rS   r   Vr;   r#   lapack_sgeevTr   r   lapack_dgeevlapack_cgeevFlapack_zgeevrG   r   )r\   r]   r^   r_   ra   r   r      ) r   rb   r   rc   rJ   r   rd   rl   rm   r   r   r$   r   r   r   ComplexTyperg   rh   ri   rj   r   rk   rL   r	   re   rf   r
   r   r   r   rp   complex) rM   inputr   r   r   input_shapery   rz   r{   r   jobvl_cjobvr_cr   f32_typef64_typec64_type	c128_typer~   realeigvecs_type
workspacesr   eigvalseigvals_layoutsr   r   r|   r}   r   r\   ra   r   s                                    r   geev_hlor     s    
#EJ//5+	[		Q				r!$SbS)/&FQJ%fqj"b(A(A"B"BB&u%#&&'u%#&&'^((,,(Z^^(Z^^(^
 0 011(n  !1!122) bj	BDLq68$%)JQ11$&12Q6GU62r22334q8OO
	BDLq68$%)JQ11$&12Q6GU62r22334q8OO	BDLq68$1&ABJQ!1$&12GU62r22334OO	BDLq69%A'BCJQ!1$&	23GU62r22334OO
:5::
;
;;-eFQJB//00+1::. G Gc\..2E2EFFNN.87.B&&!F# /# !;;K L L,q 1 1gg %o)VH4'/9VHqLH"m$!	 	 	   
 KAA''QQQ@@qs8Or!   )jobvssortselectc                J   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          d          t          |rdnd          }t          |rdnd          }| t          j        k    rd	}nK| t          j        k    rd
}n8| t          j        k    rd}n%| t          j        k    rd}nt          d|            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 ]$}t-          j        |t1          |                    }%||z   ||f|	|f|	|fgz   }t3          |          \  }}t5          |||t1          |          t7          |          t7          |          |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          d          k    r|d         |d         |d         |d         fS |d         |d         |d         fS )NrY   rX   rS   r   z=The sort feature of LAPACK's gees routine is not implemented.r   r;   Slapack_sgeeslapack_dgeeslapack_cgeeslapack_zgeesrG   r   r#   r   r[   r   r   )r   rb   r   rc   rJ   rn   rd   rl   rm   rL   r   rg   rh   ri   rj   rk   
issubdtypecomplexfloatingr   r   r$   r	   re   rf   r
   r   r   r   rp   )rM   rr   r   r   r   r   r   etypery   rz   r{   r   r~   r   r   r   r   r   r   r|   r}   r   r\   ra   r   s                            r   gees_hlor   u  s   	qv&&&

%	\		a				2! "%/&FQJ%fqj"b(A(A"B"BB&	 I
GI I I U#cc
$
$%	D!SSc	"	"$
bj	BB
	BB	BB	BB
:5::
;
;; 
ub0	1	1 5'(J1$&./!3GU62r22334q8OO'3u--:;J  !1$&./GU62r22334O^((,,(-1::. G Gc\..2E2EFFNN')U!!-# # !;;K L L,qut	 %o)VH4&8eFQJB''((eFQJB''((< 
  V!%	 	 	& ' ( 
SXXFCFCFCF++FCFCF##r!   c                    t          j                     t          j        |j                  }|j        }t          |          dk    sJ |dd          \  }}||k    sJ ||f            t          |d d                   }t          |          }d}|D ]}	||	z  }| t          j	        k    rd}
t          j
        ||d|          }n| t          j        k    rd}
t          j        ||d|          }nf| t          j        k    rd}
t          j        ||d|          }n<| t          j        k    rd}
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t1          |          t1          d          t1          |          t1          |          t1          |          t1          |          |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 )NrY   rS   r   lapack_sgehrdlapack_dgehrdlapack_cgehrdlapack_zgehrdrG   rX   r#   r   r   r\   r]   r^   r_   r`   r   )r   rb   r   rc   rJ   r   rd   rl   rg   rh   lapack_sgehrd_workspaceri   lapack_dgehrd_workspacerj   lapack_cgehrd_workspacerk   lapack_zgehrd_workspacerL   rm   r   r$   r   r   rn   r	   rp   )rM   rr   r   r   rx   ry   
batch_dimsr{   rs   rA   r~   r   r   r   r   s                  r   	gehrd_hlor    s   	qv&&&	$	Ta	bcc$!Q	
a!QT#2#Y*z??&!  aFAA
bj	B+Aq!Q77EE
	B+Aq!Q77EE	B+Aq!Q77EE	B+Aq!Q77EE
:5::
;
;;FQJ%fqj"b(A(A"B"BB&^((,,(	

a!eX 5v7JKK

H55
)<==	 

GAJJ

GAJJ

u~~qdQh&)		E%
B33444eFQJB''((	
	  V#	 	 	$ % & 
RaR.r!   c                d   t          j                     t          j        |j                  }|j        }t          |          dk    sJ |dd          \  }}||k    sJ ||f            t          |d d                   }t          |          }d}	|D ]}
|	|
z  }	| t          j	        k    rd}t          j
        ||          }|j        }n| t          j        k    rd}t          j        ||          }|j        }n| t          j        k    r6d}t          j        ||          }t          j                                        }nX| t          j        k    r6d}t          j        ||          }t          j                                        }nt+          d|            ||dz   ft          t-          |dz
  d	d	                    z   }t          j                            d
          }t3          ||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t5          |          t5          |rdnd          t5          t7          d|                    t5          |	          t5          |          |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 )NrY   rS   r   lapack_ssytrdlapack_dsytrdlapack_chetrdlapack_zhetrdrG   rX   r#   r   r   r  )r   rb   r   rc   rJ   r   rd   rl   rg   rh   lapack_ssytrd_workspacern   ri   lapack_dsytrd_workspacerj   lapack_chetrd_workspacer   r   rk   lapack_zhetrd_workspacer   rL   rm   r   r$   r   r	   maxrp   )rM   rr   r1   r   r   rx   ry   r  r{   rs   rA   r~   r   	diag_typer   r   r   s                    r   	sytrd_hlor    s   	qv&&&	$	Ta	bcc$!Q	
a!QT#2#Y*z??&!  aFAA
bj	B+Aq11E#II
	B+Aq11E#II	B+Aq11E
  II	B+Aq11E
  II
:5::
;
;;FQJ%fqj"b(A(A"B"BB&^((,,(	

aT 19==

a!eX 5yAA

a!eX 5v7JKK

H55
)<== 

G$5AAA66Aq		8J8Jqzz75>>1&dQh&)		E%
B33444		E%
B33444		E%
B33444eFQJB''((	
  V+	 	 	, - . 
RaR.r!   )FFFFF)F)=collections.abcr   enumr   numpyrg   jaxlib.mlir.irmlirr   jaxlib.mlir.dialects.stablehlodialects	stablehlore   jaxlibr   hlo_helpersr   r   r	   r
   r   r   r   r   r   r   r   registrationsitems_name_valueregister_custom_call_targetendswithr    r&   r)   boolr/   r5   r<   r?   rh   ri   rj   rk   rI   strrP   rl   r   Valuer   r   r   r   r   r   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/ / / / /
 JJL#M3	 KC K3 K K K K  49 %* * !!34* * * *^/ /!-"45/ / / /f7 7!-"457 7 7 7v= =!-"45=#M3$67= = = =D 16 . . .RX .!-"45. . . .f 48D T T T T!-"45T T T Tv L L L!-"45L L L Lf tV V V$]C%78V V V Vt !%5 N$ N$ N$ !34N$ N$ N$ N$d1 1 1j9 9 9 9 9r!   