vsclg_c |
Table of contents
Procedurevsclg_c ( Vector scaling, general dimension ) void vsclg_c ( SpiceDouble s, ConstSpiceDouble * v1, SpiceInt ndim, SpiceDouble * vout ) AbstractMultiply a scalar and a double precision vector of arbitrary dimension. Required_ReadingNone. KeywordsVECTOR Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- s I Scalar to multiply a vector. v1 I Vector to be multiplied. ndim I Dimension of `v1' (and also `vout'). vout O Product vector, s * v1. Detailed_Inputs is a double precision scalar. v1 is a double precision n-dimensional vector. ndim is the dimension of `v1' (and `vout'). Detailed_Outputvout is a double precision n-dimensional vector containing the product of the scalar with the vector `v1'. `vout' may overwrite `v1'. ParametersNone. ExceptionsError free. FilesNone. ParticularsFor each value of the index `i' from 0 to ndim-1, this function performs the following multiplication vout[i] = s * v1[i]; No error checking is performed to guard against numeric overflow or underflow. `vout' may overwrite `v1'. ExamplesThe numerical results shown for this example 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 sets of scalar double precision values and use them to scale a given n-dimensional vector. Example code begins here. /. Program vsclg_ex1 ./ #include <stdio.h> #include "SpiceUsr.h" int main( ) { /. Local parameters. ./ #define NDIM 4 #define SETSIZ 3 /. Local variables. ./ SpiceDouble vout [NDIM]; SpiceInt i; /. Define the set of scalars and the input vector. ./ SpiceDouble s [SETSIZ] = { 3.0, 0.0, -1.0 }; SpiceDouble v1 [NDIM] = { 1.0, 2.0, -3.0, 4.0 }; printf( "Input vector : %5.1f %5.1f %5.1f %5.1f\n", v1[0], v1[1], v1[2], v1[3] ); printf( "\n" ); /. Calculate product of each scalar and `v1'. ./ for ( i = 0; i < SETSIZ; i++ ) { vsclg_c ( s[i], v1, NDIM, vout ); printf( "Scale factor : %5.1f\n", s[i] ); printf( "Output vector: %5.1f %5.1f %5.1f %5.1f\n", vout[0], vout[1], vout[2], vout[3] ); printf( "\n" ); } return ( 0 ); } When this program was executed on a Mac/Intel/cc/64-bit platform, the output was: Input vector : 1.0 2.0 -3.0 4.0 Scale factor : 3.0 Output vector: 3.0 6.0 -9.0 12.0 Scale factor : 0.0 Output vector: 0.0 0.0 -0.0 0.0 Scale factor : -1.0 Output vector: -1.0 -2.0 3.0 -4.0 Restrictions1) No error checking is performed to guard against numeric overflow. The programmer is thus required to insure that the values in `v1' and `s' are reasonable and will not cause overflow. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) W.M. Owen (JPL) Version-CSPICE Version 1.1.1, 05-JUL-2021 (JDR) Edited the header to comply with NAIF standard. Added complete code example based on existing example. -CSPICE Version 1.1.0, 22-OCT-1998 (NJB) Made input vector const. Removed #includes of SpiceZfc.h and SpiceZst.h. -CSPICE Version 1.0.0, 13-JUL-1998 (NJB) (WMO) Index_Entriesn-dimensional vector scaling |
Fri Dec 31 18:41:15 2021