已关闭
[Bug-Report|缺陷反馈]: Asinh中大数值区间精度问题 #2734
m0_73979701创建于  8月19日关闭于  8月19日
m0_73979701
m0_73979701
8月19日 创建

Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.

一、问题描述 (必填)

Asinh 算子 arch35 实现对非小值统一使用 log(u) * r / (u - 1) 进行精度补偿。

该补偿方式在中大数值区间会额外引入约 1~2 ULP 的计算误差;对于极大输入,直接计算 u ≈ 2|x| 还可能出现溢出风险,导致 Asinh 算子三方精度测试不通过。

二、环境信息 (可选)

• 昇腾硬件型号:Ascend 950(arch35)
• 涉及数据类型:FP32、FP16、BF16

三、重现步骤 (可选)

  1. 执行 Asinh 算子三方精度测试。
  2. 使用 FP32、FP16 或 BF16 类型的中值、大值及极大值作为输入。
  3. 将算子输出与对应 golden 结果进行比较。
  4. 在中大数值区间可观察到约 1~2 ULP 的精度误差。

四、预期结果 (可选)

根据输入绝对值进行分段计算:

  • |x| < 10:保留原有 log1p 补偿路径,保证小值精度;
  • 10 <= |x| < 2^28:直接使用 log(u),避免额外乘除引入精度误差;
  • |x| >= 2^28:使用 log(|x|) + ln(2) + 1 / |x|^2 渐近式,避免溢出;
  • 保持原有 NaN 传播语义。

修改后 Asinh 算子的 FP32、FP16、BF16 三方精度测试应全部通过。

💡 备注(选填)

关联 PR:
https://gitcode.com/cann/ops-math/pull/4822

likedislike
m0_73979701m0_73979701
8月19日 添加了label:bug-report
CANN-robotCANN-robot成员
8月19日 关闭了 issue
CANN-robotCANN-robot成员
8月19日 添加了label:resolved