-- generated by using spec/Declarations.yaml

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}

module Torch.Internal.Unmanaged.Native.Native15 where


import Foreign.C.String
import Foreign.C.Types
import Foreign
import Torch.Internal.Type

import qualified Language.C.Inline.Cpp as C
import qualified Language.C.Inline.Cpp.Unsafe as C
import qualified Language.C.Inline.Context as C
import qualified Language.C.Types as C

C.context $ C.cppCtx <> mempty { C.ctxTypesTable = typeTable }

C.include "<vector>"
C.include "<ATen/Tensor.h>"
C.include "<ATen/Functions.h>"


_det_lu_based_helper_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_det_lu_based_helper_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_det_lu_based_helper_t Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_det_lu_based_helper(
    *$(at::Tensor* _self)));
  }|]

_det_lu_based_helper_backward_helper_ttttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
_det_lu_based_helper_backward_helper_ttttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr Tensor)
_det_lu_based_helper_backward_helper_ttttt Ptr Tensor
_det_grad Ptr Tensor
_det Ptr Tensor
_self Ptr Tensor
_lu Ptr Tensor
_pivs =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_det_lu_based_helper_backward_helper(
    *$(at::Tensor* _det_grad)
  , *$(at::Tensor* _det)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _lu)
  , *$(at::Tensor* _pivs)));
  }|]

linalg_lstsq_ttds
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)))
linalg_lstsq_ttds :: Ptr Tensor
-> Ptr Tensor
-> CDouble
-> Ptr StdString
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)))
linalg_lstsq_ttds Ptr Tensor
_self Ptr Tensor
_b CDouble
_rcond Ptr StdString
_driver =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>(at::linalg_lstsq(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _b)
  , $(double _rcond)
  , *$(std::string* _driver)));
  }|]

linalg_lstsq_ttd
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)))
linalg_lstsq_ttd :: Ptr Tensor
-> Ptr Tensor
-> CDouble
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)))
linalg_lstsq_ttd Ptr Tensor
_self Ptr Tensor
_b CDouble
_rcond =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>(at::linalg_lstsq(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _b)
  , $(double _rcond)));
  }|]

linalg_lstsq_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)))
linalg_lstsq_tt :: Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)))
linalg_lstsq_tt Ptr Tensor
_self Ptr Tensor
_b =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>(at::linalg_lstsq(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _b)));
  }|]

linalg_lstsq_out_ttttttds
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)))
linalg_lstsq_out_ttttttds :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CDouble
-> Ptr StdString
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)))
linalg_lstsq_out_ttttttds Ptr Tensor
_solution Ptr Tensor
_residuals Ptr Tensor
_rank Ptr Tensor
_singular_values Ptr Tensor
_self Ptr Tensor
_b CDouble
_rcond Ptr StdString
_driver =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>(at::linalg_lstsq_out(
    *$(at::Tensor* _solution)
  , *$(at::Tensor* _residuals)
  , *$(at::Tensor* _rank)
  , *$(at::Tensor* _singular_values)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _b)
  , $(double _rcond)
  , *$(std::string* _driver)));
  }|]

linalg_lstsq_out_ttttttd
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)))
linalg_lstsq_out_ttttttd :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CDouble
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)))
linalg_lstsq_out_ttttttd Ptr Tensor
_solution Ptr Tensor
_residuals Ptr Tensor
_rank Ptr Tensor
_singular_values Ptr Tensor
_self Ptr Tensor
_b CDouble
_rcond =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>(at::linalg_lstsq_out(
    *$(at::Tensor* _solution)
  , *$(at::Tensor* _residuals)
  , *$(at::Tensor* _rank)
  , *$(at::Tensor* _singular_values)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _b)
  , $(double _rcond)));
  }|]

linalg_lstsq_out_tttttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)))
linalg_lstsq_out_tttttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)))
linalg_lstsq_out_tttttt Ptr Tensor
_solution Ptr Tensor
_residuals Ptr Tensor
_rank Ptr Tensor
_singular_values Ptr Tensor
_self Ptr Tensor
_b =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>(at::linalg_lstsq_out(
    *$(at::Tensor* _solution)
  , *$(at::Tensor* _residuals)
  , *$(at::Tensor* _rank)
  , *$(at::Tensor* _singular_values)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _b)));
  }|]

linalg_matmul_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matmul_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matmul_tt Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matmul(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

linalg_matmul_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matmul_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matmul_out_ttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matmul_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

linalg_matrix_exp_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_exp_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_exp_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_exp(
    *$(at::Tensor* _self)));
  }|]

linalg_slogdet_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_slogdet_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_slogdet_t Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_slogdet(
    *$(at::Tensor* _self)));
  }|]

linalg_slogdet_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_slogdet_out_ttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_slogdet_out_ttt Ptr Tensor
_sign Ptr Tensor
_logabsdet Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_slogdet_out(
    *$(at::Tensor* _sign)
  , *$(at::Tensor* _logabsdet)
  , *$(at::Tensor* _self)));
  }|]

linalg_eig_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_eig_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_eig_t Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_eig(
    *$(at::Tensor* _self)));
  }|]

linalg_eig_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_eig_out_ttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_eig_out_ttt Ptr Tensor
_eigenvalues Ptr Tensor
_eigenvectors Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_eig_out(
    *$(at::Tensor* _eigenvalues)
  , *$(at::Tensor* _eigenvectors)
  , *$(at::Tensor* _self)));
  }|]

linalg_eigvals_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_eigvals_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_eigvals_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_eigvals(
    *$(at::Tensor* _self)));
  }|]

linalg_eigvals_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_eigvals_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_eigvals_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_eigvals_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_eigh_ts
  :: Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_eigh_ts :: Ptr Tensor
-> Ptr StdString -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_eigh_ts Ptr Tensor
_self Ptr StdString
_UPLO =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_eigh(
    *$(at::Tensor* _self)
  , *$(std::string* _UPLO)));
  }|]

linalg_eigh_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_eigh_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_eigh_t Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_eigh(
    *$(at::Tensor* _self)));
  }|]

linalg_eigh_out_ttts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_eigh_out_ttts :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr StdString
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_eigh_out_ttts Ptr Tensor
_eigvals Ptr Tensor
_eigvecs Ptr Tensor
_self Ptr StdString
_UPLO =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_eigh_out(
    *$(at::Tensor* _eigvals)
  , *$(at::Tensor* _eigvecs)
  , *$(at::Tensor* _self)
  , *$(std::string* _UPLO)));
  }|]

linalg_eigh_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_eigh_out_ttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_eigh_out_ttt Ptr Tensor
_eigvals Ptr Tensor
_eigvecs Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_eigh_out(
    *$(at::Tensor* _eigvals)
  , *$(at::Tensor* _eigvecs)
  , *$(at::Tensor* _self)));
  }|]

linalg_eigvalsh_ts
  :: Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr Tensor)
linalg_eigvalsh_ts :: Ptr Tensor -> Ptr StdString -> IO (Ptr Tensor)
linalg_eigvalsh_ts Ptr Tensor
_self Ptr StdString
_UPLO =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_eigvalsh(
    *$(at::Tensor* _self)
  , *$(std::string* _UPLO)));
  }|]

linalg_eigvalsh_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_eigvalsh_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_eigvalsh_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_eigvalsh(
    *$(at::Tensor* _self)));
  }|]

linalg_eigvalsh_out_tts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr Tensor)
linalg_eigvalsh_out_tts :: Ptr Tensor -> Ptr Tensor -> Ptr StdString -> IO (Ptr Tensor)
linalg_eigvalsh_out_tts Ptr Tensor
_out Ptr Tensor
_self Ptr StdString
_UPLO =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_eigvalsh_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(std::string* _UPLO)));
  }|]

linalg_eigvalsh_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_eigvalsh_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_eigvalsh_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_eigvalsh_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_householder_product_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_householder_product_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_householder_product_tt Ptr Tensor
_input Ptr Tensor
_tau =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_householder_product(
    *$(at::Tensor* _input)
  , *$(at::Tensor* _tau)));
  }|]

linalg_householder_product_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_householder_product_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_householder_product_out_ttt Ptr Tensor
_out Ptr Tensor
_input Ptr Tensor
_tau =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_householder_product_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)
  , *$(at::Tensor* _tau)));
  }|]

_linalg_inv_out_helper__ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
_linalg_inv_out_helper__ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
_linalg_inv_out_helper__ttt Ptr Tensor
_self Ptr Tensor
_infos_lu Ptr Tensor
_infos_getri =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_linalg_inv_out_helper_(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _infos_lu)
  , *$(at::Tensor* _infos_getri)));
  }|]

linalg_inv_ex_tb
  :: Ptr Tensor
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_inv_ex_tb :: Ptr Tensor -> CBool -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_inv_ex_tb Ptr Tensor
_self CBool
_check_errors =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_inv_ex(
    *$(at::Tensor* _self)
  , $(bool _check_errors)));
  }|]

linalg_inv_ex_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_inv_ex_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_inv_ex_t Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_inv_ex(
    *$(at::Tensor* _self)));
  }|]

linalg_inv_ex_out_tttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_inv_ex_out_tttb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CBool
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_inv_ex_out_tttb Ptr Tensor
_inverse Ptr Tensor
_info Ptr Tensor
_self CBool
_check_errors =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_inv_ex_out(
    *$(at::Tensor* _inverse)
  , *$(at::Tensor* _info)
  , *$(at::Tensor* _self)
  , $(bool _check_errors)));
  }|]

linalg_inv_ex_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_inv_ex_out_ttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_inv_ex_out_ttt Ptr Tensor
_inverse Ptr Tensor
_info Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_inv_ex_out(
    *$(at::Tensor* _inverse)
  , *$(at::Tensor* _info)
  , *$(at::Tensor* _self)));
  }|]

linalg_inv_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_inv_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_inv_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_inv(
    *$(at::Tensor* _self)));
  }|]

linalg_inv_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_inv_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_inv_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_inv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

inner_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
inner_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
inner_tt Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::inner(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

inner_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
inner_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
inner_out_ttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::inner_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

outer_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
outer_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
outer_tt Ptr Tensor
_self Ptr Tensor
_vec2 =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::outer(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _vec2)));
  }|]

outer_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
outer_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
outer_out_ttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_vec2 =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::outer_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _vec2)));
  }|]

ger_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
ger_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
ger_tt Ptr Tensor
_self Ptr Tensor
_vec2 =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::ger(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _vec2)));
  }|]

ger_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
ger_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
ger_out_ttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_vec2 =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::ger_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _vec2)));
  }|]

linalg_norm_tslbs
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> ScalarType
  -> IO (Ptr Tensor)
linalg_norm_tslbs :: Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> ScalarType
-> IO (Ptr Tensor)
linalg_norm_tslbs Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim ScalarType
_dtype =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)
  , $(at::ScalarType _dtype)));
  }|]

linalg_norm_tslb
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> IO (Ptr Tensor)
linalg_norm_tslb :: Ptr Tensor
-> Ptr Scalar -> Ptr IntArray -> CBool -> IO (Ptr Tensor)
linalg_norm_tslb Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)));
  }|]

linalg_norm_tsl
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_norm_tsl :: Ptr Tensor -> Ptr Scalar -> Ptr IntArray -> IO (Ptr Tensor)
linalg_norm_tsl Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)));
  }|]

linalg_norm_ts
  :: Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_norm_ts :: Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_norm_ts Ptr Tensor
_self Ptr Scalar
_ord =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)));
  }|]

linalg_norm_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_norm_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_norm_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm(
    *$(at::Tensor* _self)));
  }|]

linalg_norm_out_ttslbs
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> ScalarType
  -> IO (Ptr Tensor)
linalg_norm_out_ttslbs :: Ptr Tensor
-> Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> ScalarType
-> IO (Ptr Tensor)
linalg_norm_out_ttslbs Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim ScalarType
_dtype =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)
  , $(at::ScalarType _dtype)));
  }|]

linalg_norm_out_ttslb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> IO (Ptr Tensor)
linalg_norm_out_ttslb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> IO (Ptr Tensor)
linalg_norm_out_ttslb Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)));
  }|]

linalg_norm_out_ttsl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_norm_out_ttsl :: Ptr Tensor
-> Ptr Tensor -> Ptr Scalar -> Ptr IntArray -> IO (Ptr Tensor)
linalg_norm_out_ttsl Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)));
  }|]

linalg_norm_out_tts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_norm_out_tts :: Ptr Tensor -> Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_norm_out_tts Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)));
  }|]

linalg_norm_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_norm_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_norm_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_vector_norm_tslbs
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> ScalarType
  -> IO (Ptr Tensor)
linalg_vector_norm_tslbs :: Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> ScalarType
-> IO (Ptr Tensor)
linalg_vector_norm_tslbs Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim ScalarType
_dtype =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)
  , $(at::ScalarType _dtype)));
  }|]

linalg_vector_norm_tslb
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> IO (Ptr Tensor)
linalg_vector_norm_tslb :: Ptr Tensor
-> Ptr Scalar -> Ptr IntArray -> CBool -> IO (Ptr Tensor)
linalg_vector_norm_tslb Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)));
  }|]

linalg_vector_norm_tsl
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_vector_norm_tsl :: Ptr Tensor -> Ptr Scalar -> Ptr IntArray -> IO (Ptr Tensor)
linalg_vector_norm_tsl Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)));
  }|]

linalg_vector_norm_ts
  :: Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_vector_norm_ts :: Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_vector_norm_ts Ptr Tensor
_self Ptr Scalar
_ord =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)));
  }|]

linalg_vector_norm_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_vector_norm_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_vector_norm_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm(
    *$(at::Tensor* _self)));
  }|]

linalg_vector_norm_out_ttslbs
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> ScalarType
  -> IO (Ptr Tensor)
linalg_vector_norm_out_ttslbs :: Ptr Tensor
-> Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> ScalarType
-> IO (Ptr Tensor)
linalg_vector_norm_out_ttslbs Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim ScalarType
_dtype =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)
  , $(at::ScalarType _dtype)));
  }|]

linalg_vector_norm_out_ttslb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> IO (Ptr Tensor)
linalg_vector_norm_out_ttslb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> IO (Ptr Tensor)
linalg_vector_norm_out_ttslb Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)));
  }|]

linalg_vector_norm_out_ttsl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_vector_norm_out_ttsl :: Ptr Tensor
-> Ptr Tensor -> Ptr Scalar -> Ptr IntArray -> IO (Ptr Tensor)
linalg_vector_norm_out_ttsl Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)));
  }|]

linalg_vector_norm_out_tts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_vector_norm_out_tts :: Ptr Tensor -> Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_vector_norm_out_tts Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)));
  }|]

linalg_vector_norm_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_vector_norm_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_vector_norm_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_vector_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_matrix_norm_tslbs
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> ScalarType
  -> IO (Ptr Tensor)
linalg_matrix_norm_tslbs :: Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> ScalarType
-> IO (Ptr Tensor)
linalg_matrix_norm_tslbs Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim ScalarType
_dtype =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)
  , $(at::ScalarType _dtype)));
  }|]

linalg_matrix_norm_tslb
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_norm_tslb :: Ptr Tensor
-> Ptr Scalar -> Ptr IntArray -> CBool -> IO (Ptr Tensor)
linalg_matrix_norm_tslb Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)));
  }|]

linalg_matrix_norm_tsl
  :: Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_matrix_norm_tsl :: Ptr Tensor -> Ptr Scalar -> Ptr IntArray -> IO (Ptr Tensor)
linalg_matrix_norm_tsl Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)));
  }|]

linalg_matrix_norm_ts
  :: Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_matrix_norm_ts :: Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_matrix_norm_ts Ptr Tensor
_self Ptr Scalar
_ord =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)));
  }|]

linalg_matrix_norm_out_ttslbs
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> ScalarType
  -> IO (Ptr Tensor)
linalg_matrix_norm_out_ttslbs :: Ptr Tensor
-> Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> ScalarType
-> IO (Ptr Tensor)
linalg_matrix_norm_out_ttslbs Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim ScalarType
_dtype =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)
  , $(at::ScalarType _dtype)));
  }|]

linalg_matrix_norm_out_ttslb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_norm_out_ttslb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Scalar
-> Ptr IntArray
-> CBool
-> IO (Ptr Tensor)
linalg_matrix_norm_out_ttslb Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim CBool
_keepdim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)
  , $(bool _keepdim)));
  }|]

linalg_matrix_norm_out_ttsl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_matrix_norm_out_ttsl :: Ptr Tensor
-> Ptr Tensor -> Ptr Scalar -> Ptr IntArray -> IO (Ptr Tensor)
linalg_matrix_norm_out_ttsl Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord Ptr IntArray
_dim =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)
  , *$(std::vector<int64_t>* _dim)));
  }|]

linalg_matrix_norm_out_tts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_matrix_norm_out_tts :: Ptr Tensor -> Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_matrix_norm_out_tts Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_ord =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _ord)));
  }|]

linalg_matrix_norm_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_norm_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_norm_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm(
    *$(at::Tensor* _self)));
  }|]

linalg_matrix_norm_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_norm_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_norm_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_norm_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

_linalg_svd_tbb
  :: Ptr Tensor
  -> CBool
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_linalg_svd_tbb :: Ptr Tensor
-> CBool -> CBool -> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_linalg_svd_tbb Ptr Tensor
_A CBool
_full_matrices CBool
_compute_uv =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_linalg_svd(
    *$(at::Tensor* _A)
  , $(bool _full_matrices)
  , $(bool _compute_uv)));
  }|]

_linalg_svd_tb
  :: Ptr Tensor
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_linalg_svd_tb :: Ptr Tensor
-> CBool -> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_linalg_svd_tb Ptr Tensor
_A CBool
_full_matrices =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_linalg_svd(
    *$(at::Tensor* _A)
  , $(bool _full_matrices)));
  }|]

_linalg_svd_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_linalg_svd_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_linalg_svd_t Ptr Tensor
_A =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_linalg_svd(
    *$(at::Tensor* _A)));
  }|]

_linalg_svd_out_ttttbb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_linalg_svd_out_ttttbb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CBool
-> CBool
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_linalg_svd_out_ttttbb Ptr Tensor
_U Ptr Tensor
_S Ptr Tensor
_Vh Ptr Tensor
_A CBool
_full_matrices CBool
_compute_uv =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_linalg_svd_out(
    *$(at::Tensor* _U)
  , *$(at::Tensor* _S)
  , *$(at::Tensor* _Vh)
  , *$(at::Tensor* _A)
  , $(bool _full_matrices)
  , $(bool _compute_uv)));
  }|]

_linalg_svd_out_ttttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_linalg_svd_out_ttttb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CBool
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_linalg_svd_out_ttttb Ptr Tensor
_U Ptr Tensor
_S Ptr Tensor
_Vh Ptr Tensor
_A CBool
_full_matrices =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_linalg_svd_out(
    *$(at::Tensor* _U)
  , *$(at::Tensor* _S)
  , *$(at::Tensor* _Vh)
  , *$(at::Tensor* _A)
  , $(bool _full_matrices)));
  }|]

_linalg_svd_out_tttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
_linalg_svd_out_tttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
_linalg_svd_out_tttt Ptr Tensor
_U Ptr Tensor
_S Ptr Tensor
_Vh Ptr Tensor
_A =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::_linalg_svd_out(
    *$(at::Tensor* _U)
  , *$(at::Tensor* _S)
  , *$(at::Tensor* _Vh)
  , *$(at::Tensor* _A)));
  }|]

linalg_svd_tb
  :: Ptr Tensor
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
linalg_svd_tb :: Ptr Tensor
-> CBool -> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
linalg_svd_tb Ptr Tensor
_A CBool
_full_matrices =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::linalg_svd(
    *$(at::Tensor* _A)
  , $(bool _full_matrices)));
  }|]

linalg_svd_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
linalg_svd_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
linalg_svd_t Ptr Tensor
_A =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::linalg_svd(
    *$(at::Tensor* _A)));
  }|]

linalg_svd_out_ttttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
linalg_svd_out_ttttb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CBool
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
linalg_svd_out_ttttb Ptr Tensor
_U Ptr Tensor
_S Ptr Tensor
_Vh Ptr Tensor
_A CBool
_full_matrices =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::linalg_svd_out(
    *$(at::Tensor* _U)
  , *$(at::Tensor* _S)
  , *$(at::Tensor* _Vh)
  , *$(at::Tensor* _A)
  , $(bool _full_matrices)));
  }|]

linalg_svd_out_tttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor,Tensor)))
linalg_svd_out_tttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor, Tensor)))
linalg_svd_out_tttt Ptr Tensor
_U Ptr Tensor
_S Ptr Tensor
_Vh Ptr Tensor
_A =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor,at::Tensor>(at::linalg_svd_out(
    *$(at::Tensor* _U)
  , *$(at::Tensor* _S)
  , *$(at::Tensor* _Vh)
  , *$(at::Tensor* _A)));
  }|]

linalg_svdvals_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_svdvals_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_svdvals_t Ptr Tensor
_A =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_svdvals(
    *$(at::Tensor* _A)));
  }|]

linalg_svdvals_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_svdvals_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_svdvals_out_tt Ptr Tensor
_out Ptr Tensor
_A =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_svdvals_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _A)));
  }|]

linalg_cond_ts
  :: Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_cond_ts :: Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_cond_ts Ptr Tensor
_self Ptr Scalar
_p =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_cond(
    *$(at::Tensor* _self)
  , *$(at::Scalar* _p)));
  }|]

linalg_cond_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_cond_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_cond_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_cond(
    *$(at::Tensor* _self)));
  }|]

linalg_cond_out_tts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
linalg_cond_out_tts :: Ptr Tensor -> Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
linalg_cond_out_tts Ptr Tensor
_out Ptr Tensor
_self Ptr Scalar
_p =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_cond_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Scalar* _p)));
  }|]

linalg_cond_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_cond_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_cond_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_cond_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_pinv_tttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_tttb :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> CBool -> IO (Ptr Tensor)
linalg_pinv_tttb Ptr Tensor
_self Ptr Tensor
_atol Ptr Tensor
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)
  , $(bool _hermitian)));
  }|]

linalg_pinv_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_pinv_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_pinv_ttt Ptr Tensor
_self Ptr Tensor
_atol Ptr Tensor
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)));
  }|]

linalg_pinv_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_pinv_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_pinv_tt Ptr Tensor
_self Ptr Tensor
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _atol)));
  }|]

linalg_pinv_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_pinv_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_pinv_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)));
  }|]

linalg_pinv_out_ttttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_out_ttttb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CBool
-> IO (Ptr Tensor)
linalg_pinv_out_ttttb Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_atol Ptr Tensor
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)
  , $(bool _hermitian)));
  }|]

linalg_pinv_out_tttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_pinv_out_tttt :: Ptr Tensor
-> Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_pinv_out_tttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_atol Ptr Tensor
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)));
  }|]

linalg_pinv_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_pinv_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_pinv_out_ttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _atol)));
  }|]

linalg_pinv_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_pinv_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_pinv_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_pinv_tddb
  :: Ptr Tensor
  -> CDouble
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_tddb :: Ptr Tensor -> CDouble -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_pinv_tddb Ptr Tensor
_self CDouble
_atol CDouble
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)
  , $(bool _hermitian)));
  }|]

linalg_pinv_tdd
  :: Ptr Tensor
  -> CDouble
  -> CDouble
  -> IO (Ptr Tensor)
linalg_pinv_tdd :: Ptr Tensor -> CDouble -> CDouble -> IO (Ptr Tensor)
linalg_pinv_tdd Ptr Tensor
_self CDouble
_atol CDouble
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)));
  }|]

linalg_pinv_td
  :: Ptr Tensor
  -> CDouble
  -> IO (Ptr Tensor)
linalg_pinv_td :: Ptr Tensor -> CDouble -> IO (Ptr Tensor)
linalg_pinv_td Ptr Tensor
_self CDouble
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , $(double _atol)));
  }|]

linalg_pinv_out_ttddb
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_out_ttddb :: Ptr Tensor
-> Ptr Tensor -> CDouble -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_pinv_out_ttddb Ptr Tensor
_out Ptr Tensor
_self CDouble
_atol CDouble
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)
  , $(bool _hermitian)));
  }|]

linalg_pinv_out_ttdd
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> CDouble
  -> IO (Ptr Tensor)
linalg_pinv_out_ttdd :: Ptr Tensor -> Ptr Tensor -> CDouble -> CDouble -> IO (Ptr Tensor)
linalg_pinv_out_ttdd Ptr Tensor
_out Ptr Tensor
_self CDouble
_atol CDouble
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)));
  }|]

linalg_pinv_out_ttd
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> IO (Ptr Tensor)
linalg_pinv_out_ttd :: Ptr Tensor -> Ptr Tensor -> CDouble -> IO (Ptr Tensor)
linalg_pinv_out_ttd Ptr Tensor
_out Ptr Tensor
_self CDouble
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _atol)));
  }|]

linalg_pinv_tdb
  :: Ptr Tensor
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_tdb :: Ptr Tensor -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_pinv_tdb Ptr Tensor
_self CDouble
_rcond CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , $(double _rcond)
  , $(bool _hermitian)));
  }|]

linalg_pinv_ttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_ttb :: Ptr Tensor -> Ptr Tensor -> CBool -> IO (Ptr Tensor)
linalg_pinv_ttb Ptr Tensor
_self Ptr Tensor
_rcond CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _rcond)
  , $(bool _hermitian)));
  }|]

linalg_pinv_out_ttdb
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_out_ttdb :: Ptr Tensor -> Ptr Tensor -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_pinv_out_ttdb Ptr Tensor
_out Ptr Tensor
_self CDouble
_rcond CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _rcond)
  , $(bool _hermitian)));
  }|]

linalg_pinv_out_tttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_pinv_out_tttb :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> CBool -> IO (Ptr Tensor)
linalg_pinv_out_tttb Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_rcond CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_pinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _rcond)
  , $(bool _hermitian)));
  }|]

linalg_solve_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_solve_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_solve_tt Ptr Tensor
_input Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_solve(
    *$(at::Tensor* _input)
  , *$(at::Tensor* _other)));
  }|]

linalg_solve_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_solve_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_solve_out_ttt Ptr Tensor
_out Ptr Tensor
_input Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_solve_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)
  , *$(at::Tensor* _other)));
  }|]

linalg_tensorinv_tl
  :: Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
linalg_tensorinv_tl :: Ptr Tensor -> Int64 -> IO (Ptr Tensor)
linalg_tensorinv_tl Ptr Tensor
_self Int64
_ind =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorinv(
    *$(at::Tensor* _self)
  , $(int64_t _ind)));
  }|]

linalg_tensorinv_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_tensorinv_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_tensorinv_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorinv(
    *$(at::Tensor* _self)));
  }|]

linalg_tensorinv_out_ttl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
linalg_tensorinv_out_ttl :: Ptr Tensor -> Ptr Tensor -> Int64 -> IO (Ptr Tensor)
linalg_tensorinv_out_ttl Ptr Tensor
_out Ptr Tensor
_self Int64
_ind =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(int64_t _ind)));
  }|]

linalg_tensorinv_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_tensorinv_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_tensorinv_out_tt Ptr Tensor
_out Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorinv_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)));
  }|]

linalg_tensorsolve_ttl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_tensorsolve_ttl :: Ptr Tensor -> Ptr Tensor -> Ptr IntArray -> IO (Ptr Tensor)
linalg_tensorsolve_ttl Ptr Tensor
_self Ptr Tensor
_other Ptr IntArray
_dims =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorsolve(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _other)
  , *$(std::vector<int64_t>* _dims)));
  }|]

linalg_tensorsolve_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_tensorsolve_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_tensorsolve_tt Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorsolve(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

linalg_tensorsolve_out_tttl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr IntArray
  -> IO (Ptr Tensor)
linalg_tensorsolve_out_tttl :: Ptr Tensor
-> Ptr Tensor -> Ptr Tensor -> Ptr IntArray -> IO (Ptr Tensor)
linalg_tensorsolve_out_tttl Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_other Ptr IntArray
_dims =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorsolve_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _other)
  , *$(std::vector<int64_t>* _dims)));
  }|]

linalg_tensorsolve_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_tensorsolve_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_tensorsolve_out_ttt Ptr Tensor
_out Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_tensorsolve_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

linalg_qr_ts
  :: Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_qr_ts :: Ptr Tensor
-> Ptr StdString -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_qr_ts Ptr Tensor
_self Ptr StdString
_mode =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_qr(
    *$(at::Tensor* _self)
  , *$(std::string* _mode)));
  }|]

linalg_qr_t
  :: Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_qr_t :: Ptr Tensor -> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_qr_t Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_qr(
    *$(at::Tensor* _self)));
  }|]

linalg_qr_out_ttts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_qr_out_ttts :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr StdString
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_qr_out_ttts Ptr Tensor
_Q Ptr Tensor
_R Ptr Tensor
_self Ptr StdString
_mode =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_qr_out(
    *$(at::Tensor* _Q)
  , *$(at::Tensor* _R)
  , *$(at::Tensor* _self)
  , *$(std::string* _mode)));
  }|]

linalg_qr_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
linalg_qr_out_ttt :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> IO (Ptr (StdTuple '(Tensor, Tensor)))
linalg_qr_out_ttt Ptr Tensor
_Q Ptr Tensor
_R Ptr Tensor
_self =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::linalg_qr_out(
    *$(at::Tensor* _Q)
  , *$(at::Tensor* _R)
  , *$(at::Tensor* _self)));
  }|]

_linalg_qr_helper_ts
  :: Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr (StdTuple '(Tensor,Tensor)))
_linalg_qr_helper_ts :: Ptr Tensor
-> Ptr StdString -> IO (Ptr (StdTuple '(Tensor, Tensor)))
_linalg_qr_helper_ts Ptr Tensor
_self Ptr StdString
_mode =
  [C.throwBlock| std::tuple<at::Tensor,at::Tensor>* { return new std::tuple<at::Tensor,at::Tensor>(at::_linalg_qr_helper(
    *$(at::Tensor* _self)
  , *$(std::string* _mode)));
  }|]

linalg_matrix_power_tl
  :: Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
linalg_matrix_power_tl :: Ptr Tensor -> Int64 -> IO (Ptr Tensor)
linalg_matrix_power_tl Ptr Tensor
_self Int64
_n =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_power(
    *$(at::Tensor* _self)
  , $(int64_t _n)));
  }|]

linalg_matrix_power_out_ttl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
linalg_matrix_power_out_ttl :: Ptr Tensor -> Ptr Tensor -> Int64 -> IO (Ptr Tensor)
linalg_matrix_power_out_ttl Ptr Tensor
_out Ptr Tensor
_self Int64
_n =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_power_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(int64_t _n)));
  }|]

linalg_matrix_rank_tttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_tttb :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_tttb Ptr Tensor
_input Ptr Tensor
_atol Ptr Tensor
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _input)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_rank_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_rank_ttt Ptr Tensor
_input Ptr Tensor
_atol Ptr Tensor
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _input)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)));
  }|]

linalg_matrix_rank_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_rank_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_rank_tt Ptr Tensor
_input Ptr Tensor
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _input)
  , *$(at::Tensor* _atol)));
  }|]

linalg_matrix_rank_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_rank_t :: Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_rank_t Ptr Tensor
_input =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _input)));
  }|]

linalg_matrix_rank_out_ttttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttttb :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> CBool
-> IO (Ptr Tensor)
linalg_matrix_rank_out_ttttb Ptr Tensor
_out Ptr Tensor
_input Ptr Tensor
_atol Ptr Tensor
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_out_tttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_tttt :: Ptr Tensor
-> Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_rank_out_tttt Ptr Tensor
_out Ptr Tensor
_input Ptr Tensor
_atol Ptr Tensor
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)
  , *$(at::Tensor* _atol)
  , *$(at::Tensor* _rtol)));
  }|]

linalg_matrix_rank_out_ttt
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttt :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttt Ptr Tensor
_out Ptr Tensor
_input Ptr Tensor
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)
  , *$(at::Tensor* _atol)));
  }|]

linalg_matrix_rank_out_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
linalg_matrix_rank_out_tt Ptr Tensor
_out Ptr Tensor
_input =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)));
  }|]

linalg_matrix_rank_tddb
  :: Ptr Tensor
  -> CDouble
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_tddb :: Ptr Tensor -> CDouble -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_tddb Ptr Tensor
_self CDouble
_atol CDouble
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_tdd
  :: Ptr Tensor
  -> CDouble
  -> CDouble
  -> IO (Ptr Tensor)
linalg_matrix_rank_tdd :: Ptr Tensor -> CDouble -> CDouble -> IO (Ptr Tensor)
linalg_matrix_rank_tdd Ptr Tensor
_self CDouble
_atol CDouble
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)));
  }|]

linalg_matrix_rank_td
  :: Ptr Tensor
  -> CDouble
  -> IO (Ptr Tensor)
linalg_matrix_rank_td :: Ptr Tensor -> CDouble -> IO (Ptr Tensor)
linalg_matrix_rank_td Ptr Tensor
_self CDouble
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _self)
  , $(double _atol)));
  }|]

linalg_matrix_rank_out_ttddb
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttddb :: Ptr Tensor
-> Ptr Tensor -> CDouble -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttddb Ptr Tensor
_out Ptr Tensor
_self CDouble
_atol CDouble
_rtol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_out_ttdd
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> CDouble
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttdd :: Ptr Tensor -> Ptr Tensor -> CDouble -> CDouble -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttdd Ptr Tensor
_out Ptr Tensor
_self CDouble
_atol CDouble
_rtol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _atol)
  , $(double _rtol)));
  }|]

linalg_matrix_rank_out_ttd
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttd :: Ptr Tensor -> Ptr Tensor -> CDouble -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttd Ptr Tensor
_out Ptr Tensor
_self CDouble
_atol =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _atol)));
  }|]

linalg_matrix_rank_tdb
  :: Ptr Tensor
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_tdb :: Ptr Tensor -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_tdb Ptr Tensor
_self CDouble
_tol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _self)
  , $(double _tol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_out_ttdb
  :: Ptr Tensor
  -> Ptr Tensor
  -> CDouble
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttdb :: Ptr Tensor -> Ptr Tensor -> CDouble -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_out_ttdb Ptr Tensor
_out Ptr Tensor
_self CDouble
_tol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _self)
  , $(double _tol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_ttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_ttb :: Ptr Tensor -> Ptr Tensor -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_ttb Ptr Tensor
_input Ptr Tensor
_tol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank(
    *$(at::Tensor* _input)
  , *$(at::Tensor* _tol)
  , $(bool _hermitian)));
  }|]

linalg_matrix_rank_out_tttb
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> CBool
  -> IO (Ptr Tensor)
linalg_matrix_rank_out_tttb :: Ptr Tensor -> Ptr Tensor -> Ptr Tensor -> CBool -> IO (Ptr Tensor)
linalg_matrix_rank_out_tttb Ptr Tensor
_out Ptr Tensor
_input Ptr Tensor
_tol CBool
_hermitian =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_matrix_rank_out(
    *$(at::Tensor* _out)
  , *$(at::Tensor* _input)
  , *$(at::Tensor* _tol)
  , $(bool _hermitian)));
  }|]

linalg_multi_dot_l
  :: Ptr TensorList
  -> IO (Ptr Tensor)
linalg_multi_dot_l :: Ptr TensorList -> IO (Ptr Tensor)
linalg_multi_dot_l Ptr TensorList
_tensors =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_multi_dot(
    *$(std::vector<at::Tensor>* _tensors)));
  }|]

linalg_multi_dot_out_tl
  :: Ptr Tensor
  -> Ptr TensorList
  -> IO (Ptr Tensor)
linalg_multi_dot_out_tl :: Ptr Tensor -> Ptr TensorList -> IO (Ptr Tensor)
linalg_multi_dot_out_tl Ptr Tensor
_out Ptr TensorList
_tensors =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::linalg_multi_dot_out(
    *$(at::Tensor* _out)
  , *$(std::vector<at::Tensor>* _tensors)));
  }|]

_test_serialization_subcmul_tts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Scalar
  -> IO (Ptr Tensor)
_test_serialization_subcmul_tts :: Ptr Tensor -> Ptr Tensor -> Ptr Scalar -> IO (Ptr Tensor)
_test_serialization_subcmul_tts Ptr Tensor
_self Ptr Tensor
_other Ptr Scalar
_alpha =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_serialization_subcmul(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _other)
  , *$(at::Scalar* _alpha)));
  }|]

_test_serialization_subcmul_tt
  :: Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
_test_serialization_subcmul_tt :: Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
_test_serialization_subcmul_tt Ptr Tensor
_self Ptr Tensor
_other =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_serialization_subcmul(
    *$(at::Tensor* _self)
  , *$(at::Tensor* _other)));
  }|]

_test_optional_intlist_tl
  :: Ptr Tensor
  -> Ptr IntArray
  -> IO (Ptr Tensor)
_test_optional_intlist_tl :: Ptr Tensor -> Ptr IntArray -> IO (Ptr Tensor)
_test_optional_intlist_tl Ptr Tensor
_values Ptr IntArray
_addends =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_optional_intlist(
    *$(at::Tensor* _values)
  , *$(std::vector<int64_t>* _addends)));
  }|]

_test_optional_filled_intlist_tl
  :: Ptr Tensor
  -> Ptr IntArray
  -> IO (Ptr Tensor)
_test_optional_filled_intlist_tl :: Ptr Tensor -> Ptr IntArray -> IO (Ptr Tensor)
_test_optional_filled_intlist_tl Ptr Tensor
_values Ptr IntArray
_addends =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_optional_filled_intlist(
    *$(at::Tensor* _values)
  , *$(std::vector<int64_t>* _addends)));
  }|]

_test_optional_floatlist_ta
  :: Ptr Tensor
  -> Ptr (StdVector CDouble)
  -> IO (Ptr Tensor)
_test_optional_floatlist_ta :: Ptr Tensor -> Ptr (StdVector CDouble) -> IO (Ptr Tensor)
_test_optional_floatlist_ta Ptr Tensor
_values Ptr (StdVector CDouble)
_addends =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_optional_floatlist(
    *$(at::Tensor* _values)
  , *$(std::vector<double>* _addends)));
  }|]

_test_string_default_tss
  :: Ptr Tensor
  -> Ptr StdString
  -> Ptr StdString
  -> IO (Ptr Tensor)
_test_string_default_tss :: Ptr Tensor -> Ptr StdString -> Ptr StdString -> IO (Ptr Tensor)
_test_string_default_tss Ptr Tensor
_dummy Ptr StdString
_a Ptr StdString
_b =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_string_default(
    *$(at::Tensor* _dummy)
  , *$(std::string* _a)
  , *$(std::string* _b)));
  }|]

_test_string_default_ts
  :: Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr Tensor)
_test_string_default_ts :: Ptr Tensor -> Ptr StdString -> IO (Ptr Tensor)
_test_string_default_ts Ptr Tensor
_dummy Ptr StdString
_a =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_string_default(
    *$(at::Tensor* _dummy)
  , *$(std::string* _a)));
  }|]

_test_string_default_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
_test_string_default_t :: Ptr Tensor -> IO (Ptr Tensor)
_test_string_default_t Ptr Tensor
_dummy =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_string_default(
    *$(at::Tensor* _dummy)));
  }|]

_test_ambiguous_defaults_tll
  :: Ptr Tensor
  -> Int64
  -> Int64
  -> IO (Ptr Tensor)
_test_ambiguous_defaults_tll :: Ptr Tensor -> Int64 -> Int64 -> IO (Ptr Tensor)
_test_ambiguous_defaults_tll Ptr Tensor
_dummy Int64
_a Int64
_b =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_ambiguous_defaults(
    *$(at::Tensor* _dummy)
  , $(int64_t _a)
  , $(int64_t _b)));
  }|]

_test_ambiguous_defaults_tl
  :: Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
_test_ambiguous_defaults_tl :: Ptr Tensor -> Int64 -> IO (Ptr Tensor)
_test_ambiguous_defaults_tl Ptr Tensor
_dummy Int64
_a =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_ambiguous_defaults(
    *$(at::Tensor* _dummy)
  , $(int64_t _a)));
  }|]

_test_ambiguous_defaults_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
_test_ambiguous_defaults_t :: Ptr Tensor -> IO (Ptr Tensor)
_test_ambiguous_defaults_t Ptr Tensor
_dummy =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_ambiguous_defaults(
    *$(at::Tensor* _dummy)));
  }|]

_test_ambiguous_defaults_tls
  :: Ptr Tensor
  -> Int64
  -> Ptr StdString
  -> IO (Ptr Tensor)
_test_ambiguous_defaults_tls :: Ptr Tensor -> Int64 -> Ptr StdString -> IO (Ptr Tensor)
_test_ambiguous_defaults_tls Ptr Tensor
_dummy Int64
_a Ptr StdString
_b =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_ambiguous_defaults(
    *$(at::Tensor* _dummy)
  , $(int64_t _a)
  , *$(std::string* _b)));
  }|]

_test_warn_in_autograd_t
  :: Ptr Tensor
  -> IO (Ptr Tensor)
_test_warn_in_autograd_t :: Ptr Tensor -> IO (Ptr Tensor)
_test_warn_in_autograd_t Ptr Tensor
_self =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_test_warn_in_autograd(
    *$(at::Tensor* _self)));
  }|]

segment_reduce_tsttlbs
  :: Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> Ptr Tensor
  -> Int64
  -> CBool
  -> Ptr Scalar
  -> IO (Ptr Tensor)
segment_reduce_tsttlbs :: Ptr Tensor
-> Ptr StdString
-> Ptr Tensor
-> Ptr Tensor
-> Int64
-> CBool
-> Ptr Scalar
-> IO (Ptr Tensor)
segment_reduce_tsttlbs Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths Ptr Tensor
_indices Int64
_axis CBool
_unsafe Ptr Scalar
_initial =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::segment_reduce(
    *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)
  , *$(at::Tensor* _indices)
  , $(int64_t _axis)
  , $(bool _unsafe)
  , *$(at::Scalar* _initial)));
  }|]

segment_reduce_tsttlb
  :: Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> Ptr Tensor
  -> Int64
  -> CBool
  -> IO (Ptr Tensor)
segment_reduce_tsttlb :: Ptr Tensor
-> Ptr StdString
-> Ptr Tensor
-> Ptr Tensor
-> Int64
-> CBool
-> IO (Ptr Tensor)
segment_reduce_tsttlb Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths Ptr Tensor
_indices Int64
_axis CBool
_unsafe =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::segment_reduce(
    *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)
  , *$(at::Tensor* _indices)
  , $(int64_t _axis)
  , $(bool _unsafe)));
  }|]

segment_reduce_tsttl
  :: Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
segment_reduce_tsttl :: Ptr Tensor
-> Ptr StdString
-> Ptr Tensor
-> Ptr Tensor
-> Int64
-> IO (Ptr Tensor)
segment_reduce_tsttl Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths Ptr Tensor
_indices Int64
_axis =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::segment_reduce(
    *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)
  , *$(at::Tensor* _indices)
  , $(int64_t _axis)));
  }|]

segment_reduce_tstt
  :: Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> Ptr Tensor
  -> IO (Ptr Tensor)
segment_reduce_tstt :: Ptr Tensor
-> Ptr StdString -> Ptr Tensor -> Ptr Tensor -> IO (Ptr Tensor)
segment_reduce_tstt Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths Ptr Tensor
_indices =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::segment_reduce(
    *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)
  , *$(at::Tensor* _indices)));
  }|]

segment_reduce_tst
  :: Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> IO (Ptr Tensor)
segment_reduce_tst :: Ptr Tensor -> Ptr StdString -> Ptr Tensor -> IO (Ptr Tensor)
segment_reduce_tst Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::segment_reduce(
    *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)));
  }|]

segment_reduce_ts
  :: Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr Tensor)
segment_reduce_ts :: Ptr Tensor -> Ptr StdString -> IO (Ptr Tensor)
segment_reduce_ts Ptr Tensor
_data Ptr StdString
_reduce =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::segment_reduce(
    *$(at::Tensor* _data)
  , *$(std::string* _reduce)));
  }|]

_segment_reduce_backward_tttstl
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> Int64
  -> IO (Ptr Tensor)
_segment_reduce_backward_tttstl :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr StdString
-> Ptr Tensor
-> Int64
-> IO (Ptr Tensor)
_segment_reduce_backward_tttstl Ptr Tensor
_grad Ptr Tensor
_output Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths Int64
_axis =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_segment_reduce_backward(
    *$(at::Tensor* _grad)
  , *$(at::Tensor* _output)
  , *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)
  , $(int64_t _axis)));
  }|]

_segment_reduce_backward_tttst
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr StdString
  -> Ptr Tensor
  -> IO (Ptr Tensor)
_segment_reduce_backward_tttst :: Ptr Tensor
-> Ptr Tensor
-> Ptr Tensor
-> Ptr StdString
-> Ptr Tensor
-> IO (Ptr Tensor)
_segment_reduce_backward_tttst Ptr Tensor
_grad Ptr Tensor
_output Ptr Tensor
_data Ptr StdString
_reduce Ptr Tensor
_lengths =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_segment_reduce_backward(
    *$(at::Tensor* _grad)
  , *$(at::Tensor* _output)
  , *$(at::Tensor* _data)
  , *$(std::string* _reduce)
  , *$(at::Tensor* _lengths)));
  }|]

_segment_reduce_backward_ttts
  :: Ptr Tensor
  -> Ptr Tensor
  -> Ptr Tensor
  -> Ptr StdString
  -> IO (Ptr Tensor)
_segment_reduce_backward_ttts :: Ptr Tensor
-> Ptr Tensor -> Ptr Tensor -> Ptr StdString -> IO (Ptr Tensor)
_segment_reduce_backward_ttts Ptr Tensor
_grad Ptr Tensor
_output Ptr Tensor
_data Ptr StdString
_reduce =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::_segment_reduce_backward(
    *$(at::Tensor* _grad)
  , *$(at::Tensor* _output)
  , *$(at::Tensor* _data)
  , *$(std::string* _reduce)));
  }|]

pad_sequence_lbd
  :: Ptr TensorList
  -> CBool
  -> CDouble
  -> IO (Ptr Tensor)
pad_sequence_lbd :: Ptr TensorList -> CBool -> CDouble -> IO (Ptr Tensor)
pad_sequence_lbd Ptr TensorList
_sequences CBool
_batch_first CDouble
_padding_value =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::pad_sequence(
    *$(std::vector<at::Tensor>* _sequences)
  , $(bool _batch_first)
  , $(double _padding_value)));
  }|]

pad_sequence_lb
  :: Ptr TensorList
  -> CBool
  -> IO (Ptr Tensor)
pad_sequence_lb :: Ptr TensorList -> CBool -> IO (Ptr Tensor)
pad_sequence_lb Ptr TensorList
_sequences CBool
_batch_first =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::pad_sequence(
    *$(std::vector<at::Tensor>* _sequences)
  , $(bool _batch_first)));
  }|]

pad_sequence_l
  :: Ptr TensorList
  -> IO (Ptr Tensor)
pad_sequence_l :: Ptr TensorList -> IO (Ptr Tensor)
pad_sequence_l Ptr TensorList
_sequences =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::pad_sequence(
    *$(std::vector<at::Tensor>* _sequences)));
  }|]

flatten_dense_tensors_l
  :: Ptr TensorList
  -> IO (Ptr Tensor)
flatten_dense_tensors_l :: Ptr TensorList -> IO (Ptr Tensor)
flatten_dense_tensors_l Ptr TensorList
_tensors =
  [C.throwBlock| at::Tensor* { return new at::Tensor(at::flatten_dense_tensors(
    *$(std::vector<at::Tensor>* _tensors)));
  }|]

unflatten_dense_tensors_tl
  :: Ptr Tensor
  -> Ptr TensorList
  -> IO (Ptr TensorList)
unflatten_dense_tensors_tl :: Ptr Tensor -> Ptr TensorList -> IO (Ptr TensorList)
unflatten_dense_tensors_tl Ptr Tensor
_flat Ptr TensorList
_tensors =
  [C.throwBlock| std::vector<at::Tensor>* { return new std::vector<at::Tensor>(at::unflatten_dense_tensors(
    *$(at::Tensor* _flat)
  , *$(std::vector<at::Tensor>* _tensors)));
  }|]