31 lines
1.1 KiB
C
31 lines
1.1 KiB
C
/* Compute CPE for function */
|
|
|
|
/* Compute for function that is linear in some parameter cnt */
|
|
typedef void (*elem_fun_t)(int);
|
|
|
|
/* Different ways of finding samples
|
|
UNI_SAMPLE: samples uniformly spaced between bias*maxcnt and maxcnt
|
|
RAN_SAMPLE: samples randomly selected between bias*maxcnt and maxcnt
|
|
*/
|
|
|
|
typedef enum {UNI_SAMPLE, RAN_SAMPLE}
|
|
sample_t;
|
|
|
|
/* Find cpe for function f, which allows cnt up to maxcnt.
|
|
Uses default parameters
|
|
*/
|
|
double find_cpe(elem_fun_t f, int maxcnt);
|
|
|
|
/* Find cpe for function f, which allows cnt up to maxcnt, using
|
|
specified number of sample points.
|
|
If data_file, then print data so that can plot points with Excel
|
|
smethod determines method for generating samples
|
|
*/
|
|
double find_cpe_full(elem_fun_t f, long int maxcnt, long int samples, FILE *data_file,
|
|
sample_t smethod, double bias, long int verbose);
|
|
|
|
/* Find number of cycles taken by function.
|
|
Do this by running number of trials until best two within TOL (2%) of
|
|
each other
|
|
*/
|
|
double measure_function(elem_fun_t f, int cnt); |