⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 r_ieee_func_.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic	char sccsid[] = "@(#)r_ieee_func_.c 1.1 92/07/30 SMI";#endif/* * Copyright (c) 1987 by Sun Microsystems, Inc. */#include <math.h>static double fmin = 1.0e-300, fmax = 1.0e300;static float two25 = 33554432.0;FLOATFUNCTIONTYPE r_copysign_(x,y)float *x, *y;{	float w;	*(int *)(&w) = ((*(int*)x)&0x7fffffff)|((*(int*)y)&0x80000000);	RETURNFLOAT(w);}int ir_finite_(x)float *x;{	return ((*(int*)x)&0x7f800000)!=0x7f800000;}int ir_ilogb_(x)float *x;{	float fx = *x;	long *px = (long *) &fx, k;	k = px[0]&0x7fffffff;	if(k<0x00800000) {	    if (k==0) return 0x80000001;	    else {		fx *= two25;		return ((px[0]&0x7f800000)>>23)-152;	    }	}	else if (k<0x7f800000) return (k>>23)-127;	else return 0x7fffffff;}int ir_isinf_(x)float *x;{	return ((*(int*)x)&0x7fffffff)==0x7f800000;}int ir_isnan_(x)float *x;{	register p = *(int*)x;	return ((p&0x7f800000)==0x7f800000)&&((p&0x007fffff)!=0);}int ir_isnormal_(x)float *x;{	register k = (*(int*)x)&0x7f800000;	return (k!=0)&&(k!=0x7f800000);}int ir_issubnormal_(x)float *x;{	register k = *(int*)x;	return ((k&0x7f800000)==0)&&(k&0x7fffffff)!=0;}int ir_iszero_(x)float *x;{	return  ((*(int*)x)&0x7fffffff)==0;}FLOATFUNCTIONTYPE r_nextafter_(x,y)float *x, *y;{	float w;	long *pw = (long *) &w;	long *px = (long *) x;	long *py = (long *) y;	long ix,iy,iz;	ix = px[0]; iy=py[0];	if((ix&0x7f800000)==0x7f800000&&(ix&0x007fffff)!=0) 		{w = *x+*y; RETURNFLOAT(w);}	if((iy&0x7f800000)==0x7f800000&&(iy&0x007fffff)!=0) 		{w = *y+*x; RETURNFLOAT(w);}	if(ix==iy||(ix|iy)==0x80000000) {pw[0] = ix; RETURNFLOAT(w);}	if((ix&0x7fffffff)==0) iz = 1|(iy&0x80000000); 	else if(ix>0) {	    if (ix > iy) iz = ix - 1;	    else iz = ix + 1;	} else {	    if (iy<0&&ix<iy) iz = ix + 1;	    else iz = ix - 1;	}	ix = iz&0x7f800000;	if(ix==0x7f800000) dummy(fmax*fmax);	/* overflow  */	else if(ix==0)     dummy(fmin*fmin);	/* underflow */	pw[0] = iz;	RETURNFLOAT(w);}FLOATFUNCTIONTYPE r_scalbn_(x,n)float *x; int *n;{	float w;	w = (float) scalbn((double)*x,*n);	RETURNFLOAT(w);}int ir_signbit_(x)float *x;{	return ((*(int*)x)>>31)&1;}static dummy(x)double x;{	return 1;}

⌨️ 快捷键说明

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