lib/correlate.c File Reference

#include "common.h"
#include "correlate.h"

Include dependency graph for correlate.c:

Go to the source code of this file.

Functions

correlatecorrelateNew ()
void correlateFree (struct correlate **pC)
void correlateNext (struct correlate *c, double x, double y)
double correlateResult (struct correlate *c)
double correlateArrays (double *x, double *y, int size)


Function Documentation

double correlateArrays ( double *  x,
double *  y,
int  size 
)

Definition at line 49 of file correlate.c.

References correlateFree(), correlateNew(), correlateNext(), and correlateResult().

00051 {
00052 struct correlate *c = correlateNew();
00053 double r;
00054 int i;
00055 for (i=0; i<size; ++i)
00056      correlateNext(c, x[i], y[i]);
00057 r = correlateResult(c);
00058 correlateFree(&c);
00059 return r;
00060 }

Here is the call graph for this function:

void correlateFree ( struct correlate **  pC  ) 

Definition at line 16 of file correlate.c.

References freez().

Referenced by correlateArrays().

00018 {
00019 freez(pC);
00020 }

Here is the call graph for this function:

Here is the caller graph for this function:

struct correlate* correlateNew (  )  [read]

Definition at line 9 of file correlate.c.

References AllocVar.

Referenced by correlateArrays().

00011 {
00012 struct correlate *c;
00013 return AllocVar(c);
00014 }

Here is the caller graph for this function:

void correlateNext ( struct correlate c,
double  x,
double  y 
)

Definition at line 22 of file correlate.c.

References correlate::n, correlate::sumX, correlate::sumXX, correlate::sumXY, correlate::sumY, and correlate::sumYY.

Referenced by correlateArrays().

00024 {
00025 c->sumX += x;
00026 c->sumXX += x*x;
00027 c->sumXY += x*y;
00028 c->sumY += y;
00029 c->sumYY += y*y;
00030 c->n += 1; 
00031 }

Here is the caller graph for this function:

double correlateResult ( struct correlate c  ) 

Definition at line 33 of file correlate.c.

References correlate::n, correlate::sumX, correlate::sumXX, correlate::sumXY, correlate::sumY, and correlate::sumYY.

Referenced by correlateArrays().

00035 {
00036 double r = 0;
00037 if (c->n > 0)
00038     {
00039     double sp = c->sumXY - c->sumX*c->sumY/c->n;
00040     double ssx = c->sumXX - c->sumX*c->sumX/c->n;
00041     double ssy = c->sumYY - c->sumY*c->sumY/c->n;
00042     double q = ssx*ssy;
00043     if (q != 0)
00044         r = sp/sqrt(q);
00045     }
00046 return r;
00047 }

Here is the caller graph for this function:


Generated on Tue Dec 25 19:42:46 2007 for blat by  doxygen 1.5.2