Я полагаю, что если подпись
Complex sqrt( double x);
Тогда x представляет реальное значение. Таким образом, Complex.img может быть 0/1, представляя, был ли x положительным или отрицательным.
Пример (принимая x за действительное число)
//C like pseudocode
Complex sqrt(double x){
Complex result={0,0};
if (x==0) return result;
if (x<0){
result.img =1;
real = abs(x);
}
result.real= sqrt_(x);//calculates square root of a positive value.
return result;
}
//some other place
double r =-4.0;
Complex root = sqrt(r);
//prints "Square root of -4.0 is 2i"
printf("Square root of %.2f is %.2f%c",r,root.real,(root.img?'i':''));