return gsl_blas_dnrm2(&v);
}
+double magnD2(const double pq[D3]) {
+ int k;
+ double d2= 0;
+
+ K d2= ffsqa(pq[k], d2);
+ return d2;
+}
+
double hypotD(const double p[D3], const double q[D3]) {
int k;
double pq[D3];
r[2]= a[0]*b[1] - a[1]*b[0];
}
+void normalise(double v[D3], double one, double absepsilon) {
+ int k;
+ double multby= one/(magnD(v) + absepsilon);
+ K v[k] *= multby;
+}
+
+void xprod_norm(double r[D3], const double a[D3], const double b[D3],
+ double one, double absepsilon) {
+ xprod(r,a,b);
+ normalise(r, absepsilon, one);
+}
+
double dotprod(const double a[D3], const double b[D3]) {
int k;
double result= 0;