📄 cuf4.c
字号:
/*
(c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
See the copyright notice in the ACK home directory, in the file "Copyright".
*/
/* $Header: cuf4.c,v 1.6 93/01/05 12:04:35 ceriel Exp $ */
/*
CONVERT INTEGER TO SINGLE (CUF n 4)
THIS ROUTINE WORKS BY FILLING AN EXTENDED
WITH THE INTEGER VALUE IN EXTENDED FORMAT
AND USES COMPACT() TO PUT IT INTO THE PROPER
FLOATING POINT PRECISION.
*/
#include "FP_types.h"
void
cuf4(ss,src)
int ss; /* source size */
long src; /* largest possible integer to convert */
{
EXTEND buf;
short *ipt;
SINGLE *result;
long i_src;
zrf_ext(&buf);
if (ss == sizeof(long)) {
buf.exp = 31;
i_src = src;
result = (SINGLE *) &src;
}
else {
ipt = (short *) &src;
i_src = (long) *ipt;
buf.exp = 15;
result = (SINGLE *) ((void *) &ss);
}
if (i_src == 0) {
*result = (SINGLE) 0L;
return;
}
/* ESTABLISHED THAT src != 0 */
/* adjust exponent field */
if (ss != sizeof(long))
i_src <<= 16;
/* move to mantissa field */
buf.m1 = i_src;
/* adjust mantissa field */
nrm_ext(&buf);
compact(&buf,result,4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -