阕阵闲 发表于 2025-6-4 19:34:32

浮点数算法的内部实现

  科学计算当中会用到不少浮点数的操作,这些浮点数可能是16位,32位,64位,80位甚至是128位。开源项目SoftFloat提供了一个高效的浮点运算实现,可以在没有硬件支持的情况下,高效模拟浮点数的各种操作。
  那么,浮点数之间的比较,基本运算这些究竟是怎么实现的呢,可以拿32位浮点数作为例子。
  这是32位浮点数加法的实现,首先声明了一个结构体float32_t。
typedef struct { uint32_t v; } float32_t;  这提供了32位浮点数的底层位表示,同时还声明了一个union。
union ui32_f32 { uint32_t ui; float32_t f; };  一方面保存了浮点数的位表示,另一方面也可以转换为32位无符号整型直接进行比较,这在后面的算法当中会直接涉及。先看看加法。
float32_t f32_add( float32_t a, float32_t b ){    union ui32_f32 uA;    uint_fast32_t uiA;    union ui32_f32 uB;    uint_fast32_t uiB;#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 1)    float32_t (*magsFuncPtr)( uint_fast32_t, uint_fast32_t );#endif    uA.f = a;    uiA = uA.ui;    uB.f = b;    uiB = uB.ui;#if defined INLINE_LEVEL && (1

官厌 发表于 2025-11-24 07:36:02

谢谢分享,试用一下

缀访 发表于 2025-12-4 08:26:43

用心讨论,共获提升!

林鱼 发表于 2025-12-7 11:18:24

感谢,下载保存了

丰江 发表于 2025-12-30 23:55:58

懂技术并乐意极积无私分享的人越来越少。珍惜

济曝喊 发表于 2026-1-5 10:38:23

这个有用。

徙办 发表于 2026-1-6 17:17:47

这个好,看起来很实用

战匈琼 发表于 2026-1-15 11:09:19

很好很强大我过来先占个楼 待编辑

菅舛 发表于 2026-1-18 19:10:58

感谢分享,下载保存了,貌似很强大

廖雯华 发表于 2026-1-19 06:30:56

用心讨论,共获提升!

喳谍 发表于 2026-1-19 06:44:03

谢谢楼主提供!

匣卒 发表于 2026-1-21 16:33:48

用心讨论,共获提升!

轩辕娅童 发表于 2026-1-23 03:32:03

前排留名,哈哈哈

虾氲叱 发表于 2026-1-23 06:22:38

感谢,下载保存了

骆贵 发表于 2026-1-28 02:07:08

鼓励转贴优秀软件安全工具和文档!

零幸 发表于 2026-1-29 23:49:27

yyds。多谢分享

磁呃泵 发表于 2026-1-30 02:11:41

感谢分享,学习下。

卓卞恻 发表于 2026-2-2 03:04:38

这个有用。

仲水悦 发表于 2026-2-6 08:34:24

东西不错很实用谢谢分享

勉欤铅 发表于 2026-2-8 17:50:06

收藏一下   不知道什么时候能用到
页: [1] 2
查看完整版本: 浮点数算法的内部实现