| vnormg |
|
Table of contents
Procedure
VNORMG ( Vector norm, general dimension )
DOUBLE PRECISION FUNCTION VNORMG ( V1, NDIM )
Abstract
Compute the magnitude of a double precision vector of arbitrary
dimension.
Required_Reading
None.
Keywords
VECTOR
Declarations
IMPLICIT NONE
INTEGER NDIM
DOUBLE PRECISION V1 ( NDIM )
Brief_I/O
VARIABLE I/O DESCRIPTION
-------- --- --------------------------------------------------
V1 I Vector whose magnitude is to be found.
NDIM I Dimension of V1.
The function returns the magnitude of V1.
Detailed_Input
V1 is any double precision vector of arbitrary dimension.
NDIM is the dimension of the input vector V1.
Detailed_Output
The function returns the magnitude of V1 calculated in a
numerically stable way.
Parameters
None.
Exceptions
Error free.
Files
None.
Particulars
VNORMG finds the component of V1 whose magnitude is the largest.
If the absolute magnitude of that component indicates that a
numeric overflow would occur when it is squared, or if it
indicates that an underflow would occur when squared (falsely
giving a magnitude of zero) then the following expression is
used:
VNORMG = V1MAX * MAGNITUDE OF [ (1/V1MAX)*V1 ]
Otherwise a simpler expression is used:
VNORMG = MAGNITUDE OF [ V1 ]
Beyond the logic described above, no further checking of the
validity of the input is performed.
Examples
The numerical results shown for these examples may differ across
platforms. The results depend on the SPICE kernels used as
input, the compiler and supporting libraries, and the machine
specific arithmetic implementation.
1) Define a four-dimensional vector and calculate its magnitude.
Example code begins here.
PROGRAM VNORMG_EX1
IMPLICIT NONE
C
C SPICELIB functions
C
DOUBLE PRECISION VNORMG
C
C Local parameters.
C
INTEGER NDIM
PARAMETER ( NDIM = 4 )
C
C Local variables.
C
DOUBLE PRECISION V1 ( NDIM )
DATA V1 / 12.3D0, -4.32D0,
. 76.0D0, 1.87D0 /
C
C Compute the magnitude of V1
C
WRITE(*,*) 'Magnitude of v1: ', VNORMG ( V1, NDIM )
END
When this program was executed on a Mac/Intel/gfortran/64-bit
platform, the output was:
Magnitude of v1: 77.132673362201047
2) The following table show the correlation between various input
vectors V1 and VNORMG:
NDIM V1(NDIM) VNORMG
-------------------------------------------------
1 (-7.0D20) 7.D20
3 (1.D0, 2.D0, 2.D0) 3.D0
4 (3.D0, 3.D0, 3.D0, 3.D0) 6.D0
5 (5.D0, 12.D0, 0.D0, 0.D0, 0.D0) 13.D0
3 (-5.D-17, 0.D0, 12.D-17) 13.D-17
Restrictions
None.
Literature_References
None.
Author_and_Institution
J. Diaz del Rio (ODC Space)
W.M. Owen (JPL)
W.L. Taber (JPL)
Version
SPICELIB Version 1.1.0, 06-JUL-2021 (JDR)
Edited the header comments to comply with NAIF standard. Added
complete code example.
Added IMPLICIT NONE statement.
SPICELIB Version 1.0.1, 10-MAR-1992 (WLT)
Comment section for permuted index source lines was added
following the header.
SPICELIB Version 1.0.0, 31-JAN-1990 (WMO)
|
Fri Dec 31 18:37:05 2021