/*
* test-round2.c --- 有名な計算機εを求めるコードを丸めモードを変えて実行
*/
#include "round.h"
#include <stdio.h>
void find_eps()
{
int i;
double eps;
eps = 1.0;
for (i = 1; i <= 10000; i++) {
eps /= 2.0;
/* ここで eps == 2^{-i} である (アンダーフローしない限り) */
if (1.0 + eps == 1.0) {
printf("eps=%g=2^{-%d}\n", eps, i);
printf("eps_M=%g\n", 2*eps);
return;
}
}
printf("計算機εは求まりませんでした。eps=%g に対して 1+eps>1\n", eps);
}
int main()
{
printf("有名な計算機εを求めるコードを三つの丸めモードで動かす\n");
printf("\nrounding to the nearest even\n"); find_eps();
printf("\nrounding toward the minus infinity\n"); Down(); find_eps();
printf("\nrounding toward the plus infinity\n"); Up(); find_eps();
printf("...上への丸めでは計算機εは求まらない\n");
return 0;
}
|