nan.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 55 行

C
55
字号
#include <float.h>#include <math.h>#define	NANEXP	(2047<<20)#define	NANMASK	(2047<<20)#define	NANSIGN	(1<<31)doubleNaN(void){	FPdbleword a;	a.hi = NANEXP;	a.lo = 1;	return a.x;}intisNaN(double d){	FPdbleword a;	a.x = d;	if((a.hi & NANMASK) != NANEXP)		return 0;	return !isInf(d, 0);}doubleInf(int sign){	FPdbleword a;	a.hi = NANEXP;	a.lo = 0;	if(sign < 0)		a.hi |= NANSIGN;	return a.x;}intisInf(double d, int sign){	FPdbleword a;	a.x = d;	if(a.lo != 0)		return 0;	if(a.hi == NANEXP)		return sign >= 0;	if(a.hi == (NANEXP|NANSIGN))		return sign <= 0;	return 0;}

⌨️ 快捷键说明

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