-type array() :: reference().
-spec cholesky(array()) -> {ok, array()} | {error, term()}.
-spec condition_number(array()) -> {ok, array()} | {error, term()}.
-spec condition_number(array(), atom() | number()) -> {ok, array()} | {error, term()}.
-spec cross(array(), array()) -> {ok, array()} | {error, term()}.
-spec cross(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec det(array()) -> {ok, array()} | {error, term()}.
-spec diagonal(array()) -> {ok, array()} | {error, term()}.
-spec diagonal(array(), integer()) -> {ok, array()} | {error, term()}.
-spec dot(array(), array()) -> {ok, array()} | {error, term()}.
-spec eig(array()) -> {ok, {array(), array()}} | {error, term()}.
-spec eigh(array()) -> {ok, {array(), array()}} | {error, term()}.
-spec eigvals(array()) -> {ok, array()} | {error, term()}.
-spec eigvalsh(array()) -> {ok, array()} | {error, term()}.
-spec inner(array(), array()) -> {ok, array()} | {error, term()}.
-spec inv(array()) -> {ok, array()} | {error, term()}.
-spec lstsq(array(), array()) -> {ok, {array(), array(), integer(), array()}} | {error, term()}.
-spec lu(array()) -> {ok, {array(), array(), array()}} | {error, term()}.
-spec lu(array(), boolean()) -> {ok, {array(), array(), array()}} | {error, term()}.
-spec matmul(array(), array()) -> {ok, array()} | {error, term()}.
-spec matrix_power(array(), integer()) -> {ok, array()} | {error, term()}.
-spec matrix_rank(array()) -> {ok, array()} | {error, term()}.
-spec matrix_rank(array(), number()) -> {ok, array()} | {error, term()}.
-spec norm(array()) -> {ok, array()} | {error, term()}.
-spec norm(array(), atom() | number()) -> {ok, array()} | {error, term()}.
-spec norm(array(), atom() | number(), [integer()]) -> {ok, array()} | {error, term()}.
-spec outer(array(), array()) -> {ok, array()} | {error, term()}.
-spec pinv(array()) -> {ok, array()} | {error, term()}.
-spec pinv(array(), number()) -> {ok, array()} | {error, term()}.
-spec qr(array()) -> {ok, {array(), array()}} | {error, term()}.
-spec qr(array(), atom()) -> {ok, {array(), array()}} | {error, term()}.
-spec slogdet(array()) -> {ok, {array(), array()}} | {error, term()}.
-spec solve(array(), array()) -> {ok, array()} | {error, term()}.
-spec svd(array()) -> {ok, {array(), array(), array()}} | {error, term()}.
-spec svd(array(), boolean()) -> {ok, {array(), array(), array()}} | {error, term()}.
-spec tensordot(array(), array()) -> {ok, array()} | {error, term()}.
-spec tensordot(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec trace(array()) -> {ok, array()} | {error, term()}.