У меня есть этот цикл, где b2
является float
, x1
является вектором float
, a1
и a0
являются int
а (Эйген C++).как включить GCC векторизовать эту петлю
for(int i=1;i<9;i++)
b2+=a0*(float)0.5*(std::log(fabs(x1(a1+a0*(i-1))))+std::log(fabs(x1(a1+a0*i))));
ССАГПЗ возвращается:
analyze_innermost: failed: evolution of base is not affine.
Я задавался вопросом, есть ли простой способ переписать цикл, чтобы GCC векторизовать его (я компиляции со всеми включенными опциями небезопасных ... Я делаю это, чтобы учиться).
Редактировать:
x1 - собственная конструкция. Я использую GCC 4.8.1 с флагом O3.
Является ли 'x1' стандартным (STL) вектором? Вы перегрузили 'operator()' или что-то еще? –
Вы пытались хранить RHS оператора '+ =' во временном массиве и использовать второй цикл, чтобы суммировать их? – anderas
@OMGtechy Не дублируется. Ошибка и код совершенно разные –