2013-11-15 1 views
0

Контекст - это просто функция, которая разрешает входные квадратичные уравнения. Вот часть кода, который неисправностями:Арифметика в сложных числах не работает должным образом

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. Что происходит?

+0

Не могли бы вы показать свои функции 'creal',' cimag' и 'csqrt'? – haccks

+0

Они в FireGarden

+0

Все в порядке, я выяснил проблему. Оказывается, вам нужно объявить переменную как имеющую сложное значение, прежде чем ее можно будет присвоить должным образом. У меня был float, а не float _Complex. Извините за то, что тратишь время людей! – FireGarden

ответ

0

Забыл присвоить переменную, удерживающую эти значения как сложные. т. е. использовать float вместо float _Complex.

 Смежные вопросы

  • Нет связанных вопросов^_^