MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / svdInPlace

Function svdInPlace

src/backend/cpu/svd.cpp:62–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60
61template<typename T, typename Tr>
62void svdInPlace(Array<Tr> &s, Array<T> &u, Array<T> &vt, Array<T> &in) {
63 auto func = [=](Param<Tr> s, Param<T> u, Param<T> vt, Param<T> in) {
64 dim4 iDims = in.dims();
65 int M = iDims[0];
66 int N = iDims[1];
67
68#if defined(USE_MKL) || defined(__APPLE__)
69 svd_func<T, Tr>()(AF_LAPACK_COL_MAJOR, 'A', M, N, in.get(),
70 in.strides(1), s.get(), u.get(), u.strides(1),
71 vt.get(), vt.strides(1));
72#else
73 std::vector<Tr> superb(std::min(M, N));
74 svd_func<T, Tr>()(AF_LAPACK_COL_MAJOR, 'A', 'A', M, N, in.get(),
75 in.strides(1), s.get(), u.get(), u.strides(1),
76 vt.get(), vt.strides(1), &superb[0]);
77#endif
78 };
79 getQueue().enqueue(func, s, u, vt, in);
80}
81
82template<typename T, typename Tr>
83void svd(Array<Tr> &s, Array<T> &u, Array<T> &vt, const Array<T> &in) {

Callers 1

svdFunction · 0.70

Calls 6

minFunction · 0.70
getQueueFunction · 0.50
dimsMethod · 0.45
getMethod · 0.45
stridesMethod · 0.45
enqueueMethod · 0.45

Tested by

no test coverage detected