mirror of
https://github.com/davisking/dlib.git
synced 2024-11-01 10:14:53 +08:00
Made bindings more robust
--HG-- extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%403825
This commit is contained in:
parent
9446d98dbc
commit
76981f1e57
@ -222,6 +222,10 @@ namespace dlib
|
|||||||
u.set_size(m, std::min(m,n));
|
u.set_size(m, std::min(m,n));
|
||||||
vt.set_size(std::min(m,n), n);
|
vt.set_size(std::min(m,n), n);
|
||||||
}
|
}
|
||||||
|
else if (jobz == 'O')
|
||||||
|
{
|
||||||
|
DLIB_CASSERT(false, "jobz == 'O' not supported");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u.set_size(1,1);
|
u.set_size(1,1);
|
||||||
@ -290,6 +294,10 @@ namespace dlib
|
|||||||
u.set_size(std::min(m,n), m);
|
u.set_size(std::min(m,n), m);
|
||||||
vt.set_size(n, std::min(m,n));
|
vt.set_size(n, std::min(m,n));
|
||||||
}
|
}
|
||||||
|
else if (jobz == 'O')
|
||||||
|
{
|
||||||
|
DLIB_CASSERT(false, "jobz == 'O' not supported");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u.set_size(1,1);
|
u.set_size(1,1);
|
||||||
|
@ -214,6 +214,13 @@ namespace dlib
|
|||||||
else
|
else
|
||||||
vt.set_size(1,1);
|
vt.set_size(1,1);
|
||||||
|
|
||||||
|
|
||||||
|
if (jobu == 'O' || jobvt == 'O')
|
||||||
|
{
|
||||||
|
DLIB_CASSERT(false, "job == 'O' not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// figure out how big the workspace needs to be.
|
// figure out how big the workspace needs to be.
|
||||||
T work_size = 1;
|
T work_size = 1;
|
||||||
int info = binding::gesvd(jobu, jobvt, a.nr(), a.nc(), &a(0,0), a.nr(),
|
int info = binding::gesvd(jobu, jobvt, a.nr(), a.nc(), &a(0,0), a.nr(),
|
||||||
@ -243,8 +250,8 @@ namespace dlib
|
|||||||
typename MM
|
typename MM
|
||||||
>
|
>
|
||||||
int gesvd (
|
int gesvd (
|
||||||
const char jobu,
|
char jobu,
|
||||||
const char jobvt,
|
char jobvt,
|
||||||
matrix<T,NR1,NC1,MM,row_major_layout>& a,
|
matrix<T,NR1,NC1,MM,row_major_layout>& a,
|
||||||
matrix<T,NR2,NC2,MM,row_major_layout>& s,
|
matrix<T,NR2,NC2,MM,row_major_layout>& s,
|
||||||
matrix<T,NR3,NC3,MM,row_major_layout>& u_,
|
matrix<T,NR3,NC3,MM,row_major_layout>& u_,
|
||||||
@ -256,6 +263,7 @@ namespace dlib
|
|||||||
// Row major order matrices are transposed from LAPACK's point of view.
|
// Row major order matrices are transposed from LAPACK's point of view.
|
||||||
matrix<T,NR3,NC3,MM,row_major_layout>& u = vt_;
|
matrix<T,NR3,NC3,MM,row_major_layout>& u = vt_;
|
||||||
matrix<T,NR4,NC4,MM,row_major_layout>& vt = u_;
|
matrix<T,NR4,NC4,MM,row_major_layout>& vt = u_;
|
||||||
|
std::swap(jobu, jobvt);
|
||||||
|
|
||||||
const long m = a.nc();
|
const long m = a.nc();
|
||||||
const long n = a.nr();
|
const long n = a.nr();
|
||||||
@ -275,6 +283,12 @@ namespace dlib
|
|||||||
else
|
else
|
||||||
vt.set_size(1,1);
|
vt.set_size(1,1);
|
||||||
|
|
||||||
|
if (jobu == 'O' || jobvt == 'O')
|
||||||
|
{
|
||||||
|
DLIB_CASSERT(false, "job == 'O' not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// figure out how big the workspace needs to be.
|
// figure out how big the workspace needs to be.
|
||||||
T work_size = 1;
|
T work_size = 1;
|
||||||
int info = binding::gesvd(jobu, jobvt, m, n, &a(0,0), a.nc(),
|
int info = binding::gesvd(jobu, jobvt, m, n, &a(0,0), a.nc(),
|
||||||
|
Loading…
Reference in New Issue
Block a user