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