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