| 328 | |
| 329 | |
| 330 | void N_VScale(real c, N_Vector x, N_Vector z) |
| 331 | { |
| 332 | integer N; |
| 333 | real *xd, *zd; |
| 334 | |
| 335 | if (z == x) { /* BLAS usage: scale x <- cx */ |
| 336 | VScaleBy(c, x); |
| 337 | return; |
| 338 | } |
| 339 | |
| 340 | if (c == ONE) { |
| 341 | VCopy(x, z); |
| 342 | } else if (c == -ONE) { |
| 343 | VNeg(x, z); |
| 344 | } else { |
| 345 | N = x->length; |
| 346 | xd = x->data; |
| 347 | zd = z->data; |
| 348 | #ifndef _OPENMP |
| 349 | for (integer i=0; i < N; i++) *zd++ = c * (*xd++); |
| 350 | #else |
| 351 | #pragma omp parallel for |
| 352 | for (integer i=0; i < N; i++) |
| 353 | zd[i] = c * xd[i]; |
| 354 | #endif |
| 355 | } |
| 356 | } |
| 357 | |
| 358 | |
| 359 | void N_VAbs(N_Vector x, N_Vector z) |
no test coverage detected