gpt4 book ai didi

c++ - SSE 舍入精度

转载 作者:行者123 更新时间:2023-11-30 04:24:16 25 4
gpt4 key购买 nike

我对 SSE 舍入有一个小问题。该代码是不言自明的,我正在尝试获取 293.05694580 中 0.0001 的计数,包括一些舍入(例如,5.21 中有 52 个 0.1)...

#include <xmmintrin.h> 
#include <emmintrin.h>

int main(void)
{
float val = (float) 293.05694580;
float tickSize = (float) 0.0001;

__m128 _val = _mm_set_ps1( val );
__m128 _shift = _mm_set_ps1( 1 / tickSize );

/* 293.0569480 * 10000 should be 2930569.480 */
__m128 _mul = _mm_mul_ps(_val, _shift);

/* Rounding 2930569.480 should get 2930569, but returns 2930570 instead. Why? */
__m128i _ticks = _mm_cvtps_epi32( _mul );
}

最后,如何恢复 _ticks 中结果的排序?非常感谢,丹尼尔

最佳答案

检查中间结果,不要假设

检查/设置 sse 舍入模式

用整数来计数

关于c++ - SSE 舍入精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12880660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com