opt07.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 69 行

C
69
字号
#include "fail.h"
#include <float.h>

int is_one( double d )
{
    d -= 1.0;
    if( d < 0 ) {
	d = -d;
    }
    if( d < 2 * DBL_EPSILON ) {
	return 1;
    }
    return 0;
}

#define test_cg( k )	\
	{ \
	    double t1, t2; \
	    t1 = (double) k; \
	    t2 = t1 / (double) k; \
	    if( ! is_one( t2 ) ) fail(__LINE__); \
	    alt_test( t1, (double) k, __LINE__); \
	}

void alt_test( double t1, double k, unsigned line )
{
    double r;

    r = t1 / k;
    if( ! is_one( r ) ) fail(line);
}

int main( void )
{
    test_cg( 0x00000001 );
    test_cg( 0x00000002 );
    test_cg( 0x00000004 );
    test_cg( 0x00000008 );
    test_cg( 0x00000010 );
    test_cg( 0x00000020 );
    test_cg( 0x00000040 );
    test_cg( 0x00000080 );
    test_cg( 0x00000100 );
    test_cg( 0x00000200 );
    test_cg( 0x00000400 );
    test_cg( 0x00000800 );
    test_cg( 0x00001000 );
    test_cg( 0x00002000 );
    test_cg( 0x00004000 );
    test_cg( 0x00008000 );
    test_cg( 0x00010000 );
    test_cg( 0x00020000 );
    test_cg( 0x00040000 );
    test_cg( 0x00080000 );
    test_cg( 0x00100000 );
    test_cg( 0x00200000 );
    test_cg( 0x00400000 );
    test_cg( 0x00800000 );
    test_cg( 0x01000000 );
    test_cg( 0x02000000 );
    test_cg( 0x04000000 );
    test_cg( 0x08000000 );
    test_cg( 0x10000000 );
    test_cg( 0x20000000 );
    test_cg( 0x40000000 );
    test_cg( 0x80000000 );
    _PASS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?