Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

lsutil.c File Reference

Go to the source code of this file.

Defines

#define __attribute__(x)

Functions

char __attribute__ ((unused)) ident[]="$Id
double sumSq (double *x, int n)
double sumProd (double *x, double *y, int n)
double sumProdOD (double *x, double *y, int n, double d)
double sumSqOD (double *x, int n, double d)
int lsCoeff (double *x, double *y, int n, double *a, double *b)
int lsCoeffOD (double *x, double *y, int n, double d, double *a)


Define Documentation

#define __attribute__  
 

Definition at line 15 of file lsutil.c.


Function Documentation

char __attribute__ (unused)    [static]
 

Definition at line 19 of file lsutil.c.

00019                                                   : lsutil.c,v 1.3 2000/10/27 20:34:42 terrylr Exp $";
00020 
00021 static double sum(double *x, int n)
00022 {
00023   double retval = 0.0;
00024 
00025   n--;
00026   while (n >= 0)
00027     {
00028       retval += x[n];
00029       n--;
00030     }
00031 
00032   return retval;
00033 }

int lsCoeff double *    x,
double *    y,
int    n,
double *    a,
double *    b
 

Definition at line 100 of file lsutil.c.

Referenced by __attribute__().

00101 {
00102   double sumX;
00103   double sumY;
00104   double sumXY;
00105   double sumXSq;
00106   double denom;
00107 
00108   if (n <= 1)
00109     {
00110       return -1;
00111     }
00112 
00113   sumX = sum(x, n);
00114   sumY = sum(y, n);
00115   sumXY = sumProd(x, y, n);
00116   sumXSq = sumSq(x, n);
00117 
00118   denom = n*sumXSq - sumX*sumX;
00119   if (denom == 0.0)
00120     {
00121       return -1;
00122     }
00123   *a = (n*sumXY - sumX*sumY)/denom;
00124   *b = (sumY - (*a)*sumX)/n;
00125 
00126   return 0;
00127 }

int lsCoeffOD double *    x,
double *    y,
int    n,
double    d,
double *    a
 

Definition at line 137 of file lsutil.c.

Referenced by __attribute__().

00138 {
00139   double sumXODY;
00140   double sumXODSq;
00141 
00142   if (n <= 1)
00143     {
00144       return -1;
00145     }
00146 
00147   sumXODY = sumProdOD(x, y, n, d);
00148   sumXODSq = sumSqOD(x, n, d);
00149 
00150   if (sumXODSq == 0.0)
00151     {
00152       return -1;
00153     }
00154 
00155   *a = sumXODY/sumXODSq;
00156 
00157   return 0;
00158 }

double sumProd double *    x,
double *    y,
int    n
[static]
 

Definition at line 49 of file lsutil.c.

Referenced by lsCoeff().

00050 {
00051   double retval = 0.0;
00052 
00053   n--;
00054   while (n >= 0)
00055     {
00056       retval += x[n]*y[n];
00057       n--;
00058     }
00059 
00060   return retval;
00061 }

double sumProdOD double *    x,
double *    y,
int    n,
double    d
[static]
 

Definition at line 64 of file lsutil.c.

Referenced by lsCoeffOD().

00065 {
00066   double retval = 0.0;
00067 
00068   n--;
00069   while (n >= 0)
00070     {
00071       retval += (x[n]-d)*y[n];
00072       n--;
00073     }
00074 
00075   return retval;
00076 }

double sumSq double *    x,
int    n
[static]
 

Definition at line 35 of file lsutil.c.

Referenced by lsCoeff().

00036 {
00037   double retval = 0.0;
00038 
00039   n--;
00040   while (n >= 0)
00041     {
00042       retval += x[n]*x[n];
00043       n--;
00044     }
00045 
00046   return retval;
00047 }

double sumSqOD double *    x,
int    n,
double    d
[static]
 

Definition at line 78 of file lsutil.c.

Referenced by lsCoeffOD().

00079 {
00080 
00081   double retval = 0.0;
00082 
00083   n--;
00084   while (n >= 0)
00085     {
00086       retval += (x[n]-d)*(x[n]-d);
00087       n--;
00088     }
00089 
00090   return retval;
00091 }


Generated on Sun Dec 2 15:28:08 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001