| Support Asinh op with AscendC
Co-authored-by: r00583095<ruanzhifeng@huawei.com>
# message auto-generated for no-merge-commit merge:
!1140 merge master into master
Support Asinh op with AscendC
Created-by: linty10
Commit-by: r00583095
Merged-by: cann-robot
Description: ## 描述
使用AscendC实现asinh算子
1.按照泰勒公式计算arcsinh(x) = Cx + Cx^3 + Cx^5 + Cx^7 + Cx^9 + Cx^11 + Cx^13 + Cx^15 .....
其中C为泰勒系数,参考常量taylorCoefficients,参考精度要求泰勒系数计算到第8项
T taylorCoefficients[] = {1.0, -1.0 / 6, 3.0 / 40, -5.0 / 112, 35.0 / 1152, -63.0 / 2816, 231.0 / 13312, -143.0 / 10240};
2.将x取绝对值,并将正负号保存到xSignMask掩码中;
3.当x < Boudry = 0.70710678118654752440084436210485 时计算 arcsinh(x) 用泰勒公式, 当x >=Boudry计算arcsinh(x) = ln(x + sqrt(x^2 + 1);
4.利用arcsinh(-x) = -arcsinh(x), 根据符号标记合并还原计算负值情况
## 关联的Issue
[Requirement|需求建议: 新增支持ascendc的asinh算子](https://gitcode.com/cann/ops-math/issues/576)
## 测试
example测试
[2026-02-03 16:39:43] 0: asinh(-inf) = -inf, -inf, right=1
[2026-02-03 16:39:43] 1: asinh(-12.000000) = -3.179785, -3.179785, right=1
[2026-02-03 16:39:43] 2: asinh(-1.000001) = -0.881374, -0.881374, right=1
[2026-02-03 16:39:43] 3: asinh(-1.000010) = -0.881381, -0.881381, right=1
[2026-02-03 16:39:43] 4: asinh(-1.000100) = -0.881444, -0.881444, right=1
[2026-02-03 16:39:43] 5: asinh(-1.001000) = -0.882080, -0.882081, right=1
[2026-02-03 16:39:43] 6: asinh(-1.010000) = -0.888427, -0.888427, right=1
[2026-02-03 16:39:43] 7: asinh(-1.000000) = -0.881374, -0.881374, right=1
[2026-02-03 16:39:43] 8: asinh(-0.999990) = -0.881366, -0.881366, right=1
[2026-02-03 16:39:43] 9: asinh(-0.999900) = -0.881303, -0.881303, right=1
[2026-02-03 16:39:43] 10: asinh(-0.999000) = -0.880666, -0.880666, right=1
[2026-02-03 16:39:43] 11: asinh(-0.990000) = -0.874285, -0.874285, right=1
[2026-02-03 16:39:43] 12: asinh(-0.900000) = -0.808867, -0.808867, right=1
[2026-02-03 16:39:43] 13: asinh(-0.800000) = -0.732668, -0.732668, right=1
[2026-02-03 16:39:43] 14: asinh(-0.710000) = -0.660840, -0.660840, right=1
[2026-02-03 16:39:43] 15: asinh(-0.705000) = -0.656736, -0.656758, right=1
[2026-02-03 16:39:43] 16: asinh(-0.700000) = -0.652648, -0.652667, right=1
[2026-02-03 16:39:43] 17: asinh(-0.650000) = -0.611219, -0.611224, right=1
[2026-02-03 16:39:43] 18: asinh(-0.600000) = -0.568823, -0.568825, right=1
[2026-02-03 16:39:43] 19: asinh(-0.500000) = -0.481212, -0.481212, right=1
[2026-02-03 16:39:43] 20: asinh(-0.400000) = -0.390035, -0.390035, right=1
[2026-02-03 16:39:43] 21: asinh(-0.300000) = -0.295673, -0.295673, right=1
[2026-02-03 16:39:43] 22: asinh(-0.200000) = -0.198690, -0.198690, right=1
[2026-02-03 16:39:43] 23: asinh(-0.100000) = -0.099834, -0.099834, right=1
[2026-02-03 16:39:43] 24: asinh(-0.010000) = -0.010000, -0.010000, right=1
[2026-02-03 16:39:43] 25: asinh(-0.001000) = -0.001000, -0.001000, right=1
[2026-02-03 16:39:43] 26: asinh(-0.000100) = -0.000100, -0.000100, right=1
[2026-02-03 16:39:43] 27: asinh(-0.000010) = -0.000010, -0.000010, right=1
[2026-02-03 16:39:43] 28: asinh(-0.000001) = -0.000001, -0.000001, right=1
[2026-02-03 16:39:43] 29: asinh(-0.000000) = -0.000000, -0.000000, right=1
[2026-02-03 16:39:43] 30: asinh(0.000000) = 0.000000, 0.000000, right=1
[2026-02-03 16:39:43] 31: asinh(nan) = nan, nan, right=1
[2026-02-03 16:39:43] 32: asinh(0.000000) = 0.000000, 0.000000, right=1
[2026-02-03 16:39:43] 33: asinh(0.000001) = 0.000001, 0.000001, right=1
[2026-02-03 16:39:43] 34: asinh(0.000010) = 0.000010, 0.000010, right=1
[2026-02-03 16:39:43] 35: asinh(0.000100) = 0.000100, 0.000100, right=1
[2026-02-03 16:39:43] 36: asinh(0.010000) = 0.010000, 0.010000, right=1
[2026-02-03 16:39:43] 37: asinh(0.100000) = 0.099834, 0.099834, right=1
[2026-02-03 16:39:43] 38: asinh(0.200000) = 0.198690, 0.198690, right=1
[2026-02-03 16:39:43] 39: asinh(0.300000) = 0.295673, 0.295673, right=1
[2026-02-03 16:39:43] 40: asinh(0.400000) = 0.390035, 0.390035, right=1
[2026-02-03 16:39:43] 41: asinh(0.500000) = 0.481212, 0.481212, right=1
[2026-02-03 16:39:43] 42: asinh(0.500000) = 0.481212, 0.481212, right=1
[2026-02-03 16:39:43] 43: asinh(0.600000) = 0.568823, 0.568825, right=1
[2026-02-03 16:39:43] 44: asinh(0.650000) = 0.611219, 0.611224, right=1
[2026-02-03 16:39:43] 45: asinh(0.700000) = 0.652648, 0.652667, right=1
[2026-02-03 16:39:43] 46: asinh(0.705000) = 0.656736, 0.656758, right=1
[2026-02-03 16:39:46] 47: asinh(0.710000) = 0.660840, 0.660840, right=1
[2026-02-03 16:39:46] 48: asinh(0.800000) = 0.732668, 0.732668, right=1
[2026-02-03 16:39:46] 49: asinh(0.900000) = 0.808867, 0.808867, right=1
[2026-02-03 16:39:46] 50: asinh(0.990000) = 0.874285, 0.874285, right=1
[2026-02-03 16:39:46] 51: asinh(0.999000) = 0.880666, 0.880666, right=1
[2026-02-03 16:39:46] 52: asinh(0.999900) = 0.881303, 0.881303, right=1
[2026-02-03 16:39:46] 53: asinh(0.999990) = 0.881366, 0.881366, right=1
[2026-02-03 16:39:46] 54: asinh(1.000000) = 0.881374, 0.881374, right=1
[2026-02-03 16:39:46] 55: asinh(1.010000) = 0.888427, 0.888427, right=1
[2026-02-03 16:39:46] 56: asinh(1.001000) = 0.882080, 0.882081, right=1
[2026-02-03 16:39:46] 57: asinh(1.000100) = 0.881444, 0.881444, right=1
[2026-02-03 16:39:46] 58: asinh(1.000010) = 0.881381, 0.881381, right=1
[2026-02-03 16:39:46] 59: asinh(1.000001) = 0.881374, 0.881374, right=1
[2026-02-03 16:39:46] 60: asinh(12.000000) = 3.179785, 3.179785, right=1
[2026-02-03 16:39:46] 61: asinh(inf) = inf, inf, right=1
[2026-02-03 16:39:46] 62: asinh(0.000000) = 0.000000, 0.000000, right=1
[2026-02-03 16:39:46] 63: asinh(0.000000) = 0.000000, 0.000000, right=1
[2026-02-03 16:39:46] run test_aclnn_asinh, execute samples success
UT测试
op_host
[2026-02-03 16:40:36] [==========] Running 3 tests from 1 test suite.
[2026-02-03 16:40:36] [----------] Global test environment set-up.
[2026-02-03 16:40:36] Global Environment SetpUp.
[2026-02-03 16:40:36] [----------] 3 tests from AsinhTiling
[2026-02-03 16:40:36] AsinhTiling SetUp
[2026-02-03 16:40:36] [ RUN ] AsinhTiling.asinh_tiling_001
[2026-02-03 16:40:36] [ OK ] AsinhTiling.asinh_tiling_001 (1 ms)
[2026-02-03 16:40:36] [ RUN ] AsinhTiling.asinh_tiling_002
[2026-02-03 16:40:36] [ OK ] AsinhTiling.asinh_tiling_002 (0 ms)
[2026-02-03 16:40:36] [ RUN ] AsinhTiling.asinh_tiling_003
[2026-02-03 16:40:36] [ OK ] AsinhTiling.asinh_tiling_003 (0 ms)
op_kernel
[2026-02-03 16:43:46] [----------] 1 test from AsinhTest (4985 ms total)
[2026-02-03 16:43:46]
[2026-02-03 16:43:46] [----------] Global test environment tear-down
[2026-02-03 16:43:46] Global Environment TearDown
[2026-02-03 16:43:46] [==========] 1 test from 1 test suite ran. (5028 ms total)
[2026-02-03 16:43:46] [ PASSED ] 1 test.
[2026-02-03 16:43:46] [100%] Built target math_op_kernel_ut_ascend910B1
[2026-02-03 16:43:46] [100%] Built target math_op_kernel_ut
op_api
[2026-02-03 16:44:39] l2_asinh_test SetUp
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.ascend910B2_asinh_dtype_all
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.ascend910B2_asinh_dtype_all (520 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_different_shape
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_different_shape (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_nullptr
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_nullptr (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_out_nullptr
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_out_nullptr (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_precision
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_precision (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.ascend910B2_asinh_bf16_precision
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.ascend910B2_asinh_bf16_precision (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_empty_tensor
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_empty_tensor (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_non_contiguous
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_non_contiguous (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_lessDim
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_lessDim (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_bigDim
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_bigDim (0 ms)
[2026-02-03 16:44:39] [ RUN ] l2_asinh_test.asinh_inplace
[2026-02-03 16:44:39] [ OK ] l2_asinh_test.asinh_inplace (0 ms)
[2026-02-03 16:44:39] l2_asinh_test TearDown
[2026-02-03 16:44:39] [----------] 11 tests from l2_asinh_test (526 ms total)
[2026-02-03 16:44:39]
[2026-02-03 16:44:39] [----------] Global test environment tear-down
[2026-02-03 16:44:39] Global Environment TearDown
[2026-02-03 16:44:39] [==========] 11 tests from 1 test suite ran. (527 ms total)
[2026-02-03 16:44:39] [ PASSED ] 11 tests.
性能测试

## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
## 类型标签
<!-- [x] 表示选中 -->
- [ ] Bug修复
- [x] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/ops-math!1140 | 3 个月前 |