2014-10-17 2 views
2

Когда я выполняю этот код на мой IPad Air (IOS 7.1)ARM Neon IOS преобразования с плавающей точкой

#include <arm_neon.h> 

static inline void TestArmConversion() 
{ 
    float x[2] = { 1.5, 2.6 }; 
    int32_t z[2]; 

    vst1_s32(z, vcvt_f32_s32(vld1_f32(x))); 

    for (int k = 0; k < 2; k++) 
    { 
     printf("z[%d] = %d\n", k, z[k]); 
    } 
} 

... Я получаю следующий результат:

z[0] = 1316945920 
z[1] = 1317031117 

я бы ожидал чтобы получить

г [0] = 1 г [1] = 2

Что я делаю неправильно?

ответ

3

Вы были близки! Вы просто перепутали конверсию. Вместо этого используйте vcvt_s32_f32(float32x2_t).

+0

Хорошо, спасибо, что решила мою проблему! :-) Ожидал бы, что компилятор выпустит ошибку типа. –