CCL Home Page
Up Directory CCL dscal

void dscal( n, da, dx, incx )

double da, *dx;
int n, incx;

/* Purpose : scalar vector multiplication

   dx = da * dx


   --- Input ---

   n    : number of elements in input vector
   da   : double scale factor
   dx   : double vector with n+1 elements, dx[0] is not used
   incx : storage spacing between elements of dx


   --- Output ---

   dx = da * dx, unchanged if n <= 0


   For i = 0 to n-1, replace dx[1+i*incx] with
   da * dx[1+i*incx].

*/

{
   int m, i;

   if ( n <= 0 )
      return;

/* Code for increments not equal to 1.  */

   if ( incx != 1 ) {
      for ( i = 1 ; i <= n * incx ; i = i + incx ) 
         dx[i] = da * dx[i];
      return;
   }

/* Code for increments equal to 1.  */

/* Clean-up loop so remaining vector length is a multiple of 5.  */

   m = n % 5;
   if ( m != 0 ) {
      for ( i = 1 ; i <= m ; i++ )
         dx[i] = da * dx[i];
      if ( n < 5 )
         return;
   }
   for ( i = m + 1 ; i <= n ; i = i + 5 ) {
      dx[i] = da * dx[i];
      dx[i+1] = da * dx[i+1];
      dx[i+2] = da * dx[i+2];
      dx[i+3] = da * dx[i+3];
      dx[i+4] = da * dx[i+4];
   }
   return;

}


Modified: Mon May 13 16:00:00 1991 GMT
Page accessed 5053 times since Sat Apr 17 21:32:45 1999 GMT