gpt4 book ai didi

c - 具有扩展范围的浮点类型

转载 作者:行者123 更新时间:2023-11-30 15:22:40 24 4
gpt4 key购买 nike

我需要在 C 中表示非常小阶的 float (例如,0.6745 × 2-3000)。这种支持必须与平台无关(适用于 CPU和 GPU-CUDA)。尾数的长度不需要太长。

我无法使用高精度库(GMP、MPFR 等),因为它们无法在 GPU 上运行。另一方面,CUDA 不支持long double 类型。有什么解决办法吗?是否可以以某种方式实现自定义浮点类型?

最佳答案

您可以在对数空间中工作,即将每个数字表示为 ex,其中 x 是您的标准浮点类型:

  • 可以使用 log-sum-exp trick 执行加法/减法(以及更一般的求和) ,即

    • ex+ey = ex (1+ey-x) = e x + log(1+exp(y-x))
  • 乘法/除法变成加法/减法

    • ex × ex = ex+y
  • 提升力量相当简单

    • (ex)^(ex) = ex exp(y)

关于c - 具有扩展范围的浮点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com