Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm 手臂霓虹灯将f32转换为s32,使圆形朝向偶数_Arm_Neon_Bankers Rounding - Fatal编程技术网

Arm 手臂霓虹灯将f32转换为s32,使圆形朝向偶数

Arm 手臂霓虹灯将f32转换为s32,使圆形朝向偶数,arm,neon,bankers-rounding,Arm,Neon,Bankers Rounding,是否有任何功能控制vcvt_s32_f32的舍入模式?我想用圆形表示偶数,而不是圆形表示负无穷大 谢谢。不,您不能更改舍入模式 霓虹灯是为性能而不是精度而设计的,因此与VFP相比受到限制。与VFP不同,它不是完整的IEEE 754实现,并且硬连接到某些设置-引用ARM: 非规范化数字被刷新为零 仅支持默认的NAN “舍入到最近的*舍入”模式已选定 为所有浮点异常选择未限制的异常处理 浮点到整数转换的具体情况稍有不同,在这种情况下,VCVT指令的行为(对于VFP和NEON)是忽略所选的舍入模式

是否有任何功能控制vcvt_s32_f32的舍入模式?我想用圆形表示偶数,而不是圆形表示负无穷大


谢谢。

不,您不能更改舍入模式

霓虹灯是为性能而不是精度而设计的,因此与VFP相比受到限制。与VFP不同,它不是完整的IEEE 754实现,并且硬连接到某些设置-引用ARM:

  • 非规范化数字被刷新为零
  • 仅支持默认的NAN
  • “舍入到最近的*舍入”模式已选定
  • 为所有浮点异常选择未限制的异常处理
浮点到整数转换的具体情况稍有不同,在这种情况下,
VCVT
指令的行为(对于VFP和NEON)是忽略所选的舍入模式,并始终向零舍入。使用选定舍入模式的
VCVTR
指令仅在VFP中可用

ARMv8体系结构引入了一整套舍入和转换指令 用于使用特定的舍入模式,但我怀疑这在这种特殊情况下没有多大帮助。如果您想在ARMv7和更早版本上以不同的舍入模式进行转换,则必须使用VFP(如果可用)或一些位攻击来手动实现


*ARM使用IEEE 754-1985术语,因此更准确地说,这是从圆到最近,与偶数相关

我不太明白“从圆到偶数”你能举个例子说明它应该做什么吗?也许我可以为你写一个黑客程序。好的,我知道了。但是,我不知道如何处理1.0和-1.0。我的简单比特黑客算法会将它们分别设置为2和0。可以吗?我的意思是2.5必须是2,3.5必须是4等等。但是1和-1呢?他们甚至都不是。这就是我要问的。啊,仔细观察,这是VCVT指令的“总是向零舍入”行为,而不是具体的。不过,我认为这里的一切仍然适用。