Контекст - это просто функция, которая разрешает входные квадратичные уравнения. Вот часть кода, который неисправностями:Арифметика в сложных числах не работает должным образом
case NEGATIVE:
printf("\n\n beforehand sqrt(discriminant) is %f%+fi",creal(csqrt(eqn->discriminant)), cimag(csqrt(eqn->discriminant)));
eqn->complex_root = (-(eqn->b)+csqrt(eqn->discriminant))/(2*eqn->a);
printf("\n\n result after full formula is %f%+fi", creal(eqn->complex_root),cimag(eqn->complex_root));
break;
И вывод текста я получаю с x^2+5 = 0
как уравнение испытания. Три средние линии отладки текста, где тип просто ссылается на то, что вид решений программа должна ожидать квадратичные (0 означает 2 комплексные решения, конечно):
Please enter the coefficients of the quadratic separated by spaces: 1 0 5
The coefficients entered are a=1, b=0 and c=5.
TYPE RETURNED: 0
beforehand sqrt(discriminant) is 0.000000+4.472136i
result after full formula is 0.000000+0.000000i
The equation defined by 1x^2 +0x +5=0 has two complex solutions, x = 0+0i and x = 0-0i.
Я просто понятия не имею, почему результаты снижения 0. Что происходит?
Не могли бы вы показать свои функции 'creal',' cimag' и 'csqrt'? – haccks
Они в –
FireGarden
Все в порядке, я выяснил проблему. Оказывается, вам нужно объявить переменную как имеющую сложное значение, прежде чем ее можно будет присвоить должным образом. У меня был float, а не float _Complex. Извините за то, что тратишь время людей! – FireGarden