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

Function af_diag_create

src/api/c/data.cpp:270–308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270af_err af_diag_create(af_array *out, const af_array in, const int num) {
271 try {
272 const ArrayInfo &in_info = getInfo(in);
273 DIM_ASSERT(1, in_info.ndims() <= 2);
274 af_dtype type = in_info.getType();
275
276 af_array result;
277
278 if (in_info.dims()[0] == 0) {
279 return af_create_handle(out, 0, nullptr, type);
280 }
281
282 switch (type) {
283 case f32: result = diagCreate<float>(in, num); break;
284 case c32: result = diagCreate<cfloat>(in, num); break;
285 case f64: result = diagCreate<double>(in, num); break;
286 case c64: result = diagCreate<cdouble>(in, num); break;
287 case s32: result = diagCreate<int>(in, num); break;
288 case u32: result = diagCreate<uint>(in, num); break;
289 case s64: result = diagCreate<intl>(in, num); break;
290 case u64: result = diagCreate<uintl>(in, num); break;
291 case s16: result = diagCreate<short>(in, num); break;
292 case u16: result = diagCreate<ushort>(in, num); break;
293 case s8: result = diagCreate<schar>(in, num); break;
294 case u8:
295 result = diagCreate<uchar>(in, num);
296 break;
297 // Removed because of bool type. Functions implementations
298 // exist.
299 case b8: result = diagCreate<char>(in, num); break;
300 case f16: result = diagCreate<half>(in, num); break;
301 default: TYPE_ERROR(1, type);
302 }
303
304 std::swap(*out, result);
305 }
306 CATCHALL;
307 return AF_SUCCESS;
308}
309
310af_err af_diag_extract(af_array *out, const af_array in, const int num) {
311 try {

Callers 1

diagFunction · 0.50

Calls 5

swapFunction · 0.85
af_create_handleFunction · 0.70
ndimsMethod · 0.45
getTypeMethod · 0.45
dimsMethod · 0.45

Tested by

no test coverage detected