137da2899SCharles.Forsyth #include "lib9.h"
237da2899SCharles.Forsyth #include "mathi.h"
337da2899SCharles.Forsyth
437da2899SCharles.Forsyth double
dot(int n,double * x,double * y)537da2899SCharles.Forsyth dot(int n, double *x, double *y)
637da2899SCharles.Forsyth {
737da2899SCharles.Forsyth double sum = 0;
837da2899SCharles.Forsyth if (n <= 0)
937da2899SCharles.Forsyth return 0;
1037da2899SCharles.Forsyth while (n--) {
1137da2899SCharles.Forsyth sum += *x++ * *y++;
1237da2899SCharles.Forsyth }
1337da2899SCharles.Forsyth return sum;
1437da2899SCharles.Forsyth }
1537da2899SCharles.Forsyth
1637da2899SCharles.Forsyth
1737da2899SCharles.Forsyth int
iamax(int n,double * x)1837da2899SCharles.Forsyth iamax(int n, double *x)
1937da2899SCharles.Forsyth {
2037da2899SCharles.Forsyth int i, m;
2137da2899SCharles.Forsyth double xm, a;
2237da2899SCharles.Forsyth if (n <= 0)
2337da2899SCharles.Forsyth return 0;
2437da2899SCharles.Forsyth m = 0;
2537da2899SCharles.Forsyth xm = fabs(*x);
2637da2899SCharles.Forsyth for (i = 1; i < n; i++) {
2737da2899SCharles.Forsyth a = fabs(*++x);
2837da2899SCharles.Forsyth if (xm < a) {
2937da2899SCharles.Forsyth m = i;
3037da2899SCharles.Forsyth xm = a;
3137da2899SCharles.Forsyth }
3237da2899SCharles.Forsyth }
3337da2899SCharles.Forsyth return m;
3437da2899SCharles.Forsyth }
3537da2899SCharles.Forsyth
3637da2899SCharles.Forsyth
3737da2899SCharles.Forsyth double
norm1(int n,double * x)3837da2899SCharles.Forsyth norm1(int n, double *x)
3937da2899SCharles.Forsyth {
4037da2899SCharles.Forsyth double sum = 0;
4137da2899SCharles.Forsyth if (n <= 0)
4237da2899SCharles.Forsyth return 0;
4337da2899SCharles.Forsyth while (n--) {
4480a37440SCharles.Forsyth sum += fabs(*x);
4580a37440SCharles.Forsyth x++;
4637da2899SCharles.Forsyth }
4737da2899SCharles.Forsyth return sum;
4837da2899SCharles.Forsyth }
4937da2899SCharles.Forsyth
5037da2899SCharles.Forsyth
5137da2899SCharles.Forsyth double
norm2(int n,double * x)5237da2899SCharles.Forsyth norm2(int n, double *x)
5337da2899SCharles.Forsyth {
5437da2899SCharles.Forsyth double sum = 0;
5537da2899SCharles.Forsyth if (n <= 0)
5637da2899SCharles.Forsyth return 0;
5737da2899SCharles.Forsyth while (n--) {
5837da2899SCharles.Forsyth sum += *x * *x;
5937da2899SCharles.Forsyth x++;
6037da2899SCharles.Forsyth }
61*2fd8fca5SAaron Robinson return sqrt(sum);
6237da2899SCharles.Forsyth }
63