chiark / gitweb /
compiles
[moebius2.git] / common.c
1 /*
2  * Generally useful stuff.
3  */
4
5 #include <gsl/gsl_vector.h>
6 #include <gsl/gsl_blas.h>
7
8 #include "common.h"
9
10 double magnD(const double pq[D3]) {
11   gsl_vector v;
12
13   v.size= D3;
14   v.stride= 1;
15   v.data= (double*)pq;
16   /* owner and block ought not to be used */
17
18   return gsl_blas_dnrm2(&v);
19 }
20
21 double hypotD(const double p[D3], const double q[D3]) {
22   int k;
23   double pq[D3];
24
25   K pq[k]= p[k] - q[k];
26   return magnD(pq);
27 }
28
29 double hypotD2(const double p[D3], const double q[D3]) {
30   int k;
31   double d2= 0;
32   
33   K d2= ffsqa(p[k] - q[k], d2);
34   return d2;
35 }
36
37 double hypotD2plus(const double p[D3], const double q[D3], double d2) {
38   int k;
39   K d2= ffsqa(p[k] - q[k], d2);
40   return d2;
41 }
42
43 void xprod(double r[D3], const double a[D3], const double b[D3]) {
44   r[0]= a[1]*b[2] - a[2]*b[1];
45   r[1]= a[2]*b[0] - a[0]*b[2];
46   r[2]= a[0]*b[1] - a[1]*b[0];
47 }