const int colsB
)
{
- int rowR = get_global_id(0);
- int colR = get_global_id(1);
-
- int rowA = rowR / rowsB;
- int colA = colR / colsB;
- int rowB = rowR % rowsB;
- int colB = colR % colsB;
-
- float r1 = ptrA[((colA * 2) + 1) + ((rowA * 2) + 1) * (colsA * 2)];
- float i1 = ptrA[(colA * 2) + ((rowA * 2) + 1) * (colsA * 2)];
- float r2 = ptrB[((colB * 2) + 1) + ((rowB * 2) + 1) * (colsB * 2)];
- float i2 = ptrB[(colB * 2) + ((rowB * 2) + 1) * (colsB * 2)];
-
- float first = r1 * r2; //real
- float outer = r1 * i2; //imaginary
- float inner = i1 * r2; //imaginary
- float last = -(i1 * i2); //real
- r1 = first + last;
- i1 = outer + inner;
-
- ptrR[(colR * 2) + (rowR * 2) * (colsR * 2)] = r1;
- ptrR[((colR * 2) + 1) + (rowR * 2) * (colsR * 2)] = -i1;
- ptrR[(colR * 2) + ((rowR * 2) + 1) * (colsR * 2)] = i1;
- ptrR[((colR * 2) + 1) + ((rowR * 2) + 1) * (colsR * 2)] = r1;
}