Arm Neon:isnan(val)内部
我想在NEON intrinsics中使用Arm Neon:isnan(val)内部,arm,simd,neon,cortex-a8,Arm,Simd,Neon,Cortex A8,我想在NEON intrinsics中使用isnan()功能。下面是我的代码:input1、input2和output是float类型。这些值是从输入图像/帧的ROI更新的。(图像处理示例) for(x=0;xIEEE-754浮点值的一个有用属性是比较两个NaN值总是返回false。您可以使用此属性测试NaN,如下所示: bool isNaN(float x) { return !(x == x); } 同样的测试也适用于SIMD操作,在SIMD操作中,可以将浮点向量与其自身进行比较,
isnan()
功能。下面是我的代码:input1、input2和output是float类型。这些值是从输入图像/帧的ROI更新的。(图像处理示例)
for(x=0;xIEEE-754浮点值的一个有用属性是比较两个NaN值总是返回false。您可以使用此属性测试NaN
,如下所示:
bool isNaN(float x)
{
return !(x == x);
}
同样的测试也适用于SIMD操作,在SIMD操作中,可以将浮点向量与其自身进行比较,对于NaN
的任何元素,结果都将为假,例如:
float32x4_t vx = { ... };
uint32x4_t vcmp = vceqq_f32(vx, vx);
对于x
中的非NaN
值和false
(0
)而言,vcmp
的元素将为true
(UINT\u MAX
)对于任何NaN
值。IEEE-754浮点值的一个有用属性是比较两个NaN值总是返回false。您可以使用此属性测试NaN
,如下所示:
bool isNaN(float x)
{
return !(x == x);
}
同样的测试也适用于SIMD操作,在SIMD操作中,可以将浮点向量与其自身进行比较,对于NaN
的任何元素,结果都将为假,例如:
float32x4_t vx = { ... };
uint32x4_t vcmp = vceqq_f32(vx, vx);
对于x
中的非NaN
值和false
(0
)而言,vcmp
的元素将为true
(UINT\u MAX
)对于任何NaN
值。在这种情况下,您告诉我像check a==a,每次都是正确的。那么这个怎么能像isnan一样工作呢?Paul R,请您举个小例子详细说明一下。这对我会有帮助。@PaulR sqrt(-1)=sqrt(-1)?这个条件你能用你的逻辑来解释我吗?在这种情况下,你说的像检查a==a,每次都是正确的。那么这个条件怎么能像isnan一样工作呢?Paul R,你能举个小例子来详细说明吗?这对我会有帮助。@PaulR sqrt(-1)=sqrt(-1)?这个条件你能用你的逻辑来解释我吗