X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=moebius2.git;a=blobdiff_plain;f=common.c;h=bfe11b7dc23851e0e427f45533a86d9df2f0b112;hp=fe58990f2c76888b5189682e76e988966b486149;hb=HEAD;hpb=a83423db06893f4a8e90c9324e4c59dbc5ff4234 diff --git a/common.c b/common.c index fe58990..bfe11b7 100644 --- a/common.c +++ b/common.c @@ -5,14 +5,15 @@ #include "common.h" double magnD(const double pq[D3]) { - gsl_vector v; - - v.size= D3; - v.stride= 1; - v.data= (double*)pq; - /* owner and block ought not to be used */ + return sqrt(magnD2(pq)); +} - 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]) { @@ -43,6 +44,18 @@ void xprod(double r[D3], const double a[D3], const double b[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;