#line 101 "interface.nw" #ifndef SSE_DWF_CG #define SSE_DWF_CG #line 112 "interface.nw" #if defined (__cplusplus) extern "C" { #endif #line 126 "interface.nw" typedef struct SSE_DWF_Fermion SSE_DWF_Fermion; typedef struct SSE_DWF_Gauge SSE_DWF_Gauge; #line 141 "interface.nw" typedef double (*SSE_DWF_gauge_reader)(const void *OuterGauge, void *env, int lattice_addr[4], int dim, int a, int b, int re_im); #line 162 "interface.nw" typedef double (*SSE_DWF_fermion_reader)(const void *OuterFermion, void *env, int lattice_addr[5], int color, int dirac, int re_im); #line 175 "interface.nw" typedef void (*SSE_DWF_fermion_writer)(void *OuterFemrion, void *env, int lattice_addr[5], int color, int dirac, int re_im, double value); #line 212 "interface.nw" typedef enum { SSE_DWF_FLOAT, SSE_DWF_DOUBLE } SSE_DWF_FP_SIZE; #line 190 "interface.nw" int SSE_DWF_init(const int lattice[5], SSE_DWF_FP_SIZE fp_size, void *(*allocator)(size_t size), void (deallocator)(void *)); #line 227 "interface.nw" void SSE_DWF_fini(void); #line 247 "interface.nw" SSE_DWF_Gauge *SSE_DWF_load_gauge(const void *OuterGauge_U, const void *OuterGauge_V, void *env, SSE_DWF_gauge_reader reader); #line 258 "interface.nw" void SSE_DWF_delete_gauge(SSE_DWF_Gauge *); #line 267 "interface.nw" SSE_DWF_Fermion *SSE_DWF_load_fermion(const void *OuterFermion, void *env, SSE_DWF_fermion_reader reader); #line 276 "interface.nw" SSE_DWF_Fermion *SSE_DWF_allocate_fermion(void); #line 281 "interface.nw" void SSE_DWF_delete_fermion(SSE_DWF_Fermion *); #line 288 "interface.nw" void SSE_DWF_save_fermion(void *OuterFermion, void *env, SSE_DWF_fermion_writer writer, SSE_DWF_Fermion *CGfermion); #line 301 "interface.nw" int SSE_DWF_cg_solver(SSE_DWF_Fermion *result, double *out_eps, int *out_iter, const SSE_DWF_Gauge *gauge, double M_0, double m_f, const SSE_DWF_Fermion *guess, const SSE_DWF_Fermion *rhs, double eps, int max_iter); #line 117 "interface.nw" #if defined (__cplusplus) } #endif #line 107 "interface.nw" #endif