Dear support team,
I met some problem when trying to run the ?unmbr() function from MKL, the bidiagonal terms could be calculated correctly, but I was unable to mutiply them back. Could you help me with it?
Thanks a lot!
float x_real[6 * 4] = { -0.57, -1.28, -0.39, 0.25, -1.93, 1.08, -0.31, -2.14, 2.30, 0.24, 0.40, -0.35, 1.93, 0.64, -0.66, 0.08, 0.15, 0.30, 0.15, -2.13, 0.02, 1.03, -1.43, 0.50}; int length[2] = { 4, 6 }; P = (MKL_Complex8*)MKL_malloc(sizeof(MKL_Complex8)*6*6, 32; Q = (MKL_Complex8*)MKL_malloc(sizeof(MKL_Complex8)*6*6, 32); TP = (MKL_Complex8*)MKL_malloc(sizeof(MKL_Complex8*6, 32); TQ = (MKL_Complex8*)MKL_malloc(sizeof(MKL_Complex8*6, 32); for (int j = 0; j < length[0] * length[1]; j++) { Spec[j].real = x_real[j]; Spec[j].imag = 0; } LAPACKE_cgebrd(LAPACK_ROW_MAJOR, length[1], length[0], Spec, length[0], s1, s2, TP, TQ); //here is correct for (j = 0; j < length[1] * length[0] - 1; j++) { P[j].real = Spec[j].real; P[j].imag = Spec[j].imag; Q[j].real = Spec[j].real; Q[j].imag = Spec[j].imag; } LAPACKE_cunmbr(LAPACK_ROW_MAJOR, 'Q', 'L', 'N', length[1], length[0], length[0], Q, length[0], TQ, S, length[1]); LAPACKE_cunmbr(LAPACK_ROW_MAJOR, 'P', 'R', 'C', length[1], length[0], length[1], P, length[0], TP, S, length[1]);