Reading the specification OpenCL i got an idea that instead of complex numbers, you can use two-dimensional vector. But i don’t understand, why i can’t multiply them? Why i should use somethin like this:

float2 mul_1(float2 a,float2 b)
{
float2 x;
x.even = a.even*b.even-a.odd*b.odd;
x.odd = a.even*b.odd+a.odd*b.even;
return x;
} /*mul_1 not my function, so i not understand how it work*/
float2 x=(float2)(10, 20);
x=mul_1(x, x);

Well … because they’re not complex numbers, they are vectors? The last example means element by element multiplication, and to change it to ‘complex multiply’ would break every bit of existing code (and make no sense).

“/mul_1 not my function, so i not understand how it work/”

Well … multiplication of complex numbers is a fairly straightforward bit of complex number arithmetic, and that comment suggests you don’t understand it. Wikipeadia has a nice page about them: