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

mmxavg.c File Reference

#include "mmxavg.h"

Include dependency graph for mmxavg.c:

Include dependency graph

Go to the source code of this file.

Functions

char __attribute__ ((unused)) ident[]="$Id
int mmxavgReset (MMXAVG_STRUCT *mmxavg)
int mmxavgAdd (MMXAVG_STRUCT *mmxavg, double num)
double mmxavgMin (MMXAVG_STRUCT *mmxavg)
double mmxavgMax (MMXAVG_STRUCT *mmxavg)
double mmxavgAvg (MMXAVG_STRUCT *mmxavg)


Function Documentation

char __attribute__ (unused)    [static]
 

Definition at line 22 of file mmxavg.c.

00022                                                   : mmxavg.c,v 1.3 2001/06/25 15:04:11 wshackle Exp $";
00023 
00024 #ifndef MAIN
00025 /* MAIN not defined-- compile functions only, no main() */
00026 
00027 int mmxavgInit(MMXAVG_STRUCT *mmxavg, double *space, int size)
00028 {
00029   if(0 == mmxavg)
00030     {
00031       return -1;
00032     }
00033   mmxavg->nums = space;
00034   mmxavg->size = size;
00035 
00036   return mmxavgReset(mmxavg);
00037 }

int mmxavgAdd MMXAVG_STRUCT   mmxavg,
double    num
 

Definition at line 55 of file mmxavg.c.

00056 {
00057   if(0 == mmxavg)
00058     {
00059       return -1;
00060     }
00061   if(mmxavg->index >= mmxavg->size ||
00062      mmxavg->index < 0 )
00063     {
00064       return -1;
00065     }
00066   if (mmxavg->in == mmxavg->size)
00067     {
00068       /* already full-- knock off oldest */
00069       mmxavg->sum -= mmxavg->nums[mmxavg->index];
00070     }
00071   else
00072     {
00073       mmxavg->in++;
00074     }
00075 
00076   mmxavg->nums[mmxavg->index] = num;
00077   mmxavg->sum += num;
00078   mmxavg->index++;
00079   if (mmxavg->index == mmxavg->size)
00080     {
00081       mmxavg->index = 0;
00082     }
00083 
00084   if (! mmxavg->inited)
00085     {
00086       mmxavg->min = num;
00087       mmxavg->max = num;
00088       mmxavg->inited = 1;
00089     }
00090   else if (num < mmxavg->min)
00091     {
00092       mmxavg->min = num;
00093     }
00094   else if (num > mmxavg->max)
00095     {
00096       mmxavg->max = num;
00097     }
00098 
00099   return 0;
00100 }

double mmxavgAvg MMXAVG_STRUCT   mmxavg
 

Definition at line 120 of file mmxavg.c.

00121 {
00122   if(0 == mmxavg)
00123     {
00124       return -1;
00125     }
00126   if (mmxavg->in > 0)
00127     {
00128       return mmxavg->sum / mmxavg->in;
00129     }
00130   else
00131     {
00132       return 0.0;
00133     }
00134 }

double mmxavgMax MMXAVG_STRUCT   mmxavg
 

Definition at line 111 of file mmxavg.c.

00112 {
00113   if(0 == mmxavg)
00114     {
00115       return -1;
00116     }
00117   return mmxavg->max;
00118 }

double mmxavgMin MMXAVG_STRUCT   mmxavg
 

Definition at line 102 of file mmxavg.c.

00103 {
00104   if(0 == mmxavg)
00105     {
00106       return -1;
00107     }
00108   return mmxavg->min;
00109 }

int mmxavgReset MMXAVG_STRUCT   mmxavg
 

Definition at line 39 of file mmxavg.c.

00040 {
00041   if(0 == mmxavg)
00042     {
00043       return -1;
00044     }
00045   mmxavg->sum = 0;
00046   mmxavg->index = 0;
00047   mmxavg->in = 0;
00048   mmxavg->inited = 0;
00049   mmxavg->min = 0.0;
00050   mmxavg->max = 0.0;
00051 
00052   return 0;
00053 }


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