mathstat.h

来自「国外网站上的一些精典的C程序」· C头文件 代码 · 共 148 行

H
148
字号
/***  MATHSTAT.H - Header file for statistical analysis in C and C++****  Public domain by Bob Stout*/#include <stddef.h>#include <math.h>#include "sniptype.h"#include "binsrch.h"#if !(__cplusplus)/***  We need a local compiler-independent NaN*/extern VAR64_ stat_nan_;#define STAT_NaN stat_nan_.d/***  Structure to hold statistical analysis data****  total   = Total of all data added**  len     = Maximum number of data points (0 if data arrray not used)**  total2  = Total of squares of all data added**  product = Product of all data added**  recip   = Total of the reciprocals of all data added**  count   = Number of data elements under analysis**  filt    = The sorted data array supports min, max, and filter functionality**  min     = Minimum datum (if data arrray not used)**  max     = Maximum Datum (if data arrray not used)*/typedef struct {      size_t count;         /* Number of items in the analysis          */      size_t len;           /* Maximum Number of items in the analysis  */      double total;         /* Total of data                            */      double total2;        /* Sum of swaures of data                   */      double product;       /* Product of data                          */      double recip;         /* Sum of reciprocals of data               */      double *filt;         /* Data array (NULL disallows filtering)    */      double min;           /* Min datum (if data array not used)       */      double max;           /* Min datum (if data array not used)       */} Stat_T;/***  Provided functions:**  1.  Open/Initialize**  2.  Close**  3.  Flush/Reinitialize**  4.  Add datum**  5.  Delete datum**  6.  "Olympic" filter - discards high and low data.**  7.  "Olympiad" filter - an auto-windowing median filter, it iteratively discards**      high and low data until a target coefficient of variation is achieved.**  8.  Median Filter - discards data outside of a window around the median datum.**  9.  Minumum datum**  10. Maximum datum**  11. Minimum error - percent deivation from arithmetic mean**  12. Maximum error - percent deivation from arithmetic mean**  13. Arithmetic mean**  14. Geometric mean**  15. Harmonic mean**  16. Standard deviation (population)**  17. Standard deviation (sample)**  18. Variance (population)**  19. Variance (sample)**  20. Coefficient of variation (population)**  21. Coefficient of variation (sample)*/Boolean_T   stat_init(Stat_T *ptr, size_t qdepth);void        stat_flush(Stat_T *ptr);void        stat_done(Stat_T *ptr);size_t      stat_count(Stat_T *ptr);Boolean_T   stat_add(double datum, Stat_T *ptr);Boolean_T   stat_delete(double datum, Stat_T *ptr);Boolean_T   stat_olympic(Stat_T *ptr);Boolean_T   stat_olympiad(Stat_T *ptr, double CoefVar);Boolean_T   stat_median(Stat_T *ptr, size_t window);double      stat_min(Stat_T *ptr);double      stat_max(Stat_T *ptr);double      stat_minerror(Stat_T *ptr);double      stat_maxerror(Stat_T *ptr);double      stat_mean(Stat_T *ptr);double      stat_gmean(Stat_T *ptr);double      stat_hmean(Stat_T *ptr);double      stat_stddevP(Stat_T *ptr);double      stat_stddevS(Stat_T *ptr);double      stat_varP(Stat_T *ptr);double      stat_varS(Stat_T *ptr);double      stat_varcoeffP(Stat_T *ptr);double      stat_varcoeffS(Stat_T *ptr);/***  Debugging functions*/void stat_dump(Stat_T *ptr);void stat_qdump(Stat_T *ptr);#else /* is C++ */class Stat {      private:            size_t            count;            size_t            len;            double            total;            double            total2;            double            product;            double            recip;            double            *filt;            double            min;            double            max;      public:            inline Boolean_T  Stat(size_t qdepth);            void              Flush();            inline size_t     Count();            Boolean_T         Add(double datum);            Boolean_T         Delete(double datum);            Boolean_T         Olympic();            Boolean_T         Olympiad(double CoefVar);            Boolean_T         Median(double *median, Stat_T *ptr, size_t window);            inline double     Min();            inline double     Max();            double            Minerror();            double            Maxerror();            double            Mean();            double            Gmean();            double            Hmean();            double            StddevP();            double            StddevS();            inline double     VarP();            inline double     VarS();            double            VarcoeffP();            double            VarcoeffS();            /*            **  Debugging functions            */            void dump();            void qdump();};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?