| 562 | }; |
| 563 | |
| 564 | af_err af_not(af_array *out, const af_array in) { |
| 565 | try { |
| 566 | af_array tmp; |
| 567 | const ArrayInfo &in_info = getInfo(in); |
| 568 | if (in_info.ndims() == 0) { return af_retain_array(out, in); } |
| 569 | |
| 570 | AF_CHECK(af_constant(&tmp, 0, in_info.ndims(), in_info.dims().get(), |
| 571 | in_info.getType())); |
| 572 | |
| 573 | AF_CHECK(af_eq(out, in, tmp, false)); |
| 574 | |
| 575 | AF_CHECK(af_release_array(tmp)); |
| 576 | } |
| 577 | CATCHALL; |
| 578 | |
| 579 | return AF_SUCCESS; |
| 580 | } |
| 581 | |
| 582 | template<typename T> |
| 583 | static inline af_array bitOpNot(const af_array in) { |