1 #include "lib9.h" 2 #include "mathi.h" 3 4 double 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 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 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 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 sum; 62 } 63