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