blas.c 661 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "lib9.h"
  2. #include "mathi.h"
  3. double
  4. dot(int n, double *x, double *y)
  5. {
  6. double sum = 0;
  7. if (n <= 0)
  8. return 0;
  9. while (n--) {
  10. sum += *x++ * *y++;
  11. }
  12. return sum;
  13. }
  14. int
  15. iamax(int n, double *x)
  16. {
  17. int i, m;
  18. double xm, a;
  19. if (n <= 0)
  20. return 0;
  21. m = 0;
  22. xm = fabs(*x);
  23. for (i = 1; i < n; i++) {
  24. a = fabs(*++x);
  25. if (xm < a) {
  26. m = i;
  27. xm = a;
  28. }
  29. }
  30. return m;
  31. }
  32. double
  33. norm1(int n, double *x)
  34. {
  35. double sum = 0;
  36. if (n <= 0)
  37. return 0;
  38. while (n--) {
  39. sum += fabs(*x);
  40. x++;
  41. }
  42. return sum;
  43. }
  44. double
  45. norm2(int n, double *x)
  46. {
  47. double sum = 0;
  48. if (n <= 0)
  49. return 0;
  50. while (n--) {
  51. sum += *x * *x;
  52. x++;
  53. }
  54. return sum;
  55. }