mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
1.3 KiB
100 lines
1.3 KiB
/*++
|
|
|
|
Copyright (c) 1998 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
meancomp.h
|
|
|
|
Abstract:
|
|
|
|
SIS Groveler mean comparitor headers
|
|
|
|
Authors:
|
|
|
|
John Douceur, 1998
|
|
|
|
Environment:
|
|
|
|
User Mode
|
|
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
#ifndef _INC_MEANCOMP
|
|
|
|
#define _INC_MEANCOMP
|
|
|
|
class MeanComparator
|
|
{
|
|
public:
|
|
|
|
MeanComparator(
|
|
int num_clans,
|
|
int sample_group_size,
|
|
double acceptance_p_value,
|
|
double rejection_p_value,
|
|
double tolerance);
|
|
|
|
~MeanComparator();
|
|
|
|
void reset();
|
|
|
|
void sample(
|
|
int clan,
|
|
double value);
|
|
|
|
bool within(
|
|
double compare_value,
|
|
...);
|
|
|
|
bool exceeds(
|
|
double compare_value,
|
|
...);
|
|
|
|
private:
|
|
|
|
struct PTableDescriptor
|
|
{
|
|
double p_value;
|
|
int table_size;
|
|
int *p_table;
|
|
PTableDescriptor *next;
|
|
PTableDescriptor *prev;
|
|
int ref_count;
|
|
};
|
|
|
|
struct Sample
|
|
{
|
|
int clan;
|
|
double value;
|
|
};
|
|
|
|
static PTableDescriptor *add_p_value(
|
|
double p_value,
|
|
int sample_table_size);
|
|
|
|
static bool remove_p_value(
|
|
PTableDescriptor *ptd);
|
|
|
|
static const int max_sample_table_size;
|
|
|
|
static PTableDescriptor p_list;
|
|
|
|
int num_clans;
|
|
int sample_group_size;
|
|
int sample_table_size;
|
|
PTableDescriptor *acceptance_table;
|
|
PTableDescriptor *rejection_table;
|
|
|
|
double tolerance;
|
|
Sample *samples;
|
|
double *compare_values;
|
|
int current_offset;
|
|
int current_group_size;
|
|
};
|
|
|
|
#endif /* _INC_MEANCOMP */
|