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 } 46 return sum; 47 } 48 49 50 double 51 norm2(int n, double *x) 52 { 53 double sum = 0; 54 if (n <= 0) 55 return 0; 56 while (n--) { 57 sum += *x * *x; 58 x++; 59 } 60 return sum; 61 } 62