aboutsummaryrefslogtreecommitdiff
path: root/src/slalib/vn.f
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
commitd54fe7c1f704a63824c5bfa0ece65245572e9b27 (patch)
treeafc52015ffc2c74e0266653eecef1c8ef8ba5d91 /src/slalib/vn.f
downloadcalfuse-d54fe7c1f704a63824c5bfa0ece65245572e9b27.tar.gz
Initial commit
Diffstat (limited to 'src/slalib/vn.f')
-rw-r--r--src/slalib/vn.f46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/slalib/vn.f b/src/slalib/vn.f
new file mode 100644
index 0000000..e252867
--- /dev/null
+++ b/src/slalib/vn.f
@@ -0,0 +1,46 @@
+ SUBROUTINE sla_VN (V, UV, VM)
+*+
+* - - -
+* V N
+* - - -
+*
+* Normalizes a 3-vector also giving the modulus (single precision)
+*
+* Given:
+* V real(3) vector
+*
+* Returned:
+* UV real(3) unit vector in direction of V
+* VM real modulus of V
+*
+* If the modulus of V is zero, UV is set to zero as well
+*
+* P.T.Wallace Starlink 23 November 1995
+*
+* Copyright (C) 1995 Rutherford Appleton Laboratory
+*-
+
+ IMPLICIT NONE
+
+ REAL V(3),UV(3),VM
+
+ INTEGER I
+ REAL W1,W2
+
+
+* Modulus
+ W1=0.0
+ DO I=1,3
+ W2=V(I)
+ W1=W1+W2*W2
+ END DO
+ W1=SQRT(W1)
+ VM=W1
+
+* Normalize the vector
+ IF (W1.LE.0.0) W1=1.0
+ DO I=1,3
+ UV(I)=V(I)/W1
+ END DO
+
+ END