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