su2.h: MILC SU(2) library prototypes
See also:
/****************************** su2.h **********************************
*
Defines and subroutine declarations for SU2 simulation *
MIMD version 4 *
*
*************************************************************************/
#ifndef _SU2_H
#define _SU2_H
typedef struct { float e[4]; } su2_matrix;
/*-----------------------------------------------------------------
void mult_su2_nn(su2_matrix *a, su2_matrix *b, su2_matrix *c );
Source file: m_mat_nn.c
void mult_su2_na(su2_matrix *a, su2_matrix *b, su2_matrix *c);
Source file: m_mat_na.c
void mult_su2_an(su2_matrix *a, su2_matrix *b, su2_matrix *c);
Source file: m_mat_an.c
void mult_su2_aa(su2_matrix *a, su2_matrix *b, su2_matrix *c);
Source file: m_mat_aa.c
void mult_su2_choose(su2_matrix *a, int flag_a, su2_matrix *b, int flag_b,
su2_matrix *c);
Source file: m_mat_choose.c
float realtrace_su2(su2_matrix *a, su2_matrix *b);
Source file: realtr.c
float trace_su2(su2_matrix *a);
Source file: trace_su2.c
float det_su2(su2_matrix *a);
Source file: det_su2.c
void add_su2_matrix(su2_matrix *a, su2_matrix *b, su2_matrix *c);
Source file: addmat.c
void sub_su2_matrix(su2_matrix *a, su2_matrix *b, su2_matrix *c);
Source file: submat.c
void scalar_mult_add_su2_matrix(su2_matrix *a, su2_matrix *b, float s,
su2_matrix *c);
Source file: s_m_a_mat.c
void scalar_mult_sub_su2_matrix(su2_matrix *a, su2_matrix *b, float s,
su2_matrix *c);
Source file: s_m_s_mat.c
void c_scalar_mult_add_su2mat(su2_matrix *a, su2_matrix *b, complex phase,
su2_matrix *c);
Source file: cs_m_a_mat.c
void su2_adjoint(su2_matrix *a, su2_matrix *b);
Source file: su2_adjoint.c
void make_anti_hermitian(su2_matrix *m2, su2_anti_hermitmat *ah2);
Source file: make_ahmat.c
void compress_anti_hermitian(su2_matrix *mat_su2, su2_anti_hermitmat *ah2);
Source file: cmp_ahmat.c
void random_anti_hermitian(su2_anti_hermitmat *mat_antihermit, void *prn_pt);
Source file: rand_ahmat.c
void su2mat_copy(su2_matrix *a, su2_matrix *b);
Source file: su2mat_copy.c
void reunit_su2(su2_matrix *a);
Source file: reunit_su2.c
su2_matrix make_su2_matrix(float a0, float a1, float a2, float a3);
Source file: make_su2_mat.c
/* -----------------------------------------------------------------*/
void c_scalar_mult_su2vec(su2_vector *v1, complex *phase, su2_vector *v2);
Source file: cs_m_vec.c
void c_scalar_mult_add_su2vec(su2_vector *v1, complex *phase, su2_vector *v2);
Source file: cs_m_a_vec.c
void c_scalar_mult_sub_su2vec(su2_vector *v1, complex *phase, su2_vector *v2);
Source file: cs_m_s_vec.c
/* We have no data type which holds the outer product of A ^ B (\in SL2(C)?)
Source file: su2_proj.c
Source file: su2_anti_proj.c
void su2vec_copy(su2_vector *a, su2_vector *b);
Source file: su2vec_copy.c
void mult_su2_mat_vec(su2_matrix *a, su2_vector *b, su2_vector *c);
Source file: m_matvec.c
void mult_su2_mat_vec_sum(su2_matrix *a, su2_vector *b, su2_vector *c);
Source file: m_matvec_s.c
void mult_su2_mat_vec_sum_4dir(su2_matrix *a, su2_vector *b0, su2_vector *b1,
su2_vector *b2, su2_vector *b3, su2_vector *c);
Source file: m_mv_s_4dir.c
void mult_su2_mat_vec_nsum(su2_matrix *a, su2_vector *b, su2_vector *c);
Source file: m_matvec_ns.c
void mult_adj_su2_mat_vec(su2_matrix *a, su2_vector *b, su2_vector *c);
Source file: m_amatvec.c
void mult_adj_su2_mat_vec_4dir(su2_matrix *a, su2_vector *b, su2_vector *c);
Source file: m_amv_4dir.c
void mult_adj_su2_mat_vec_sum(su2_matrix *a, su2_vector *b, su2_vector *c);
Source file: m_amatvec_s.c
void mult_adj_su2_mat_vec_nsum(su2_matrix *a, su2_vector *b,su2_vector *c);
Source file: m_amatvec_ns.c
void add_su2_vector(su2_vector *a, su2_vector *b, su2_vector *c);
Source file: addvec.c
void sub_su2_vector(su2_vector *a, su2_vector *b, su2_vector *c);
Source file: subvec.c
void sub_four_su2_vecs(su2_vector *a, su2_vector *b1, su2_vector *b2,
su2_vector *b3, su2_vector *b4);
Source file: sub4vecs.c
void scalar_mult_su2_vector(su2_vector *a, float s, su2_vector *c);
Source file: s_m_vec.c
void scalar_mult_add_su2_vector(su2_vector *a, su2_vector *b, float s,
su2_vector *c);
Source file: s_m_a_vec.c
void scalar_mult_sub_su2_vector(su2_vector *a, su2_vector *b, float s,
su2_vector *c);
Source file: s_m_s_vec.c
void scalar_mult_sum_su2_vector(su2_vector *a, su2_vector *b, float s);
Source file: s_m_sum_vec.c
complex su2_dot(su2_vector *a, su2_vector *b);
Source file: su2_dot.c
float su2_rdot(su2_vector *a, su2_vector *b);
Source file: su2_rdot.c
float magsq_su2vec(su2_vector *a);
Source file: msq_su2vec.c
/*---------------------------implimented above here------------*/
/* ROUTINES FOR WILSON VECTORS */
void mult_mat_su2_wilson_vec(su2_matrix *mat, su2_wilson_vector *src,
su2_wilson_vector *dest);
void mult_mat_su2_hwvec(su2_matrix *mat, su2_half_wilson_vector *src,
void mult_adj_mat_su2_wilson_vec( su2_matrix *mat, su2_wilson_vector *src,
su2_wilson_vector *dest);
void mult_adj_mat_su2_hwvec(su2_matrix *mat, su2_half_wilson_vector *src,
su2_half_wilson_vector *dest);
void add_su2_wilson_vector(su2_wilson_vector *src1,
su2_wilson_vector *src2,
void sub_su2_wilson_vector(su2_wilson_vector *src1,
su2_wilson_vector *src2,
void scalar_mult_su2_wvec(su2_wilson_vector *src, float s,
su2_wilson_vector *dest);
void scalar_mult_su2_hwvec( su2_half_wilson_vector *src, float s,
su2_half_wilson_vector *dest);
float magsq_su2_wvec(su2_wilson_vector *src);
complex su2_wvec_dot(su2_wilson_vector *src1, su2_wilson_vector *src2);
float su2_wvec_rdot(su2_wilson_vector *src1, su2_wilson_vector *src2);
Source file: wvec_rdot.c
void scalar_mult_add_su2_wvec(su2_wilson_vector *src1,
su2_wilson_vector *src2, float s,
void scalar_mult_addtm_su2_wvec(su2_wilson_vector *src1,
void c_scalar_mult_add_su2_wvec(su2_wilson_vector *v1,
su2_wilson_vector *v2,
Source file: cs_m_a_wvec.c
void su2_antiherm_projector_w(su2_wilson_vector *a, su2_wilson_vector *b,
Source file: su2_antproj_w.c
void copy_su2_wvec(su2_wilson_vector *src, su2_wilson_vector *dest);
void clear_su2_wvec(su2_wilson_vector *dest);
void su2_wp_shrink(su2_wilson_vector *src, su2_half_wilson_vector *dest,
int dir, int sign);
void su2_wp_shrink_4dir(su2_wilson_vector *a,
void su2_wp_grow(su2_half_wilson_vector *src, su2_wilson_vector *dest,
void su2_wp_grow_add(su2_half_wilson_vector *src,
su2_wilson_vector *dest, int dir, int sign);
void grow_add_four_su2_wvecs(su2_wilson_vector *a,
su2_half_wilson_vector *b1,
void mult_su2_by_gamma(su2_wilson_vector *src, su2_wilson_vector *dest,
void mult_su2_by_gamma_left(su2_wilson_matrix *src, su2_wilson_matrix *dest,
void mult_su2_by_gamma_right(su2_wilson_matrix *src, su2_wilson_matrix *dest,
int dir);
void dump_su2_wilson_vec(su2_wilson_vector *src);
/* MISCELLANEOUS ROUTINES */
void dump_su2_mat(su2_matrix *m);
Source file: dumpmat.c
void dump_su2_vec(su2_vector *v);
Source file: dumpvec.c
#endif /* _SU2_H */
J. E. Hetrick
[hetrick@physics.arizona.edu]
Last modified: Tue Feb 25 09:19:17 1997