40 static int *ucopy(
const int *a,
int *b,
int n);
41 static float *ucopy(
const float *a,
float *b,
int n);
42 static double *ucopy(
const float *a,
double *b,
int n);
43 static float *ucopy(
const double *a,
float *b,
int n);
44 static double *ucopy(
const double *a,
double *b,
int n);
45 static void **ucopy(
const void **a,
void **b,
int n);
47 static float *vzero(
float *a,
int n2);
48 static double *vzero(
double *a,
int n2);
49 static void **vzero(
void **a,
int n2);
51 static float *vadd(
const float *b,
const float *c,
float *a,
int n);
52 static double *vadd(
const double *b,
const double *c,
double *a,
int n);
54 static float *vadd(
const float *b,
const double *c,
float *a,
int n);
55 static double *vadd(
const double *b,
const float *c,
double *a,
int n);
57 static float vdot(
const float *b,
const float *a,
int n);
58 static double vdot(
const double *b,
const double *a,
int n);
60 static float *vsub(
const float *a,
const float *b,
float *x,
int n);
61 static double *vsub(
const double *a,
const double *b,
double *x,
int n);
62 static float *vsub(
const float *b,
const double *c,
float *a,
int n);
63 static double *vsub(
const double *b,
const float *c,
double *a,
int n);
65 static float *vcopyn(
const float *a,
float *x,
int n);
66 static double *vcopyn(
const double *a,
double *x,
int n);
68 static float *vscale(
const float *a,
float scale,
float *b,
int n);
69 static double *vscale(
const double *a,
double scale,
double *b,
int n);
71 static float *vlinco(
const float *a,
float fa,
const float *b,
float fb,
float *x,
int n);
72 static double *vlinco(
const double *a,
double fa,
const double *b,
double fb,
double *x,
int n);
74 static float *vmatl(
const float *g,
const float *c,
float *x,
int n=3,
int m=3);
75 static double *vmatl(
const double *g,
const double *c,
double *x,
int n=3,
int m=3);
77 static float *vmatr(
const float *c,
const float *g,
float *x,
int n=3,
int m=3);
78 static double *vmatr(
const double *c,
const double *g,
double *x,
int n=3,
int m=3);
80 static float *mxmad_0_(
int n,
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
82 static float *mxmad(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
83 static float *mxmad1(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
84 static float *mxmad2(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
85 static float *mxmad3(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
86 static float *mxmpy(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
87 static float *mxmpy1(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
88 static float *mxmpy2(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
89 static float *mxmpy3(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
90 static float *mxmub(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
91 static float *mxmub1(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
92 static float *mxmub2(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
93 static float *mxmub3(
const float *a,
const float *b,
float *c,
int i,
int j,
int k);
95 static float *
mxmlrt_0_(
int n__,
const float *a,
const float *b,
float *c,
int ni,
int nj);
96 static float *mxmlrt(
const float *a,
const float *b,
float *c,
int ni,
int nj);
97 static float *mxmltr(
const float *a,
const float *b,
float *c,
int ni,
int nj);
98 static float *
mxtrp(
const float *a,
float *b,
int i,
int j);
100 static double *mxmad_0_(
int n,
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
102 static double *mxmad (
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
103 static double *mxmad1(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
104 static double *mxmad2(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
105 static double *mxmad3(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
106 static double *mxmpy (
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
107 static double *mxmpy1(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
108 static double *mxmpy2(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
109 static double *mxmpy3(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
110 static double *mxmub (
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
111 static double *mxmub1(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
112 static double *mxmub2(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
113 static double *mxmub3(
const double *a,
const double *b,
double *c,
int i,
int j,
int k);
115 static double *
mxmlrt_0_(
int n__,
const double *a,
const double *b,
double *c,
int ni,
int nj);
116 static double *mxmlrt(
const double *a,
const double *b,
double *c,
int ni,
int nj);
117 static double *mxmltr(
const double *a,
const double *b,
double *c,
int ni,
int nj);
118 static double *
mxtrp(
const double *a,
double *b,
int i,
int j);
122 static float *
traat(
const float *a,
float *s,
int m,
int n);
123 static float *
tral(
const float *a,
const float *u,
float *b,
int m,
int n);
124 static float *
tralt(
const float *a,
const float *u,
float *b,
int m,
int n);
125 static float *
tras(
const float *a,
const float *s,
float *b,
int m,
int n);
126 static float *
trasat(
const float *a,
const float *s,
float *r,
int m,
int n);
127 static float *
trasat(
const double *a,
const float *s,
float *r,
int m,
int n);
128 static float *
trata(
const float *a,
float *r,
int m,
int n);
129 static float *
trats(
const float *a,
const float *s,
float *b,
int m,
int n);
130 static float *
tratsa(
const float *a,
const float *s,
float *r,
int m,
int n);
131 static float *
trchlu(
const float *a,
float *b,
int n);
132 static float *
trchul(
const float *a,
float *b,
int n);
133 static float *
trinv(
const float *t,
float *s,
int n);
134 static float *
trla(
const float *u,
const float *a,
float *b,
int m,
int n);
135 static float *
trlta(
const float *u,
const float *a,
float *b,
int m,
int n);
136 static float *
trpck(
const float *s,
float *u,
int n);
137 static float *
trqsq(
const float *q,
const float *s,
float *r,
int m);
138 static float *
trsa(
const float *s,
const float *a,
float *b,
int m,
int n);
139 static float *
trsinv(
const float *g,
float *gi,
int n);
140 static float *
trsmlu(
const float *u,
float *s,
int n);
141 static float *
trsmul(
const float *g,
float *gi,
int n);
142 static float *
trupck(
const float *u,
float *s,
int m);
143 static float *
trsat(
const float *s,
const float *a,
float *b,
int m,
int n);
146 static float *
trsequ(
float *smx,
int m=3,
float *b=0,
int n=1);
150 static double *
traat (
const double *a,
double *s,
int m,
int n);
151 static double *
tral (
const double *a,
const double *u,
double *b,
int m,
int n);
152 static double *
tralt (
const double *a,
const double *u,
double *b,
int m,
int n);
153 static double *
tras (
const double *a,
const double *s,
double *b,
int m,
int n);
154 static double *
trasat(
const double *a,
const double *s,
double *r,
int m,
int n);
155 static double *
trata (
const double *a,
double *r,
int m,
int n);
156 static double *
trats (
const double *a,
const double *s,
double *b,
int m,
int n);
157 static double *
tratsa(
const double *a,
const double *s,
double *r,
int m,
int n);
158 static double *
trchlu(
const double *a,
double *b,
int n);
159 static double *
trchul(
const double *a,
double *b,
int n);
160 static double *
trinv (
const double *t,
double *s,
int n);
161 static double *
trla (
const double *u,
const double *a,
double *b,
int m,
int n);
162 static double *
trlta (
const double *u,
const double *a,
double *b,
int m,
int n);
163 static double *
trpck (
const double *s,
double *u,
int n);
164 static double *
trqsq (
const double *q,
const double *s,
double *r,
int m);
165 static double *
trsa (
const double *s,
const double *a,
double *b,
int m,
int n);
166 static double *
trsinv(
const double *g,
double *gi,
int n);
167 static double *
trsmlu(
const double *u,
double *s,
int n);
168 static double *
trsmul(
const double *g,
double *gi,
int n);
169 static double *
trupck(
const double *u,
double *s,
int m);
170 static double *
trsat (
const double *s,
const double *a,
double *b,
int m,
int n);
173 static double *
trsequ(
double *smx,
int m=3,
double *b=0,
int n=1);
180 inline float *TCL::mxmad(
const float *a,
const float *b,
float *c,
int i,
int j,
int k)
182 return mxmad_0_(0, a, b, c, i, j, k); }
185 inline float *TCL::mxmad1(
const float *a,
const float *q,
float *c,
int i,
int j,
int k)
187 return mxmad_0_(1, a, q, c, i, j, k); }
190 inline float *TCL::mxmad2(
const float *p,
const float *b,
float *c,
int i,
int j,
int k)
192 return mxmad_0_(2, p, b, c, i, j, k); }
195 inline float *TCL::mxmad3(
const float *p,
const float *q,
float *c,
int i,
int j,
int k)
197 return mxmad_0_(3, p, q, c, i, j, k); }
200 inline float *TCL::mxmpy(
const float *a,
const float *b,
float *c,
int i,
int j,
int k)
202 return mxmad_0_(4, a, b, c, i, j, k); }
205 inline float *TCL::mxmpy1(
const float *a,
const float *q,
float *c,
int i,
int j,
int k)
207 return mxmad_0_(5, a, q, c, i, j, k); }
210 inline float *TCL::mxmpy2(
const float *p,
const float *b,
float *c,
int i,
int j,
int k)
212 return mxmad_0_(6, p, b, c, i, j, k); }
215 inline float *TCL::mxmpy3(
const float *p,
const float *q,
float *c,
int i,
int j,
int k)
217 return mxmad_0_(7, p, q, c, i, j, k); }
220 inline float *TCL::mxmub(
const float *a,
const float *b,
float *c,
int i,
int j,
int k)
222 return mxmad_0_(8, a, b, c, i, j, k); }
225 inline float *TCL::mxmub1(
const float *a,
const float *q,
float *c,
int i,
int j,
int k)
227 return mxmad_0_(9, a, q, c, i, j, k); }
230 inline float *TCL::mxmub2(
const float *p,
const float *b,
float *c,
int i,
int j,
int k)
232 return mxmad_0_(10, p, b, c, i, j, k); }
235 inline float *TCL::mxmub3(
const float *p,
const float *q,
float *c,
int i,
int j,
int k)
237 return mxmad_0_(11, p, q, c, i, j, k); }
240 inline float *TCL::mxmlrt(
const float *a,
const float *b,
float *x,
int ni,
int nj)
245 inline float *TCL::mxmltr(
const float *a,
const float *b,
float *x,
int ni,
int nj)
253 inline double *TCL::mxmad(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
255 return mxmad_0_(0, a, b, c, i, j, k); }
258 inline double *TCL:: mxmad1(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
260 return mxmad_0_(1, a, b, c, i, j, k); }
263 inline double *TCL::mxmad2(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
265 return mxmad_0_(2, a, b, c, i, j, k); }
268 inline double *TCL::mxmad3(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
270 return mxmad_0_(3, a, b, c, i, j, k); }
273 inline double *TCL::mxmpy(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
275 return mxmad_0_(4, a, b, c, i, j, k); }
278 inline double *TCL::mxmpy1(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
280 return mxmad_0_(5, a, b, c, i, j, k); }
283 inline double *TCL::mxmpy2(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
285 return mxmad_0_(6, a, b, c, i, j, k); }
288 inline double *TCL::mxmpy3(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
290 return mxmad_0_(7, a, b, c, i, j, k); }
293 inline double *TCL::mxmub(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
295 return mxmad_0_(8, a, b, c, i, j, k); }
298 inline double *TCL::mxmub1(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
300 return mxmad_0_(9, a, b, c, i, j, k); }
303 inline double *TCL::mxmub2(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
305 return mxmad_0_(10, a, b, c, i, j, k); }
308 inline double *TCL::mxmub3(
const double *a,
const double *b,
double *c,
int i,
int j,
int k)
310 return mxmad_0_(11, a, b, c, i, j, k); }
313 inline double *TCL::mxmlrt(
const double *a,
const double *b,
double *c,
int ni,
int nj)
318 inline double *TCL::mxmltr(
const double *a,
const double *b,
double *c,
int ni,
int nj)
325 inline int *TCL::ucopy(
const int *b,
int *a,
int n)
328 if (n <= 0)
return 0;
329 memcpy(a,b,n*
sizeof(
int));
334 inline float *TCL::ucopy(
const float *b,
float *a,
int n)
337 if (n <= 0)
return 0;
338 memcpy(a,b,n*
sizeof(
float));
343 inline float *TCL::ucopy(
const double *b,
float *a,
int n)
346 if (n <= 0)
return 0;
347 for (
int i=0;i<n;i++,a++,b++) *a =
float(*b);
352 inline double *TCL::ucopy(
const float *b,
double *a,
int n)
355 if (n <= 0)
return 0;
356 for (
int i=0;i<n;i++,a++,b++) *a =
double(*b);
361 inline double *TCL::ucopy(
const double *b,
double *a,
int n)
364 if (n <= 0)
return 0;
365 memcpy(a,b,n*
sizeof(
double));
370 inline void **TCL::ucopy(
const void **b,
void **a,
int n)
373 if (n <= 0)
return 0;
374 memcpy(a,b,n*
sizeof(
void *));
380 inline float *TCL::vadd(
const float *b,
const float *c,
float *a,
int n)
383 if (n <= 0)
return 0;
384 for (
int i=0;i<n;i++) a[i] = b[i] + c[i];
389 inline double *TCL::vadd(
const double *b,
const double *c,
double *a,
int n)
392 if (n <= 0)
return 0;
393 for (
int i=0;i<n;i++) a[i] = b[i] + c[i];
398 inline float *TCL::vadd(
const float *b,
const double *c,
float *a,
int n)
401 if (n <= 0)
return 0;
402 for (
int i=0;i<n;i++) a[i] = b[i] + c[i];
407 inline double *TCL::vadd(
const double *b,
const float *c,
double *a,
int n)
410 if (n <= 0)
return 0;
411 for (
int i=0;i<n;i++) a[i] = b[i] + c[i];
416 inline float TCL::vdot(
const float *b,
const float *a,
int n)
421 for (
int i=0;i<n;i++,a++,b++) x += (*a) * (*b);
425 inline double TCL::vdot(
const double *b,
const double *a,
int n)
430 for (
int i=0;i<n;i++,a++,b++) x += (*a) * (*b);
434 inline float *TCL::vsub(
const float *a,
const float *b,
float *x,
int n)
437 if (n <= 0)
return 0;
438 for (
int i=0;i<n;i++) x[i] = a[i]-b[i];
443 inline double *TCL::vsub(
const double *a,
const double *b,
double *x,
int n)
446 if (n <= 0)
return 0;
447 for (
int i=0;i<n;i++) x[i] = a[i]-b[i];
451 inline float *TCL::vsub(
const float *b,
const double *c,
float *a,
int n)
454 if (n <= 0)
return 0;
455 for (
int i=0;i<n;i++) a[i] = b[i] - c[i];
460 inline double *TCL::vsub(
const double *b,
const float *c,
double *a,
int n)
463 if (n <= 0)
return 0;
464 for (
int i=0;i<n;i++) a[i] = b[i] - c[i];
468 inline float *TCL::vcopyn(
const float *a,
float *x,
int n)
471 if (n <= 0)
return 0;
472 for (
int i=0;i<n;i++) x[i] = -a[i];
476 inline double *TCL::vcopyn(
const double *a,
double *x,
int n)
479 if (n <= 0)
return 0;
480 for (
int i=0;i<n;i++) x[i] = -a[i];
485 inline float *TCL::vzero(
float *a,
int n1)
488 if (n1 <= 0)
return 0;
489 return (
float *)memset(a,0,n1*
sizeof(
float));
493 inline double *TCL::vzero(
double *a,
int n1)
496 if (n1 <= 0)
return 0;
497 return (
double *)memset(a,0,n1*
sizeof(
double));
501 inline void **TCL::vzero(
void **a,
int n1)
504 if (n1 <= 0)
return 0;
505 return (
void **)memset(a,0,n1*
sizeof(
void *));
509 inline float *TCL::vscale(
const float *a,
float scale,
float *b,
int n)
512 for (
int i=0;i<n;i++) b[i]=scale*a[i];
517 inline double *TCL::vscale(
const double *a,
double scale,
double *b,
int n)
520 for (
int i=0;i<n;i++) b[i]=scale*a[i];
525 inline float *TCL::vlinco(
const float *a,
float fa,
const float *b,
float fb,
float *x,
int n)
528 for (
int i=0;i<n;i++){x[i]=a[i]*fa+b[i]*fb;};
533 inline double *TCL::vlinco(
const double *a,
double fa,
const double *b,
double fb,
double *x,
int n)
536 for (
int i=0;i<n;i++) x[i]=a[i]*fa+b[i]*fb;
541 inline float *TCL::vmatl(
const float *G,
const float *c,
float *x,
int n,
int m)
544 for (
int i=0; i<n; i++) {
546 for (
int j=0; j<m; j++) sum += G[j + m*i]*c[j];
553 inline double *TCL::vmatl(
const double *G,
const double *c,
double *x,
int n,
int m)
556 for (
int i=0; i<n; i++) {
558 for (
int j=0; j<m; j++) sum += G[j + m*i]*c[j];
565 inline float *TCL::vmatr(
const float *c,
const float *G,
float *x,
int n,
int m)
568 for (
int j=0; j<m; j++) {
570 for (
int i=0; i<n; i++) sum += G[j + n*i]*c[i];
577 inline double *TCL::vmatr(
const double *c,
const double *G,
double *x,
int n,
int m)
580 for (
int j=0; j<m; j++) {
582 for (
int i=0; i<n; i++) sum += G[j + n*i]*c[i];
static float * traat(const float *a, float *s, int m, int n)
static float * trsmul(const float *g, float *gi, int n)
static float * trata(const float *a, float *r, int m, int n)
static float * mxtrp(const float *a, float *b, int i, int j)
static float * trinv(const float *t, float *s, int n)
static float * trsat(const float *s, const float *a, float *b, int m, int n)
static float * trpck(const float *s, float *u, int n)
static float * trsequ(float *smx, int m=3, float *b=0, int n=1)
static float * trsa(const float *s, const float *a, float *b, int m, int n)
static float * tralt(const float *a, const float *u, float *b, int m, int n)
static float * trlta(const float *u, const float *a, float *b, int m, int n)
static float * trqsq(const float *q, const float *s, float *r, int m)
static float * trats(const float *a, const float *s, float *b, int m, int n)
static float * tral(const float *a, const float *u, float *b, int m, int n)
static float * trchul(const float *a, float *b, int n)
static float * trsinv(const float *g, float *gi, int n)
static float * trasat(const float *a, const float *s, float *r, int m, int n)
static float * trsmlu(const float *u, float *s, int n)
static float * tras(const float *a, const float *s, float *b, int m, int n)
static float * mxmlrt_0_(int n__, const float *a, const float *b, float *c, int ni, int nj)
static float * trupck(const float *u, float *s, int m)
static float * tratsa(const float *a, const float *s, float *r, int m, int n)
static float * trchlu(const float *a, float *b, int n)
static float * trla(const float *u, const float *a, float *b, int m, int n)