但我这里用的是double啊。不知道怎么改了
#include <stdio.h>
#include <time.h>
#include <math.h>
clock_t start, stop;/*clock_t是clock()函数返回的变量类型*/
double duration;
#define MAXN 1e7
double f1(int n,double a[],double x)
{
double p = a[0];//a[0]都已经算出来了,循环从1开始
for (int i = 0; i <= n ; i++)
p +=( a[i] * pow(x, i));
return p;
}
double f2(int n, double a[], double x) {
int i;
double p = a[n];
for (i = n; i > 0; i--) {
p = a[i - 1] + x * p;
}
return p;
}
double ceshijian()
{
stop = clock();/*停止计时*/
duration = ((double)(stop - start)) / CLK_TCK / MAXN;/*计算单次运行时间*/
printf("ticks=%f\n", (double)(stop - start));
printf("duration=%6.2e\n\n", duration);
return 0;
}
int main()
{
int i;
double a[MAXN];
for (i = 0; i < MAXN; i++) {
a[i] = (double)i;
}
/*不在测试范围内的准备工作写在clock()调用之前*/
start = clock();/*开始计时*/
for(int i=0;i<MAXN;i++)//重复调用
f1(MAXN - 1, a, 1.1);/*被测函数,这里如果写数组的话就越界了,而且要调用某个值是不确定的,只能写a,因为要定义的就是a值*/
ceshijian();
start = clock();/*开始计时*/
for (i = 0; i < MAXN; i++)
f2(MAXN - 1, a, 1.1);/*被测函数,这里如果写数组的话就越界了,而且要调用某个值是不确定的*/
ceshijian();
return 0;
}