C++ complex number multiplication -


if have (1+i)^2, answer should 2i

but if do

std::complex<double> = sqrt(1), 1 = 1; cout << pow(one+i,2) << endl; 

it outputs (4,0)

you initializing i sqrt(1) whereas thought sqrt(-1). such evaluated double expression (after -1 converted double closest matching sqrt, see mike's comment complete sequence), according cplusplus.com generates domain error negative arguments.

instead can initialize i as:

std::complex<double> i(0,1); 

alternatively use complex number argument sqrt described in this answer, or potatoswatter indicated in comments use 1.i c++14 (should have compiler & standard library supports user-defined literals standard library types, part 2).


Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -