1103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/*
2103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius **********************************************************************
354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Copyright (c) 2011-2012,International Business Machines
4103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Corporation and others.  All Rights Reserved.
5103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius **********************************************************************
6103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
7103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
8103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef SIEVE_H
9103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define SIEVE_H
10103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
1154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef U_LOTS_OF_TIMES
12103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define U_LOTS_OF_TIMES 1000000
1354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif
14103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
15103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/utypes.h"
16103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
17103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Calculate the standardized sieve time (1 run)
18103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
19103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_INTERNAL double uprv_calcSieveTime(void);
20103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
21103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
22103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Calculate the mean time, with margin of error
23103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param times array of times (modified/sorted)
2454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param timeCount length of array - on return, how many remain after throwing out outliers
25103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param marginOfError out parameter: gives +/- margin of err at 95% confidence
26103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the mean time, or negative if error/imprecision.
27103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
2854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_INTERNAL double uprv_getMeanTime(double *times, uint32_t *timeCount, double *marginOfError);
29103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
30103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
31103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Get the standardized sieve time. (Doesn't recalculate if already computed.
32103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param marginOfError out parameter: gives +/- margin of error at 95% confidence.
33103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return the mean time, or negative if error/imprecision.
34103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
35103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_INTERNAL double uprv_getSieveTime(double *marginOfError);
36103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
37103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif
38