ScalarCast
产品支持情况
功能说明
对标量的数据类型进行转换。
函数原型
template <typename T, typename U, RoundMode roundMode>
__aicore__ inline U ScalarCast(T valueIn)
参数说明
表 1 模板参数说明
|
RoundMode为枚举类型,用以控制精度转换处理模式,具体定义为: enum class RoundMode {
CAST_NONE = 0, // 在转换有精度损失时表示CAST_RINT模式,不涉及精度损失时表示不取整
CAST_RINT, // rint,四舍六入五成双取整
CAST_FLOOR, // floor,向负无穷取整
CAST_CEIL, // ceil,向正无穷取整
CAST_ROUND, // round,四舍五入取整
CAST_TRUNC, // trunc,向零取整
CAST_ODD, // Von Neumann rounding,最近邻奇数舍入
};
对于ScalarCast,转换类型仅支持float转half(f322f16)与float转int32_t(f322s32),相应支持的RoundMode如下:
ScalarCast的精度转换规则与Cast保持一致,具体可参考表1。 |
表 2 参数说明
返回值说明
U类型的valueIn。
约束说明
无
调用示例
float valueIn = 2.5;
// 输出数据valueOut:3
int32_t valueOut = AscendC::ScalarCast<float, int32_t, AscendC::RoundMode::CAST_ROUND>(valueIn);