2 * Generally useful stuff.
7 double hypotD1(const double pq[D3]) {
13 /* owner and block ought not to be used */
15 return gsl_blas_snrm2(&v);
18 double hypotD(const double p[D3], const double q[D3]) {
26 double hypotD2(const double p[D3], const double q[D3]) {
28 K d2= ffsqa(p[k] - q[k], d2);
32 double hypotD2plus(const double p[D3], const double q[D3], double d2) {
33 K d2= ffsqa(p[k] - q[k], d2);
37 void xprod(double r[D3], const double a[D3], const double b[D3]) {
38 r[0]= a[1]*b[2] - a[2]*b[1]);
39 r[1]= a[2]*b[0] - a[0]*b[2]);
40 r[2]= a[0]*b[1] - a[1]*b[0]);