Array<T> cholesky(int *info, const Array<T> &in, const bool is_upper) { in.eval(); Array<T> out = copyArray<T>(in); *info = cholesky_inplace(out, is_upper); if (is_upper) triangle<T, true, false>(out, out); else triangle<T, false, false>(out, out); return out; }
Array<T> cholesky(int *info, const Array<T> &in, const bool is_upper) { if(OpenCLCPUOffload()) { return cpu::cholesky(info, in, is_upper); } Array<T> out = copyArray<T>(in); *info = cholesky_inplace(out, is_upper); if (is_upper) triangle<T, true , false>(out, out); else triangle<T, false, false>(out, out); return out; }
Array<T> cholesky(int *info, const Array<T> &in, const bool is_upper) { try { Array<T> out = copyArray<T>(in); *info = cholesky_inplace(out, is_upper); if (is_upper) triangle<T, true , false>(out, out); else triangle<T, false, false>(out, out); return out; } catch (cl::Error &err) { CL_TO_AF_ERROR(err); } }