TCL Class Reference

#include <TCL.h>

List of all members.

Public Member Functions

virtual ~TCL ()

Static Public Member Functions

static int * ucopy (const int *a, int *b, int n)
static float * ucopy (const float *a, float *b, int n)
static double * ucopy (const float *a, double *b, int n)
static float * ucopy (const double *a, float *b, int n)
static double * ucopy (const double *a, double *b, int n)
static void ** ucopy (const void **a, void **b, int n)
static float * vzero (float *a, int n2)
static double * vzero (double *a, int n2)
static void ** vzero (void **a, int n2)
static float * vadd (const float *b, const float *c, float *a, int n)
static double * vadd (const double *b, const double *c, double *a, int n)
static float * vadd (const float *b, const double *c, float *a, int n)
static double * vadd (const double *b, const float *c, double *a, int n)
static float vdot (const float *b, const float *a, int n)
static double vdot (const double *b, const double *a, int n)
static float * vsub (const float *a, const float *b, float *x, int n)
static double * vsub (const double *a, const double *b, double *x, int n)
static float * vsub (const float *b, const double *c, float *a, int n)
static double * vsub (const double *b, const float *c, double *a, int n)
static float * vcopyn (const float *a, float *x, int n)
static double * vcopyn (const double *a, double *x, int n)
static float * vscale (const float *a, float scale, float *b, int n)
static double * vscale (const double *a, double scale, double *b, int n)
static float * vlinco (const float *a, float fa, const float *b, float fb, float *x, int n)
static double * vlinco (const double *a, double fa, const double *b, double fb, double *x, int n)
static float * vmatl (const float *g, const float *c, float *x, int n=3, int m=3)
static double * vmatl (const double *g, const double *c, double *x, int n=3, int m=3)
static float * vmatr (const float *c, const float *g, float *x, int n=3, int m=3)
static double * vmatr (const double *c, const double *g, double *x, int n=3, int m=3)
static float * mxmad_0_ (int n, const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmad (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmad1 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmad2 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmad3 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmpy (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmpy1 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmpy2 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmpy3 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmub (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmub1 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmub2 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmub3 (const float *a, const float *b, float *c, int i, int j, int k)
static float * mxmlrt_0_ (int n__, const float *a, const float *b, float *c, int ni, int nj)
static float * mxmlrt (const float *a, const float *b, float *c, int ni, int nj)
static float * mxmltr (const float *a, const float *b, float *c, int ni, int nj)
static float * mxtrp (const float *a, float *b, int i, int j)
static double * mxmad_0_ (int n, const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmad (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmad1 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmad2 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmad3 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmpy (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmpy1 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmpy2 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmpy3 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmub (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmub1 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmub2 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmub3 (const double *a, const double *b, double *c, int i, int j, int k)
static double * mxmlrt_0_ (int n__, const double *a, const double *b, double *c, int ni, int nj)
static double * mxmlrt (const double *a, const double *b, double *c, int ni, int nj)
static double * mxmltr (const double *a, const double *b, double *c, int ni, int nj)
static double * mxtrp (const double *a, double *b, int i, int j)
static float * traat (const float *a, float *s, int m, int n)
static float * tral (const float *a, const float *u, float *b, int m, int n)
static float * tralt (const float *a, const float *u, float *b, int m, int n)
static float * tras (const float *a, const float *s, float *b, int m, int n)
static float * trasat (const float *a, const float *s, float *r, int m, int n)
static float * trasat (const double *a, const float *s, float *r, int m, int n)
static float * trata (const float *a, float *r, int m, int n)
static float * trats (const float *a, const float *s, float *b, int m, int n)
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 * trchul (const float *a, float *b, int n)
static float * trinv (const float *t, float *s, int n)
static float * trla (const float *u, const float *a, float *b, int m, int n)
static float * trlta (const float *u, const float *a, float *b, int m, int n)
static float * trpck (const float *s, float *u, int n)
static float * trqsq (const float *q, const float *s, float *r, int m)
static float * trsa (const float *s, const float *a, float *b, int m, int n)
static float * trsinv (const float *g, float *gi, int n)
static float * trsmlu (const float *u, float *s, int n)
static float * trsmul (const float *g, float *gi, int n)
static float * trupck (const float *u, float *s, int m)
static float * trsat (const float *s, const float *a, float *b, int m, int n)
static float * trsequ (float *smx, int m=3, float *b=0, int n=1)
static double * traat (const double *a, double *s, int m, int n)
static double * tral (const double *a, const double *u, double *b, int m, int n)
static double * tralt (const double *a, const double *u, double *b, int m, int n)
static double * tras (const double *a, const double *s, double *b, int m, int n)
static double * trasat (const double *a, const double *s, double *r, int m, int n)
static double * trata (const double *a, double *r, int m, int n)
static double * trats (const double *a, const double *s, double *b, int m, int n)
static double * tratsa (const double *a, const double *s, double *r, int m, int n)
static double * trchlu (const double *a, double *b, int n)
static double * trchul (const double *a, double *b, int n)
static double * trinv (const double *t, double *s, int n)
static double * trla (const double *u, const double *a, double *b, int m, int n)
static double * trlta (const double *u, const double *a, double *b, int m, int n)
static double * trpck (const double *s, double *u, int n)
static double * trqsq (const double *q, const double *s, double *r, int m)
static double * trsa (const double *s, const double *a, double *b, int m, int n)
static double * trsinv (const double *g, double *gi, int n)
static double * trsmlu (const double *u, double *s, int n)
static double * trsmul (const double *g, double *gi, int n)
static double * trupck (const double *u, double *s, int m)
static double * trsat (const double *s, const double *a, double *b, int m, int n)
static double * trsequ (double *smx, int m=3, double *b=0, int n=1)

Detailed Description

Definition at line 39 of file TCL.h.


Constructor & Destructor Documentation

virtual TCL::~TCL (  )  [inline, virtual]

Definition at line 41 of file TCL.h.

00041 { }


Member Function Documentation

double * TCL::mxmad ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 270 of file TCL.h.

References mxmad_0_().

00271 {
00272    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00273    return mxmad_0_(0, a, b, c, i, j, k);   }

float * TCL::mxmad ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 183 of file TCL.h.

References mxmad_0_().

00184 {
00185    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00186    return mxmad_0_(0, a, b, c, i, j, k);   }

double * TCL::mxmad1 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 276 of file TCL.h.

References mxmad_0_().

00277 {
00278    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00279    return mxmad_0_(1, a, b, c, i, j, k);  }

float * TCL::mxmad1 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 189 of file TCL.h.

References mxmad_0_().

00190 {
00191    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad1.gif"> </P> End_Html //
00192    return mxmad_0_(1, a, q, c, i, j, k);  }

double * TCL::mxmad2 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 282 of file TCL.h.

References mxmad_0_().

00283 {
00284    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00285    return mxmad_0_(2, a, b, c, i, j, k);  }

float * TCL::mxmad2 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 195 of file TCL.h.

References mxmad_0_().

00196 {
00197    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad2.gif"> </P> End_Html //
00198    return mxmad_0_(2, p, b, c, i, j, k);  }

double * TCL::mxmad3 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 288 of file TCL.h.

References mxmad_0_().

00289 {
00290    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00291    return mxmad_0_(3, a, b, c, i, j, k);  }

float * TCL::mxmad3 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 201 of file TCL.h.

References mxmad_0_().

00202 {
00203    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad3.gif"> </P> End_Html //
00204    return mxmad_0_(3, p, q, c, i, j, k);  }

double * TCL::mxmad_0_ ( int  n,
const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [static]

Definition at line 111 of file TCL.cxx.

References TCL_MXMAD.

00112 {
00113    TCL_MXMAD(n_,a,b,c,i,j,k)
00114    return c;
00115 } /* mxmad_ */

float * TCL::mxmad_0_ ( int  n,
const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [static]

Definition at line 104 of file TCL.cxx.

References TCL_MXMAD.

Referenced by mxmad(), mxmad1(), mxmad2(), mxmad3(), mxmpy(), mxmpy1(), mxmpy2(), mxmpy3(), mxmub(), mxmub1(), mxmub2(), and mxmub3().

00105 {
00106   TCL_MXMAD(n_,a,b,c,i,j,k)
00107   return c;
00108 } /* mxmad_ */

double * TCL::mxmlrt ( const double *  a,
const double *  b,
double *  c,
int  ni,
int  nj 
) [inline, static]

Definition at line 342 of file TCL.h.

References mxmlrt_0_().

00343 {
00344    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00345    return  mxmlrt_0_(0, a, b, c, ni, nj); }

float * TCL::mxmlrt ( const float *  a,
const float *  b,
float *  c,
int  ni,
int  nj 
) [inline, static]

Definition at line 255 of file TCL.h.

References mxmlrt_0_().

00256 {
00257    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmlrt.gif"> </P> End_Html //
00258    return mxmlrt_0_(0, a, b, x, ni, nj); }

double * TCL::mxmlrt_0_ ( int  n__,
const double *  a,
const double *  b,
double *  c,
int  ni,
int  nj 
) [static]

Definition at line 186 of file TCL.cxx.

References TCL_MXMLRT.

00187 {
00188  // Matrix Multiplication (double precision)
00189 
00190    TCL_MXMLRT( n__, a, b, c,  ni,nj)
00191    return c;
00192 
00193 } /* mxmlrt_ */

float * TCL::mxmlrt_0_ ( int  n__,
const float *  a,
const float *  b,
float *  c,
int  ni,
int  nj 
) [static]

Definition at line 150 of file TCL.cxx.

References TCL_MXMLRT.

Referenced by mxmlrt(), and mxmltr().

00151 {
00152  // Matrix Multiplication
00153  // CERN PROGLIB# F110    MXMLRT          .VERSION KERNFOR  2.00  720707
00154  // ORIG. 01/01/64 RKB
00155  //BEGIN_HTML <!--
00156  /* -->
00157   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f110/top.html">F110</A>
00158  <!--*/
00159  // -->END_HTML
00160 
00161 
00162 // --      ENTRY MXMLRT */
00163 // --                C = A(I,J) X B(J,J) X A*(J,I) */
00164 // --                A* TANDS FOR A-TRANSPOSED */
00165 //             mxmlrt (A,B,C,NI,NJ)     IS EQUIVALENT TO */
00166 //             CALL MXMPY (A,B,X,NI,NJ,NJ) */
00167 //             CALL MXMPY1 (X,A,C,NI,NJ,NI) */
00168 
00169 /*        OR   CALL MXMPY1 (B,A,Y,NJ,NJ,NI) */
00170 /*             CALL MXMPY (A,Y,C,NI,NJ,NI) */
00171 
00172 
00173 // --                C = A*(I,J) X B(J,J) X A(J,I)
00174 
00175 //        CALL MXMLTR (A,B,C,NI,NJ)     IS EQUIVALENT TO
00176 //             CALL MXMPY2 (A,B,X,NI,NJ,NJ)
00177 //             CALL MXMPY (X,A,C,NI,NJ,NI)
00178 
00179 //        OR   CALL MXMPY (B,A,Y,NJ,NJ,NI)
00180 //             CALL MXMPY2 (A,Y,C,NI,NJ,NI)
00181    TCL_MXMLRT( n__, a, b, c,  ni,nj)
00182    return c;
00183 } /* mxmlrt_ */

double * TCL::mxmltr ( const double *  a,
const double *  b,
double *  c,
int  ni,
int  nj 
) [inline, static]

Definition at line 348 of file TCL.h.

References mxmlrt_0_().

00349 {
00350    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00351    return mxmlrt_0_(1, a, b, c, ni, nj);   }

float * TCL::mxmltr ( const float *  a,
const float *  b,
float *  c,
int  ni,
int  nj 
) [inline, static]

Definition at line 261 of file TCL.h.

References mxmlrt_0_().

00262 {
00263    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmltr.gif"> </P> End_Html //
00264    return mxmlrt_0_(1, a, b, x, ni, nj);   }

double * TCL::mxmpy ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 294 of file TCL.h.

References mxmad_0_().

00295 {
00296    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00297    return mxmad_0_(4, a, b, c, i, j, k); }

float * TCL::mxmpy ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 207 of file TCL.h.

References mxmad_0_().

00208 {
00209    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy.gif"> </P> End_Html //
00210    return mxmad_0_(4, a, b, c, i, j, k); }

double * TCL::mxmpy1 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 300 of file TCL.h.

References mxmad_0_().

00301 {
00302    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00303    return mxmad_0_(5, a, b, c, i, j, k);  }

float * TCL::mxmpy1 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 213 of file TCL.h.

References mxmad_0_().

00214 {
00215    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy1.gif"> </P> End_Html //
00216    return mxmad_0_(5, a, q, c, i, j, k);  }

double * TCL::mxmpy2 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 306 of file TCL.h.

References mxmad_0_().

00307 {
00308    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00309    return mxmad_0_(6, a, b, c, i, j, k); }

float * TCL::mxmpy2 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 219 of file TCL.h.

References mxmad_0_().

00220 {
00221    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy2.gif"> </P> End_Html //
00222    return mxmad_0_(6, p, b, c, i, j, k); }

double * TCL::mxmpy3 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 312 of file TCL.h.

References mxmad_0_().

00313 {
00314    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00315    return mxmad_0_(7, a, b, c, i, j, k); }

float * TCL::mxmpy3 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 225 of file TCL.h.

References mxmad_0_().

00226 {
00227    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy3.gif"> </P> End_Html //
00228    return mxmad_0_(7, p, q, c, i, j, k); }

double * TCL::mxmub ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 318 of file TCL.h.

References mxmad_0_().

00319 {
00320    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00321    return mxmad_0_(8, a, b, c, i, j, k);  }

float * TCL::mxmub ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 231 of file TCL.h.

References mxmad_0_().

00232 {
00233    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub.gif"> </P> End_Html //
00234    return mxmad_0_(8, a, b, c, i, j, k);  }

double * TCL::mxmub1 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 324 of file TCL.h.

References mxmad_0_().

00325 {
00326    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00327    return mxmad_0_(9, a, b, c, i, j, k); }

float * TCL::mxmub1 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 237 of file TCL.h.

References mxmad_0_().

00238 {
00239    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub1.gif"> </P> End_Html //
00240    return mxmad_0_(9, a, q, c, i, j, k); }

double * TCL::mxmub2 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 330 of file TCL.h.

References mxmad_0_().

00331 {
00332    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00333    return mxmad_0_(10, a, b, c, i, j, k); }

float * TCL::mxmub2 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 243 of file TCL.h.

References mxmad_0_().

00244 {
00245    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub2.gif"> </P> End_Html //
00246    return mxmad_0_(10, p, b, c, i, j, k); }

double * TCL::mxmub3 ( const double *  a,
const double *  b,
double *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 336 of file TCL.h.

References mxmad_0_().

00337 {
00338    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
00339    return mxmad_0_(11, a, b, c, i, j, k); }

float * TCL::mxmub3 ( const float *  a,
const float *  b,
float *  c,
int  i,
int  j,
int  k 
) [inline, static]

Definition at line 249 of file TCL.h.

References mxmad_0_().

00250 {
00251    // Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub3.gif"> </P> End_Html //
00252    return mxmad_0_(11, p, q, c, i, j, k); }

double * TCL::mxtrp ( const double *  a,
double *  b,
int  i,
int  j 
) [static]

Definition at line 228 of file TCL.cxx.

References TCL_MXTRP.

00229 {
00230 //  Matrix Transposition (double precision)
00231 // CERN PROGLIB# F110    MXTRP           .VERSION KERNFOR  1.0   650809
00232 // ORIG. 01/01/64 RKB
00233  //BEGIN_HTML <!--
00234  /* -->
00235   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f110/top.html">F110</A>
00236  <!--*/
00237  // -->END_HTML
00238 
00239    TCL_MXTRP(a, b, i, j)
00240    return b;
00241 
00242 } /* mxtrp */

float * TCL::mxtrp ( const float *  a,
float *  b,
int  i,
int  j 
) [static]

Definition at line 211 of file TCL.cxx.

References TCL_MXTRP.

00212 {
00213 //
00214 //  Matrix Transposition
00215 // CERN PROGLIB# F110    MXTRP           .VERSION KERNFOR  1.0   650809
00216 // ORIG. 01/01/64 RKB
00217  //BEGIN_HTML <!--
00218  /* -->
00219   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f110/top.html">F110</A>
00220  <!--*/
00221  // -->END_HTML
00222 
00223    TCL_MXTRP(a, b, i, j)
00224    return b;
00225 } /* mxtrp */

double * TCL::traat ( const double *  a,
double *  s,
int  m,
int  n 
) [static]

Definition at line 295 of file TCL.cxx.

References TCL_TRAAT.

00296 {
00297    //  Symmetric Multiplication of Rectangular Matrices
00298    // CERN PROGLIB# F112    TRAAT           .VERSION KERNFOR  4.15  861204
00299    // ORIG. 18/12/74 WH */
00300    // traat.F -- translated by f2c (version 19970219).
00301    //
00302  //BEGIN_HTML <!--
00303  /* -->
00304   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00305  <!--*/
00306  // -->END_HTML
00307    TCL_TRAAT(a, s, m, n)
00308    return s;
00309 } /* traat_ */

float * TCL::traat ( const float *  a,
float *  s,
int  m,
int  n 
) [static]

Definition at line 277 of file TCL.cxx.

References TCL_TRAAT.

00278 {
00279    //
00280    // Symmetric Multiplication of Rectangular Matrices
00281    // CERN PROGLIB# F112    TRAAT           .VERSION KERNFOR  4.15  861204
00282    // ORIG. 18/12/74 WH */
00283    // traat.F -- translated by f2c (version 19970219).
00284    //
00285  //BEGIN_HTML <!--
00286  /* -->
00287   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00288  <!--*/
00289  // -->END_HTML
00290    TCL_TRAAT(a, s, m, n)
00291    return s;
00292 } /* traat_ */

double * TCL::tral ( const double *  a,
const double *  u,
double *  b,
int  m,
int  n 
) [static]

Definition at line 353 of file TCL.cxx.

References TCL_TRAL.

00354 {
00355    // Triangular - Rectangular Multiplication
00356    // tral.F -- translated by f2c (version 19970219).
00357    // CERN PROGLIB# F112    TRAL            .VERSION KERNFOR  4.15  861204 */
00358    // ORIG. 18/12/74 WH */
00359  //BEGIN_HTML <!--
00360  /* -->
00361   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00362  <!--*/
00363  // -->END_HTML
00364    TCL_TRAL(a, u, b, m,  n)
00365    return b;
00366 } /* tral_ */

float * TCL::tral ( const float *  a,
const float *  u,
float *  b,
int  m,
int  n 
) [static]

Definition at line 337 of file TCL.cxx.

References TCL_TRAL.

00338 {
00339    // Triangular - Rectangular Multiplication
00340    // CERN PROGLIB# F112    TRAL            .VERSION KERNFOR  4.15  861204
00341    // ORIG. 18/12/74 WH
00342    // tral.F -- translated by f2c (version 19970219).
00343  //BEGIN_HTML <!--
00344  /* -->
00345   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00346  <!--*/
00347  // -->END_HTML
00348    TCL_TRAL(a, u, b, m,  n)
00349    return b;
00350 } /* tral_ */

double * TCL::tralt ( const double *  a,
const double *  u,
double *  b,
int  m,
int  n 
) [static]

Definition at line 409 of file TCL.cxx.

References TCL_TRALT.

00410 {
00411    // Triangular - Rectangular Multiplication
00412    // CERN PROGLIB# F112    TRALT           .VERSION KERNFOR  4.15  861204
00413    // ORIG. 18/12/74 WH
00414    // tralt.F -- translated by f2c (version 19970219).
00415  //BEGIN_HTML <!--
00416  /* -->
00417   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00418  <!--*/
00419  // -->END_HTML
00420    TCL_TRALT(a, u, b, m, n)
00421    return b;
00422 } /* tralt_ */

float * TCL::tralt ( const float *  a,
const float *  u,
float *  b,
int  m,
int  n 
) [static]

Definition at line 393 of file TCL.cxx.

References TCL_TRALT.

00394 {
00395    // Triangular - Rectangular Multiplication
00396    // CERN PROGLIB# F112    TRALT           .VERSION KERNFOR  4.15  861204
00397    // ORIG. 18/12/74 WH
00398    // tralt.F -- translated by f2c (version 19970219).
00399  //BEGIN_HTML <!--
00400  /* -->
00401   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00402  <!--*/
00403  // -->END_HTML
00404    TCL_TRALT(a, u, b, m, n)
00405    return b;
00406 } /* tralt_ */

double * TCL::tras ( const double *  a,
const double *  s,
double *  b,
int  m,
int  n 
) [static]

Definition at line 472 of file TCL.cxx.

References TCL_TRAS.

00473 {
00474    // Symmetric - Rectangular Multiplication
00475    // CERN PROGLIB# F112    TRAS            .VERSION KERNFOR  4.15  861204 */
00476    // ORIG. 18/12/74 WH */
00477    // tras.F -- translated by f2c (version 19970219).
00478  //BEGIN_HTML <!--
00479  /* -->
00480   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00481  <!--*/
00482  // -->END_HTML
00483    TCL_TRAS(a, s, b, m, n)
00484    return b;
00485 } /* tras_ */

float * TCL::tras ( const float *  a,
const float *  s,
float *  b,
int  m,
int  n 
) [static]

Definition at line 456 of file TCL.cxx.

References TCL_TRAS.

00457 {
00458    // Symmetric - Rectangular Multiplication
00459    // CERN PROGLIB# F112    TRAS            .VERSION KERNFOR  4.15  861204 */
00460    // ORIG. 18/12/74 WH */
00461    // tras.F -- translated by f2c (version 19970219).
00462  //BEGIN_HTML <!--
00463  /* -->
00464   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00465  <!--*/
00466  // -->END_HTML
00467    TCL_TRAS(a, s, b, m, n)
00468    return b;
00469 } /* tras_ */

double * TCL::trasat ( const double *  a,
const double *  s,
double *  r,
int  m,
int  n 
) [static]

Definition at line 542 of file TCL.cxx.

References TCL_TRASAT.

00543 {
00544    // Transformation of Symmetric Matrix
00545    // CERN PROGLIB# F112    TRASAT          .VERSION KERNFOR  4.15  861204 */
00546    // ORIG. 18/12/74 WH */
00547    // trasat.F -- translated by f2c (version 19970219).
00548  //BEGIN_HTML <!--
00549  /* -->
00550   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00551  <!--*/
00552  // -->END_HTML
00553    TCL_TRASAT(a, s, r__, m, n)
00554    return r__;
00555 } /* trasat_ */

float * TCL::trasat ( const double *  a,
const float *  s,
float *  r,
int  m,
int  n 
) [static]

Definition at line 558 of file TCL.cxx.

References TCL_TRASAT.

00559 {
00560    // Transformation of Symmetric Matrix
00561    // CERN PROGLIB# F112    TRASAT          .VERSION KERNFOR  4.15  861204 */
00562    // ORIG. 18/12/74 WH */
00563    // trasat.F -- translated by f2c (version 19970219).
00564  //BEGIN_HTML <!--
00565  /* -->
00566   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00567  <!--*/
00568  // -->END_HTML
00569    TCL_TRASAT(a, s, r__, m, n)
00570    return r__;
00571 } /* trasat_ */

float * TCL::trasat ( const float *  a,
const float *  s,
float *  r,
int  m,
int  n 
) [static]

Definition at line 526 of file TCL.cxx.

References TCL_TRASAT.

00527 {
00528    // Transformation of Symmetric Matrix
00529    // CERN PROGLIB# F112    TRASAT          .VERSION KERNFOR  4.15  861204 */
00530    // ORIG. 18/12/74 WH */
00531    // trasat.F -- translated by f2c (version 19970219).
00532  //BEGIN_HTML <!--
00533  /* -->
00534   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00535  <!--*/
00536  // -->END_HTML
00537    TCL_TRASAT(a, s, r__, m, n)
00538    return r__;
00539 } /* trasat_ */

double * TCL::trata ( const double *  a,
double *  r,
int  m,
int  n 
) [static]

Definition at line 1363 of file TCL.cxx.

01364 {
01365  //BEGIN_HTML <!--
01366  /* -->
01367   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01368  <!--*/
01369  // -->END_HTML
01370 
01371    /* Local variables */
01372    int i__, j, ia, mn, ir, iat;
01373    double sum;
01374 
01375 
01376    /* CERN PROGLIB# F112    TRATA           .VERSION KERNFOR  4.15  861204 */
01377    /* ORIG. 18/12/74 WH */
01378 
01379 
01380    /* Parameter adjuTments */
01381    --r__;    --a;
01382 
01383    /* Function Body */
01384     mn = m * n;
01385    ir = 0;
01386 
01387    for (i__ = 1; i__ <= m; ++i__) {
01388 
01389       for (j = 1; j <= i__; ++j) {
01390          ia = i__;
01391          iat = j;
01392 
01393          sum = (double)0.;
01394          do {
01395             sum += a[ia] * a[iat];
01396             ia +=  m;
01397             iat += m;
01398          } while  (ia <= mn);
01399          ++ir;
01400          r__[ir] = sum;
01401       }
01402    }
01403 
01404    return 0;
01405 } /* trata_ */

float * TCL::trata ( const float *  a,
float *  r,
int  m,
int  n 
) [static]

Definition at line 576 of file TCL.cxx.

00577 {
00578    // trata.F -- translated by f2c (version 19970219).
00579    // CERN PROGLIB# F112    TRATA           .VERSION KERNFOR  4.15  861204 */
00580    // ORIG. 18/12/74 WH */
00581  //BEGIN_HTML <!--
00582  /* -->
00583   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00584  <!--*/
00585  // -->END_HTML
00586 
00587    /* Local variables */
00588    int i__, j, ia, mn, ir, iat;
00589    double sum;
00590 
00591    /* Parameter adjuTments */
00592    --r__;    --a;
00593 
00594    /* Function Body */
00595    mn = m * n;
00596    ir = 0;
00597 
00598    for (i__ = 1; i__ <= m; ++i__) {
00599       for (j = 1; j <= i__; ++j) {
00600          ia = i__;
00601          iat = j;
00602          sum = 0.;
00603          do {
00604             sum += a[ia] * a[iat];
00605             ia +=  m;
00606             iat += m;
00607          } while  (ia <= mn);
00608          ++ir;
00609          r__[ir] = sum;
00610       }
00611    }
00612    ++r__;
00613    return r__;
00614 } /* trata_ */

double * TCL::trats ( const double *  a,
const double *  s,
double *  b,
int  m,
int  n 
) [static]

Definition at line 1409 of file TCL.cxx.

01410 {
01411  //BEGIN_HTML <!--
01412  /* -->
01413   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01414  <!--*/
01415  // -->END_HTML
01416    /* Local variables */
01417    int inds, i__, j, k, ia, ib, is;
01418    double sum;
01419 
01420 
01421    /* CERN PROGLIB# F112    TRATS           .VERSION KERNFOR  4.15  861204 */
01422    /* ORIG. 18/12/74 WH */
01423 
01424    /* Parameter adjuTments */
01425    --b;    --s;    --a;
01426 
01427    /* Function Body */
01428    ib = 0;    inds = 0;    i__ = 0;
01429 
01430    do {
01431       inds += i__;
01432       ib = i__ + 1;
01433 
01434       for (j = 1; j <= m; ++j) {
01435          ia = j;
01436          is = inds;
01437          sum = (double)0.;
01438          k = 0;
01439 
01440          do {
01441             if (k > i__) is += k;
01442             else         ++is;
01443             sum += a[ia] * s[is];
01444             ia += m;
01445             ++k;
01446          } while (k < n);
01447 
01448          b[ib] = sum;
01449          ib += n;
01450       }
01451       ++i__;
01452    } while (i__ < n);
01453 
01454    return 0;
01455 } /* trats_ */

float * TCL::trats ( const float *  a,
const float *  s,
float *  b,
int  m,
int  n 
) [static]

Definition at line 618 of file TCL.cxx.

00619 {
00620  //BEGIN_HTML <!--
00621  /* -->
00622   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00623  <!--*/
00624  // -->END_HTML
00625    /* Local variables */
00626    int inds, i__, j, k, ia, ib, is;
00627    double sum;
00628 
00629    /* CERN PROGLIB# F112    TRATS           .VERSION KERNFOR  4.15  861204 */
00630    /* ORIG. 18/12/74 WH */
00631 
00632    /* Parameter adjuTments */
00633    --b;    --s;    --a;
00634 
00635    /* Function Body */
00636    ib = 0;    inds = 0;    i__ = 0;
00637    do {
00638       inds += i__;
00639       ib = i__ + 1;
00640 
00641       for (j = 1; j <= m; ++j) {
00642          ia = j;
00643          is = inds;
00644          sum = 0.;
00645          k = 0;
00646 
00647          do {
00648             if (k > i__) is += k;
00649             else         ++is;
00650             sum += a[ia] * s[is];
00651             ia += m;
00652             ++k;
00653          } while (k < n);
00654 
00655          b[ib] = sum;
00656          ib += n;
00657       }
00658       ++i__;
00659    } while (i__ < n);
00660    ++b;
00661    return b;
00662 } /* trats_ */

double * TCL::tratsa ( const double *  a,
const double *  s,
double *  r,
int  m,
int  n 
) [static]

Definition at line 1459 of file TCL.cxx.

References vzero().

01460 {
01461  //BEGIN_HTML <!--
01462  /* -->
01463   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01464  <!--*/
01465  // -->END_HTML
01466    /* Local variables */
01467    int imax, i__, j, k;
01468    int ia, ir, is, iaa, ind;
01469    double sum;
01470 
01471    /* CERN PROGLIB# F112    TRATSA          .VERSION KERNFOR  4.15  861204 */
01472    /* ORIG. 18/12/74 WH */
01473 
01474 
01475    /* Parameter adjuTments */
01476    --r__;    --s;    --a;
01477 
01478    /* Function Body */
01479    imax = (m * m + m) / 2;
01480    vzero(&r__[1], imax);
01481    ind = 0;
01482    i__ = 0;
01483 
01484    do {
01485       ind += i__;
01486       ir = 0;
01487 
01488       for (j = 1; j <= m; ++j) {
01489          is = ind;
01490          ia = j;
01491          sum = (double)0.;
01492          k = 0;
01493 
01494          do {
01495             if (k > i__) is += k;
01496             else         ++is;
01497             sum += s[is] * a[ia];
01498             ia += m;
01499             ++k;
01500          } while  (k < n);
01501          iaa = i__ * m;
01502 
01503          for (k = 1; k <= j; ++k) {
01504             ++iaa;
01505             ++ir;
01506             r__[ir] += sum * a[iaa];
01507          }
01508       }
01509       ++i__;
01510    } while (i__ < n);
01511 
01512    return 0;
01513 } /* tratsa_ */

float * TCL::tratsa ( const float *  a,
const float *  s,
float *  r,
int  m,
int  n 
) [static]

Definition at line 666 of file TCL.cxx.

References vzero().

00667 {
00668  //BEGIN_HTML <!--
00669  /* -->
00670   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00671  <!--*/
00672  // -->END_HTML
00673 
00674    /* Local variables */
00675    int imax, i__, j, k;
00676    int ia, ir, is, iaa, ind;
00677    double sum;
00678 
00679    /* CERN PROGLIB# F112    TRATSA          .VERSION KERNFOR  4.15  861204 */
00680    /* ORIG. 18/12/74 WH */
00681 
00682 
00683    /* Parameter adjuTments */
00684    --r__;    --s;    --a;
00685 
00686    /* Function Body */
00687    imax = (m * m + m) / 2;
00688    vzero(&r__[1], imax);
00689    ind = 0;
00690    i__ = 0;
00691 
00692    do {
00693       ind += i__;
00694       ir = 0;
00695 
00696       for (j = 1; j <= m; ++j) {
00697          is = ind;
00698          ia = j;
00699          sum = 0.;
00700          k = 0;
00701 
00702          do {
00703             if (k > i__) is += k;
00704             else         ++is;
00705             sum += s[is] * a[ia];
00706             ia += m;
00707             ++k;
00708          } while  (k < n);
00709          iaa = i__ * m;
00710 
00711          for (k = 1; k <= j; ++k) {
00712             ++iaa;
00713             ++ir;
00714             r__[ir] += sum * a[iaa];
00715          }
00716       }
00717       ++i__;
00718    } while (i__ < n);
00719    ++r__;
00720    return r__;
00721 } /* tratsa_ */

double * TCL::trchlu ( const double *  a,
double *  b,
int  n 
) [static]

Definition at line 1516 of file TCL.cxx.

References id.

01517 {
01518    // trchlu.F -- translated by f2c (version 19970219).
01519  //BEGIN_HTML <!--
01520  /* -->
01521   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01522  <!--*/
01523  // -->END_HTML
01524    /* Local variables */
01525    int ipiv, kpiv, i__, j;
01526    double r__, dc;
01527    int id, kd;
01528    double sum;
01529 
01530 
01531    /* CERN PROGLIB# F112    TRCHLU          .VERSION KERNFOR  4.16  870601 */
01532    /* ORIG. 18/12/74 W.HART */
01533 
01534 
01535    /* Parameter adjuTments */
01536    --b;    --a;
01537 
01538    /* Function Body */
01539    ipiv = 0;
01540 
01541    i__ = 0;
01542 
01543    do {
01544       ++i__;
01545       ipiv += i__;
01546       kpiv = ipiv;
01547       r__ = a[ipiv];
01548 
01549       for (j = i__; j <= n; ++j) {
01550          sum = 0.;
01551          if (i__ == 1)       goto L40;
01552          if (r__ == 0.)      goto L42;
01553          id = ipiv - i__ + 1;
01554          kd = kpiv - i__ + 1;
01555 
01556          do {
01557             sum += b[kd] * b[id];
01558             ++kd;   ++id;
01559          } while (id < ipiv);
01560 
01561 L40:
01562          sum = a[kpiv] - sum;
01563 L42:
01564          if (j != i__) b[kpiv] = sum * r__;
01565          else {
01566             dc = TMath::Sqrt(sum);
01567             b[kpiv] = dc;
01568             if (r__ > 0.)  r__ = (double)1. / dc;
01569          }
01570          kpiv += j;
01571       }
01572 
01573    } while  (i__ < n);
01574 
01575    return 0;
01576 } /* trchlu_ */

float * TCL::trchlu ( const float *  a,
float *  b,
int  n 
) [static]

Definition at line 725 of file TCL.cxx.

References id.

Referenced by AlgFitTrackMS::InvertCovMatrix(), and trsinv().

00726 {
00727  //BEGIN_HTML <!--
00728  /* -->
00729   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00730  <!--*/
00731  // -->END_HTML
00732    /* Local variables */
00733    int ipiv, kpiv, i__, j;
00734    double r__, dc;
00735    int id, kd;
00736    double sum;
00737 
00738 
00739    /* CERN PROGLIB# F112    TRCHLU          .VERSION KERNFOR  4.16  870601 */
00740    /* ORIG. 18/12/74 W.HART */
00741 
00742 
00743    /* Parameter adjuTments */
00744    --b;    --a;
00745 
00746    /* Function Body */
00747    ipiv = 0;
00748 
00749    i__ = 0;
00750 
00751    do {
00752       ++i__;
00753       ipiv += i__;
00754       kpiv = ipiv;
00755       r__ = a[ipiv];
00756 
00757       for (j = i__; j <= n; ++j) {
00758          sum = 0.;
00759          if (i__ == 1)           goto L40;
00760          if (r__ == 0.)      goto L42;
00761          id = ipiv - i__ + 1;
00762          kd = kpiv - i__ + 1;
00763 
00764          do {
00765             sum += b[kd] * b[id];
00766             ++kd;       ++id;
00767          } while (id < ipiv);
00768 
00769 L40:
00770          sum = a[kpiv] - sum;
00771 L42:
00772          if (j != i__) b[kpiv] = sum * r__;
00773          else {
00774             dc = TMath::Sqrt(sum);
00775             b[kpiv] = dc;
00776             if (r__ > 0.)  r__ = 1. / dc;
00777          }
00778          kpiv += j;
00779       }
00780 
00781    } while  (i__ < n);
00782    ++b;
00783    return b;
00784 } /* trchlu_ */

double * TCL::trchul ( const double *  a,
double *  b,
int  n 
) [static]

Definition at line 1580 of file TCL.cxx.

References id.

01581 {
01582  //BEGIN_HTML <!--
01583  /* -->
01584   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01585  <!--*/
01586  // -->END_HTML
01587    /* Local variables */
01588    int ipiv, kpiv, i__;
01589    double r__;
01590    int nTep;
01591    double dc;
01592    int id, kd;
01593    double sum;
01594 
01595 
01596    /* CERN PROGLIB# F112    TRCHUL          .VERSION KERNFOR  4.16  870601 */
01597    /* ORIG. 18/12/74 WH */
01598 
01599 
01600    /* Parameter adjuTments */
01601    --b;    --a;
01602 
01603    /* Function Body */
01604    kpiv = (n * n + n) / 2;
01605 
01606    i__ = n;
01607    do {
01608       ipiv = kpiv;
01609       r__ = a[ipiv];
01610 
01611       do {
01612          sum = 0.;
01613          if (i__ == n)           goto L40;
01614          if (r__ == (double)0.)  goto L42;
01615          id = ipiv;
01616          kd = kpiv;
01617          nTep = i__;
01618 
01619          do {
01620             kd += nTep;
01621             id += nTep;
01622             ++nTep;
01623             sum += b[id] * b[kd];
01624          } while  (nTep < n);
01625 
01626 L40:
01627          sum = a[kpiv] - sum;
01628 L42:
01629          if (kpiv < ipiv) b[kpiv] = sum * r__;
01630          else {
01631             dc = TMath::Sqrt(sum);
01632             b[kpiv] = dc;
01633             if (r__ > (double)0.)         r__ = (double)1. / dc;
01634          }
01635          --kpiv;
01636       } while (kpiv > ipiv - i__);
01637 
01638       --i__;
01639    } while  (i__ > 0);
01640 
01641    return 0;
01642 } /* trchul_ */

float * TCL::trchul ( const float *  a,
float *  b,
int  n 
) [static]

Definition at line 788 of file TCL.cxx.

References id.

00789 {
00790  //BEGIN_HTML <!--
00791  /* -->
00792   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00793  <!--*/
00794  // -->END_HTML
00795    /* Local variables */
00796    int ipiv, kpiv, i__;
00797    double r__;
00798    int nTep;
00799    double dc;
00800    int id, kd;
00801    double sum;
00802 
00803 
00804    /* CERN PROGLIB# F112    TRCHUL          .VERSION KERNFOR  4.16  870601 */
00805    /* ORIG. 18/12/74 WH */
00806 
00807 
00808    /* Parameter adjuTments */
00809    --b;    --a;
00810 
00811    /* Function Body */
00812    kpiv = (n * n + n) / 2;
00813 
00814    i__ = n;
00815    do {
00816       ipiv = kpiv;
00817       r__ = a[ipiv];
00818 
00819       do {
00820          sum = 0.;
00821          if (i__ == n)   goto L40;
00822          if (r__ == 0.)  goto L42;
00823          id = ipiv;
00824          kd = kpiv;
00825          nTep = i__;
00826 
00827          do {
00828             kd += nTep;
00829             id += nTep;
00830             ++nTep;
00831             sum += b[id] * b[kd];
00832          } while  (nTep < n);
00833 
00834 L40:
00835          sum = a[kpiv] - sum;
00836 L42:
00837          if (kpiv < ipiv) b[kpiv] = sum * r__;
00838          else {
00839             dc = TMath::Sqrt(sum);
00840             b[kpiv] = dc;
00841             if (r__ > 0.)         r__ = 1. / dc;
00842          }
00843          --kpiv;
00844       } while (kpiv > ipiv - i__);
00845 
00846       --i__;
00847    } while  (i__ > 0);
00848 
00849    ++b;
00850    return b;
00851 } /* trchul_ */

double * TCL::trinv ( const double *  t,
double *  s,
int  n 
) [static]

Definition at line 1645 of file TCL.cxx.

01646 {
01647    // trinv.F -- translated by f2c (version 19970219).
01648    // CERN PROGLIB# F112    TRINV           .VERSION KERNFOR  4.15  861204 */
01649    // ORIG. 18/12/74 WH */
01650    //
01651  //BEGIN_HTML <!--
01652  /* -->
01653   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01654  <!--*/
01655  // -->END_HTML
01656    int lhor, ipiv, lver,  j;
01657    double r__;
01658    int mx, ndTep, ind;
01659    double sum;
01660 
01661    /* Parameter adjuTments */
01662    --s;    --t;
01663 
01664    /* Function Body */
01665    mx = (n * n + n) / 2;
01666    ipiv = mx;
01667 
01668    int i = n;
01669    do {
01670       r__ = 0.;
01671       if (t[ipiv] > 0.)  r__ = (double)1. / t[ipiv];
01672       s[ipiv] = r__;
01673       ndTep = n;
01674       ind = mx - n + i;
01675 
01676       while (ind != ipiv) {
01677          sum = 0.;
01678          if (r__ != 0.) {
01679             lhor = ipiv;
01680             lver = ind;
01681             j = i;
01682 
01683             do {
01684                lhor += j;
01685                ++lver;
01686                sum += t[lhor] * s[lver];
01687                ++j;
01688             } while  (lhor < ind);
01689          }
01690          s[ind] = -sum * r__;
01691          --ndTep;
01692          ind -= ndTep;
01693       }
01694 
01695       ipiv -= i;
01696       --i;
01697    } while (i > 0);
01698 
01699    return 0;
01700 } /* trinv_ */

float * TCL::trinv ( const float *  t,
float *  s,
int  n 
) [static]

Definition at line 854 of file TCL.cxx.

Referenced by AlgFitTrackMS::InvertCovMatrix(), and trsinv().

00855 {
00856    // trinv.F -- translated by f2c (version 19970219).
00857    // CERN PROGLIB# F112    TRINV           .VERSION KERNFOR  4.15  861204 */
00858    // ORIG. 18/12/74 WH */
00859  //BEGIN_HTML <!--
00860  /* -->
00861   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00862  <!--*/
00863  // -->END_HTML
00864 
00865    int lhor, ipiv, lver, j;
00866    double sum = 0;
00867    double r__ = 0;
00868    int mx, ndTep, ind;
00869 
00870 
00871    /* Parameter adjuTments */
00872    --s;    --t;
00873 
00874    /* Function Body */
00875    mx = (n * n + n) / 2;
00876    ipiv = mx;
00877 
00878    int i = n;
00879    do {
00880       r__ = 0.;
00881       if (t[ipiv] > 0.) r__ = 1. / t[ipiv];
00882       s[ipiv] = r__;
00883       ndTep = n;
00884       ind = mx - n + i;
00885 
00886       while (ind != ipiv) {
00887          sum = 0.;
00888          if (r__ != 0.) {
00889             lhor = ipiv;
00890             lver = ind;
00891             j = i;
00892 
00893             do {
00894                lhor += j;
00895                ++lver;
00896                sum += t[lhor] * s[lver];
00897                ++j;
00898             } while  (lhor < ind);
00899          }
00900          s[ind] = -sum * r__;
00901          --ndTep;
00902          ind -= ndTep;
00903       }
00904 
00905       ipiv -= i;
00906       --i;
00907    } while (i > 0);
00908 
00909    ++s;
00910    return s;
00911 } /* trinv_ */

double * TCL::trla ( const double *  u,
const double *  a,
double *  b,
int  m,
int  n 
) [static]

Definition at line 1703 of file TCL.cxx.

01704 {
01705    //
01706    // trla.F -- translated by f2c (version 19970219).
01707    // CERN PROGLIB# F112    TRLA            .VERSION KERNFOR  4.15  861204 */
01708    // ORIG. 18/12/74 WH */
01709    //
01710  //BEGIN_HTML <!--
01711  /* -->
01712   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01713  <!--*/
01714  // -->END_HTML
01715    int ipiv, ia, ib, iu;
01716    double sum;
01717 
01718    /* Parameter adjuTments */
01719    --b;    --a;    --u;
01720 
01721    /* Function Body */
01722    ib = m * n;
01723    ipiv = (m * m + m) / 2;
01724 
01725    do {
01726       do {
01727          ia = ib;
01728          iu = ipiv;
01729 
01730          sum = 0.;
01731          do {
01732             sum += a[ia] * u[iu];
01733             --iu;
01734             ia -= n;
01735          } while (ia > 0);
01736 
01737          b[ib] = sum;
01738          --ib;
01739       } while (ia > 1 - n);
01740 
01741       ipiv = iu;
01742    } while (iu > 0);
01743 
01744    return 0;
01745 } /* trla_ */

float * TCL::trla ( const float *  u,
const float *  a,
float *  b,
int  m,
int  n 
) [static]

Definition at line 915 of file TCL.cxx.

00916 {
00917    int ipiv, ia, ib, iu;
00918    double sum;
00919 
00920    /* CERN PROGLIB# F112    TRLA            .VERSION KERNFOR  4.15  861204 */
00921    /* ORIG. 18/12/74 WH */
00922  //BEGIN_HTML <!--
00923  /* -->
00924   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00925  <!--*/
00926  // -->END_HTML
00927 
00928 
00929    /* Parameter adjuTments */
00930    --b;    --a;    --u;
00931 
00932    /* Function Body */
00933    ib = m * n;
00934    ipiv = (m * m + m) / 2;
00935 
00936    do {
00937       do {
00938          ia = ib;
00939          iu = ipiv;
00940 
00941          sum = 0.;
00942          do {
00943             sum += a[ia] * u[iu];
00944             --iu;
00945             ia -= n;
00946          } while (ia > 0);
00947 
00948          b[ib] = sum;
00949          --ib;
00950       } while (ia > 1 - n);
00951 
00952       ipiv = iu;
00953    } while (iu > 0);
00954 
00955    ++b;
00956    return b;
00957 } /* trla_ */

double * TCL::trlta ( const double *  u,
const double *  a,
double *  b,
int  m,
int  n 
) [static]

Definition at line 1748 of file TCL.cxx.

01749 {
01750    // trlta.F -- translated by f2c (version 19970219).
01751    // CERN PROGLIB# F112    TRLTA           .VERSION KERNFOR  4.15  861204
01752    // ORIG. 18/12/74 WH
01753  //BEGIN_HTML <!--
01754  /* -->
01755   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01756  <!--*/
01757  // -->END_HTML
01758 
01759    int ipiv, mxpn, i__, nTep, ia, ib, iu, mx;
01760    double sum;
01761 
01762    /* Parameter adjuTments */
01763    --b;    --a;    --u;
01764 
01765    /* Function Body */
01766    ipiv = 0;
01767    mx = m * n;
01768    mxpn = mx + n;
01769    ib = 0;
01770 
01771    i__ = 0;
01772    do {
01773       ++i__;
01774       ipiv += i__;
01775 
01776       do {
01777          iu = ipiv;
01778          nTep = i__;
01779          ++ib;
01780          ia = ib;
01781 
01782          sum = 0.;
01783          do {
01784             sum += a[ia] * u[iu];
01785             ia += n;
01786             iu += nTep;
01787             ++nTep;
01788          } while (ia <= mx);
01789 
01790          b[ib] = sum;
01791       } while (ia < mxpn);
01792 
01793    } while (i__ < m);
01794 
01795    return 0;
01796 } /* trlta_ */

float * TCL::trlta ( const float *  u,
const float *  a,
float *  b,
int  m,
int  n 
) [static]

Definition at line 961 of file TCL.cxx.

00962 {
00963    int ipiv, mxpn, i__, nTep, ia, ib, iu, mx;
00964    double sum;
00965 
00966    /* CERN PROGLIB# F112    TRLTA           .VERSION KERNFOR  4.15  861204 */
00967    /* ORIG. 18/12/74 WH */
00968  //BEGIN_HTML <!--
00969  /* -->
00970   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
00971  <!--*/
00972  // -->END_HTML
00973 
00974 
00975    /* Parameter adjuTments */
00976    --b;    --a;    --u;
00977 
00978    /* Function Body */
00979    ipiv = 0;
00980    mx = m * n;
00981    mxpn = mx + n;
00982    ib = 0;
00983 
00984    i__ = 0;
00985    do {
00986       ++i__;
00987       ipiv += i__;
00988 
00989       do {
00990          iu = ipiv;
00991          nTep = i__;
00992          ++ib;
00993          ia = ib;
00994 
00995          sum = 0.;
00996          do {
00997             sum += a[ia] * u[iu];
00998             ia += n;
00999             iu += nTep;
01000             ++nTep;
01001          } while (ia <= mx);
01002 
01003          b[ib] = sum;
01004       } while (ia < mxpn);
01005 
01006    } while (i__ < m);
01007 
01008    ++b;
01009    return b;
01010 } /* trlta_ */

double * TCL::trpck ( const double *  s,
double *  u,
int  n 
) [static]

Definition at line 1799 of file TCL.cxx.

01800 {
01801    // trpck.F -- translated by f2c (version 19970219).
01802    // CERN PROGLIB# F112    TRPCK           .VERSION KERNFOR  2.08  741218 */
01803    // ORIG. 18/12/74 WH */
01804  //BEGIN_HTML <!--
01805  /* -->
01806   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01807  <!--*/
01808  // -->END_HTML
01809    int i__, ia, ind, ipiv;
01810 
01811    /* Parameter adjuTments */
01812    --u;    --s;
01813 
01814    /* Function Body */
01815    ia = 0;
01816    ind = 0;
01817    ipiv = 0;
01818 
01819    for (i__ = 1; i__ <= n; ++i__) {
01820       ipiv += i__;
01821       do {
01822          ++ia;
01823          ++ind;
01824          u[ind] = s[ia];
01825       } while (ind < ipiv);
01826       ia = ia + n - i__;
01827    }
01828 
01829    return 0;
01830 } /* trpck_ */

float * TCL::trpck ( const float *  s,
float *  u,
int  n 
) [static]

Definition at line 1013 of file TCL.cxx.

Referenced by trsequ().

01014 {
01015    // trpck.F -- translated by f2c (version 19970219).
01016    // CERN PROGLIB# F112    TRPCK           .VERSION KERNFOR  2.08  741218 */
01017    // ORIG. 18/12/74 WH */
01018  //BEGIN_HTML <!--
01019  /* -->
01020   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01021  <!--*/
01022  // -->END_HTML
01023    int i__, ia, ind, ipiv;
01024 
01025    /* Parameter adjuTments */
01026    --u;    --s;
01027 
01028    /* Function Body */
01029    ia = 0;
01030    ind = 0;
01031    ipiv = 0;
01032 
01033    for (i__ = 1; i__ <= n; ++i__) {
01034       ipiv += i__;
01035       do {
01036          ++ia;
01037          ++ind;
01038          u[ind] = s[ia];
01039       } while (ind < ipiv);
01040       ia = ia + n - i__;
01041    }
01042 
01043    ++u;
01044    return u;
01045 } /* trpck_ */

double * TCL::trqsq ( const double *  q,
const double *  s,
double *  r,
int  m 
) [static]

Definition at line 1833 of file TCL.cxx.

References vzero().

01834 {
01835    // trqsq.F -- translated by f2c (version 19970219).
01836    // CERN PROGLIB# F112    TRQSQ           .VERSION KERNFOR  4.15  861204 */
01837    // ORIG. 18/12/74 WH */
01838  //BEGIN_HTML <!--
01839  /* -->
01840   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01841  <!--*/
01842  // -->END_HTML
01843 
01844    int indq, inds, imax, i__, j, k, l;
01845    int iq, ir, is, iqq;
01846    double sum;
01847 
01848    /* Parameter adjuTments */
01849    --r__;    --s;    --q;
01850 
01851    /* Function Body */
01852    imax = (m * m + m) / 2;
01853    vzero(&r__[1], imax);
01854    inds = 0;
01855    i__ = 0;
01856 
01857    do {
01858       inds += i__;
01859       ir = 0;
01860       indq = 0;
01861       j = 0;
01862 
01863       do {
01864          indq += j;
01865          is = inds;
01866          iq = indq;
01867          sum = 0.;
01868          k = 0;
01869 
01870          do {
01871             if (k > i__)  is += k;
01872             else          ++is;
01873 
01874             if (k > j)    iq += k;
01875             else        ++iq;
01876 
01877             sum += s[is] * q[iq];
01878             ++k;
01879          } while (k < m);
01880          iqq = inds;
01881          l = 0;
01882 
01883          do {
01884             ++ir;
01885             if (l > i__)  iqq += l;
01886             else          ++iqq;
01887             r__[ir] += q[iqq] * sum;
01888             ++l;
01889          } while (l <= j);
01890          ++j;
01891       } while (j < m);
01892       ++i__;
01893    } while (i__ < m);
01894 
01895    return 0;
01896 } /* trqsq_ */

float * TCL::trqsq ( const float *  q,
const float *  s,
float *  r,
int  m 
) [static]

Definition at line 1048 of file TCL.cxx.

References vzero().

01049 {
01050    // trqsq.F -- translated by f2c (version 19970219).
01051    // CERN PROGLIB# F112    TRQSQ           .VERSION KERNFOR  4.15  861204 */
01052    // ORIG. 18/12/74 WH */
01053  //BEGIN_HTML <!--
01054  /* -->
01055   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01056  <!--*/
01057  // -->END_HTML
01058 
01059    int indq, inds, imax, i__, j, k, l;
01060    int iq, ir, is, iqq;
01061    double sum;
01062 
01063    /* Parameter adjuTments */
01064    --r__;    --s;    --q;
01065 
01066    /* Function Body */
01067    imax = (m * m + m) / 2;
01068    vzero(&r__[1], imax);
01069    inds = 0;
01070    i__ = 0;
01071 
01072    do {
01073       inds += i__;
01074       ir = 0;
01075       indq = 0;
01076       j = 0;
01077 
01078       do {
01079          indq += j;
01080          is = inds;
01081          iq = indq;
01082          sum = (float)0.;
01083          k = 0;
01084 
01085          do {
01086             if (k > i__)  is += k;
01087             else          ++is;
01088 
01089             if (k > j)    iq += k;
01090             else        ++iq;
01091 
01092             sum += s[is] * q[iq];
01093             ++k;
01094          } while (k < m);
01095          iqq = inds;
01096          l = 0;
01097 
01098          do {
01099             ++ir;
01100             if (l > i__)  iqq += l;
01101             else          ++iqq;
01102             r__[ir] += q[iqq] * sum;
01103             ++l;
01104          } while (l <= j);
01105          ++j;
01106       } while (j < m);
01107       ++i__;
01108    } while (i__ < m);
01109 
01110    ++r__;
01111    return r__;
01112 } /* trqsq_ */

double * TCL::trsa ( const double *  s,
const double *  a,
double *  b,
int  m,
int  n 
) [static]

Definition at line 1899 of file TCL.cxx.

01900 {
01901    // trsa.F -- translated by f2c (version 19970219).
01902    // CERN PROGLIB# F112    TRSA            .VERSION KERNFOR  4.15  861204 */
01903    // ORIG. 18/12/74 WH */
01904  //BEGIN_HTML <!--
01905  /* -->
01906   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01907  <!--*/
01908  // -->END_HTML
01909    /* Local variables */
01910    int inds, i__, j, k, ia, ib, is;
01911    double sum;
01912 
01913    /* Parameter adjuTments */
01914    --b;    --a;    --s;
01915 
01916    /* Function Body */
01917    inds = 0;
01918    ib = 0;
01919    i__ = 0;
01920 
01921    do {
01922       inds += i__;
01923 
01924       for (j = 1; j <= n; ++j) {
01925          ia = j;
01926          is = inds;
01927          sum = 0.;
01928          k = 0;
01929 
01930          do {
01931             if (k > i__) is += k;
01932             else         ++is;
01933             sum += s[is] * a[ia];
01934             ia += n;
01935             ++k;
01936          } while (k < m);
01937          ++ib;
01938          b[ib] = sum;
01939       }
01940       ++i__;
01941    } while (i__ < m);
01942 
01943    return 0;
01944 } /* trsa_ */

float * TCL::trsa ( const float *  s,
const float *  a,
float *  b,
int  m,
int  n 
) [static]

Definition at line 1115 of file TCL.cxx.

Referenced by trsequ().

01116 {
01117    // trsa.F -- translated by f2c (version 19970219).
01118    // CERN PROGLIB# F112    TRSA            .VERSION KERNFOR  4.15  861204 */
01119    // ORIG. 18/12/74 WH */
01120  //BEGIN_HTML <!--
01121  /* -->
01122   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01123  <!--*/
01124  // -->END_HTML
01125    /* Local variables */
01126    int inds, i__, j, k, ia, ib, is;
01127    double sum;
01128 
01129    /* Parameter adjuTments */
01130    --b;    --a;    --s;
01131 
01132    /* Function Body */
01133    inds = 0;
01134    ib = 0;
01135    i__ = 0;
01136 
01137    do {
01138       inds += i__;
01139 
01140       for (j = 1; j <= n; ++j) {
01141          ia = j;
01142          is = inds;
01143          sum = 0.;
01144          k = 0;
01145 
01146          do {
01147             if (k > i__) is += k;
01148             else         ++is;
01149             sum += s[is] * a[ia];
01150             ia += n;
01151             ++k;
01152          } while (k < m);
01153          ++ib;
01154          b[ib] = sum;
01155       }
01156       ++i__;
01157    } while (i__ < m);
01158 
01159    ++b;
01160    return b;
01161 } /* trsa_ */

double * TCL::trsat ( const double *  s,
const double *  a,
double *  b,
int  m,
int  n 
) [static]

Definition at line 2091 of file TCL.cxx.

02092 {
02093    // trsat.F -- translated by f2c (version 19970219)
02094    // CERN PROGLIB# F112    TRSAT           .VERSION KERNFOR  4.15  861204
02095    // ORIG. 18/12/74 WH
02096  //BEGIN_HTML <!--
02097  /* -->
02098   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
02099  <!--*/
02100  // -->END_HTML
02101 
02102    /* Local variables */
02103    int inds, i__, j, k, ia, ib, is;
02104    double sum;
02105 
02106    /* Parameter adjuTments */
02107    --b;    --a;    --s;
02108 
02109    /* Function Body */
02110    inds = 0;
02111    ib = 0;
02112    i__ = 0;
02113 
02114    do {
02115       inds += i__;
02116       ia = 0;
02117 
02118       for (j = 1; j <= n; ++j) {
02119          is = inds;
02120          sum = 0.;
02121          k = 0;
02122 
02123          do {
02124             if (k > i__) is += k;
02125             else         ++is;
02126             ++ia;
02127             sum += s[is] * a[ia];
02128             ++k;
02129          } while (k < m);
02130          ++ib;
02131          b[ib] = sum;
02132       }
02133       ++i__;
02134    } while (i__ < m);
02135 
02136    return 0;
02137 } /* trsat_ */

float * TCL::trsat ( const float *  s,
const float *  a,
float *  b,
int  m,
int  n 
) [static]

Definition at line 1308 of file TCL.cxx.

01309 {
01310  //BEGIN_HTML <!--
01311  /* -->
01312   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01313  <!--*/
01314  // -->END_HTML
01315 
01316    /* Local variables */
01317    int inds, i__, j, k, ia, ib, is;
01318    double sum;
01319 
01320 
01321    /* CERN PROGLIB# F112    TRSAT           .VERSION KERNFOR  4.15  861204 */
01322    /* ORIG. 18/12/74 WH */
01323 
01324 
01325    /* Parameter adjuTments */
01326    --b;    --a;    --s;
01327 
01328    /* Function Body */
01329    inds = 0;
01330    ib = 0;
01331    i__ = 0;
01332 
01333    do {
01334       inds += i__;
01335       ia = 0;
01336 
01337       for (j = 1; j <= n; ++j) {
01338          is = inds;
01339          sum = 0.;
01340          k = 0;
01341 
01342          do {
01343             if (k > i__) is += k;
01344             else         ++is;
01345             ++ia;
01346             sum += s[is] * a[ia];
01347             ++k;
01348          } while (k < m);
01349          ++ib;
01350          b[ib] = sum;
01351       }
01352       ++i__;
01353    } while (i__ < m);
01354 
01355    ++b;
01356    return b;
01357 } /* trsat_ */

double * TCL::trsequ ( double *  smx,
int  m = 3,
double *  b = 0,
int  n = 1 
) [static]

Definition at line 2168 of file TCL.cxx.

References trpck(), trsa(), trsinv(), trupck(), and ucopy().

02169 {
02170    // Linear Equations, Matrix Inversion 
02171    // trsequ solves the matrix equation 
02172    //
02173    //             SMX*x = B
02174    //
02175    // which represents a system of m simultaneous linear equations with n right-hand sides: 
02176    // SMX is an  unpacked symmetric matrix (all  elements) (m x m)
02177    // B is an unpacked matrix of right-hand sides (n x m)
02178    //
02179    double *mem = new double[(m*(m+1))/2+m];
02180    double *v = mem;
02181    double *s = v+m;
02182    if (!b) n=0;
02183    TCL::trpck (smx,s    ,m);
02184    TCL::trsinv(s  ,s,    m);
02185 
02186    for (int i=0;i<n;i++) {
02187       TCL::trsa  (s  ,b+i*m, v, m, 1);
02188       TCL::ucopy (v  ,b+i*m, m);}
02189    TCL::trupck(s  ,smx,  m);
02190    delete [] mem;
02191    return b;
02192 }

float * TCL::trsequ ( float *  smx,
int  m = 3,
float *  b = 0,
int  n = 1 
) [static]

Definition at line 2142 of file TCL.cxx.

References trpck(), trsa(), trsinv(), trupck(), and ucopy().

02143 {
02144    // Linear Equations, Matrix Inversion 
02145    // trsequ solves the matrix equation 
02146    //
02147    //             SMX*x = B
02148    //
02149    // which represents a system of m simultaneous linear equations with n right-hand sides: 
02150    // SMX is an  unpacked symmetric matrix (all  elements) (m x m)
02151    // B is an unpacked matrix of right-hand sides (n x m)
02152    //
02153    float *mem = new float[(m*(m+1))/2+m];
02154    float *v = mem;
02155    float *s = v+m;
02156    if (!b) n=0;
02157    TCL::trpck (smx,s    ,m);
02158    TCL::trsinv(s  ,s,    m);
02159 
02160    for (int i=0;i<n;i++) {
02161       TCL::trsa  (s  ,b+i*m, v, m, 1);
02162       TCL::ucopy (v  ,b+i*m, m);}
02163    TCL::trupck(s  ,smx,  m);
02164    delete [] mem;
02165    return b;
02166 }

double * TCL::trsinv ( const double *  g,
double *  gi,
int  n 
) [static]

Definition at line 1947 of file TCL.cxx.

References trchlu(), trinv(), and trsmul().

01948 {
01949    // trsinv.F -- translated by f2c (version 19970219).
01950    // CERN PROGLIB# F112    TRSINV          .VERSION KERNFOR  2.08  741218
01951    // ORIG. 18/12/74 WH */
01952  //BEGIN_HTML <!--
01953  /* -->
01954   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01955  <!--*/
01956  // -->END_HTML
01957 
01958    /* Function Body */
01959    trchlu(g, gi, n);
01960    trinv(gi, gi, n);
01961    trsmul(gi, gi, n);
01962 
01963    return 0;
01964 } /* trsinv_ */

float * TCL::trsinv ( const float *  g,
float *  gi,
int  n 
) [static]

Definition at line 1164 of file TCL.cxx.

References trchlu(), trinv(), and trsmul().

Referenced by trsequ().

01165 {
01166    // trsinv.F -- translated by f2c (version 19970219).
01167    // CERN PROGLIB# F112    TRSINV          .VERSION KERNFOR  2.08  741218
01168    // ORIG. 18/12/74 WH */
01169  //BEGIN_HTML <!--
01170  /* -->
01171   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01172  <!--*/
01173  // -->END_HTML
01174 
01175    /* Function Body */
01176    trchlu(g, gi, n);
01177    trinv(gi, gi, n);
01178    return trsmul(gi, gi, n);
01179 } /* trsinv_ */

double * TCL::trsmlu ( const double *  u,
double *  s,
int  n 
) [static]

Definition at line 1967 of file TCL.cxx.

01968 {
01969    // trsmlu.F -- translated by f2c (version 19970219).
01970    // CERN PROGLIB# F112    TRSMLU          .VERSION KERNFOR  4.15  861204 */
01971    // ORIG. 18/12/74 WH */
01972  //BEGIN_HTML <!--
01973  /* -->
01974   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01975  <!--*/
01976  // -->END_HTML
01977 
01978    /* Local variables */
01979    int lhor, lver, i__, k, l, ind;
01980    double sum;
01981 
01982    /* Parameter adjuTments */
01983    --s;    --u;
01984 
01985    /* Function Body */
01986    ind = (n * n + n) / 2;
01987 
01988    for (i__ = 1; i__ <= n; ++i__) {
01989       lver = ind;
01990 
01991       for (k = i__; k <= n; ++k,--ind) {
01992          lhor = ind;    sum = 0.;
01993          for (l = k; l <= n; ++l,--lver,--lhor)
01994             sum += u[lver] * u[lhor];
01995          s[ind] = sum;
01996       }
01997    }
01998 
01999    return 0;
02000 } /* trsmlu_ */

float * TCL::trsmlu ( const float *  u,
float *  s,
int  n 
) [static]

Definition at line 1182 of file TCL.cxx.

01183 {
01184    // trsmlu.F -- translated by f2c (version 19970219).
01185    // CERN PROGLIB# F112    TRSMLU          .VERSION KERNFOR  4.15  861204 */
01186    // ORIG. 18/12/74 WH */
01187  //BEGIN_HTML <!--
01188  /* -->
01189   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01190  <!--*/
01191  // -->END_HTML
01192 
01193    /* Local variables */
01194    int lhor, lver, i__, k, l, ind;
01195    double sum;
01196 
01197    /* Parameter adjuTments */
01198    --s;    --u;
01199 
01200    /* Function Body */
01201    ind = (n * n + n) / 2;
01202 
01203    for (i__ = 1; i__ <= n; ++i__) {
01204       lver = ind;
01205 
01206       for (k = i__; k <= n; ++k,--ind) {
01207          lhor = ind;    sum = 0.;
01208          for (l = k; l <= n; ++l,--lver,--lhor)
01209             sum += u[lver] * u[lhor];
01210          s[ind] = sum;
01211       }
01212    }
01213    ++s;
01214    return s;
01215 } /* trsmlu_ */

double * TCL::trsmul ( const double *  g,
double *  gi,
int  n 
) [static]

Definition at line 2003 of file TCL.cxx.

02004 {
02005    // trsmul.F -- translated by f2c (version 19970219).
02006    // CERN PROGLIB# F112    TRSMUL          .VERSION KERNFOR  4.15  861204 */
02007    // ORIG. 18/12/74 WH */
02008  //BEGIN_HTML <!--
02009  /* -->
02010   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
02011  <!--*/
02012  // -->END_HTML
02013 
02014    /* Local variables */
02015    int lhor, lver, lpiv, i__, j, k, ind;
02016    double sum;
02017 
02018    /* Parameter adjuTments */
02019    --gi;    --g;
02020 
02021    /* Function Body */
02022    ind = 1;
02023    lpiv = 0;
02024    for (i__ = 1; i__ <= n; ++i__) {
02025       lpiv += i__;
02026       for (j = 1; j <= i__; ++j,++ind) {
02027          lver = lpiv;
02028          lhor = ind;
02029          sum = 0.;
02030          for (k = i__; k <= n;lhor += k,lver += k,++k)
02031             sum += g[lver] * g[lhor];
02032          gi[ind] = sum;
02033       }
02034    }
02035 
02036    return 0;
02037 } /* trsmul_ */

float * TCL::trsmul ( const float *  g,
float *  gi,
int  n 
) [static]

Definition at line 1218 of file TCL.cxx.

Referenced by trsinv().

01219 {
01220    // trsmul.F -- translated by f2c (version 19970219).
01221    // CERN PROGLIB# F112    TRSMUL          .VERSION KERNFOR  4.15  861204 */
01222    // ORIG. 18/12/74 WH */
01223  //BEGIN_HTML <!--
01224  /* -->
01225   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01226  <!--*/
01227  // -->END_HTML
01228 
01229    /* Local variables */
01230    int lhor, lver, lpiv, i__, j, k, ind;
01231    double sum;
01232 
01233    /* Parameter adjuTments */
01234    --gi;    --g;
01235 
01236    /* Function Body */
01237    ind = 1;
01238    lpiv = 0;
01239    for (i__ = 1; i__ <= n; ++i__) {
01240       lpiv += i__;
01241       for (j = 1; j <= i__; ++j,++ind) {
01242          lver = lpiv;
01243          lhor = ind;
01244          sum = 0.;
01245          for (k = i__; k <= n; lhor += k,lver += k,++k)
01246             sum += g[lver] * g[lhor];
01247          gi[ind] = sum;
01248       }
01249    }
01250    ++gi;
01251    return gi;
01252 } /* trsmul_ */

double * TCL::trupck ( const double *  u,
double *  s,
int  m 
) [static]

Definition at line 2040 of file TCL.cxx.

References Munits::m2.

02041 {
02042    // trupck.F -- translated by f2c (version 19970219).
02043    // CERN PROGLIB# F112    TRUPCK          .VERSION KERNFOR  2.08  741218
02044    // ORIG. 18/12/74 WH
02045  //BEGIN_HTML <!--
02046  /* -->
02047   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
02048  <!--*/
02049  // -->END_HTML
02050 
02051 
02052    int i__, im, is, iu, iv, ih, m2;
02053 
02054    /* Parameter adjuTments */
02055    --s;    --u;
02056 
02057    /* Function Body */
02058    m2 = m * m;
02059    is = m2;
02060    iu = (m2 + m) / 2;
02061    i__ = m - 1;
02062 
02063    do {
02064       im = i__ * m;
02065       do {
02066          s[is] = u[iu];
02067          --is;
02068          --iu;
02069       } while (is > im);
02070       is = is - m + i__;
02071       --i__;
02072    } while (i__ >= 0);
02073 
02074    is = 1;
02075    do {
02076       iv = is;
02077       ih = is;
02078       while (1) {
02079          iv += m;
02080          ++ih;
02081          if (iv > m2)    break;
02082          s[ih] = s[iv];
02083       }
02084       is = is + m + 1;
02085    } while (is < m2);
02086 
02087    return 0;
02088 } /* trupck_ */

float * TCL::trupck ( const float *  u,
float *  s,
int  m 
) [static]

Definition at line 1255 of file TCL.cxx.

References Munits::m2.

Referenced by trsequ().

01256 {
01257    // trupck.F -- translated by f2c (version 19970219).
01258    // CERN PROGLIB# F112    TRUPCK          .VERSION KERNFOR  2.08  741218
01259    // ORIG. 18/12/74 WH
01260  //BEGIN_HTML <!--
01261  /* -->
01262   <b>see original documentation of CERNLIB package</b> <A HREF="http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/f112/top.html">F112</A>
01263  <!--*/
01264  // -->END_HTML
01265 
01266 
01267    int i__, im, is, iu, iv, ih, m2;
01268 
01269    /* Parameter adjuTments */
01270    --s;    --u;
01271 
01272    /* Function Body */
01273    m2 = m * m;
01274    is = m2;
01275    iu = (m2 + m) / 2;
01276    i__ = m - 1;
01277 
01278    do {
01279       im = i__ * m;
01280       do {
01281          s[is] = u[iu];
01282          --is;
01283          --iu;
01284       } while (is > im);
01285       is = is - m + i__;
01286       --i__;
01287    } while (i__ >= 0);
01288 
01289    is = 1;
01290    do {
01291       iv = is;
01292       ih = is;
01293       while (1) {
01294          iv += m;
01295          ++ih;
01296          if (iv > m2)    break;
01297          s[ih] = s[iv];
01298       }
01299       is = is + m + 1;
01300    } while (is < m2);
01301 
01302    ++s;
01303    return s;
01304 } /* trupck_ */

void ** TCL::ucopy ( const void **  a,
void **  b,
int  n 
) [inline, static]

Definition at line 395 of file TCL.h.

00396 { 
00397    //to be documented
00398    if (n <= 0) return 0; memcpy(a,b,n*sizeof(void *)); return a;
00399 }

double * TCL::ucopy ( const double *  a,
double *  b,
int  n 
) [inline, static]

Definition at line 388 of file TCL.h.

00389 { 
00390    //to be documented
00391    if (n <= 0) return 0; memcpy(a,b,n*sizeof(double)); return a;
00392 }

float * TCL::ucopy ( const double *  a,
float *  b,
int  n 
) [inline, static]

Definition at line 370 of file TCL.h.

00371 {
00372    //to be documented
00373    if (n <= 0) return 0;
00374    for (int i=0;i<n;i++,a++,b++) *a = float(*b);
00375    return a;
00376 }

double * TCL::ucopy ( const float *  a,
double *  b,
int  n 
) [inline, static]

Definition at line 379 of file TCL.h.

00380 {
00381    //to be documented
00382    if (n <= 0) return 0;
00383    for (int i=0;i<n;i++,a++,b++) *a = double(*b);
00384    return a;
00385 }

float * TCL::ucopy ( const float *  a,
float *  b,
int  n 
) [inline, static]

Definition at line 363 of file TCL.h.

00364 { 
00365    //to be documented
00366    if (n <= 0) return 0; memcpy(a,b,n*sizeof(float)); return a;
00367 }

int * TCL::ucopy ( const int *  a,
int *  b,
int  n 
) [inline, static]

Definition at line 356 of file TCL.h.

Referenced by trsequ().

00357 { 
00358    //to be documented
00359    if (n <= 0) return 0; memcpy(a,b,n*sizeof(int)); return a;
00360 }

double * TCL::vadd ( const double *  b,
const float *  c,
double *  a,
int  n 
) [inline, static]

Definition at line 430 of file TCL.h.

00431 {
00432    //to be documented
00433    if (n <= 0)  return 0;
00434    for (int i=0;i<n;i++) a[i] = b[i] + c[i];
00435    return a;
00436 }

float * TCL::vadd ( const float *  b,
const double *  c,
float *  a,
int  n 
) [inline, static]

Definition at line 421 of file TCL.h.

00422 {
00423    //to be documented
00424    if (n <= 0)  return 0;
00425    for (int i=0;i<n;i++) a[i] = b[i] + c[i];
00426    return a;
00427 }

double * TCL::vadd ( const double *  b,
const double *  c,
double *  a,
int  n 
) [inline, static]

Definition at line 412 of file TCL.h.

00413 {
00414    //to be documented
00415    if (n <= 0)  return 0;
00416    for (int i=0;i<n;i++) a[i] = b[i] + c[i];
00417    return a;
00418 }

float * TCL::vadd ( const float *  b,
const float *  c,
float *  a,
int  n 
) [inline, static]

Definition at line 403 of file TCL.h.

00404 {
00405    //to be documented
00406    if (n <= 0)  return 0;
00407    for (int i=0;i<n;i++) a[i] = b[i] + c[i];
00408    return a;
00409 }

double * TCL::vcopyn ( const double *  a,
double *  x,
int  n 
) [inline, static]

Definition at line 499 of file TCL.h.

00500 {
00501    //to be documented
00502    if (n <= 0) return 0;
00503    for (int i=0;i<n;i++) x[i] = -a[i];
00504    return x;
00505 }

float * TCL::vcopyn ( const float *  a,
float *  x,
int  n 
) [inline, static]

Definition at line 491 of file TCL.h.

00492 {
00493    //to be documented
00494    if (n <= 0) return 0;
00495    for (int i=0;i<n;i++) x[i] = -a[i];
00496    return x;
00497 }

double TCL::vdot ( const double *  b,
const double *  a,
int  n 
) [inline, static]

Definition at line 448 of file TCL.h.

00449 {
00450    //to be documented
00451    double  x=0;
00452    if (n>0)
00453       for (int i=0;i<n;i++,a++,b++) x += (*a) * (*b);
00454    return x;
00455 }

float TCL::vdot ( const float *  b,
const float *  a,
int  n 
) [inline, static]

Definition at line 439 of file TCL.h.

00440 {
00441    //to be documented
00442    float x=0;
00443    if (n>0)
00444       for (int i=0;i<n;i++,a++,b++) x += (*a) * (*b);
00445    return x;
00446 }

double * TCL::vlinco ( const double *  a,
double  fa,
const double *  b,
double  fb,
double *  x,
int  n 
) [inline, static]

Definition at line 556 of file TCL.h.

00557 {
00558    //to be documented
00559    for (int i=0;i<n;i++) x[i]=a[i]*fa+b[i]*fb;
00560    return x;
00561 }

float * TCL::vlinco ( const float *  a,
float  fa,
const float *  b,
float  fb,
float *  x,
int  n 
) [inline, static]

Definition at line 548 of file TCL.h.

00549 {
00550    //to be documented
00551    for (int i=0;i<n;i++){x[i]=a[i]*fa+b[i]*fb;};
00552    return x;
00553 }

double * TCL::vmatl ( const double *  g,
const double *  c,
double *  x,
int  n = 3,
int  m = 3 
) [inline, static]

Definition at line 576 of file TCL.h.

00577 {
00578    //  x = G*c
00579    for (int i=0; i<n; i++) {
00580       double sum = 0;
00581       for (int j=0; j<m; j++) sum += G[j + m*i]*c[j];
00582       x[i] = sum;
00583    }
00584    return x;
00585 }

float * TCL::vmatl ( const float *  g,
const float *  c,
float *  x,
int  n = 3,
int  m = 3 
) [inline, static]

Definition at line 564 of file TCL.h.

00565 {
00566    //  x = G*c
00567    for (int i=0; i<n; i++) {
00568       double sum = 0;
00569       for (int j=0; j<m; j++) sum += G[j + m*i]*c[j];
00570       x[i] = sum; 
00571    }
00572    return x;
00573 }

double * TCL::vmatr ( const double *  c,
const double *  g,
double *  x,
int  n = 3,
int  m = 3 
) [inline, static]

Definition at line 600 of file TCL.h.

00601 {
00602    //  x = c*G
00603    for (int j=0; j<m; j++) {
00604       double sum = 0;
00605       for (int i=0; i<n; i++) sum += G[j + n*i]*c[i];
00606       x[j] = sum; 
00607    }
00608    return x;
00609 }

float * TCL::vmatr ( const float *  c,
const float *  g,
float *  x,
int  n = 3,
int  m = 3 
) [inline, static]

Definition at line 588 of file TCL.h.

00589 {
00590    //  x = c*G
00591    for (int j=0; j<m; j++) {
00592       double sum = 0;
00593       for (int i=0; i<n; i++) sum += G[j + n*i]*c[i];
00594       x[j] = sum; 
00595    }
00596    return x;
00597 }

double * TCL::vscale ( const double *  a,
double  scale,
double *  b,
int  n 
) [inline, static]

Definition at line 540 of file TCL.h.

00541 {
00542    //to be documented
00543    for (int i=0;i<n;i++) b[i]=scale*a[i];
00544    return b;
00545 }

float * TCL::vscale ( const float *  a,
float  scale,
float *  b,
int  n 
) [inline, static]

Definition at line 532 of file TCL.h.

00533 {
00534    //to be documented
00535    for (int i=0;i<n;i++) b[i]=scale*a[i];
00536    return b;
00537 }

double * TCL::vsub ( const double *  b,
const float *  c,
double *  a,
int  n 
) [inline, static]

Definition at line 483 of file TCL.h.

00484 {
00485    //to be documented
00486    if (n <= 0)  return 0;
00487    for (int i=0;i<n;i++) a[i] = b[i] - c[i];
00488    return a;
00489 }

float * TCL::vsub ( const float *  b,
const double *  c,
float *  a,
int  n 
) [inline, static]

Definition at line 474 of file TCL.h.

00475 {
00476    //to be documented
00477    if (n <= 0)  return 0;
00478    for (int i=0;i<n;i++) a[i] = b[i] - c[i];
00479    return a;
00480 }

double * TCL::vsub ( const double *  a,
const double *  b,
double *  x,
int  n 
) [inline, static]

Definition at line 466 of file TCL.h.

00467 {
00468   //to be documented
00469    if (n <= 0) return 0;
00470    for (int i=0;i<n;i++) x[i] = a[i]-b[i];
00471    return x;
00472 }

float * TCL::vsub ( const float *  a,
const float *  b,
float *  x,
int  n 
) [inline, static]

Definition at line 457 of file TCL.h.

00458 {
00459    //to be documented
00460    if (n <= 0) return 0;
00461    for (int i=0;i<n;i++) x[i] = a[i]-b[i];
00462    return x;
00463 }

void ** TCL::vzero ( void **  a,
int  n2 
) [inline, static]

Definition at line 524 of file TCL.h.

00525 {
00526    //to be documented
00527    if (n1 <= 0) return 0;
00528    return (void **)memset(a,0,n1*sizeof(void *));
00529 }

double * TCL::vzero ( double *  a,
int  n2 
) [inline, static]

Definition at line 516 of file TCL.h.

00517 {
00518    //to be documented
00519    if (n1 <= 0) return 0;
00520    return (double *)memset(a,0,n1*sizeof(double));
00521 }

float * TCL::vzero ( float *  a,
int  n2 
) [inline, static]

Definition at line 508 of file TCL.h.

Referenced by tratsa(), and trqsq().

00509 {
00510    //to be documented
00511    if (n1 <= 0) return 0;
00512    return (float *)memset(a,0,n1*sizeof(float));
00513 }


The documentation for this class was generated from the following files:

Generated on 2 Nov 2017 for loon by  doxygen 1.6.1