23 static R cnrm1(
const C *x,
const INT n)
28 for (k = 0; k < n; k++)
34 static R nrm1(
const R *x,
const INT n)
39 for (k = 0; k < n; k++)
45 static R cerr2(
const C *x,
const C *y,
const INT n)
52 for (k = 0; k < n; k++)
53 err += CONJ(x[k]) * x[k];
57 for (k = 0; k < n; k++)
58 err += CONJ(x[k]-y[k]) * (x[k]-y[k]);
64 static R err2(
const R *x,
const R *y,
const INT n)
71 for (k = 0; k < n; k++)
76 for (k = 0; k < n; k++)
77 err += (x[k]-y[k]) * (x[k]-y[k]);
83 static R cerri(
const C *x,
const C *y,
const INT n)
90 for (k = 0; k < n; k++)
98 for (k = 0; k < n; k++)
100 t = CABS(x[k] - y[k]);
108 static R erri(
const R *x,
const R *y,
const INT n)
115 for (k = 0; k < n; k++)
123 for (k = 0; k < n; k++)
125 t = FABS(x[k] - y[k]);
135 R X(error_l_infty_complex)(
const C *x,
const C *y,
const INT n)
137 return (cerri(x, y, n)/cerri(x, 0, n));
142 R X(error_l_infty_double)(
const R *x,
const R *y,
const INT n)
144 return (erri(x, y, n)/erri(x, 0, n));
149 R X(error_l_infty_1_complex)(
const C *x,
const C *y,
const INT n,
150 const C *z,
const INT m)
152 return (cerri(x, y, n)/cnrm1(z, m));
157 R X(error_l_infty_1_double)(
const R *x,
const R *y,
const INT n,
const R *z,
160 return (erri(x, y, n)/nrm1(z, m));
165 R X(error_l_2_complex)(
const C *x,
const C *y,
const INT n)
167 return (cerr2(x, y, n)/cerr2(x, 0, n));
172 R X(error_l_2_double)(
const R *x,
const R *y,
const INT n)
174 return (err2(x, y, n)/err2(x, NULL, n));