daxpy.go 817 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package blas
  2. // Compute the sum Y = \alpha X + Y for the vectors X and Y
  3. func Daxpy(N int, alpha float64, X []float64, incX int, Y []float64, incY int)
  4. func daxpy(N int, alpha float64, X []float64, incX int, Y []float64, incY int) {
  5. var xi, yi int
  6. switch alpha {
  7. case 0:
  8. case 1:
  9. for ; N >= 2; N -= 2 {
  10. Y[yi] += X[xi]
  11. xi += incX
  12. yi += incY
  13. Y[yi] += X[xi]
  14. xi += incX
  15. yi += incY
  16. }
  17. if N != 0 {
  18. Y[yi] += alpha * X[xi]
  19. }
  20. case -1:
  21. for ; N >= 2; N -= 2 {
  22. Y[yi] -= X[xi]
  23. xi += incX
  24. yi += incY
  25. Y[yi] -= X[xi]
  26. xi += incX
  27. yi += incY
  28. }
  29. if N != 0 {
  30. Y[yi] -= X[xi]
  31. }
  32. default:
  33. for ; N >= 2; N -= 2 {
  34. Y[yi] += alpha * X[xi]
  35. xi += incX
  36. yi += incY
  37. Y[yi] += alpha * X[xi]
  38. xi += incX
  39. yi += incY
  40. }
  41. if N != 0 {
  42. Y[yi] += alpha * X[xi]
  43. }
  44. }
  45. }