Skip to content

Commit 3bd4cc7

Browse files
kjbartelcdrnet
authored andcommitted
Changed to use reinterpret_cast for GCC when casting lapack_complex_float / lapack_complex_double to float* / double*.
1 parent 16851ac commit 3bd4cc7

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/NativeProviders/OpenBLAS/lapack.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ inline lapack_int qr_solve_factored(lapack_int m, lapack_int n, lapack_int bn, T
209209
return info;
210210
}
211211

212-
template<typename T, typename UNMQR, typename TRSM>
212+
template<typename T, typename R, typename UNMQR, typename TRSM>
213213
inline lapack_int complex_qr_solve_factored(lapack_int m, lapack_int n, lapack_int bn, T r[], T b[], T tau[], T x[], T work[], lapack_int len, UNMQR unmqr, TRSM trsm)
214214
{
215215
T* clone_b = Clone(m, bn, b);
@@ -218,7 +218,7 @@ inline lapack_int complex_qr_solve_factored(lapack_int m, lapack_int n, lapack_i
218218
lapack_int info = 0;
219219
unmqr(&side, &tran, &m, &bn, &n, r, &m, tau, clone_b, &m, work, &len, &info);
220220
T one = { 1.0f, 0.0f };
221-
trsm(CblasColMajor, CblasLeft, CblasUpper, CblasNoTrans, CblasNonUnit, n, bn, &(one.real), &(r->real), m, &(clone_b->real), m);
221+
trsm(CblasColMajor, CblasLeft, CblasUpper, CblasNoTrans, CblasNonUnit, n, bn, reinterpret_cast<R*>(&one), reinterpret_cast<R*>(r), m, reinterpret_cast<R*>(clone_b), m);
222222
copyBtoX(m, n, bn, clone_b, x);
223223
delete[] clone_b;
224224
return info;
@@ -354,14 +354,14 @@ inline lapack_int sym_eigen_factor(lapack_int n, T a[], T vectors[], lapack_comp
354354
delete[] w;
355355
return info;
356356
}
357-
357+
358358
memcpy(vectors, clone_a, n*n*sizeof(T));
359359

360360
for (lapack_int index = 0; index < n; ++index)
361361
{
362362
values[index] = lapack_complex_double(w[index]);
363363
}
364-
364+
365365
for (lapack_int j = 0; j < n; ++j)
366366
{
367367
lapack_int jn = j*n;
@@ -634,12 +634,12 @@ extern "C" {
634634

635635
DLLEXPORT lapack_int c_qr_solve_factored(lapack_int m, lapack_int n, lapack_int bn, lapack_complex_float r[], lapack_complex_float b[], lapack_complex_float tau[], lapack_complex_float x[], lapack_complex_float work[], lapack_int len)
636636
{
637-
return complex_qr_solve_factored(m, n, bn, r, b, tau, x, work, len, LAPACK_cunmqr, cblas_ctrsm);
637+
return complex_qr_solve_factored<lapack_complex_float, float>(m, n, bn, r, b, tau, x, work, len, LAPACK_cunmqr, cblas_ctrsm);
638638
}
639639

640640
DLLEXPORT lapack_int z_qr_solve_factored(lapack_int m, lapack_int n, lapack_int bn, lapack_complex_double r[], lapack_complex_double b[], lapack_complex_double tau[], lapack_complex_double x[], lapack_complex_double work[], lapack_int len)
641641
{
642-
return complex_qr_solve_factored(m, n, bn, r, b, tau, x, work, len, LAPACK_zunmqr, cblas_ztrsm);
642+
return complex_qr_solve_factored<lapack_complex_double, double>(m, n, bn, r, b, tau, x, work, len, LAPACK_zunmqr, cblas_ztrsm);
643643
}
644644

645645
DLLEXPORT lapack_int s_svd_factor(bool compute_vectors, lapack_int m, lapack_int n, float a[], float s[], float u[], float v[], float work[], lapack_int len)
@@ -697,7 +697,7 @@ extern "C" {
697697
return eigen_complex_factor(n, a, vectors, values, d, LAPACKE_cgees, LAPACKE_ctrevc);
698698
}
699699
}
700-
700+
701701
DLLEXPORT lapack_int z_eigen(bool isSymmetric, lapack_int n, lapack_complex_double a[], lapack_complex_double vectors[], lapack_complex_double values[], lapack_complex_double d[])
702702
{
703703
if (isSymmetric)

0 commit comments

Comments
 (0)