Problems in calculation


Can you tell me, why those 2 operations give different results?


z = z*z;


__device__ void power(int p){

		float R=r;

		float I=i;

		float tmpR=0;

		float tmpI=0;


		for(int i=1; i<p; i++) { 

			tmpR = r*R - i*I;

			tmpI = r*I + i*R;

			R = tmpR;

			I = tmpI;







__device__ cudaComplex operator*(const cudaComplex& a) {

        return cudaComplex(r*a.r - i*a.i, i*a.r + r*a.i);


where cudaComplex is my class

class cudaComplex {


    float   r;

    float   i;



Please help.

Kind regards

Possibly to do with having i as the imaginary part of your complex number and the iterator for your loop?? In the body of your loop i is equal to 1,2 etc and not the imaginary part of your complex number as it should be, at least that’s what I think is happening.

You have scope issues in your power function - the local int i will mask the member variable i.

oh my…

Thank you very much, such a fool I am …

Please delete this topic :unsure: