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

Function svdInPlace

src/backend/opencl/cpu/cpu_svd.cpp:57–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

55
56template<typename T, typename Tr>
57void svdInPlace(Array<Tr> &s, Array<T> &u, Array<T> &vt, Array<T> &in) {
58 dim4 iDims = in.dims();
59 int M = iDims[0];
60 int N = iDims[1];
61
62 mapped_ptr<Tr> sPtr = s.getMappedPtr();
63 mapped_ptr<T> uPtr = u.getMappedPtr();
64 mapped_ptr<T> vPtr = vt.getMappedPtr();
65 mapped_ptr<T> iPtr = in.getMappedPtr();
66
67#if defined(USE_MKL) || defined(__APPLE__)
68 svd_func<T, Tr>()(AF_LAPACK_COL_MAJOR, 'A', M, N, iPtr.get(),
69 in.strides()[1], sPtr.get(), uPtr.get(), u.strides()[1],
70 vPtr.get(), vt.strides()[1]);
71#else
72 std::vector<Tr> superb(std::min(M, N));
73 svd_func<T, Tr>()(AF_LAPACK_COL_MAJOR, 'A', 'A', M, N, iPtr.get(),
74 in.strides()[1], sPtr.get(), uPtr.get(), u.strides()[1],
75 vPtr.get(), vt.strides()[1], &superb[0]);
76#endif
77}
78
79template<typename T, typename Tr>
80void svd(Array<Tr> &s, Array<T> &u, Array<T> &vt, const Array<T> &in) {

Callers 1

svdFunction · 0.70

Calls 5

minFunction · 0.50
dimsMethod · 0.45
getMappedPtrMethod · 0.45
getMethod · 0.45
stridesMethod · 0.45

Tested by

no test coverage detected