要将双精度值裁剪到-1.0到+1.0范围内,可以使用max / min操作。例如,如果您有buffN个double值的,
const __m128d kMax = _mm_set1_pd(1.0);
const __m128d kMin = _mm_set1_pd(-1.0);
for (int i = 0; i < N; i += 2)
{
__m128d v = _mm_loadu_pd(&buff[i]);
v = _mm_max_pd(v, kMin);
v = _mm_min_pd(v, kMax);
_mm_storeu_pd(&buff[i], v);
}
Run Code Online (Sandbox Code Playgroud)