#ifndef COMMON_H
#define COMMON_H
+#ifndef _GNU_SOURCE
#define _GNU_SOURCE
+#endif
+
#include <math.h>
+#include <float.h>
#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_blas.h>
+#include <gsl/gsl_linalg.h>
+
+#define D3 3
double hypotD(const double p[D3], const double q[D3]);
double hypotD2(const double p[D3], const double q[D3]);
double hypotD2plus(const double p[D3], const double q[D3], double add);
+double magnD(const double pq[D3]);
+void xprod(double r[D3], const double a[D3], const double b[D3]);
+
+void flushoutput(void);
+void diee(const char *what);
+
+void libdie(const char *lib, int l, const char *str);
+#define XA(w) ((w) ? (void)0 : libdie("X", __LINE__, #w))
+
+void gsldie(int l, const char *what, int status);
+#define GA(w) ({int _ga_r= (w); if (w) gsldie(__LINE__,#w,_ga_r);})
+
+#define FOR_COORD(k) \
+ for ((k)=0; (k)<D3; (k)++)
+
+#define K FOR_COORD(k)
+
+#define STATIC_GSL_VECTOR(x) static gsl_vector x##_gsl= { D3,1,&x[0] };
+#define STATIC_GSL_MATRIX(x) static gsl_matrix x##_gsl= { D3,D3,D3,&x[0][0] };
+
#ifdef FP_FAST_FMA
# define fma_fast fma
#else