21 static R cnrm1(
const C *x,
const INT n)
26 for (k = 0; k < n; k++)
32 static R nrm1(
const R *x,
const INT n)
37 for (k = 0; k < n; k++)
43 static R cerr2(
const C *x,
const C *y,
const INT n)
50 for (k = 0; k < n; k++)
51 err += CONJ(x[k]) * x[k];
55 for (k = 0; k < n; k++)
56 err += CONJ(x[k]-y[k]) * (x[k]-y[k]);
62 static R err2(
const R *x,
const R *y,
const INT n)
69 for (k = 0; k < n; k++)
74 for (k = 0; k < n; k++)
75 err += (x[k]-y[k]) * (x[k]-y[k]);
81 static R cerri(
const C *x,
const C *y,
const INT n)
88 for (k = 0; k < n; k++)
96 for (k = 0; k < n; k++)
98 t = CABS(x[k] - y[k]);
106 static R erri(
const R *x,
const R *y,
const INT n)
113 for (k = 0; k < n; k++)
121 for (k = 0; k < n; k++)
123 t = FABS(x[k] - y[k]);
133 R Y(error_l_infty_complex)(
const C *x,
const C *y,
const INT n)
135 return (cerri(x, y, n)/cerri(x, 0, n));
140 R Y(error_l_infty_double)(
const R *x,
const R *y,
const INT n)
142 return (erri(x, y, n)/erri(x, 0, n));
147 R Y(error_l_infty_1_complex)(
const C *x,
const C *y,
const INT n,
148 const C *z,
const INT m)
150 return (cerri(x, y, n)/cnrm1(z, m));
155 R Y(error_l_infty_1_double)(
const R *x,
const R *y,
const INT n,
const R *z,
158 return (erri(x, y, n)/nrm1(z, m));
163 R Y(error_l_2_complex)(
const C *x,
const C *y,
const INT n)
165 return (cerr2(x, y, n)/cerr2(x, 0, n));
170 R Y(error_l_2_double)(
const R *x,
const R *y,
const INT n)
172 return (err2(x, y, n)/err2(x, NULL, n));