📄 daxpy.c
字号:
/*From tam@dragonfly.wri.com Wed Apr 24 15:48:31 1991Return-Path: <tam>Date: Wed, 24 Apr 91 17:48:43 CDTFrom: tam@dragonfly.wri.comTo: whitbeck@sanjuan.wrc.unr.edu*/void daxpy( n, da, dx, incx, dy, incy )double da, *dx, *dy;int n, incx, incy;/* Purpose : To compute dy = da * dx + dy --- Input --- n : number of elements in input vector(s) da : double scalar multiplier dx : double vector with n+1 elements, dx[0] is not used incx : storage spacing between elements of dx dy : double vector with n+1 elements, dy[0] is not used incy : storage spacing between elements of dy --- Output --- dy = da * dx + dy, unchanged if n <= 0 For i = 0 to n-1, replace dy[ly+i*incy] with da*dx[lx+i*incx] + dy[ly+i*incy], where lx = 1 if incx >= 0, else lx = (-incx)*(n-1)+1 and ly is defined in a similar way using incy.*/{ int ix, iy, i, m; if ( n < 0 || da == 0. ) return;/* Code for nonequal or nonpositive increments. */ if ( incx != incy || incx < 1 ) { ix = 1; iy = 1; if ( incx < 0 ) ix = ( -n + 1 ) * incx + 1; if ( incy < 0 ) iy = ( -n + 1 ) * incy + 1; for ( i = 1 ; i <= n ; i++ ) { dy[iy] = dy[iy] + da * dx[ix]; ix = ix + incx; iy = iy + incy; } return; }/* Code for both increments equal to 1. *//* Clean-up loop so remaining vector length is a multiple of 4. */ if ( incx == 1 ) { m = n % 4; if ( m != 0 ) { for ( i = 1 ; i <= m ; i++ ) dy[i] = dy[i] + da * dx[i]; if ( n < 4 ) return; } for ( i = m + 1 ; i <= n ; i = i + 4 ) { dy[i] = dy[i] + da * dx[i]; dy[i+1] = dy[i+1] + da * dx[i+1]; dy[i+2] = dy[i+2] + da * dx[i+2]; dy[i+3] = dy[i+3] + da * dx[i+3]; } return; }/* Code for equal, positive, nonunit increments. */ for ( i = 1 ; i <= n * incx ; i = i + incx ) dy[i] = da * dx[i] + dy[i]; return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -