Back to index

radiance  4R0+20100331
linregr.h
Go to the documentation of this file.
00001 /* RCSid $Id: linregr.h,v 2.6 2003/06/27 06:53:21 greg Exp $ */
00002 /*
00003  * Header file for linear regression calculation.
00004  */
00005 #ifndef _RAD_LINEGR_H_
00006 #define _RAD_LINEGR_H_
00007 #ifdef __cplusplus
00008 extern "C" {
00009 #endif
00010 
00011 typedef struct {
00012        double xs, ys, xxs, yys, xys;
00013        int    n;
00014 } LRSUM;
00015 
00016 typedef struct {
00017        double slope, intercept, correlation;
00018 } LRLIN;
00019 
00020 #define       lrpoint(x,y,l)       ((l)->xs+=(x),(l)->ys+=(y),(l)->xxs+=(x)*(x), \
00021                      (l)->yys+=(y)*(y),(l)->xys+=(x)*(y),++(l)->n)
00022 
00023 #define       lrxavg(l)     ((l)->xs/(l)->n)
00024 #define       lryavg(l)     ((l)->ys/(l)->n)
00025 #define       lrxvar(l)     (((l)->xxs-(l)->xs*(l)->xs/(l)->n)/(l)->n)
00026 #define       lryvar(l)     (((l)->yys-(l)->ys*(l)->ys/(l)->n)/(l)->n)
00027 #define       lrxdev(l)     sqrt(((l)->xxs-(l)->xs*(l)->xs/(l)->n)/((l)->n-1))
00028 #define       lrydev(l)     sqrt(((l)->yys-(l)->ys*(l)->ys/(l)->n)/((l)->n-1))
00029 
00030 
00031 extern void   lrclear(LRSUM *l);
00032 extern int    flrpoint(double x, double y, LRSUM *l);
00033 extern int    lrfit(LRLIN *r, LRSUM *l);
00034 
00035 
00036 #ifdef __cplusplus
00037 }
00038 #endif
00039 #endif /* _RAD_LINEGR_H_ */
00040