-type array() :: reference().
-type dtype() :: atom().
-type shape() :: [integer()].
-spec abs(array()) -> {ok, array()} | {error, term()}.
-spec add(array(), array()) -> {ok, array()} | {error, term()}.
-spec all(array()) -> {ok, array()} | {error, term()}.
-spec all(array(), list()) -> {ok, array()} | {error, term()}.
-spec all(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec allclose(array(), array()) -> {ok, boolean()} | {error, term()}.
-spec allclose(array(), array(), float()) -> {ok, boolean()} | {error, term()}.
-spec any(array()) -> {ok, array()} | {error, term()}.
-spec any(array(), list()) -> {ok, array()} | {error, term()}.
-spec any(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec arange(number()) -> {ok, array()} | {error, term()}.
-spec arange(number(), number()) -> {ok, array()} | {error, term()}.
-spec arange(number(), number(), number()) -> {ok, array()} | {error, term()}.
-spec arccos(array()) -> {ok, array()} | {error, term()}.
-spec arccosh(array()) -> {ok, array()} | {error, term()}.
-spec arcsin(array()) -> {ok, array()} | {error, term()}.
-spec arcsinh(array()) -> {ok, array()} | {error, term()}.
-spec arctan2(array(), array()) -> {ok, array()} | {error, term()}.
-spec arctan(array()) -> {ok, array()} | {error, term()}.
-spec arctanh(array()) -> {ok, array()} | {error, term()}.
-spec argmax(array()) -> {ok, array()} | {error, term()}.
-spec argmax(array(), integer()) -> {ok, array()} | {error, term()}.
-spec argmin(array()) -> {ok, array()} | {error, term()}.
-spec argmin(array(), integer()) -> {ok, array()} | {error, term()}.
-spec argsort(array()) -> {ok, array()} | {error, term()}.
-spec argsort(array(), integer()) -> {ok, array()} | {error, term()}.
-spec array(term()) -> {ok, array()} | {error, term()}.
-spec array(term(), dtype()) -> {ok, array()} | {error, term()}.
-spec array_equal(array(), array()) -> {ok, boolean()} | {error, term()}.
-spec bitwise_and(array(), array()) -> {ok, array()} | {error, term()}.
-spec bitwise_invert(array()) -> {ok, array()} | {error, term()}.
-spec bitwise_or(array(), array()) -> {ok, array()} | {error, term()}.
-spec bitwise_xor(array(), array()) -> {ok, array()} | {error, term()}.
-spec broadcast_arrays(list()) -> {ok, list()} | {error, term()}.
-spec broadcast_to(array(), shape()) -> {ok, array()} | {error, term()}.
-spec ceil(array()) -> {ok, array()} | {error, term()}.
-spec clip(array(), number(), number()) -> {ok, array()} | {error, term()}.
-spec concatenate(list()) -> {ok, array()} | {error, term()}.
-spec concatenate(list(), integer()) -> {ok, array()} | {error, term()}.
-spec conv1d(array(), array()) -> {ok, array()} | {error, term()}.
-spec conv1d(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec conv2d(array(), array()) -> {ok, array()} | {error, term()}.
-spec conv2d(array(), array(), list()) -> {ok, array()} | {error, term()}.
-spec cos(array()) -> {ok, array()} | {error, term()}.
-spec cosh(array()) -> {ok, array()} | {error, term()}.
-spec cummax(array()) -> {ok, array()} | {error, term()}.
-spec cummax(array(), integer()) -> {ok, array()} | {error, term()}.
-spec cummin(array()) -> {ok, array()} | {error, term()}.
-spec cummin(array(), integer()) -> {ok, array()} | {error, term()}.
-spec cumprod(array()) -> {ok, array()} | {error, term()}.
-spec cumprod(array(), integer()) -> {ok, array()} | {error, term()}.
-spec cumsum(array()) -> {ok, array()} | {error, term()}.
-spec cumsum(array(), integer()) -> {ok, array()} | {error, term()}.
-spec digamma(array()) -> {ok, array()} | {error, term()}.
-spec divide(array(), array()) -> {ok, array()} | {error, term()}.
-spec divmod(array(), array()) -> {ok, {array(), array()}} | {error, term()}.
-spec dot(array(), array()) -> {ok, array()} | {error, term()}.
-spec dtype(array()) -> {ok, string()} | {error, term()}.
-spec equal(array(), array()) -> {ok, array()} | {error, term()}.
-spec erf(array()) -> {ok, array()} | {error, term()}.
-spec erfc(array()) -> {ok, array()} | {error, term()}.
-spec eval(array()) -> {ok, array()} | {error, term()}.
-spec exp(array()) -> {ok, array()} | {error, term()}.
-spec expand_dims(array(), integer()) -> {ok, array()} | {error, term()}.
-spec expm1(array()) -> {ok, array()} | {error, term()}.
-spec eye(integer()) -> {ok, array()} | {error, term()}.
-spec eye(integer(), integer()) -> {ok, array()} | {error, term()}.
-spec eye(integer(), integer(), dtype()) -> {ok, array()} | {error, term()}.
-spec flatten(array()) -> {ok, array()} | {error, term()}.
-spec flatten(array(), integer()) -> {ok, array()} | {error, term()}.
-spec flatten(array(), integer(), integer()) -> {ok, array()} | {error, term()}.
-spec floor(array()) -> {ok, array()} | {error, term()}.
-spec floor_divide(array(), array()) -> {ok, array()} | {error, term()}.
-spec full(shape(), number()) -> {ok, array()} | {error, term()}.
-spec full(shape(), number(), dtype()) -> {ok, array()} | {error, term()}.
-spec gamma(array()) -> {ok, array()} | {error, term()}.
-spec greater(array(), array()) -> {ok, array()} | {error, term()}.
-spec greater_equal(array(), array()) -> {ok, array()} | {error, term()}.
-spec inner(array(), array()) -> {ok, array()} | {error, term()}.
-spec isfinite(array()) -> {ok, array()} | {error, term()}.
-spec isinf(array()) -> {ok, array()} | {error, term()}.
-spec isnan(array()) -> {ok, array()} | {error, term()}.
-spec left_shift(array(), array()) -> {ok, array()} | {error, term()}.
-spec less(array(), array()) -> {ok, array()} | {error, term()}.
-spec less_equal(array(), array()) -> {ok, array()} | {error, term()}.
-spec lgamma(array()) -> {ok, array()} | {error, term()}.
-spec linspace(number(), number()) -> {ok, array()} | {error, term()}.
-spec linspace(number(), number(), integer()) -> {ok, array()} | {error, term()}.
-spec linspace(number(), number(), integer(), dtype()) -> {ok, array()} | {error, term()}.
-spec log1p(array()) -> {ok, array()} | {error, term()}.
-spec log2(array()) -> {ok, array()} | {error, term()}.
-spec log10(array()) -> {ok, array()} | {error, term()}.
-spec log(array()) -> {ok, array()} | {error, term()}.
-spec logaddexp(array(), array()) -> {ok, array()} | {error, term()}.
-spec loggamma(array()) -> {ok, array()} | {error, term()}.
-spec logical_and(array(), array()) -> {ok, array()} | {error, term()}.
-spec logical_not(array()) -> {ok, array()} | {error, term()}.
-spec logical_or(array(), array()) -> {ok, array()} | {error, term()}.
-spec matmul(array(), array()) -> {ok, array()} | {error, term()}.
-spec max(array()) -> {ok, array()} | {error, term()}.
-spec max(array(), list()) -> {ok, array()} | {error, term()}.
-spec max(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec maximum(array(), array()) -> {ok, array()} | {error, term()}.
-spec mean(array()) -> {ok, array()} | {error, term()}.
-spec mean(array(), list()) -> {ok, array()} | {error, term()}.
-spec mean(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec min(array()) -> {ok, array()} | {error, term()}.
-spec min(array(), list()) -> {ok, array()} | {error, term()}.
-spec min(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec minimum(array(), array()) -> {ok, array()} | {error, term()}.
-spec moveaxis(array(), integer(), integer()) -> {ok, array()} | {error, term()}.
-spec multiply(array(), array()) -> {ok, array()} | {error, term()}.
-spec ndim(array()) -> {ok, integer()} | {error, term()}.
-spec negative(array()) -> {ok, array()} | {error, term()}.
-spec not_equal(array(), array()) -> {ok, array()} | {error, term()}.
-spec ones(shape()) -> {ok, array()} | {error, term()}.
-spec ones(shape(), dtype()) -> {ok, array()} | {error, term()}.
-spec outer(array(), array()) -> {ok, array()} | {error, term()}.
-spec power(array(), array()) -> {ok, array()} | {error, term()}.
-spec prod(array()) -> {ok, array()} | {error, term()}.
-spec prod(array(), list()) -> {ok, array()} | {error, term()}.
-spec prod(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec random_normal(shape()) -> {ok, array()} | {error, term()}.
-spec random_normal(shape(), dtype()) -> {ok, array()} | {error, term()}.
-spec random_randint(number(), shape()) -> {ok, array()} | {error, term()}.
-spec random_randint(number(), number(), shape()) -> {ok, array()} | {error, term()}.
-spec random_seed(integer()) -> ok | {error, term()}.
-spec random_uniform(shape()) -> {ok, array()} | {error, term()}.
-spec random_uniform(shape(), dtype()) -> {ok, array()} | {error, term()}.
-spec reciprocal(array()) -> {ok, array()} | {error, term()}.
-spec remainder(array(), array()) -> {ok, array()} | {error, term()}.
-spec reshape(array(), shape()) -> {ok, array()} | {error, term()}.
-spec right_shift(array(), array()) -> {ok, array()} | {error, term()}.
-spec roll(array(), integer()) -> {ok, array()} | {error, term()}.
-spec roll(array(), integer(), list()) -> {ok, array()} | {error, term()}.
-spec round(array()) -> {ok, array()} | {error, term()}.
-spec round(array(), integer()) -> {ok, array()} | {error, term()}.
-spec rsqrt(array()) -> {ok, array()} | {error, term()}.
-spec set_default_device(atom()) -> ok | {error, term()}.
-spec shape(array()) -> {ok, shape()} | {error, term()}.
-spec sigmoid(array()) -> {ok, array()} | {error, term()}.
-spec sign(array()) -> {ok, array()} | {error, term()}.
-spec sin(array()) -> {ok, array()} | {error, term()}.
-spec sinh(array()) -> {ok, array()} | {error, term()}.
-spec size(array()) -> {ok, integer()} | {error, term()}.
-spec softmax(array()) -> {ok, array()} | {error, term()}.
-spec softmax(array(), integer()) -> {ok, array()} | {error, term()}.
-spec sort(array()) -> {ok, array()} | {error, term()}.
-spec sort(array(), integer()) -> {ok, array()} | {error, term()}.
-spec split(array(), list()) -> {ok, list()} | {error, term()}.
-spec split(array(), list(), integer()) -> {ok, list()} | {error, term()}.
-spec sqrt(array()) -> {ok, array()} | {error, term()}.
-spec square(array()) -> {ok, array()} | {error, term()}.
-spec squeeze(array()) -> {ok, array()} | {error, term()}.
-spec squeeze(array(), list()) -> {ok, array()} | {error, term()}.
-spec stack(list()) -> {ok, array()} | {error, term()}.
-spec stack(list(), integer()) -> {ok, array()} | {error, term()}.
-spec std(array()) -> {ok, array()} | {error, term()}.
-spec std(array(), list()) -> {ok, array()} | {error, term()}.
-spec std(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec subtract(array(), array()) -> {ok, array()} | {error, term()}.
-spec sum(array()) -> {ok, array()} | {error, term()}.
-spec sum(array(), list()) -> {ok, array()} | {error, term()}.
-spec sum(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec swapaxes(array(), integer(), integer()) -> {ok, array()} | {error, term()}.
-spec take(array(), array()) -> {ok, array()} | {error, term()}.
-spec take(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec tan(array()) -> {ok, array()} | {error, term()}.
-spec tanh(array()) -> {ok, array()} | {error, term()}.
-spec tensordot(array(), array()) -> {ok, array()} | {error, term()}.
-spec tensordot(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec test_basic() -> ok | {error, term()}.
-spec to_list(array()) -> {ok, list()} | {error, term()}.
-spec topk(array(), integer()) -> {ok, array()} | {error, term()}.
-spec topk(array(), integer(), integer()) -> {ok, array()} | {error, term()}.
-spec transpose(array()) -> {ok, array()} | {error, term()}.
-spec transpose(array(), list()) -> {ok, array()} | {error, term()}.
-spec use_cpu() -> ok | {error, term()}.
-spec use_gpu() -> ok | {error, term()}.
-spec var(array()) -> {ok, array()} | {error, term()}.
-spec var(array(), list()) -> {ok, array()} | {error, term()}.
-spec var(array(), list(), boolean()) -> {ok, array()} | {error, term()}.
-spec version() -> {ok, string()} | {error, term()}.
-spec where(array(), array(), array()) -> {ok, array()} | {error, term()}.
-spec zeros(shape()) -> {ok, array()} | {error, term()}.
-spec zeros(shape(), dtype()) -> {ok, array()} | {error, term()}.