compare-rel.h
来自「用于进行gcc测试」· C头文件 代码 · 共 137 行
H
137 行
/* Basic test of runtime relational comparisons using simple values that are not affected by rounding. */#include <stdlib.h>static int failcnt;#define PASTE2(A,B) A ## B#define PASTE(A,B) PASTE2(A,B)#ifdef DBG#include <stdio.h>#define FAILURE(OP,KIND) \ { printf ("failed at line %d: %s for %s values\n", __LINE__, OP, KIND); \ failcnt++; }#else#define FAILURE(OP,KIND) abort ();#endif#ifndef WIDTH#error define WIDTH as decimal float size in bytes#endif#if WIDTH == 32#define DTYPE _Decimal32#define SUFFIX DF#elif WIDTH == 64#define DTYPE _Decimal64#define SUFFIX DD#elif WIDTH == 128#define DTYPE _Decimal128#define SUFFIX DL#elif WIDTH == 0/* This is for testing the test using a type known to work. */#define DTYPE double#define SUFFIX#else#error invalid width for decimal float type#endifDTYPE m_two = PASTE(-2.0, SUFFIX);DTYPE m_one = PASTE(-1.0, SUFFIX);DTYPE zero = PASTE(0.0, SUFFIX);DTYPE one = PASTE(1.0, SUFFIX);DTYPE two = PASTE(2.0, SUFFIX);voidtest_compares (void){ DTYPE x = one; DTYPE y = zero; DTYPE z = m_one; /* Less than or equal to: comparisons against equal values. */ if (! (x <= one)) FAILURE ("<=", "equal") if (! (y <= zero)) FAILURE ("<=", "equal") if (! (z <= m_one)) FAILURE ("<=", "equal") /* Less than or equal to: comparisons against lesser values. */ if (x <= m_one) FAILURE ("<=", "lesser") if (x <= zero) FAILURE ("<=", "lesser") if (y <= m_one) FAILURE ("<=", "lesser") if (z <= m_two) FAILURE ("<=", "lesser") /* Less than or equal to: comparisons against greater values. */ if (! (x <= two)) FAILURE ("<=", "greater") if (! (y <= one)) FAILURE ("<=", "greater") if (! (z <= zero)) FAILURE ("<=", "greater") if (! (z <= one)) FAILURE ("<=", "greater") /* Less than: comparisons against equal values. */ if (x < one) FAILURE ("<", "equal") if (y < zero) FAILURE ("<", "equal") if (z < m_one) FAILURE ("<", "equal") /* Less than: comparisons against lesser values. */ if (x < m_one) FAILURE ("<", "lesser") if (x < zero) FAILURE ("<", "lesser") if (y < m_one) FAILURE ("<", "lesser") if (z < m_two) FAILURE ("<", "lesser") /* Less than: comparisons against greater values. */ if (! (x < two)) FAILURE ("<", "greater") if (! (y < one)) FAILURE ("<", "greater") if (! (z < zero)) FAILURE ("<", "greater") if (! (z < one)) FAILURE ("<", "greater") /* Greater than or equal to: comparisons against equal values. */ if (! (x >= one)) FAILURE (">=", "equal") if (! (y >= zero)) FAILURE (">=", "equal") if (! (z >= m_one)) FAILURE (">=", "equal") /* Greater than or equal to: comparisons against lesser values. */ if (! (x >= m_one)) FAILURE (">=", "lesser") if (! (x >= zero)) FAILURE (">=", "lesser") if (! (y >= m_one)) FAILURE (">=", "lesser") if (! (z >= m_two)) FAILURE (">=", "lesser") /* Greater than or equal to: comparisons against greater values. */ if (x >= two) FAILURE (">=", "greater") if (y >= one) FAILURE (">=", "greater") if (z >= zero) FAILURE (">=", "greater") if (z >= one) FAILURE (">=", "greater") /* Greater than: comparisons against equal values. */ if (x > one) FAILURE (">", "equal") if (y > zero) FAILURE (">", "equal") if (z > m_one) FAILURE (">", "equal") /* Greater than: comparisons against lesser values. */ if (! (x > m_one)) FAILURE (">", "lesser") if (! (x > zero)) FAILURE (">", "lesser") if (! (y > m_one)) FAILURE (">", "lesser") if (! (z > m_two)) FAILURE (">", "lesser") /* Greater than: comparisons against greater values. */ if (x > two) FAILURE (">", "greater") if (y > one) FAILURE (">", "greater") if (z > zero) FAILURE (">", "greater") if (z > one) FAILURE (">", "greater") if (failcnt) abort ();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?