Я компилирую код C ++ для запуска DFT. Я использую четырехугольник в своем коде и генератор случайных чисел, чтобы добавить к нему шум.
Во время выполнения кода как:
g++ code.cc -lquadmath -o quad
Я не получаю ошибку, и она успешно компилируется,
Но из-за использования генератора случайных чисел, я должен скомпилировать как
g++ code.cc -lquadmath -std=gnu++0x -o quad
который дает ошибку lvaule, требуемую как левый операнд присваивания.
Строка кода, которая выдает эту ошибку:
std::real(output_seq[y]) =std::real(output_seq[y])+( V2[x] * cosineA );
Вы пытаетесь присвоить значение результату std::real
который является Rvalue .
Это так же важно, как писать
5.0f = std::real(output_seq[y]) + (V2[x] * cosineA);
Таким образом, вы, вероятно, хотите сделать это вместо
output_seq[y] = std::real(output_seq[y]) + (V2[x] * cosineA);
Вы пытаетесь присвоить значение номеру. std::real(output_seq[y])
возвращает действительную часть вашего комплексного числа в качестве значения. Вы не можете присвоить ему новое значение, так как оно не представляет адрес местоположения.
Что вы хотите сделать, это, вероятно, следующее:
output_seq[y].real(std::real(output_seq[y])+( V2[x] * cosineA ));
Он будет работать только с C ++ 11, используя следующую информацию http://www.cplusplus.com/reference/complex/complex/real/