copysign.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 141 行

C
141
字号
#include <ansidecl.h>#ifdef __IEEE_BIG_ENDIANtypedef union {  double value;  struct   {    unsigned int sign : 1;    unsigned int exponent: 11;    unsigned int fraction0:4;    unsigned int fraction1:16;    unsigned int fraction2:16;    unsigned int fraction3:16;      } number;  struct   {    unsigned int sign : 1;    unsigned int exponent: 11;    unsigned int quiet:1;    unsigned int function0:3;    unsigned int function1:16;    unsigned int function2:16;    unsigned int function3:16;  } nan;  struct   {    unsigned long msw;    unsigned long lsw;  } parts;    long aslong[2];} __ieee_double_shape_type;#endif#ifdef __IEEE_LITTLE_ENDIANtypedef union {  double value;  struct   {#ifdef __SMALL_BITFIELDS    unsigned int fraction3:16;    unsigned int fraction2:16;    unsigned int fraction1:16;    unsigned int fraction0: 4;#else    unsigned int fraction1:32;    unsigned int fraction0:20;#endif    unsigned int exponent :11;    unsigned int sign     : 1;  } number;  struct   {#ifdef __SMALL_BITFIELDS    unsigned int function3:16;    unsigned int function2:16;    unsigned int function1:16;    unsigned int function0:3;#else    unsigned int function1:32;    unsigned int function0:19;#endif    unsigned int quiet:1;    unsigned int exponent: 11;    unsigned int sign : 1;  } nan;  struct   {    unsigned long lsw;    unsigned long msw;  } parts;  long aslong[2];} __ieee_double_shape_type;#endif#ifdef __IEEE_BIG_ENDIANtypedef union{  float value;  struct   {    unsigned int sign : 1;    unsigned int exponent: 8;    unsigned int fraction0: 7;    unsigned int fraction1: 16;  } number;  struct   {    unsigned int sign:1;    unsigned int exponent:8;    unsigned int quiet:1;    unsigned int function0:6;    unsigned int function1:16;  } nan;  long p1;  } __ieee_float_shape_type;#endif#ifdef __IEEE_LITTLE_ENDIANtypedef union{  float value;  struct   {    unsigned int fraction0: 7;    unsigned int fraction1: 16;    unsigned int exponent: 8;    unsigned int sign : 1;  } number;  struct   {    unsigned int function1:16;    unsigned int function0:6;    unsigned int quiet:1;    unsigned int exponent:8;    unsigned int sign:1;  } nan;  long p1;  } __ieee_float_shape_type;#endifdouble DEFUN(copysign, (x, y), double x AND double y){  __ieee_double_shape_type a,b;  b.value = y;    a.value = x;  a.number.sign =b.number.sign;  return a.value;}

⌨️ 快捷键说明

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