📄 dutil.c
字号:
/*-------------------------------------------------------|| NIST SPARSE BLAS v. 0.9 (Sat Jul 6 14:27:21 EDT 1996) || || Authors: || Karin A. Remington and Roldan Pozo || National Institute of Standards and Technology || || Based on the interface standard proposed in: | | "A Revised Proposal for a Sparse BLAS Toolkit" by || S. Carney and K. Wu -- University of Minnesota || M. Heroux and G. Li -- Cray Research | | R. Pozo and K.A. Remington -- NIST || || Contact: || Karin A. Remington, email: kremington@nist.gov |--------------------------------------------------------*/#include "spblas.h"void ScaleArray_double(int m, int n, double *c, int ldc, const double beta){ /* C <- beta*C */ /* C is m x n */ /* beta is a scalar */ int i, j; if (beta == 1.0) return; if (beta == 0.0) { if (n == 1) for (j = 0; j < m; j++) c[j] = 0.0; else for (i = 0; i < n; i++){ for (j = 0; j < m; j++) c[j] = 0.0; c+=ldc; } } else { if (n == 1) for (j = 0; j < m; j++) c[j] *= beta; else for (i = 0; i < n; i++){ for (j = 0; j < m; j++) c[j] *= beta; c+=ldc; } }}/*-----------------------------------------------------------------------------*//*-----------------------------------------------------------------------------*/void ScaleArray_float(int m, int n, float *c, int ldc, const float beta){ /* C <- beta*C */ /* C is m x n */ /* beta is a scalar */ int i, j; if (beta == 1.0) return; if (beta == 0.0) { if (n == 1) for (j = 0; j < m; j++) c[j] = 0.0; else for (i = 0; i < n; i++){ for (j = 0; j < m; j++) c[j] = 0.0; c+=ldc; } } else { if (n == 1) for (j = 0; j < m; j++) c[j] *= beta; else for (i = 0; i < n; i++){ for (j = 0; j < m; j++) c[j] *= beta; c+=ldc; } }}/*-----------------------------------------------------------------------------*//*-----------------------------------------------------------------------------*/void ScaleArray_complex(int m, int n, float *c, int ldc, const float *beta){ /* C <- beta*C */ /* C is m x n */ /* beta is a scalar */ float real, imag; int i, j, indexr, cldc = 2*ldc; if (beta[0] == 1.0 && beta[1] == 0.0 ) return; if (beta[0] == 0.0 && beta[1] == 0.0 ) { for (j = 0; j < 2*m*n; j++) c[j] = 0.0; } else { for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { indexr = j*2; real = c[indexr]*beta[0] - c[indexr+1]*beta[1]; imag = c[indexr]*beta[1] + c[indexr+1]*beta[0]; c[indexr] = real; c[indexr+1] = imag; } c+=cldc; } }}/*-----------------------------------------------------------------------------*//*-----------------------------------------------------------------------------*/void ScaleArray_Z(int m, int n, double *c, int ldc, const double *beta){ /* C <- beta*C */ /* C is m x n */ /* beta is a scalar */ double real, imag; int i, j, indexr, cldc = 2*ldc; if (beta[0] == 1.0 && beta[1] == 0.0 ) return; if (beta[0] == 0.0 && beta[1] == 0.0 ) { for (j = 0; j < 2*m*n; j++) c[j] = 0.0; } else { for (i = 0; i < n; i++){ for (j = 0; j < m; j++) { indexr = j*2; real = c[indexr]*beta[0] - c[indexr+1]*beta[1]; imag = c[indexr]*beta[1] + c[indexr+1]*beta[0]; c[indexr] = real; c[indexr+1] = imag; } c+=cldc; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -