chiark / gitweb /
better error handling and gsl stuff etc.
[moebius2.git] / common.h
index 1b79fe8107f518b86b679cb06c6ac73968112cc6..52f2e5b15781e6c6dba388968def3535c6ae5a89 100644 (file)
--- a/common.h
+++ b/common.h
@@ -35,11 +35,20 @@ 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