📄 nan64.c
字号:
/* * 64-bit IEEE not-a-number routines. * This is big/little-endian portable assuming that * the 64-bit doubles and 64-bit integers have the * same byte ordering. */#include <u.h>#include <libc.h>#include "fmtdef.h"#if defined (__APPLE__) || (__powerpc__)#define _NEEDLL#endifstatic uvlong uvnan = ((uvlong)0x7FF00000<<32)|0x00000001;static uvlong uvinf = ((uvlong)0x7FF00000<<32)|0x00000000;static uvlong uvneginf = ((uvlong)0xFFF00000<<32)|0x00000000;double__NaN(void){ uvlong *p; /* gcc complains about "return *(double*)&uvnan;" */ p = &uvnan; return *(double*)p;}int__isNaN(double d){ uvlong x; double *p; p = &d; x = *(uvlong*)p; return (ulong)(x>>32)==0x7FF00000 && !__isInf(d, 0);}double__Inf(int sign){ uvlong *p; if(sign < 0) p = &uvinf; else p = &uvneginf; return *(double*)p;}int__isInf(double d, int sign){ uvlong x; double *p; p = &d; x = *(uvlong*)p; if(sign == 0) return x==uvinf || x==uvneginf; else if(sign > 0) return x==uvinf; else return x==uvneginf;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -