| 85 | // However, template specialization is not allowed |
| 86 | template<typename T> |
| 87 | Array<T> sparseConvertCOOToDense(const SparseArray<T> &in) { |
| 88 | in.eval(); |
| 89 | |
| 90 | Array<T> dense = createValueArray<T>(in.dims(), scalar<T>(0)); |
| 91 | dense.eval(); |
| 92 | |
| 93 | const Array<T> values = in.getValues(); |
| 94 | const Array<int> rowIdx = in.getRowIdx(); |
| 95 | const Array<int> colIdx = in.getColIdx(); |
| 96 | |
| 97 | kernel::coo2dense<T>(dense, values, rowIdx, colIdx); |
| 98 | |
| 99 | return dense; |
| 100 | } |
| 101 | |
| 102 | template<typename T, af_storage stype> |
| 103 | Array<T> sparseConvertStorageToDense(const SparseArray<T> &in_) { |