```// @(#)root/table:\$Id\$
// Author: Valery Fine(fine@bnl.gov)   25/09/99

/*************************************************************************
*                                                                       *
* For the licensing terms see \$ROOTSYS/LICENSE.                         *
* For the list of contributors see \$ROOTSYS/README/CREDITS.             *
*************************************************************************/

#ifndef ROOT_TCernLib
#define ROOT_TCernLib

#include "Rtypes.h"
#include <string.h>

// http://wwwinfo.cern.ch/asdoc/shortwrupsdir/f110/top.html

///////////////////////////////////////////////////////////////////////////////////////
//                                                                                   //
// The routines of MXPACK compute the product of two matrices or the product of      //
// their transposed matrices and may add or subtract to the resultant matrix         //
// a third one, add or subtract one matrix from another, or transfer a matrix,       //
// its negative, or a multiple of it, transpose a given matrix, build up a unit      //
// matrix, multiply a matrix by a diagonal (from left or from right) and may         //
// add the result to another matrix, add to square matrix the multiple of a diagonal //
// matrix, compute the products <IMG WIDTH=79 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline191" SRC="gif/mxpack_ABAt.gif"> (<IMG WIDTH=16 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline193" SRC="gif/mxpack_At.gif"> denotes the transpose of <IMG WIDTH=1
// It is assumed that matrices are begin_html <B>row-wise without gaps</B> end_html without gaps.                     //
//                                                                                   //
///////////////////////////////////////////////////////////////////////////////////////

class TArrayD;

class TCL  {
public:
virtual ~TCL() { }

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);

// * TR pack

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);

// ---   double version

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);

ClassDef(TCL,0)  //C++ replacement for CERNLIB matrix / triangle matrix packages: F110 and F112

};

//___________________________________________________________________________
inline float *TCL::mxmad(const float *a, const float *b, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(0, a, b, c, i, j, k);   }

//___________________________________________________________________________
inline float *TCL::mxmad1(const float *a, const float *q, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad1.gif"> </P> End_Html //
return mxmad_0_(1, a, q, c, i, j, k);  }

//___________________________________________________________________________
inline float *TCL::mxmad2(const float *p, const float *b, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad2.gif"> </P> End_Html //
return mxmad_0_(2, p, b, c, i, j, k);  }

//___________________________________________________________________________
inline float *TCL::mxmad3(const float *p, const float *q, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad3.gif"> </P> End_Html //
return mxmad_0_(3, p, q, c, i, j, k);  }

//___________________________________________________________________________
inline float *TCL::mxmpy(const float *a, const float *b, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy.gif"> </P> End_Html //
return mxmad_0_(4, a, b, c, i, j, k); }

//___________________________________________________________________________
inline float *TCL::mxmpy1(const float *a, const float *q, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy1.gif"> </P> End_Html //
return mxmad_0_(5, a, q, c, i, j, k);  }

//___________________________________________________________________________
inline float *TCL::mxmpy2(const float *p, const float *b, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy2.gif"> </P> End_Html //
return mxmad_0_(6, p, b, c, i, j, k); }

//___________________________________________________________________________
inline float *TCL::mxmpy3(const float *p, const float *q, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmpy3.gif"> </P> End_Html //
return mxmad_0_(7, p, q, c, i, j, k); }

//___________________________________________________________________________
inline float *TCL::mxmub(const float *a, const float *b, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub.gif"> </P> End_Html //
return mxmad_0_(8, a, b, c, i, j, k);  }

//___________________________________________________________________________
inline float *TCL::mxmub1(const float *a, const float *q, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub1.gif"> </P> End_Html //
return mxmad_0_(9, a, q, c, i, j, k); }

//___________________________________________________________________________
inline float *TCL::mxmub2(const float *p, const float *b, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub2.gif"> </P> End_Html //
return mxmad_0_(10, p, b, c, i, j, k); }

//___________________________________________________________________________
inline float *TCL::mxmub3(const float *p, const float *q, float *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmub3.gif"> </P> End_Html //
return mxmad_0_(11, p, q, c, i, j, k); }

//___________________________________________________________________________
inline float *TCL::mxmlrt(const float *a, const float *b, float *x, int ni, int nj)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmlrt.gif"> </P> End_Html //
return mxmlrt_0_(0, a, b, x, ni, nj); }

//___________________________________________________________________________
inline float *TCL::mxmltr(const float *a, const float *b, float *x, int ni, int nj)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmltr.gif"> </P> End_Html //
return mxmlrt_0_(1, a, b, x, ni, nj);   }

//--   double version --

//___________________________________________________________________________
inline double *TCL::mxmad(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(0, a, b, c, i, j, k);   }

//___________________________________________________________________________
inline double *TCL:: mxmad1(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(1, a, b, c, i, j, k);  }

//___________________________________________________________________________
inline double *TCL::mxmad2(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(2, a, b, c, i, j, k);  }

//___________________________________________________________________________
inline double *TCL::mxmad3(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(3, a, b, c, i, j, k);  }

//___________________________________________________________________________
inline double *TCL::mxmpy(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(4, a, b, c, i, j, k); }

//___________________________________________________________________________
inline double *TCL::mxmpy1(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(5, a, b, c, i, j, k);  }

//___________________________________________________________________________
inline double *TCL::mxmpy2(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(6, a, b, c, i, j, k); }

//___________________________________________________________________________
inline double *TCL::mxmpy3(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(7, a, b, c, i, j, k); }

//___________________________________________________________________________
inline double *TCL::mxmub(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(8, a, b, c, i, j, k);  }

//___________________________________________________________________________
inline double *TCL::mxmub1(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(9, a, b, c, i, j, k); }

//___________________________________________________________________________
inline double *TCL::mxmub2(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(10, a, b, c, i, j, k); }

//___________________________________________________________________________
inline double *TCL::mxmub3(const double *a, const double *b, double *c, int i, int j, int k)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmad_0_(11, a, b, c, i, j, k); }

//___________________________________________________________________________
inline double *TCL::mxmlrt(const double *a, const double *b, double *c, int ni, int nj)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return  mxmlrt_0_(0, a, b, c, ni, nj); }

//___________________________________________________________________________
inline double *TCL::mxmltr(const double *a, const double *b, double *c, int ni, int nj)
{
// Begin_Html <P ALIGN=CENTER> <IMG SRC="gif/mxpack_mxmad.gif"> </P> End_Html //
return mxmlrt_0_(1, a, b, c, ni, nj);   }

// ----

//________________________________________________________
inline int  *TCL::ucopy(const int  *b, int  *a, int n)
{
//to be documented
if (n <= 0) return 0; memcpy(a,b,n*sizeof(int)); return a;
}

//________________________________________________________
inline float *TCL::ucopy(const float *b, float *a, int n)
{
//to be documented
if (n <= 0) return 0; memcpy(a,b,n*sizeof(float)); return a;
}

//________________________________________________________
inline float *TCL::ucopy(const double *b, float *a, int n)
{
//to be documented
if (n <= 0) return 0;
for (int i=0;i<n;i++,a++,b++) *a = float(*b);
return a;
}

//________________________________________________________
inline double *TCL::ucopy(const float *b, double *a, int n)
{
//to be documented
if (n <= 0) return 0;
for (int i=0;i<n;i++,a++,b++) *a = double(*b);
return a;
}

//________________________________________________________
inline double *TCL::ucopy(const double *b, double *a, int n)
{
//to be documented
if (n <= 0) return 0; memcpy(a,b,n*sizeof(double)); return a;
}

//________________________________________________________
inline void **TCL::ucopy(const void **b, void  **a, int n)
{
//to be documented
if (n <= 0) return 0; memcpy(a,b,n*sizeof(void *)); return a;
}

//________________________________________________________
inline float *TCL::vadd(const float *b, const float *c,  float *a, int n)
{
//to be documented
if (n <= 0)  return 0;
for (int i=0;i<n;i++) a[i] = b[i] + c[i];
return a;
}

//________________________________________________________
inline double *TCL::vadd(const double *b, const double *c,  double *a, int n)
{
//to be documented
if (n <= 0)  return 0;
for (int i=0;i<n;i++) a[i] = b[i] + c[i];
return a;
}

//________________________________________________________
inline float  *TCL::vadd(const float *b, const double *c,  float *a, int n)
{
//to be documented
if (n <= 0)  return 0;
for (int i=0;i<n;i++) a[i] = b[i] + c[i];
return a;
}

//________________________________________________________
inline double *TCL::vadd(const double *b, const float *c,  double *a, int n)
{
//to be documented
if (n <= 0)  return 0;
for (int i=0;i<n;i++) a[i] = b[i] + c[i];
return a;
}

//________________________________________________________
inline float  TCL::vdot(const float  *b, const float *a, int n)
{
//to be documented
float x=0;
if (n>0)
for (int i=0;i<n;i++,a++,b++) x += (*a) * (*b);
return x;
}
//________________________________________________________
inline double TCL::vdot(const double *b, const double *a, int n)
{
//to be documented
double  x=0;
if (n>0)
for (int i=0;i<n;i++,a++,b++) x += (*a) * (*b);
return x;
}
//________________________________________________________
inline float *TCL::vsub(const float *a, const float *b, float *x, int n)
{
//to be documented
if (n <= 0) return 0;
for (int i=0;i<n;i++) x[i] = a[i]-b[i];
return x;
}

//________________________________________________________
inline double *TCL::vsub(const double *a, const double *b, double *x, int n)
{
//to be documented
if (n <= 0) return 0;
for (int i=0;i<n;i++) x[i] = a[i]-b[i];
return x;
}
//________________________________________________________
inline float  *TCL::vsub(const float *b, const double *c,  float *a, int n)
{
//to be documented
if (n <= 0)  return 0;
for (int i=0;i<n;i++) a[i] = b[i] - c[i];
return a;
}

//________________________________________________________
inline double *TCL::vsub(const double *b, const float *c,  double *a, int n)
{
//to be documented
if (n <= 0)  return 0;
for (int i=0;i<n;i++) a[i] = b[i] - c[i];
return a;
}
//________________________________________________________
inline float *TCL::vcopyn(const float *a, float *x, int n)
{
//to be documented
if (n <= 0) return 0;
for (int i=0;i<n;i++) x[i] = -a[i];
return x;
}
//________________________________________________________
inline double *TCL::vcopyn(const double *a, double *x, int n)
{
//to be documented
if (n <= 0) return 0;
for (int i=0;i<n;i++) x[i] = -a[i];
return x;
}

//________________________________________________________
inline float *TCL::vzero(float *a, int n1)
{
//to be documented
if (n1 <= 0) return 0;
return (float *)memset(a,0,n1*sizeof(float));
}

//________________________________________________________
inline double *TCL::vzero(double *a, int n1)
{
//to be documented
if (n1 <= 0) return 0;
return (double *)memset(a,0,n1*sizeof(double));
}

//________________________________________________________
inline void **TCL::vzero(void **a, int n1)
{
//to be documented
if (n1 <= 0) return 0;
return (void **)memset(a,0,n1*sizeof(void *));
}

//________________________________________________________
inline float *TCL::vscale(const float *a, float scale, float *b, int n)
{
//to be documented
for (int i=0;i<n;i++) b[i]=scale*a[i];
return b;
}

//________________________________________________________
inline double *TCL::vscale(const double *a, double scale, double *b, int n)
{
//to be documented
for (int i=0;i<n;i++) b[i]=scale*a[i];
return b;
}

//________________________________________________________
inline float *TCL::vlinco(const float *a, float fa, const float *b, float fb, float *x, int n)
{
//to be documented
for (int i=0;i<n;i++){x[i]=a[i]*fa+b[i]*fb;};
return x;
}

//________________________________________________________
inline double *TCL::vlinco(const double *a, double fa, const double *b, double fb,double *x, int n)
{
//to be documented
for (int i=0;i<n;i++) x[i]=a[i]*fa+b[i]*fb;
return x;
}

//_____________________________________________________________________________
inline float *TCL::vmatl(const float *G, const float *c, float *x, int n,int m)
{
//  x = G*c
for (int i=0; i<n; i++) {
double sum = 0;
for (int j=0; j<m; j++) sum += G[j + m*i]*c[j];
x[i] = sum;
}
return x;
}

//_____________________________________________________________________________
inline double *TCL::vmatl(const double *G, const double *c, double *x, int n,int m)
{
//  x = G*c
for (int i=0; i<n; i++) {
double sum = 0;
for (int j=0; j<m; j++) sum += G[j + m*i]*c[j];
x[i] = sum;
}
return x;
}

//_____________________________________________________________________________
inline float *TCL::vmatr(const float *c, const float *G, float *x, int n,int m)
{
//  x = c*G
for (int j=0; j<m; j++) {
double sum = 0;
for (int i=0; i<n; i++) sum += G[j + n*i]*c[i];
x[j] = sum;
}
return x;
}

//_____________________________________________________________________________
inline double *TCL::vmatr(const double *c, const double *G, double *x, int n,int m)
{
//  x = c*G
for (int j=0; j<m; j++) {
double sum = 0;
for (int i=0; i<n; i++) sum += G[j + n*i]*c[i];
x[j] = sum;
}
return x;
}

#endif
```
TCernLib.h:1
TCernLib.h:2
TCernLib.h:3
TCernLib.h:4
TCernLib.h:5
TCernLib.h:6
TCernLib.h:7
TCernLib.h:8
TCernLib.h:9
TCernLib.h:10
TCernLib.h:11
TCernLib.h:12
TCernLib.h:13
TCernLib.h:14
TCernLib.h:15
TCernLib.h:16
TCernLib.h:17
TCernLib.h:18
TCernLib.h:19
TCernLib.h:20
TCernLib.h:21
TCernLib.h:22
TCernLib.h:23
TCernLib.h:24
TCernLib.h:25
TCernLib.h:26
TCernLib.h:27
TCernLib.h:28
TCernLib.h:29
TCernLib.h:30
TCernLib.h:31
TCernLib.h:32
TCernLib.h:33
TCernLib.h:34
TCernLib.h:35
TCernLib.h:36
TCernLib.h:37
TCernLib.h:38
TCernLib.h:39
TCernLib.h:40
TCernLib.h:41
TCernLib.h:42
TCernLib.h:43
TCernLib.h:44
TCernLib.h:45
TCernLib.h:46
TCernLib.h:47
TCernLib.h:48
TCernLib.h:49
TCernLib.h:50
TCernLib.h:51
TCernLib.h:52
TCernLib.h:53
TCernLib.h:54
TCernLib.h:55
TCernLib.h:56
TCernLib.h:57
TCernLib.h:58
TCernLib.h:59
TCernLib.h:60
TCernLib.h:61
TCernLib.h:62
TCernLib.h:63
TCernLib.h:64
TCernLib.h:65
TCernLib.h:66
TCernLib.h:67
TCernLib.h:68
TCernLib.h:69
TCernLib.h:70
TCernLib.h:71
TCernLib.h:72
TCernLib.h:73
TCernLib.h:74
TCernLib.h:75
TCernLib.h:76
TCernLib.h:77
TCernLib.h:78
TCernLib.h:79
TCernLib.h:80
TCernLib.h:81
TCernLib.h:82
TCernLib.h:83
TCernLib.h:84
TCernLib.h:85
TCernLib.h:86
TCernLib.h:87
TCernLib.h:88
TCernLib.h:89
TCernLib.h:90
TCernLib.h:91
TCernLib.h:92
TCernLib.h:93
TCernLib.h:94
TCernLib.h:95
TCernLib.h:96
TCernLib.h:97
TCernLib.h:98
TCernLib.h:99
TCernLib.h:100
TCernLib.h:101
TCernLib.h:102
TCernLib.h:103
TCernLib.h:104
TCernLib.h:105
TCernLib.h:106
TCernLib.h:107
TCernLib.h:108
TCernLib.h:109
TCernLib.h:110
TCernLib.h:111
TCernLib.h:112
TCernLib.h:113
TCernLib.h:114
TCernLib.h:115
TCernLib.h:116
TCernLib.h:117
TCernLib.h:118
TCernLib.h:119
TCernLib.h:120
TCernLib.h:121
TCernLib.h:122
TCernLib.h:123
TCernLib.h:124
TCernLib.h:125
TCernLib.h:126
TCernLib.h:127
TCernLib.h:128
TCernLib.h:129
TCernLib.h:130
TCernLib.h:131
TCernLib.h:132
TCernLib.h:133
TCernLib.h:134
TCernLib.h:135
TCernLib.h:136
TCernLib.h:137
TCernLib.h:138
TCernLib.h:139
TCernLib.h:140
TCernLib.h:141
TCernLib.h:142
TCernLib.h:143
TCernLib.h:144
TCernLib.h:145
TCernLib.h:146
TCernLib.h:147
TCernLib.h:148
TCernLib.h:149
TCernLib.h:150
TCernLib.h:151
TCernLib.h:152
TCernLib.h:153
TCernLib.h:154
TCernLib.h:155
TCernLib.h:156
TCernLib.h:157
TCernLib.h:158
TCernLib.h:159
TCernLib.h:160
TCernLib.h:161
TCernLib.h:162
TCernLib.h:163
TCernLib.h:164
TCernLib.h:165
TCernLib.h:166
TCernLib.h:167
TCernLib.h:168
TCernLib.h:169
TCernLib.h:170
TCernLib.h:171
TCernLib.h:172
TCernLib.h:173
TCernLib.h:174
TCernLib.h:175
TCernLib.h:176
TCernLib.h:177
TCernLib.h:178
TCernLib.h:179
TCernLib.h:180
TCernLib.h:181
TCernLib.h:182
TCernLib.h:183
TCernLib.h:184
TCernLib.h:185
TCernLib.h:186
TCernLib.h:187
TCernLib.h:188
TCernLib.h:189
TCernLib.h:190
TCernLib.h:191
TCernLib.h:192
TCernLib.h:193
TCernLib.h:194
TCernLib.h:195
TCernLib.h:196
TCernLib.h:197
TCernLib.h:198
TCernLib.h:199
TCernLib.h:200
TCernLib.h:201
TCernLib.h:202
TCernLib.h:203
TCernLib.h:204
TCernLib.h:205
TCernLib.h:206
TCernLib.h:207
TCernLib.h:208
TCernLib.h:209
TCernLib.h:210
TCernLib.h:211
TCernLib.h:212
TCernLib.h:213
TCernLib.h:214
TCernLib.h:215
TCernLib.h:216
TCernLib.h:217
TCernLib.h:218
TCernLib.h:219
TCernLib.h:220
TCernLib.h:221
TCernLib.h:222
TCernLib.h:223
TCernLib.h:224
TCernLib.h:225
TCernLib.h:226
TCernLib.h:227
TCernLib.h:228
TCernLib.h:229
TCernLib.h:230
TCernLib.h:231
TCernLib.h:232
TCernLib.h:233
TCernLib.h:234
TCernLib.h:235
TCernLib.h:236
TCernLib.h:237
TCernLib.h:238
TCernLib.h:239
TCernLib.h:240
TCernLib.h:241
TCernLib.h:242
TCernLib.h:243
TCernLib.h:244
TCernLib.h:245
TCernLib.h:246
TCernLib.h:247
TCernLib.h:248
TCernLib.h:249
TCernLib.h:250
TCernLib.h:251
TCernLib.h:252
TCernLib.h:253
TCernLib.h:254
TCernLib.h:255
TCernLib.h:256
TCernLib.h:257
TCernLib.h:258
TCernLib.h:259
TCernLib.h:260
TCernLib.h:261
TCernLib.h:262
TCernLib.h:263
TCernLib.h:264
TCernLib.h:265
TCernLib.h:266
TCernLib.h:267
TCernLib.h:268
TCernLib.h:269
TCernLib.h:270
TCernLib.h:271
TCernLib.h:272
TCernLib.h:273
TCernLib.h:274
TCernLib.h:275
TCernLib.h:276
TCernLib.h:277
TCernLib.h:278
TCernLib.h:279
TCernLib.h:280
TCernLib.h:281
TCernLib.h:282
TCernLib.h:283
TCernLib.h:284
TCernLib.h:285
TCernLib.h:286
TCernLib.h:287
TCernLib.h:288
TCernLib.h:289
TCernLib.h:290
TCernLib.h:291
TCernLib.h:292
TCernLib.h:293
TCernLib.h:294
TCernLib.h:295
TCernLib.h:296
TCernLib.h:297
TCernLib.h:298
TCernLib.h:299
TCernLib.h:300
TCernLib.h:301
TCernLib.h:302
TCernLib.h:303
TCernLib.h:304
TCernLib.h:305
TCernLib.h:306
TCernLib.h:307
TCernLib.h:308
TCernLib.h:309
TCernLib.h:310
TCernLib.h:311
TCernLib.h:312
TCernLib.h:313
TCernLib.h:314
TCernLib.h:315
TCernLib.h:316
TCernLib.h:317
TCernLib.h:318
TCernLib.h:319
TCernLib.h:320
TCernLib.h:321
TCernLib.h:322
TCernLib.h:323
TCernLib.h:324
TCernLib.h:325
TCernLib.h:326
TCernLib.h:327
TCernLib.h:328
TCernLib.h:329
TCernLib.h:330
TCernLib.h:331
TCernLib.h:332
TCernLib.h:333
TCernLib.h:334
TCernLib.h:335
TCernLib.h:336
TCernLib.h:337
TCernLib.h:338
TCernLib.h:339
TCernLib.h:340
TCernLib.h:341
TCernLib.h:342
TCernLib.h:343
TCernLib.h:344
TCernLib.h:345
TCernLib.h:346
TCernLib.h:347
TCernLib.h:348
TCernLib.h:349
TCernLib.h:350
TCernLib.h:351
TCernLib.h:352
TCernLib.h:353
TCernLib.h:354
TCernLib.h:355
TCernLib.h:356
TCernLib.h:357
TCernLib.h:358
TCernLib.h:359
TCernLib.h:360
TCernLib.h:361
TCernLib.h:362
TCernLib.h:363
TCernLib.h:364
TCernLib.h:365
TCernLib.h:366
TCernLib.h:367
TCernLib.h:368
TCernLib.h:369
TCernLib.h:370
TCernLib.h:371
TCernLib.h:372
TCernLib.h:373
TCernLib.h:374
TCernLib.h:375
TCernLib.h:376
TCernLib.h:377
TCernLib.h:378
TCernLib.h:379
TCernLib.h:380
TCernLib.h:381
TCernLib.h:382
TCernLib.h:383
TCernLib.h:384
TCernLib.h:385
TCernLib.h:386
TCernLib.h:387
TCernLib.h:388
TCernLib.h:389
TCernLib.h:390
TCernLib.h:391
TCernLib.h:392
TCernLib.h:393
TCernLib.h:394
TCernLib.h:395
TCernLib.h:396
TCernLib.h:397
TCernLib.h:398
TCernLib.h:399
TCernLib.h:400
TCernLib.h:401
TCernLib.h:402
TCernLib.h:403
TCernLib.h:404
TCernLib.h:405
TCernLib.h:406
TCernLib.h:407
TCernLib.h:408
TCernLib.h:409
TCernLib.h:410
TCernLib.h:411
TCernLib.h:412
TCernLib.h:413
TCernLib.h:414
TCernLib.h:415
TCernLib.h:416
TCernLib.h:417
TCernLib.h:418
TCernLib.h:419
TCernLib.h:420
TCernLib.h:421
TCernLib.h:422
TCernLib.h:423
TCernLib.h:424
TCernLib.h:425
TCernLib.h:426
TCernLib.h:427
TCernLib.h:428
TCernLib.h:429
TCernLib.h:430
TCernLib.h:431
TCernLib.h:432
TCernLib.h:433
TCernLib.h:434
TCernLib.h:435
TCernLib.h:436
TCernLib.h:437
TCernLib.h:438
TCernLib.h:439
TCernLib.h:440
TCernLib.h:441
TCernLib.h:442
TCernLib.h:443
TCernLib.h:444
TCernLib.h:445
TCernLib.h:446
TCernLib.h:447
TCernLib.h:448
TCernLib.h:449
TCernLib.h:450
TCernLib.h:451
TCernLib.h:452
TCernLib.h:453
TCernLib.h:454
TCernLib.h:455
TCernLib.h:456
TCernLib.h:457
TCernLib.h:458
TCernLib.h:459
TCernLib.h:460
TCernLib.h:461
TCernLib.h:462
TCernLib.h:463
TCernLib.h:464
TCernLib.h:465
TCernLib.h:466
TCernLib.h:467
TCernLib.h:468
TCernLib.h:469
TCernLib.h:470
TCernLib.h:471
TCernLib.h:472
TCernLib.h:473
TCernLib.h:474
TCernLib.h:475
TCernLib.h:476
TCernLib.h:477
TCernLib.h:478
TCernLib.h:479
TCernLib.h:480
TCernLib.h:481
TCernLib.h:482
TCernLib.h:483
TCernLib.h:484
TCernLib.h:485
TCernLib.h:486
TCernLib.h:487
TCernLib.h:488
TCernLib.h:489
TCernLib.h:490
TCernLib.h:491
TCernLib.h:492
TCernLib.h:493
TCernLib.h:494
TCernLib.h:495
TCernLib.h:496
TCernLib.h:497
TCernLib.h:498
TCernLib.h:499
TCernLib.h:500
TCernLib.h:501
TCernLib.h:502
TCernLib.h:503
TCernLib.h:504
TCernLib.h:505
TCernLib.h:506
TCernLib.h:507
TCernLib.h:508
TCernLib.h:509
TCernLib.h:510
TCernLib.h:511
TCernLib.h:512
TCernLib.h:513
TCernLib.h:514
TCernLib.h:515
TCernLib.h:516
TCernLib.h:517
TCernLib.h:518
TCernLib.h:519
TCernLib.h:520
TCernLib.h:521
TCernLib.h:522
TCernLib.h:523
TCernLib.h:524
TCernLib.h:525
TCernLib.h:526
TCernLib.h:527
TCernLib.h:528
TCernLib.h:529
TCernLib.h:530
TCernLib.h:531
TCernLib.h:532
TCernLib.h:533
TCernLib.h:534
TCernLib.h:535
TCernLib.h:536
TCernLib.h:537
TCernLib.h:538
TCernLib.h:539
TCernLib.h:540
TCernLib.h:541
TCernLib.h:542
TCernLib.h:543
TCernLib.h:544
TCernLib.h:545
TCernLib.h:546
TCernLib.h:547
TCernLib.h:548
TCernLib.h:549
TCernLib.h:550
TCernLib.h:551
TCernLib.h:552
TCernLib.h:553
TCernLib.h:554
TCernLib.h:555
TCernLib.h:556
TCernLib.h:557
TCernLib.h:558
TCernLib.h:559
TCernLib.h:560
TCernLib.h:561
TCernLib.h:562
TCernLib.h:563
TCernLib.h:564
TCernLib.h:565
TCernLib.h:566
TCernLib.h:567
TCernLib.h:568
TCernLib.h:569
TCernLib.h:570
TCernLib.h:571
TCernLib.h:572
TCernLib.h:573
TCernLib.h:574
TCernLib.h:575
TCernLib.h:576
TCernLib.h:577
TCernLib.h:578
TCernLib.h:579
TCernLib.h:580
TCernLib.h:581
TCernLib.h:582
TCernLib.h:583
TCernLib.h:584
TCernLib.h:585
TCernLib.h:586
TCernLib.h:587
TCernLib.h:588
TCernLib.h:589
TCernLib.h:590
TCernLib.h:591
TCernLib.h:592
TCernLib.h:593
TCernLib.h:594
TCernLib.h:595
TCernLib.h:596
TCernLib.h:597
TCernLib.h:598
TCernLib.h:599
TCernLib.h:600
TCernLib.h:601
TCernLib.h:602
TCernLib.h:603
TCernLib.h:604
TCernLib.h:605
TCernLib.h:606
TCernLib.h:607