33 #include "dcmtk/config/osconfig.h"
34 #include "dcmtk/ofstd/oftypes.h"
35 #include "dcmtk/ofstd/ofcast.h"
38 #define INCLUDE_CSTDDEF
39 #include "dcmtk/ofstd/ofstdinc.h"
56 template <
class T1,
class T2 >
82 if ((x != NULL) && (y != NULL) && (c !=NULL) && (n > 0))
84 const unsigned int order = o + 1;
85 const unsigned int order2 = order * order;
86 T3_ *basis =
new T3_[order * n];
87 T3_ *alpha =
new T3_[order2];
88 T3_ *beta =
new T3_[order];
89 if ((basis != NULL) && (alpha != NULL) && (beta != NULL))
91 register unsigned int i;
92 register unsigned int j;
93 register unsigned int k;
94 for (i = 0; i < order; ++i)
96 for (j = 0; j < n; ++j)
102 basis[k] = OFstatic_cast(T3_, x[j]) * basis[k - 1];
106 for (i = 0; i < order; ++i)
108 const unsigned int i_order = i * order;
109 for (j = 0; j <= i; ++j)
112 for (k = 0; k < n; ++k)
113 sum += basis[i + k * order] * basis[j + k * order];
114 alpha[i + j * order] = sum;
116 alpha[j + i_order] = sum;
119 for (i = 0; i < order; ++i)
122 for (j = 0; j < n; ++j)
123 sum += OFstatic_cast(T3_, y[j]) * basis[i + j * order];
126 if (
solve(alpha, beta, order))
128 for (i = 0; i < order; ++i)
159 const unsigned int n,
160 const unsigned int o,
164 if ((y != NULL) && (c != NULL) && (n > 0) && (xe > xs))
166 register unsigned int i;
167 register unsigned int j;
171 const T3_ xo = OFstatic_cast(T3_, xs);
172 const T3_ xi = OFstatic_cast(T3_, (OFstatic_cast(T3_, xe) - OFstatic_cast(T3_, xs)) / (n - 1));
173 for (i = 0; i < n; ++i)
175 x = xo + OFstatic_cast(T3_, i) * xi;
178 for (j = 0; j <= o; ++j)
202 output = (input <= 0) ? 0 : ((input >= 255) ? 255 : OFstatic_cast(Uint8, input));
214 output = (input <= -128) ? -128 : ((input >= 127) ? 127 : OFstatic_cast(Sint8, input));
226 output = (input <= 0) ? 0 : ((input >= 65535) ? 65535 : OFstatic_cast(Uint16, input));
238 output = (input <= -32768) ? -32768 : ((input >= 32767) ? 32767 : OFstatic_cast(Sint16, input));
250 output = OFstatic_cast(
double, input);
264 const unsigned int n)
267 if ((a != NULL) && (b != NULL) && (n > 0))
269 register unsigned int i;
270 register unsigned int j;
271 register unsigned int k;
276 for (i = 0; i < n; ++i)
280 for (j = i; j < n; ++j)
282 mag2 = fabs(a[i + j * n]);
289 if ((pivot == -1) || (mag == 0))
293 const unsigned int piv = OFstatic_cast(
unsigned int, pivot);
294 const unsigned int i_n = i * n;
297 const unsigned int piv_n = piv * n;
298 for (j = i; j < n; ++j)
301 a[j + i_n] = a[j + piv_n];
309 for (j = i; j < n; ++j)
312 for (j = 0; j < n; ++j)
316 const unsigned int j_n = j * n;
318 for (k = i; k < n; ++k)
319 a[k + j_n] -= mag2 * a[k + i_n];